Skip to content

Supported Languages

Language support matrix, semantics, and Language Product Line configurations.

3 min read

Supported Languages

Omnideps implements a Language Product Line model. Rather than writing divergent analyzers for each language, a unified processing engine is parameterized by orthogonal semantic feature tuples (LanguageConfig).


Language Support Status

LanguageStatusParserKey Characteristics
JavaStable (Production)tree-sitter-javaStrict package declarations, full class/interface inheritance, wildcard imports, generics, type resolution.
RustExperimentaltree-sitter-rustFile & directory modules, inline mod, impl blocks, trait dispatch, generic bounds, deref coercion.
PythonExperimentaltree-sitter-pythonFile modules, __init__.py packages, transitive imports, dynamic field assignment, first-param self.
C++Experimentaltree-sitter-cppExplicit namespace blocks, #include tracking, class methods, scope resolution (::).
CExperimentaltree-sitter-cHeader file dependency graphs, struct definitions, function signatures, typedefs.

Semantic Configuration Comparison

Omnideps tunes analysis per language using the following formal parameters:

1. Module Organization (ModuleConfig)

FeatureJavaRustPythonC++C
package_decl_basedTrueFalseFalseFalseFalse
file_basedFalseTrueTrueFalseFalse
directory_basedFalseTrueTrueFalseFalse
namespace_basedFalseFalseFalseTrueFalse
inline_mod_basedFalseTrueFalseFalseFalse

2. Receiver & Type Resolution

FeatureJavaRustPythonC++C
self_keywordthisselfNonethisNone
self_type_keywordNoneSelfNoneNoneNone
implicit_first_param_as_selfFalseFalseTrueFalseFalse
transitive_importsFalseTrueTrueFalseFalse
extract_dynamic_fieldsFalseFalseTrueFalseFalse
assignment_type_aliasesFalseFalseTrueFalseFalse
callable_typesFalseFalseTrueTrueFalse

Language Profiles

Java (Stable)

Java represents the primary reference implementation in Omnideps:

  • Package Authority: The package com.foo.bar; statement is the single source of truth for the fully qualified namespace.
  • Inheritance Mapping: Full resolution of extends and implements hierarchies.
  • No Implicit Self: Method receivers are implicit in bytecode and not listed as user parameters.

Rust (Experimental)

  • Separation of Structure and Implementation: Decouples struct/enum declarations from multiple impl blocks that can span different files.
  • Deref Coercion: Models Target projection for smart pointers (Box, Arc, Rc).

Python (Experimental)

  • Transitive Re-exports: Correctly resolves symbols re-exported inside __init__.py files (from .submodule import Service).
  • Dynamic Attributes: Captures fields assigned dynamically onto self inside __init__.

C & C++ (Experimental)

  • Header & Scope Linking: Traces #include directives and resolves namespaces using :: operators.