Language Support
Overview
sqry organizes its 35 language plugins into two groups based on analysis depth.
Full relation support languages receive full AST parsing, symbol extraction, and relation tracking. This means sqry can answer queries about callers, callees, imports, exports, trait/interface implementations (impl:), and class inheritance (inherits:). All cross-file semantic relationships are available for these languages.
Symbol extraction + imports languages receive symbol extraction and import tracking. These are primarily domain-specific, infrastructure-as-code, and declarative config languages where call-graph analysis is less applicable. They appear in the unified graph and support sqry query, sqry graph stats, and other graph commands, but full caller/callee relation extraction is not performed.
Full Relation Support — 28 Languages
Full AST parsing, symbol extraction, and relation tracking (callers, callees, imports, exports, impl/inherits).
| Language | Symbol kinds | Relation tracking | Cross-language support |
|---|---|---|---|
| C | Structs, unions, functions, function pointers | Full | FFI (Rust↔C, C↔C++) |
| C++ | Classes, templates, namespaces, methods | Full | FFI (Rust↔C++, C↔C++) |
| Rust | Functions, structs, traits, impls, enums | Full | FFI (Rust↔C/C++), HTTP |
| Shell/Bash | Functions, command substitution | Full (call tracking) | process_exec |
| Zig | Functions, structs, comptime, pub visibility | Full | — |
| JavaScript | Functions, classes, ES6+ modules, async/await | Full | HTTP (fetch/axios) |
| TypeScript | Functions, interfaces, generics, JSX | Full (incl. return-type) | HTTP (fetch/axios) |
| Dart | Classes, async/await, Flutter widgets | Full | MethodChannel (Flutter) |
| Kotlin | Data classes, coroutines, sealed classes | Full | — |
| Swift | Protocols, extensions, async/await | Full | — |
| Scala | Case classes, traits, implicits | Full | — |
| C# | Classes, LINQ, async, properties | Full | — |
| Go | Interfaces, channels, goroutines | Full | HTTP (route handlers) |
| Java | Classes, annotations, generics, inheritance | Full (incl. return-type) | HTTP (route handlers) |
| Python | Classes, functions, decorators, type hints | Full | HTTP (route handlers) |
| Ruby | Modules, metaprogramming, blocks | Full (incl. signature metadata) | — |
| PHP | Traits, namespaces, Laravel/Symfony | Full | — |
| Lua | Modules, colon-syntax methods, require | Full | — |
| R | Functions, S3/S4 methods, R6 classes | Full (incl. package metadata) | — |
| Groovy | Classes, closures, Gradle tasks | Full | — |
| Elixir | Phoenix, pipe operators, Erlang FFI | Full | — |
| SQL | Tables, views, functions, triggers | Full (table read/write) | db_query |
| Svelte | Props, reactive declarations, store subscriptions | Full (SFC) | — |
| Vue | Composition API, options API, SFC | Full | — |
| HTML | Document structure, script/link imports | Full (import tracking) | — |
| CSS | Selectors, rules, @import | Full (@import tracking) | — |
| Haskell | Module imports, type classes | Full | — |
| Perl | Modules, subroutines | Full (import tracking) | — |
Symbol Extraction + Imports — 7 Languages
Symbol extraction and import tracking. These languages appear in the unified graph and support sqry query and sqry graph stats, but full caller/callee relation extraction is not available.
| Language | Notes |
|---|---|
| Terraform/HCL | Resources, modules, variables, outputs |
| Puppet | Classes, resources, defined types |
| Pulumi | Infrastructure resources, stack definitions |
| Salesforce Apex | Enterprise Apex classes and triggers |
| SAP ABAP | Enterprise ABAP programs and function modules |
| Oracle PL/SQL | Stored procedures and packages (distinct from SQL Tier 1) |
| ServiceNow (Xanadu) | Script Includes, GlideRecord, Xanadu JS platform |
Relation Types
The following relation fields are extracted for Tier 1 languages and available in queries, graph commands, and MCP tools.
| Relation | Tracks | Example query |
|---|---|---|
callers: / callees: | Direct function and method calls | callers:authenticate |
imports: / exports: | Module-level imports and exported symbols | imports:react |
impl: | Trait or interface implementations | impl:Iterator |
inherits: | Class inheritance relationships | inherits:BaseModel |
Relation data is stored in the unified graph snapshot and is available after sqry index. All relation queries work across files — for example, callers:authenticate finds every call site across the entire codebase, regardless of which file or language it originates from (within Tier 1 languages).
OOP Edges — Inherits & Implements
16 of the 28 Tier 1 languages support class inheritance and interface/trait implementation edges. These are stored as Inherits and Implements edge types in the graph and are queryable via inherits: and impl: predicates.
| Language | Inherits | Implements | Notes |
|---|---|---|---|
| C++ | yes | — | Virtual inheritance, multiple inheritance |
| C# | yes | yes | Class inheritance + interface impl |
| Dart | yes | yes | Extends + implements + mixins |
| Elixir | — | yes | Protocol implementations, behaviour callbacks |
| Go | — | yes | Implicit interface satisfaction |
| Groovy | yes | yes | Extends + implements |
| Haskell | — | yes | Typeclass instances |
| Java | yes | yes | Extends + implements |
| JavaScript | yes | — | ES6 class extends |
| Kotlin | yes | yes | Class inheritance + interface impl |
| Python | yes | — | Multiple inheritance (MRO) |
| Ruby | yes | yes | Class inheritance + module include/prepend |
| Rust | — | yes | Trait implementations |
| Scala | yes | yes | Extends + with (trait mixing) |
| Swift | yes | yes | Class inheritance + protocol conformance |
| TypeScript | yes | yes | Extends + implements |
Querying OOP relationships
# Find all classes that inherit from BaseModel
sqry query "inherits:BaseModel"
# Find all implementations of the Iterator trait
sqry query "impl:Iterator"
# Combine with language filter
sqry query "impl:Serializable AND lang:java"
# Find the full inheritance chain
sqry graph call-hierarchy "MyDerivedClass" --direction incoming
FFI Support
11 Tier 1 languages support Foreign Function Interface (FFI) edge detection, used for cross-language analysis:
| Language | FFI mechanism |
|---|---|
| C / C++ | Native callable functions |
| Rust | extern "C" blocks, #[no_mangle] |
| Go | CGo (import "C") |
| Java | JNI / JNA native method declarations |
| JavaScript | WebAssembly imports, N-API bindings |
| Python | ctypes, cffi, C extension modules |
| C# | P/Invoke, DllImport |
| PHP | FFI extension |
| Ruby | Fiddle, FFI gem |
| Perl | XS, Inline::C |
| Swift | @objc, C bridging headers |
See Cross-Language for details on querying FFI and other cross-language edges.