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

From: Eli Zaretskii <[email-masked]>
Date: Fri, 26 Apr 2024 20:21:06 +0300

> 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.

> 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.