I especially like this idea: https://marijnhaverbeke.nl/blog/lezer.html#buffer-trees
Basicially, for small subtrees, we store green subtree as a single array
cc @Christopher Durham
There's definitely some interesting concepts in here that I'd like to experiment with. Unfortunately, I don't know at a glance how simple it will be to get working with Rust's static GC rather than a fully dynamic GC, and it's definitely enough different from how rowan/sorbus are set up that it will require another complete restructuring of the tree :sweat_smile:
My opinion: sorbus's tree is a good incremental improvement over rowan's current, and solves the O(n)
SyntaxPtr problem, so we should work on getting sorbus integrated with the current design first, then I can look at using some of the ideas from tree-sitter and lezer.