Supported Languages
dkod understands your code at the AST level — parsing symbols, resolving dependencies, and merging changes structurally. This requires deep, per-language support. Here's what's covered today.
16 Languages, Full Stack
Every supported language gets the complete dkod pipeline: symbol extraction, semantic merging, and dependency tracking.
| Language | Parser | Semantic Merge | Auto-Detect |
|---|---|---|---|
| Rust | tree-sitter | Yes | Cargo.toml |
| TypeScript / Bun | tree-sitter | Yes | package.json + bun.lock |
| TypeScript / Node | tree-sitter | Yes | package.json |
| Python | tree-sitter | Yes | pyproject.toml, requirements.txt |
| Go | tree-sitter | Yes | go.mod |
| Java | tree-sitter | Yes | pom.xml, build.gradle |
| Kotlin | tree-sitter | Yes | build.gradle.kts |
| C# | tree-sitter | Yes | *.csproj, *.sln |
| C / C++ | tree-sitter | Yes | CMakeLists.txt, Makefile |
| Ruby | tree-sitter | Yes | Gemfile |
| PHP | tree-sitter | Yes | composer.json |
| Swift | tree-sitter | Yes | Package.swift |
| Scala | tree-sitter | Yes | build.sbt |
| Haskell | tree-sitter | Yes | *.cabal, stack.yaml |
| Julia | tree-sitter | Yes | Project.toml |
| Bash | tree-sitter | Yes | *.sh |
What Each Language Gets
Symbol Extraction
dkod parses your source files into an AST and extracts every meaningful symbol — functions, classes, methods, structs, interfaces, traits, modules, and more. This is what powers semantic merging: dkod knows that two agents editing different functions in the same file is not a conflict.
| Language | Symbols Extracted | Visibility Detection |
|---|---|---|
| Rust | functions, structs, enums, traits, impls, modules | pub/pub(crate)/private |
| TypeScript | functions, classes, interfaces, type aliases, variables | export/non-exported |
| Python | functions, classes, methods, module-level variables | _ prefix convention |
| Go | functions, methods (with receivers), structs, interfaces, constants | uppercase = public, lowercase = private |
| Java | classes, interfaces, enums, methods, constructors | public/private/protected/package |
| Kotlin | classes, interfaces, objects, functions, properties, type aliases | public/private/protected/internal |
| C# | classes, structs, interfaces, enums, methods, namespaces | public/private/protected/internal |
| C / C++ | functions (including qualified MyClass::method), classes, structs, enums, namespaces | N/A (header-based) |
| Ruby | classes, modules, methods, singleton methods | all public (method-call-level private/protected) |
| PHP | classes, interfaces, enums, methods, standalone functions | public/private/protected |
| Swift | classes, structs, enums, protocols, functions | public/private/internal/fileprivate/open |
| Scala | classes, traits, objects, enums, functions, vals, vars | private/protected/public |
| Haskell | functions, data types, newtypes, type classes, type synonyms | all public (module export lists) |
| Julia | functions, short functions, structs, abstract types, modules, macros | _ prefix convention |
| Bash | functions | all public |
Dependency & Import Tracking
dkod tracks import relationships across files so semantic merging can detect when a change in one file breaks a dependency in another — something Git can never catch.
Mixed-Language Projects
dkod handles polyglot repositories naturally. If your repo has a Rust backend and a TypeScript frontend, dkod detects both, parses both, and merges both — all in the same session.
Next Steps
- Semantic Merging — how AST-level merging works
- Quickstart — connect your first repo