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

From: Peter Oliver <[email-masked]>
Date: Fri, 13 Jun 2025 18:20:36 +0100 (BST)

On Thu, 12 Jun 2025, Eli Zaretskii wrote:

>> Date: Thu, 12 Jun 2025 18:05:12 +0100 (BST)
>> From: Peter Oliver <[email-masked]>
>> cc: Eli Zaretskii <[email-masked]>,
>>         Stéphane Marks <[email-masked]>,
>>         [email-masked]
>>
>> On Thu, 12 Jun 2025, Yuan Fu wrote:
>>
>>>> On Jun 11, 2025, at 5:41 AM, Eli Zaretskii <[email-masked]> wrote:
>>>>
>>>> Indeed, I think the loop should be in the opposite direction, from
>>>> the highest supported ABI version to the lowest.
>>>
>>> We’re adding candidates using Fcons, so candidates added later are in the front of the list, no?
>>
>> So we currently prefer the bare libtree-sitter-foo.so to any versioned files?  Shouldn’t that one be the last resort?
>
> Why should it?  isn't it standard practice on Posix systems to make
> foo.so a symlink to a versioned foo-N.M.so?

Yes, but the symlinks are typically not installed by default, since they’re not required for using the libraries, only for building against them.

But mainly, what happens if someone has multiple versions of the library installed?  Perhaps the symlink points to libtree-sitter-foo.so.16, but we’re linked against a version of Tree-sitter that support libtree-sitter-foo.so.15 at best.  It seems to me that, since we know what versions we support, we may as well start with libtree-sitter-foo.so.15, rather than loading libtree-sitter-foo.so and hoping for the best.

-- 
Peter Oliver