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

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

> On Apr 26, 2024, at 11:32 AM, Eli Zaretskii <[email-masked]> wrote:
> 
>> 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.

I wonder if we can make Emacs prefer static libtree-sitter in the makefile? Or it’s better done on the distro side?

Yuan