-
Notifications
You must be signed in to change notification settings - Fork 156
Add Lua bindings for building stack graphs #351
Conversation
Performance SummaryComparing base 3696992 with head bc424cd on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
bc424cd to
9a18451
Compare
Performance SummaryComparing base 3696992 with head 9a18451 on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
9a18451 to
5a22bf7
Compare
Performance SummaryComparing base 3696992 with head 5a22bf7 on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
Performance SummaryComparing base 3696992 with head 58a0ca0 on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
58a0ca0 to
5fcd36b
Compare
Performance SummaryComparing base 3696992 with head 5fcd36b on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
5fcd36b to
470f7ab
Compare
Performance SummaryComparing base 5a6744b with head c57360d on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
We're using the `mlua` crate, since it seems most actively maintained and performant.
470f7ab to
f9d69c3
Compare
Performance SummaryComparing base 5a6744b with head 82d0a0a on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
f9d69c3 to
06e8340
Compare
Performance SummaryComparing base 5a6744b with head 6e3285a on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
You can't do anything with them other than call `tostring` on them, but even that is helpful in test cases!
06e8340 to
f11afc7
Compare
This is the spackle that parses a source file using tree-sitter, and calls a Lua function with it and an empty stack graph. The Lua function can do whatever it wants to walk the parse tree and add nodes and edges to the graph.
This one is fun, because `SpanCalculator` holds a reference to the file's source code, while the `mlua::UserData` works best for Rust types that are 'static. To get around this, we make sure to only ever create `SpanCalculator` wrappers for source data that is owned by the Lua interpreter, and add that source data as a user value of the Lua wrapper that we create. That should cause Lua's garbage collector to ensure that the source code outlives the `SpanCalculator`, making it safe for us to transmute the source reference to a 'static lifetime.
The stack graph builder now imports the `lsp-position` module before handing control to your Lua script. That lets you create a span calculator, and use that to fill in spans and definiens for the stack graph nodes that you create.
f11afc7 to
39ee686
Compare
Performance SummaryComparing base 1b01a8c with head ff1e99d on typescript_benchmark benchmark. For details see workflow artifacts. Note that performance is tested on the last commits with changes in BeforeAfter |
|
The github/stack-graphs repository is no longer being maintained. As per #502, I'm closing all issues and pull requests before archiving the repository. |
We're using the
mluacrate, since it seems most actively maintained and performant.