Subject: bug#78754: Tree-sitter started versioning their shared library filenames

From: Stéphane Marks <[email-masked]>
Date: Wed, 11 Jun 2025 09:49:42 +0100

On Wed, Jun 11, 2025 at 7:48 AM Yuan Fu <[email-masked]> wrote:

>
>
> > On Jun 10, 2025, at 11:52 AM, Peter Oliver <[email-masked]>
> wrote:
> >
> > The Makefiles distributed with Tree-sitter parsers used to install to,
> say, /usr/lib/libtree-sitter-foo.so.0.0.  Consequently, Emacs currently
> expects parsers to have names like this.
> >
> > Recent Makefiles instead install to /usr/lib/libtree-sitter-foo.so.14.0
> or /usr/lib/libtree-sitter-foo.so.15.0 (where 14 or 15 is the Tree-sitter
> ABI version, taken from LANGUAGE_VERSION in the parser’s src/parser.c).
> Emacs should look in these places as well.
> >
> > Presumably we should ask the libtree-sitter we’re using what ABI
> versions it supports, rather than hard-coding 14 and 15.
> >
> > --
> > Peter Oliver
>
> Thanks for the heads-up! I pushed a change to emacs-30 to look for all
> supported versions. Eg, if the tree-sitter library supports language
> version 13 to 15, Emacs will try to look for libtree-sitter-foo.so.13.0,
> libtree-sitter-foo.so.14.0, and libtree-sitter-foo.so.15.0.
>

This is indeed a welcome improvement.  Unless I'm reading it wrong, it
looks like the ABI tests go 0.0 forward through 15 (modulo what's
intrinsically supported).  Should the tests be reversed so the most recent
ABI takes precedence?

-Stephane