Live data from Hacker News

How AST-grep Rewrote Tree-sitter in Rust and Made It 30% Faster

astgrep.com

1–10 of 18 posts

Re: How AST-grep Rewrote Tree-sitter in Rust and Made It 30% Faster

#4
> incremental old-tree reuse were removed

Maybe I am missing what they meant here, but isn’t the entire point of tree-sitter that you can reuse old trees to make edit updates faster? It is seems quite probable that all the performance gains came from optimising for fixed files with no error recovery, at the cost of how ts is actually used.

Re: How AST-grep Rewrote Tree-sitter in Rust and Made It 30% Faster

#5
post #4

> incremental old-tree reuse were removed Maybe I am missing what they meant here, but isn’t the entire point of tree-sitter that you can reuse old trees to make edit updates faster? It is seems quite probable that all the performance gains came from optimising for fixed files with no error recovery, at the cost of how ts is actually used.

Made a tree-sitter powered text editor. Implementing incremental parsing improved performance from 5ms to 400us for small edits in a ~100LOC file. For many applications tree-sitter without incremental parsing makes no sense, but I guess it's not a problem for ast-grep.

Re: How AST-grep Rewrote Tree-sitter in Rust and Made It 30% Faster

#6
post #4

> incremental old-tree reuse were removed Maybe I am missing what they meant here, but isn’t the entire point of tree-sitter that you can reuse old trees to make edit updates faster? It is seems quite probable that all the performance gains came from optimising for fixed files with no error recovery, at the cost of how ts is actually used.

> isn’t the entire point of tree-sitter that you can reuse old trees to make edit updates faster?

I've used tree-sitter for a few projects, but I never touched the tree-reuse stuff. The value of tree-sitter came from the fact that grammars compile to a .so and can be easily distributed through package managers. Adding support for a new grammar in ast-grep might just mean pointing to the .so at runtime (idk, I haven't checked). So this optimization might make sense for this project.

Re: How AST-grep Rewrote Tree-sitter in Rust and Made It 30% Faster

#7

Reading the article is like climbing a load-bearing wall to quote their last phrase.

Pretty disappointing when you hit ⌘A, right-click, "Check for AI Content" and Pangram comes back with 100% AI... and on every section.

Re: How AST-grep Rewrote Tree-sitter in Rust and Made It 30% Faster

#8
post #4

> incremental old-tree reuse were removed Maybe I am missing what they meant here, but isn’t the entire point of tree-sitter that you can reuse old trees to make edit updates faster? It is seems quite probable that all the performance gains came from optimising for fixed files with no error recovery, at the cost of how ts is actually used.

The article explicitly says incremental parsing was not needed for this application (ingesting whole files for AI analysis).

Re: How AST-grep Rewrote Tree-sitter in Rust and Made It 30% Faster

#10

Reading the article is like climbing a load-bearing wall to quote their last phrase.

I've seen "load bearing" so many times in AI now I can't remember whether we always used "load bearing wall" to refer to a structural interior wall, or whether it's a recent AI-ism.
Post reply on HN