Subject: bug#70438: Emacs error 6 abort when starting rust-ts-mode

From: Yuan Fu <[email-masked]>
Date: Fri, 26 Apr 2024 10:58:20 -0700

> On Apr 26, 2024, at 10:21 AM, Eli Zaretskii <[email-masked]> wrote:
> 
>> From: Yuan Fu <[email-masked]>
>> Date: Fri, 26 Apr 2024 09:49:01 -0700
>> Cc: Stefan Heitmann <[email-masked]>,
>> [email-masked]
>> 
>> In the GitHub issue that tracks this incident, the author made clear that maintaining ABI versioning correctly is beyond their ability right now. So I think we should pin the tree-sitter version. But then IIUC we can only bump tree-sitter version with each Emacs release? This is a bit unfortunate but better than crashing Emacs.
> 
> We cannot pin a tree-sitter version, because that makes sense only for
> binary distributions.  We ship only source tarballs, and for those,
> _any_ tree-sitter version will do -- provided that Emacs is built with
> the same version of tree-sitter with which it will be used, or with
> the version that uses the same ABI.
> 
> We could perhaps record the version with which Emacs was built, and
> then reject incompatible versions we find at run time, but since
> tree-sitter doesn't provide any version-related symbols in their
> header files, we cannot do even that.
> 
> So the bottom line is still the same: we cannot do anything here, as
> long as the tree-sitter developers think they can break the ABI at
> will.

Can we statically link tree-sitter? From the look of it, tree-sitter devs don’t plan to not break ABI. We need to do something to prevent Emacs from crashing.

>> This also brings me to the versioning of tree-sitter grammars—they really do change often, we should really consider pinning their version in some way. The current catch-up game we play can’t be scalable.
> 
> That's a separate issue: when there's incompatibility with grammar
> libraries, Emacs doesn't crash.

I can open a separate thread for this.

Yuan