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

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

> From: Yuan Fu <[email-masked]>
> Date: Fri, 26 Apr 2024 10:58:20 -0700
> Cc: [email-masked],
>  [email-masked]
> 
> > 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.

Emacs can indeed be statically linked with tree-sitter.  But since we,
the Emacs project, don't distribute binaries, the decision how to link
Emacs with various libraries is made by the distros.  And they always
prefer shared libraries, because that allows to upgrade the libraries
without installing new binaries of dependent programs.

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

Feel free (although we discussed that in the past already).