MemtraceDOCS

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.

LanguageRecognized 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
TYPESCRIPT DECLARATION FILES ARE OPT-IN

.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#

FormatRecognized extensions
JSON.json
TOML.toml
YAML.yml, .yaml
HCL / Terraform.hcl, .tf, .tfvars
SQL.sql
RECOGNIZED FILENAMES GET RICHER NODES

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.

FormatExtensionsIndexed?
HTML.html, .htmYes, as a File node
Markdown / MDX.md, .markdown, .mdxYes, as a File node
AsciiDoc.adoc, .asciidocYes, as a File node
CSS.cssYes, as a File node
Less.lessYes, as a File node
SCSS.scssYes, as a File node
Sass.sassYes, as a File node
Gettext.po, .potYes, as a File node
Plain text.txtYes, as a File node
Gherkin.featureYes, 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 typeIndexed?What Memtrace does
*.sh / *.bashNoNo shell parser in the current build.
*.cmd / *.batNoNo Windows batch parser in the current build.
*.service / *.timerNoNo systemd unit parser in the current build.
.env and common .env.* variantsNo, excludedKnown environment filenames are skipped because they commonly contain secrets. Other variants have no supported parser.
AN EXTENSION OVERRIDE CANNOT ADD A NEW GRAMMAR

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.mod is recognized as authored Go module metadata; arbitrary *.mod files are not.
  • R also recognizes DESCRIPTION, NAMESPACE, .Rprofile, and Rprofile.site.
  • Nextflow also recognizes nextflow.config, nf-test.config, *.nf.test, and *.config files below a conf/ directory.

Custom extension mapping#

Map a project-specific extension to an existing parser in .memtrace/languages.toml, .memtrace.toml, or memtrace.toml:

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.