SaaSHub helps you find the best software and product alternatives Learn more →
Top 5 Rust Incremental Projects
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Project mention: Lezer: A Parsing System for CodeMirror, Inspired by Tree-Sitter | news.ycombinator.com | 2024-03-24I learned from a google search that these days upstream tree-sitter provides WebAssembly bindings.
Source: https://github.com/tree-sitter/tree-sitter/tree/master/lib/b...
NPM: https://www.npmjs.com/package/web-tree-sitter
Download from the latest Github release: js file (https://github.com/tree-sitter/tree-sitter/releases/download...) and wasm file (https://github.com/tree-sitter/tree-sitter/releases/download...)
I wonder how this compares to comemo [1] [2], they're both memoization frameworks with "tricks" to limit invalidation.
The trick in comemo's blog post is to make the dependencies fine-grained, by tracking and only comparing what parts of them are actually used; while the trick here is to have functions depend on other outputs instead of the root input, so changes don't propagate all the way.
[1] https://laurmaedje.github.io/posts/comemo/
[2] https://github.com/typst/comemo
Project mention: Why Split Lexing and Parsing into Two Separate Phases? | news.ycombinator.com | 2023-05-04Well, my personal experience was in the opposite direction actually.
I used to use combinators-based approach without Lex/Syn separation (aka PEGs) for a long time. But then I came up to understanding that the separation approach is actually better in performance. And also that working and debugging of the Token sequences while writing parser manually is just more handy (at least for me).
But this is my personal experience of course. I do believe too that it all depends on the goal, and parsers micro-optimizations is not that much critical in many cases, and that combinators approach actually works quite well too.
As of Nom, I can say that it works quite well. But I think that the it's performance gains stem from the fact that Rust is a systems-based PL, and it optimizes function combinations just better than, let say, JavaScript or Python.
In my incremental parsers library Lady Deirdre I utilize Lex/Syn separation, and the LL(1) recursive-descend parsing, and it shows much better performance than in Tree-Sitter at least on relatively big files [1].
[1] https://github.com/Eliah-Lakhin/lady-deirdre/tree/master/wor...
Rust Incremental related posts
- An incremental parsing system for programming tools
- Topiary: A code formatting engine leveraging Tree-sitter
- Looking for Tree-sitter query documentations and guides
- UnTeX - Parsing and formatting TeX documents with Rust - Looking for help
- 30 grammars added to Tree-sitter grammar list
- Emacs Is Not Enough
- How are the language formats that IDEs and things like notepad++ created?
-
A note from our sponsor - SaaSHub
www.saashub.com | 23 Apr 2024
Index
What are some of the best open-source Incremental projects in Rust? This list will help you:
Project | Stars | |
---|---|---|
1 | tree-sitter | 16,380 |
2 | moxie | 827 |
3 | comemo | 373 |
4 | lady-deirdre | 70 |
5 | zinoma | 25 |
Sponsored