Supported languages & file types
Every programming language, infrastructure format, and authored-text type Memtrace indexes today, plus the extensions, size limits, and deliberate exclusions.
Memtrace indexes 38 formats today: 22 programming languages with AST parsers, 5 infrastructure formats, 10 authored-text formats, and go.mod. A file is indexed when its extension (or a recognized filename) resolves to one of those formats.
AST-parsed files produce symbols, calls, imports, and structural edges. Infrastructure formats add config and schema nodes, and richer typed nodes when the filename is recognized. Authored text produces one content-bearing File node for lexical search, not a symbol graph.
At a glance#
Programming languages: ActionScript, C, C++, C#, Dart, Elixir, GDScript, Go, Java, JavaScript, JSX, Kotlin, Lua, Nextflow, PHP, Python, R, Ruby, Rust, Swift, TypeScript, TSX.
Infrastructure: HCL / Terraform, JSON, SQL, TOML, YAML (including Kubernetes, Helm, Ansible, and GitHub Actions when the filename matches).
Authored text: AsciiDoc, CSS, Gherkin, Gettext, HTML, Less, Markdown / MDX, plain text, Sass, SCSS.
Programming languages (AST)#
These extensions run through a language parser. Parsed files produce symbols and structural relationships.
| Language | Recognized extensions |
|---|---|
| ActionScript | .as |
| C | .c, .h |
| C++ | .cpp, .cc, .cxx, .hpp, .hh, .hxx |
| C# | .cs |
| Dart | .dart |
| Elixir | .ex, .exs |
| GDScript | .gd |
| Go | .go |
| Java | .java |
| JavaScript | .js, .mjs, .cjs |
| JSX | .jsx |
| Kotlin | .kt, .kts |
| Lua | .lua |
| Nextflow | .nf |
| PHP | .php, .php3, .php4, .php5, .php7, .php8, .phtml, .phps |
| Python | .py, .pyi |
| R | .r |
| Ruby | .rb |
| Rust | .rs |
| Swift | .swift |
| TypeScript | .ts, .cts, .mts |
| TSX | .tsx |
.d.ts, .d.mts, and .d.cts files are treated as generated by default. Set MEMTRACE_INDEX_DECLARATION_FILES=1 before indexing when declarations are the authored API surface of the repository.
Infrastructure formats#
| Format | Recognized extensions |
|---|---|
| JSON | .json |
| TOML | .toml |
| YAML | .yml, .yaml |
| HCL / Terraform | .hcl, .tf, .tfvars |
| SQL | .sql |
Generic JSON, TOML, YAML, HCL, and SQL are parsed as configuration or infrastructure source. Recognized files such as package.json, Cargo.toml, GitHub Actions workflows, Kubernetes manifests, Helm charts, Ansible playbooks, Terraform files, and SQL migrations also receive filename-specific scanning.
Authored text (lexical File nodes)#
These formats have no tree-sitter grammar in the current build. Memtrace still indexes them as one bounded, content-bearing File node so lexical search can see the text. They do not produce symbols, calls, imports, or endpoints.
| Format | Extensions | Indexed? |
|---|---|---|
| HTML | .html, .htm | Yes, as a File node |
| Markdown / MDX | .md, .markdown, .mdx | Yes, as a File node |
| AsciiDoc | .adoc, .asciidoc | Yes, as a File node |
| CSS | .css | Yes, as a File node |
| Less | .less | Yes, as a File node |
| SCSS | .scss | Yes, as a File node |
| Sass | .sass | Yes, as a File node |
| Gettext | .po, .pot | Yes, as a File node |
| Plain text | .txt | Yes, as a File node |
| Gherkin | .feature | Yes, as a File node |
Not indexed#
These common files are not part of the source index. An extension override cannot add a parser that does not exist.
| File type | Indexed? | What Memtrace does |
|---|---|---|
*.sh / *.bash | No | No shell parser in the current build. |
*.cmd / *.bat | No | No Windows batch parser in the current build. |
*.service / *.timer | No | No systemd unit parser in the current build. |
.env and common .env.* variants | No, excluded | Known environment filenames are skipped because they commonly contain secrets. Other variants have no supported parser. |
You can map an unusual extension to a language Memtrace already supports. You cannot map .sh, .cmd, or .service to a shell or systemd parser because those parsers do not exist in the current build.
Special filenames and generated files#
go.modis recognized as authored Go module metadata; arbitrary*.modfiles are not.- R also recognizes
DESCRIPTION,NAMESPACE,.Rprofile, andRprofile.site. - Nextflow also recognizes
nextflow.config,nf-test.config,*.nf.test, and*.configfiles below aconf/directory.
Custom extension mapping#
Map a project-specific extension to an existing parser in .memtrace/languages.toml, .memtrace.toml, or memtrace.toml:
[languages.extensions] mxml = "actionscript" inc = "cpp"
For a one-off process, use MEMTRACE_EXTENSION_LANGUAGE_MAP=mxml=actionscript,inc=cpp. An explicit mapping wins over the built-in extension table, but the target language name still has to be one Memtrace already supports.
File-size and ignore limits#
A supported source file is accepted when its size is 512 KiB (524,288 bytes) or smaller. Larger files are skipped. Generated/minified filename checks, hard directory exclusions, .gitignore, and a repo-root .memtraceignore are applied separately, so a supported extension can still be excluded by another layer.
See .memtraceignore for the complete ignore order, built-in exclusions, skip counters, and reindex workflow.