Go parse rate
Java parse rate
Python parse rate
Ruby parse rate
TypeScript parse rate
TSX parse rate
OCaml parse rate
PHP parse rate
C parse rate
C# parse rate
- Alpha: 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.
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: alpha, 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.
The following thresholds define each maturity level:
- Parse rate: 90%+
- Rulesets: 0+ (10+ rules)
- Parse rate: 99%+
- Rulesets: 1+ (10+ rules)
- All in alpha
- Generally Available (GA)
- Parse rate: 99.9%+
- Rulesets: 2+ (10+ rules)
- All in alpha
- All in beta
Generally speaking, the features-by-maturity level are roughly: alpha) 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.
Visit the cheat sheet generation script and associated semgrep-core test files to learn more about each feature:
Find what you needed in this doc? Join the Slack group to ask the maintainers and the community if you need help.