Skip to content

Update to tree-sitter 0.23 #70

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Sep 6, 2024

Conversation

hendrikvanantwerpen
Copy link
Contributor

Tree-sitter released version 0.23 recently. This contains a breaking, but ultimately very good change to how parser bindings work (tree-sitter/tree-sitter#3069). The TLDR of that change is that parsers do not depend on tree-sitter anymore, but instead on a shard (and supposedly very stable) tree-sitter-language crate. As a result, clients are free to chose their tree-sitter version as the parser ABI is supported. Library and parser versions are less tighly coupled, and it should no longer be necessary to move all the parsers to the next tree-sitter version in lock-step to be able to upgrade the library.

Most of the changes in this PR are from running tree-sitter generate. I'll add comments on other changes I did to explain why I thought they are necessary, or where I'm not sure I did it correctly.

Copy link
Contributor Author

@hendrikvanantwerpen hendrikvanantwerpen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some additional comments on the changes:

  • I manually bumped the version. Let me know if that's not the right way, though.
  • I did not update the CHANGELOG yet. Let me know if that should be part of this PR or happens as part of the release process.

Let me know if this works for you, or I need to change anything!

// pub const LOCALS_QUERY: &'static str = include_str!("../../queries/locals.scm");
pub const TAGS_QUERY: &'static str = include_str!("../../queries/tags.scm");
pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm");
pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm");
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I uncommented this because the injections file existed already in the repo.

@@ -19,7 +24,8 @@
"url": "https://github.com/elixir-lang/tree-sitter-elixir.git"
},
"scripts": {
"test": "tree-sitter test",
"build": "npx tree-sitter-cli generate --no-bindings",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I changed this to make the scripts less reliant on the system state. Running npx tree-sitter-cli instead of tree-sitter will ensure the version specified in the devDependencies is used.

src/parser.c Outdated
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove the generated src/ files from the diff, we relay on CI to automatically generate and push these :)

Copy link
Member

@jonatanklosko jonatanklosko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hendrikvanantwerpen thank you for the PR!

@the-mikedavis if you think it looks good, I can release 0.3.0 after merging :)

@hendrikvanantwerpen
Copy link
Contributor Author

Let me quickly run the binding tests locally to ensure I didn't mess those up. I'll report back within the hour on that.

@hendrikvanantwerpen
Copy link
Contributor Author

Thanks for the review @jonatanklosko! I've removed the generated srcs as per your suggestion, and fixed some issues I found with the bindings. This should be good now.

@jonatanklosko jonatanklosko merged commit c0cd12e into elixir-lang:main Sep 6, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants