NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3629 most downloaded on PyPI
Structural Search and Rewrite code at large scale using precise AST pattern.
Last release 1 months ago
31 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
117 releases · first in 2023
feat: add prettified pattern debug `70d33b5`
One column per month.
feat: add follow symbolic links option to CLI `#1461`
fix: create .gitkeep file in new dirs `#1273`
feat: support YAML language `#1436`
fix: fix wrong transformation indentation `#1405`
fix: readopt matched metavar in napi `#1380`
feat: support dynamic language in pyo3 `#1143`
feat: Additional impls for language types `#1379`
feat: add charCount to split lines `#1381`
feat: add --selector in sg run `#1378`
feat: support using transform in rule message `#1366`
feat: support sql experimentally `#1300`
feat: support custom language injection `#1309`
fix: only present code action when there are truly fixable diagnostic `#1327`
fix: make config file work outside of workspace root `#1326`
Fix Python 3.10 macOS ast-grep-py build `#1315`
#1315#1310#1305#1307#1301#1272#1271#1227624aa7007ef11f4a0c177fix: skip missing node in pattern `#1256`
Breaking change: fix: update API for fix `4971ac2`
#1218#1246#1243#1241#12394971ac2c0e9a6522f279cBreaking change: feat: use new pattern struct `f219b43`
feat: add typings for pyo3 `#676`
fix: add Edit to export list `#1186`
Breaking change: refactor: rename Frontend Language to Lang `c582c16`
feat: use var defined in utils in transform/fix `#1155`
#1155#1164#1161#1159#1160#11580898b559beda6e6817854fix: use dumb implementation for web-tree-sitter `5cb7052`
- fix: fix releases `3a6e553` - fix: fix `efaa1ca` - fix: debug `e39fd12`
feat(language): Add support for Haskell via tree-sitter-haskell `#1128`
test: add string test case back in Rust `#1060`
Breaking change: feat: separate RuleCoreError and RuleConfigError `d96efa9`
#1125#1118#1106d96efa9b51cc9577ea8bdfeat: make pattern more permissive `#1087`
feat: Allow to use meta variable captured outside of rewrite rule inside the rewriter `#1072`
feat: find defined vars in utils `cbc6534`
fix: add parse global util error `2482a86`
fix: fix new deprecation note of Rust 2024 `a70565e`
feat(lsp): run "source.fixAll.ast-grep" onsave `#1021`
feat: make test --update-all not report error `#771`
feat: respect suppression in lsp `#1019`
#1019test: add test for error suppression in scan `#1007`
#1007#1011#1009#1005#1006#446da9a938d81365a41a058cLSP default message for diagnostics `#970`
#970#968#977a14741d4a397f423653c2fix(deps): update dependency @swc/core to v1.4.2 `67450cb`
fix: improve expando char replacement `#883`
fix: avoid input stream when --update-all `#943`
Breaking change: refactor: remove unused type generic `9b13d41`
Breaking change: refactor: use more concise name `6a4a17c`
6a4a17c31 January 2024
6a4a17cBreaking change: refactor: remove IndentSensitive trait `#868`
#868#855#862#859beb6f508a43a26c5e0dc887bbf93e629e0f0f462a5230ee9c3a303c1feat: respect user's language extension option `#848`
#84812 January 2024
#848Breaking change: feat: change get_fixer to return Fixer `07c5363`
Breaking change: fix: more strict meta var parsing `13ad32b`
Breaking change: fix: rename MetaVar for better naming `#805`
Breaking change: feat: --stdin now always awaits user input `#791`
#786#785#791#396ef3d8aded35c71a2f22d8Breaking change: feat: reduce metavar_env string allocation `e1ab015`
fix: use tempfile to remove vuln `#765`
fix: update line number color `#739`
doc: import config reference link in error message `#736`
#601#736#736#60155a43bd1f26f62fafd27cchore: add cargo fmt/clippy to CI pipeline `#698`
Breaking change: fix: use ansi by default on windows `#680`
feat: support pyo3 TypedDict `#389`
Your coding agent can read these notes before it upgrades. Set up the MCP server →