Supported languages
Language maturityβ
GA β | Beta π | Experimental π§ |
---|---|---|
C# | Kotlin | Bash |
Go | Terraform | C |
Java | C++ | |
JavaScript | Dockerfile | |
JSON | Hack | |
JSX | Lua | |
PHP | OCaml | |
Python | R | |
Ruby | Rust | |
Scala | Solidity | |
TSX | YAML | |
TypeScript | Generic (ERB, Jinja, etc.) |
Support expectationsβ
- Experimental: experimental support with many known bugs.
- Looking for dedicated users to help us improve these languages.
- Expect limited support responses, as these languages will be lowest priority.
- Beta: supported language with known bugs.
- Looking for beta users to report bugs and rapidly iterate with our team.
- Expect best-effort support responses when there are no higher priority requests being handled.
- GA: production-level support with few known bugs.
- Looking for bug reports and feedback from users.
- Expect timely and thorough support responses, generally within 24 hours.
Maturity definitionsβ
Language maturity is determined by 3 factors in the Semgrep ecosystem:
- Parse rate - how well Semgrep can parse code in a given language.
- Feature support - what Semgrep features are implemented for a given language.
- Ruleset count - number of Semgrep rule groupings in the cloud app.
There are 3 levels of maturity: experimental, beta, and generally available (GA). Each of these maturity levels are combined with a threshold of the factors above. When a language meets the maturity threshold for each of the factors then itβs moved into that maturity level.
Generally speaking, the features-by-maturity level are roughly: experimental) syntax support, ellipsis operator support, and basic metavariable support, beta) everything prior and nearly complete metavariable support and metavariable equality, GA) everything prior and all advanced features like regexp, equivalence, deep expression operator, typing, etc.
The following thresholds define each maturity level:
- Experimental
- Parse rate: 90%+
- Rules: 0+
- Features:
concrete_syntax
deep_exprstmt
dots_args
dots_nested_stmts
dots_stmts
dots_string
metavar_arg
metavar_call
metavar_equality_var
- Beta
- Parse rate: 99%+
- Rules: 5+
- Features:
- All in experimental
metavar_class_def
metavar_func_def
metavar_cond
metavar_equality_expr
metavar_equality_stmt
metavar_import
metavar_stmt
- Generally Available (GA)
- Parse rate: 99.9%+
- Rules: 10+
- Features:
- All in experimental
- All in beta
deep_expr_operator
dots_method_chaining
equivalence_constant_propagation
equivalence_naming_import
(language dependent)metavar_anno
(language dependent)metavar_key_value
metavar_typed
(language dependent)metavar_ellipsis_args
regexp_string
Visit the cheat sheet generation script and associated semgrep-core test files to learn more about each feature:
Language parse ratesβ
Find what you needed in this doc? Join the Slack group to ask the maintainers and the community if you need help.