ast-grep
diffsitter
ast-grep | diffsitter | |
---|---|---|
34 | 15 | |
5,904 | 1,524 | |
4.2% | - | |
9.9 | 8.6 | |
6 days ago | 6 days ago | |
Rust | Rust | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ast-grep
-
Migrate to React 19 with ast-grep
This article illustrates the usage of ast-grep, a tool designed to locate and substitute patterns in your codebase, towards easing your migration to React 19.
- AST-grep(sg) AST grep based on Treesitter
-
Show HN: GritQL, a Rust CLI for rewriting source code
This looks great, thanks for building and sharing it.
Interested folks may also want to check out ast-grep:
https://github.com/ast-grep/ast-grep
-
How I build a chatbot for my OSS project, for free, without code!
ast-grep is a command-line tool that lets you search and transform code written in many programming languages using abstract syntax trees (ASTs). ASTs are data structures that capture the syntactic and semantic structure of source code. With ast-grep, you can write patterns as if you are writing ordinary code, and it will match all code that has the same syntactical structure. And if you need more power, you can use YAML, a rule system that allows you to write more sophisticated linting rules or code modifications.
- FLaNK Stack Weekly 11 Dec 2023
-
AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
I really like this - it means the tool is available to people with familiarity of any of those four distribution mechanisms.
You can also download pre-built binaries from their releases page: https://github.com/ast-grep/ast-grep/releases/tag/0.14.2
On top of that, they offer API bindings for it in three different languages:
- Rust (not yet stable): https://docs.rs/ast-grep-core/latest/ast_grep_core/
- JavaScript/TypeScript: https://ast-grep.github.io/guide/api-usage/js-api.html
- Python: https://ast-grep.github.io/guide/api-usage/py-api.html
It's rare to see a tool/library offer this depth of language support out of the box.
-
SemanticDiff now supports Rust
Is there an open source library that does this? Maybe something on top of ast-grep
diffsitter
-
AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
Or https://github.com/afnanenayet/diffsitter. I've tried both and I like them. No preference or notable opinions on them yet!
-
Enable new diff option linematch (#14537) · neovim/neovim@04fbb1d
For git diff's I've been using https://github.com/afnanenayet/diffsitter
-
Difftastic, the Fantastic Diff: How it works
One more tree-sitter based diffing tool - diffsitter
https://github.com/afnanenayet/diffsitter
-
What Comes After Git
Several threads here point to difftastic: https://github.com/Wilfred/difftastic
I know a lot of people who have a lot of hope for diffsitter (or something like it): https://github.com/afnanenayet/diffsitter
Personally, I think the reason most "good" semantic diff tools are proprietary is that they are huge amounts of effort that are mostly "hacks" and "heuristics" bandaged together in ways that people don't want to let out how the sausage was made.
But I also "general, language agnostic AST-based semantic diff" is a mountain peak we cannot reach (probably ever), and I believe my experiments found an interesting local maxima that people are maybe sleeping on (lexer-based diffs rather than parser-based diffs): https://github.com/WorldMaker/tokdiff
-
Fast Kernel Headers: Tree -v1: Eliminate the Linux kernel's "Dependency Hell"
https://github.com/afnanenayet/diffsitter there are quiet a few projects such as this one, attempting to solve the issue. :)
-
Thinking about programming systems and not just languages and environments
There’s an interesting project in the semantic diff/merge space that I have been keeping an eye out for https://github.com/afnanenayet/diffsitter
-
What if Git worked with Programming Languages?
I have never used any of them, but it look like tree-sitter based diff tools are exactly what you are searching for (like difftastic, gumtree or diffsitter).
I believe Unison is the only attempt to do this at a programming language/environment level.
For Git diffs, there is Diffsitter, which uses Tree Sitter to generate semantic diffs of code files: https://github.com/afnanenayet/diffsitter
I have not used it, but it is high on my todo list.
-
Difftastic: A syntactic diff tool
Looks great, I'll try it! FYI, there is a very similar project called diffsitter https://github.com/afnanenayet/diffsitter
- diffsitter - a tree-sitter based AST difftool to get meaningful semantic diffs
What are some alternatives?
ssr.nvim - Treesitter based structural search and replace plugin for Neovim.
difftastic - a structural diff that understands syntax 🟥🟩
helix - A post-modern modal text editor.
semantic-source - Parsing, analyzing, and comparing source code across many languages
weggli - weggli is a fast and robust semantic search tool for C and C++ codebases. It is designed to help security researchers identify interesting functionality in large codebases.
nvim-treesitter-context - Show code context
git-repo-sync - Auto synchronization of remote Git repositories. Auto conflict solving. Network fail resilience. Linux & Windows support. And more.
tree-sitter-json - JSON grammar for tree-sitter
telescope.nvim - Find, Filter, Preview, Pick. All lua, all the time.
dark - Darklang main repo, including language, backend, and infra
telescope-sg - Ast-grep picker for telescop.nvim
git-merge-driver - Example of how to configure a custom git merge driver