From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Maxime Devos Newsgroups: gmane.lisp.guile.devel,gmane.lisp.guile.bugs Subject: Re: [PATCH] load-foreign-library: perform substring match on library files Date: Sat, 20 Aug 2022 20:30:02 +0200 Message-ID: <8c61d7cd-553a-6e48-53b6-3563acba253d@telenet.be> References: <23TGNISPS9PPL.2YOENNQD9V56X@8pit.net> <20220723110919.30107-1-soeren@soeren-tempel.net> <936e98a7-a9d2-2607-ef6a-8c0edff19c4a@telenet.be> <2EA1MELO27342.28JGAL8QO05T4@8pit.net> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------hRYIOB5x8etmL3n1jK5Hv5bo" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33559"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Cc: bug-guile@gnu.org, guile-devel@gnu.org To: =?UTF-8?Q?S=c3=b6ren_Tempel?= Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Sat Aug 20 20:30:55 2022 Return-path: Envelope-to: guile-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oPTFG-0008Ux-Mp for guile-devel@m.gmane-mx.org; Sat, 20 Aug 2022 20:30:54 +0200 Original-Received: from localhost ([::1]:58564 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPTFF-0008AF-1o for guile-devel@m.gmane-mx.org; Sat, 20 Aug 2022 14:30:53 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54886) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPTEb-0008A6-7s for guile-devel@gnu.org; Sat, 20 Aug 2022 14:30:13 -0400 Original-Received: from michel.telenet-ops.be ([2a02:1800:110:4::f00:18]:46286) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oPTEX-0002ek-Qy for guile-devel@gnu.org; Sat, 20 Aug 2022 14:30:12 -0400 Original-Received: from [IPV6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16] ([IPv6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16]) by michel.telenet-ops.be with bizsmtp id 9uW32800D20ykKC06uW3MF; Sat, 20 Aug 2022 20:30:03 +0200 Content-Language: en-US In-Reply-To: <2EA1MELO27342.28JGAL8QO05T4@8pit.net> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22; t=1661020203; bh=cq9+6F6u4gsv64qeL+eBu77Z8cdnZbuPMSUuSPE1vtQ=; h=Date:To:Cc:References:From:Subject:In-Reply-To; b=C2WLfbWBelNkCWzkbO5pDJo71N9Nbkm51Q1WwXqY7omtTiwuvpNk+/VX48yvO0AMG qJBX5+3dJ5YbL4+s9fBPIwiSb6vNvK5YWacAgX9YTv13ZywiDIjAwHnqTNmFhK8L/J UZ/Ii7GLJdQVohYMcnxfkFmzKEW6ZeL5SwP6tp5QdBUZhTJMBjEcIMyyZko5de9B6Q USpHgA4s93k/AXPOBPhuPyPM3K6zwn+Q9ftB/c4ILbbCWHVoOHwYi5jYSXgg5cnE/7 wxsbetc4bD68unRE1j86iVLinBBG/TUOUzZsgNzTnAj1qYv+WIae9euOgw3HpUJ7YW f96BM/agFFT9g== Received-SPF: pass client-ip=2a02:1800:110:4::f00:18; envelope-from=maximedevos@telenet.be; helo=michel.telenet-ops.be X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.io gmane.lisp.guile.devel:21317 gmane.lisp.guile.bugs:10320 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------hRYIOB5x8etmL3n1jK5Hv5bo Content-Type: multipart/mixed; boundary="------------c11BUmnRC3DcQe0RBR0rIUIW"; protected-headers="v1" From: Maxime Devos To: =?UTF-8?Q?S=c3=b6ren_Tempel?= Cc: bug-guile@gnu.org, guile-devel@gnu.org Message-ID: <8c61d7cd-553a-6e48-53b6-3563acba253d@telenet.be> Subject: Re: [PATCH] load-foreign-library: perform substring match on library files References: <23TGNISPS9PPL.2YOENNQD9V56X@8pit.net> <20220723110919.30107-1-soeren@soeren-tempel.net> <936e98a7-a9d2-2607-ef6a-8c0edff19c4a@telenet.be> <2EA1MELO27342.28JGAL8QO05T4@8pit.net> In-Reply-To: <2EA1MELO27342.28JGAL8QO05T4@8pit.net> --------------c11BUmnRC3DcQe0RBR0rIUIW Content-Type: multipart/mixed; boundary="------------0SdRp0NCFPS8AY0fP1W0V0bE" --------------0SdRp0NCFPS8AY0fP1W0V0bE Content-Type: multipart/alternative; boundary="------------7TKEkSgR5EaWS4SKEfwdUj0K" --------------7TKEkSgR5EaWS4SKEfwdUj0K Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 DQpPbiAyNC0wNy0yMDIyIDE0OjE2LCBTw7ZyZW4gVGVtcGVsIHdyb3RlOg0KPiBIaSwNCj4N Cj4gVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrLCBjb21tZW50cyBiZWxvdy4NCj4NCj4gTWF4 aW1lIERldm9zPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ICB3cm90ZToNCj4+IExvbmcgdGVy bSwgSSB0aGluayBpdCB3b3VsZCBiZSBpZGVhbCBmb3IgR3VpbGUgdG8gZGVjaWRlIHVwb24g YSBtYWpvcg0KPj4gdmVyc2lvbiAoYW5kIG1heWJlIGV2ZW4gbG9jYXRpb24sIGRlcGVuZGlu ZyBvbiB0aGUgY2hvaWNlcyBvZiB0aGUNCj4+IGRpc3RybykgYXQgX2NvbXBpbGVfIHRpbWUg aW5zdGVhZCBvZiBydW50aW1lLCBub3QgdW5saWtlIGhvdyBvdGhlcg0KPj4gY29tcGlsZXJz IHdvcmsuDQo+IFN1cmUsIHRoYXQgY291bGQgd29yayB0b28uDQo+DQo+PiBJZiB0aGUgR3Vp bGUgbW9kdWxlIGlzIGJlaW5nIGNvbXBpbGVkIHdpdGggLS1ycGF0aCwgaXQgc2VhcmNoZXMN Cj4+ICRDUk9TU19MSUJSQVJZX1BBVEggb3IgJExJQlJBUllfUEFUSCBhbmQgZW5jb2RlcyB0 aGUgZnVsbCBmaWxlIG5hbWUNCj4+ICgvdXNyL2xpYi8uLi4vbGliZ3VpbGUtLi4uIG9yIC9n bnUvc3RvcmUvLi4uL2xpYi8uLi4pIGluIHRoZSAuZ28sDQo+PiB3aGljaCBhdm9pZHMgc29t ZSBtYW51YWwgcGF0Y2hpbmcgd2UgaGF2ZSB0byBkbyBpbiBHdWl4Lg0KPiBXaGF0IGtpbmQg b2YgbWFudWFsIHBhdGNoaW5nIGRvIHlvdSBkbyBvbiBHdWl4PyBDb3VsZCB5b3UgcmVmZXIg bWUgdG8NCj4gdGhlIGNvZGUgZm9yIHRoYXQ/IE1heWJlIHRoYXQncyBzb21ldGhpbmcgd2Ug Y291bGQgYWxzbyBkbyBvbiBBbHBpbmUgaW4NCj4gdGhlIG1lYW50aW1lLg0KDQpBIGZldyBl eGFtcGxlczoNCg0KICAqIGd1aWxlLWctZ29sZjoNCiAgICBodHRwczovL2dpdC5zYXZhbm5h aC5nbnUub3JnL2NnaXQvZ3VpeC5naXQvdHJlZS9nbnUvcGFja2FnZXMvZ3VpbGUteHl6LnNj bSNuMjAwNg0KICAqIGd1aWxlLWFydGFuaXM6DQogICAgaHR0cHM6Ly9naXQuc2F2YW5uYWgu Z251Lm9yZy9jZ2l0L2d1aXguZ2l0L3RyZWUvZ251L3BhY2thZ2VzL2d1aWxlLXh5ei5zY20j bjEzOQ0KICAqIGd1aWxlLWFzcGVsbDoNCiAgICBodHRwczovL2dpdC5zYXZhbm5haC5nbnUu b3JnL2NnaXQvZ3VpeC5naXQvdHJlZS9nbnUvcGFja2FnZXMvZ3VpbGUteHl6LnNjbSNuMzk1 DQogICogZ3VpbGUtc3F1ZXVlDQogICAgaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9j Z2l0L2d1aXguZ2l0L3RyZWUvZ251L3BhY2thZ2VzL2d1aWxlLXh5ei5zY20jbjg3MA0KDQon Z3VpbGUtc3F1ZXVlJyBpcyBvbmUgb2YgdGhlIHNpbXBsZXN0IGV4YW1wbGVzLg0KDQo+PiBJ SVVDLCB0aGUgc3RyaW5nLXByZWZpeD8gc2VhcmNoIGlzIG5vbi1kZXRlcm1pbmlzdGljLCB3 aGljaCBjYW4gbWFrZQ0KPj4gZGVidWdnaW5nIGNvbXBsaWNhdGVkIHdoZW4gbXVsdGlwbGUg dmVyc2lvbnMgYXJlIGluc3RhbGxlZC4NCj4gV2VsbCwgb24gTGludXggcmVhZGRpcigzKSBm aWxlIG5hbWUgb3JkZXIgZGVwZW5kcyBvbiB0aGUgZmlsZSBzeXN0ZW0NCj4gaW1wbGVtZW50 YXRpb24uIFNpbmNlIHRoZSBhbGdvcml0aG0gcmV0dXJucyB0aGUgZmlyc3QgZmlsZSB3aXRo IGENCj4gc3Vic3RyaW5nIG1hdGNoLCBpdCBkZXBlbmRzIG9uIHRoZSByZWFkZGlyIG9yZGVy LiBBcyBsb25nIGFzIHRoZSBzYW1lDQo+IGZpbGVzeXN0ZW0gaXMgdXNlZCwgaXQgc2hvdWxk IGJlIGRldGVybWluaXN0aWMuDQoNCidGaWxlIHN5c3RlbS1zcGVjaWZpYycgaXMgYSBmb3Jt IG9mIG5vbi1kZXRlcm1pbmlzbS4gQWRkaXRpb25hbGx5LCB0aGUgDQpmaWxlIHN5c3RlbSBp bXBsZW1lbnRhdGlvbiBjYW4gY2hhbmdlIG92ZXIgdGltZSwgc28gZXZlbiBpZiBhIGZpbGUg DQpzeXN0ZW0gaXMgZml4ZWQgaW4gYWR2YW5jZSwgaXQgd291bGQgc3RpbGwgYmUgbm9uLWRl dGVybWluaXN0aWMuDQoNCkV2ZW4gaWYgdGhlIGZpbGUgc3lzdGVtIGltcGxlbWVudGF0aW9u IGRvZXNuJ3QgY2hhbmdlLCB0aGVyZSBjYW4gc3RpbGwgDQpiZSBub24tZGV0ZXJtaW5pc20u IEZvciBleGFtcGxlLCBpZiBkaXJlY3RvcmllcyBhcmUgaW1wbGVtZW50ZWQgYXMgaGFzaCAN CnRhYmxlcyBhbmQgJ3JlYWRkaXInIGl0ZXJhdGVzIG92ZXIgdGhlIGJ1Y2tldHMgLS0gaWYg b3RoZXIgZmlsZXMgYXJlIA0KYWRkZWQgb3IgcmVtb3ZlZCwgdGhlIHNpemUgY2hhbmdlcywg d2hpY2ggY2FuIGNhdXNlIGRpZmZlcmVudCBoYXNoZWQgdG8gDQpiZSB1c2VkIGFuZCBoZW5j ZSBhIGRpZmZlcmVudCBvcmRlci4gQXMgc3VjaCwgdGhlIHJlYWRkaXIgb3JkZXIgY2FuIA0K ZGVwZW5kIG9uIHRoZSBwcmVzZW5jZSBhbmQgYWJzZW5jZSBvZiBvdGhlciBmaWxlcywgd2hp Y2ggc2VlbXMgYW4gDQp1bmRlc2lyYWJsZSBmb3JtIG9mIG5vbi1kZXRlcm1pbmlzbSB0byBt ZS4NCg0KPj4gSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYmFpbCBvdXQgaWYgdGhl cmUgYXJlIG11bHRpcGxlIG1hdGNoZXMNCj4+IGluc3RlYWQgb2YgYSByaXNrIG9mIGd1ZXNz aW5nIGluY29ycmVjdGx5Lg0KDQpJbiB0aGF0IHNpdHVhdGlvbiwgdGhleSBhcmUgYWxsIHRo ZSBzYW1lIGZpbGUsIGp1c3Qgd2l0aCBhIGRpZmZlcmVudCANCm5hbWUsIHNvIGluIHRoYXQg c2l0dWF0aW9uIGl0J3Mgbm8gcHJvYmxlbS4NCg0KSG93ZXZlciwgY29uc2lkZXIgbXVsdGlw bGUgKHBvdGVudGlhbGx5IGluY29tcGF0aWJsZSkgdmVyc2lvbnMuIFdoYXQgDQp2ZXJzaW9u IGRvIHlvdSBzZWxlY3QgdGhlbj8gTWF5YmUganVzdCB0aGUgbGF0ZXN0PyBCdXQgdGhleSBt aWdodCBiZSANCmluY29tcGF0aWJsZSAuLi4NCg0KPj4gICAgKiBXaGVuIGRvaW5nIChsb2Fk LWZvcmVpZ24tbGlicmFyeSAiL2dudS9zdG9yZS8uLi4vbGliZm9vLnNvIikNCj4+ICAgICAg KGFic29sdXRlIGZpbGUgbmFtZSEpLCB3b3VsZCBpdCBzZWFyY2ggZm9yDQo+PiAgICAgIC9n bnUvc3RvcmUvLi4uL2xpYmZvby5zby5OP8KgIElmIHNvLCB0aGF0IHdvdWxkIGJlIHN1cnBy aXNpbmcsDQo+PiAgICAgIGVzcGVjaWFsbHkgaWYgbGliZm9vLnNvLk4gZXhpc3RzLg0KPiBZ ZXAsIGl0IGRvZXMuIEkgb3JpZ2luYWxseSBkaWRuJ3Qgd2FudCB0byBtb2RpZnkgdGhlIGhh bmRsaW5nIG9mDQo+IGFic29sdXRlIHBhdGhzIGJ1dCB1bmZvcnR1bmF0ZWx5IGR1cmluZyB0 ZXN0aW5nIEkgbm90aWNlZCB0aGF0IEd1aWxlDQo+IGV4dGVuc2lvbnMgc2VlbSB0byBiZSBs b2FkZWQgd2l0aCBhbiBhYnNvbHV0ZSBwYXRoDQoNCkkgZG9uJ3Qgc2VlIHdoYXQncyB1bmZv cnR1bmF0ZSBhYm91dCB0aGF0Lg0KDQo+IGFuZCBoZW5jZSBkb24ndCB3b3JrIHdpdGhvdXQg dGhlIGxpYmZvby5zbyBzeW1saW5rIFsxXS4NCg0KU2VlbXMgdG8gd29yayBsb2NhbGx5Og0K DQoobG9hZC1leHRlbnNpb24gIi9ob21lL2FudGlwb2RlLy5ndWl4LWhvbWUvcHJvZmlsZS9s aWIvbGlicG5nMTYuc28uMTYiIA0KInQiKSA7IEluIHByb2NlZHVyZSBkbHN5bTogRXJyb3I6 IC4uLiAtLS0gdGhvdWdoIGxpYnJhcnkgd2FzIGxvYWRlZCANCnN1Y2Nlc2Z1bGx5Lg0KDQpJ dCBhcHBlYXJzIHRoYXQgbG9hZC1leHRlbnNpb24gYWxyZWFkeSBhdXRvbWF0aWNhbGx5IGFk ZHMgYSAuc28gdGhvdWdoIA0KKHRlc3RlZCB3aXRoIChsb2FkLWV4dGVuc2lvbiANCiIvaG9t ZS9hbnRpcG9kZS8uZ3VpeC1ob21lL3Byb2ZpbGUvbGliL2xpYnBuZzE2IiAidCIpLCBzbyBl eHRlbmRpbmcgaXQgDQp0byBhbHNvIGFkZCB0aGUgLk4gYXMgZG9uZSBoZXJlIGRvZXNuJ3Qg c2VlbSBhIHJlZ3Jlc3Npb24gdG8gbWUuDQoNCj4+ICAgICogSWYgZG9pbmcgbGliZm9vLnNv Lk4sIHdpbGwgaXQgc2VhcmNoIGZvciBsaWJmb28uc28uTi5NPw0KPiBZZXMsIHNpbmNlIGxp YmZvby5zby5OIGlzIGEgcHJlZml4IG9mIGxpYmZvby5zby5OLk0uDQoNCldoYXQgYWJvdXQ6 IOKAmElmIGRvaW5nIGxpYmZvby5zby41LCB3aWxsIGl0IGFjY2VwdCBsaWJmb28uc28uNTAi PyANCmxpYmZvby5zby41IGlzIGEgcHJlZml4IG9mIGxpYmZvby5zby41MCwgc28gdW5sZXNz IGNhcmUgaXMgdGFrZW4gd2l0aCANCmRvdHMsIGl0IGNvdWxkIGFjY2VwdCBhIGRpZmZlcmVu dCB2ZXJzaW9uIHRoYW4gd2FzIGFza2VkIGZvci4NCg0KPj4gICAgKiBEb2VzIGl0IG9ubHkg YXBwbHkgdG8gdGhlIHN5c3RlbSBwYXRocywgb3IgYWxzbyB0bw0KPj4gICAgICBHVUlMRV9T WVNURU1fRVhURU5TSU9OX1BBVEgsIExURExfTElCUkFSWV9QQVRIIGFuZA0KPj4gICAgICBH VUlMRV9FWFRFTlNJT05fUEFUSD8gVGhlIGxhdHRlciB3b3VsZCBiZSBzdXJwcmlzaW5nIHRv IG1lLCBhcw0KPj4gICAgICB2ZXJzaW9uaW5nIGlzIG1vcmUgb2YgYSBzeXN0ZW0gdGhpbmcu DQo+IElmIHRob3NlIHBhdGhzIGFyZSBhbHNvIHNlYXJjaGVkIHVzaW5nIHRoZSBsb2FkLWZv cmVpZ24tbGlicmFyeQ0KPiBwcm9jZWR1cmUgdGhlbiB0aGV5IGFyZSBhZmZlY3RlZCBieSB0 aGlzIGNoYW5nZS4gQWxzbywgSSBhbSBub3QgYSBHdWlsZQ0KPiBleHBlcnQgYnV0IG9uIEFs cGluZSwgR3VpbGUgZXh0ZW5zaW9ucyBzdWNoIGFzIGd1aWxlLXJlYWRlciBhbHNvIHNoaXAN Cj4gdmVyc2lvbmVkIHNvbmFtZXMgWzFdLg0KDQpUaGV5IGFyZSB2ZXJzaW9uZWQsIGJ1dCBB RkFJSyB0aGUgdmVyc2lvbmluZyBpcyBtb3N0bHkgbWVhbmluZ2xlc3MsIGFzIA0KKElJUkMp IHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGZvciBHdWlsZSBleHRlbnNpb25zIGlzIHZl cnNpb25lZCANCih1c2luZyB0aGUgR3VpbGUgdmVyc2lvbikgYW5kIGFzIGxpYmd1aWxlIGRv ZXNuJ3QgdGFrZSBjYXJlIG9mIHByb3Blcmx5IA0KY2hhbmdpbmcgdGhlIHZlcnNpb24gaW4g Y2FzZSBvZiBuZXcgc3ltYm9scyBvciBpbmNvbXBhdGlibGUgY2hhbmdlcy4NCg0KVGhvdWdo IGFwcGFyZW50bHkgc29tZXRpbWVzIChlLmcuIGZvciBndWlsZS1yZWFkZXIpIGl0J3MganVz dCBwdXQgaW4gDQpbLi4uXS9saWIgLi4uDQoNCj4+ICAgICogVG8gdGVzdCBpdCwgYW5kIGF2 b2lkIGJyZWFraW5nIHRoaW5ncyBsYXRlciB3aXRoIGZ1dHVyZSBjaGFuZ2VzIHRvDQo+PiAg ICAgIGxvYWQtZm9yZWlnbi1saWJyYXJ5LCBjb3VsZCBzb21lIHRlc3RzIGJlIGFkZGVkPw0K PiBQcm9iYWJseSwgdGhvdWdoIEkgYW0gbm90IGZhbWlsaWFyIHdpdGggdGhlIEd1aWxlIHRl c3Qgc2V0dXAgYW5kIHRoZXJlDQo+IGRvbid0IHNlZW0gdG8gYmUgYW55IGV4aXN0aW5nIHRl c3RzIGZvciBmb3JlaWduLWxpYnJhcnkuDQoNCnRlc3Qtc3VpdGUvdGVzdHMvZm9yZWlnbi50 ZXN0LCB0aG91Z2ggaXQgZG9lcyBub3QgdGVzdCBhY3R1YWxseSBsb2FkaW5nIA0KdGhlIGxp YnJhcmllcywgb25seSB0aGUgR3VpbGUgZXF1aXZhbGVudCBvZiBkbHN5bS4NCg0KSSBhbHdh eXMgZm9yZ2V0IGhvdyB0byBydW4gaW5kaXZpZHVhbCB0ZXN0cyAoaW5zdGVhZCBvZiB0aGUg d2hvbGUgc3VpdGUpIA0KbXlzZWxmLg0KDQo+PiAgICogSXMgdGhpcyBjaGFuZ2UgZGVzaXJh YmxlP8KgIEkgbWVhbiwgdGhpcyBpcyBhbiBGRkkgQVBJLCBzbyB0aGUgQUJJIG9mDQo+PiAg ICAgdGhlIGxpYnJhcnkgaXMgcmF0aGVyIGltcG9ydGFudC4gSWYgYSBHdWlsZSBtb2R1bGUg bGlua3MgdG8NCj4+ICAgICBsaWJmb28uc28sIGFuZCB0aGV5IGhhZCB2ZXJzaW9uIE4gaW4g bWluZCwgdGhlbiBpdCdzIGltcG9ydGFudCBpdA0KPj4gICAgIGRvZXNuJ3QgbGluayB0byBO LTEgb3IgTisxIGluc3RlYWQsIGJlY2F1c2Ugb2YgQUJJDQo+PiAgICAgaW5jb21wYXRpYmls aXRpZXMuIEFzIHN1Y2gsIHRvIG1lIGl0IHNlZW1zIF9nb29kXyB0aGF0IHlvdSBnb3Qgc29t ZQ0KPj4gICAgIGVycm9ycywgYXMgbm93IHlvdSBnZXQgYSByZW1pbmRlciB0byBleHBsaWNp dGx5IHN0YXRlIHdoaWNoIEFCSQ0KPj4gICAgIHZlcnNpb24gaXMgbmVlZGVkLiAoWU1NViwg YW5kIHRoZSBtaWxlYWdlIG9mIHRoZSBHdWlsZSBtYWludGFpbmVycw0KPj4gICAgIG1pZ2h0 IHZhcnksIGV0Yy4pDQo+IEluIG15IGV4cGVyaWVuY2UsIG1vc3QgbGFuZ3VhZ2VzIHdoaWNo IGRvbid0IGxpbmsgYWdhaW5zdCBzaGFyZWQNCj4gbGlicmFyaWVzIGRpcmVjdGx5IGJ1dCBp bnN0ZWFkIGxvYWQgdGhlbSBhdCBydW4tdGltZSBkb24ndCBoYXJkY29kZSBBQkkNCj4gdmVy c2lvbnMgKGZvciBleGFtcGxlLCByZWZlciB0byBQeXRob24ncyBjdHlwZXMudXRpbC5maW5k X2xpYnJhcnkpLg0KDQpIb3cgZG9lcyB0aGlzIHNob3cgdGhlICh1bilkZXNpcmFiaWxpdHkg b2YgdGhlIGNoYW5nZT8NCg0KVGhlIGZhY3QgdGhhdCBtb3N0IGxhbmd1YWdlcyBkb24ndCB0 aGF0LCBkb2Vzbid0IHNlZW0gcmVsZXZhbnQgdG8gbWUuIA0KR3VpbGUgaXMgbm90IG1vc3Qg bGFuZ3VhZ2VzLCBhbmQgdGhlIGV4cGxhbmF0aW9uIEkgZ2F2ZSBpcyBub3Qgc3BlY2lmaWMg DQp0byBHdWlsZSwgaXQgd291bGQgd29yayBqdXN0IGFzIHdlbGwgZm9yIFB5dGhvbi4NCg0K TW9yZSBnZW5lcmFsbHksIHlvdSBhcHBlYXIgdG8gYmUgaW5mZXJyaW5nICJYIGlzIGFjY2Vw dGFibGUiIGZyb20gIm1hbnkgDQplbnRpdGllcyBkbyBYIiwgaWdub3JpbmcgbXkgZXhwbGFu YXRpb24gb2Ygd2h5ICJYIGlzIG5vdCBhY2NlcHRhYmxlIi4gDQpUaGlzIGlzIGEgdmFyaWFu dCBvZiB0aGUgImFkIHBvcHVsdW0iIGZhbGxhY3kuDQoNCj4gQWxzbywgdGhlIGN1cnJlbnQg aW1wbGVtZW50YXRpb24gb2YgbG9hZC1mb3JlaWduLWxpYnJhcnkgZG9lcyBub3QgZm9yY2UN Cj4geW91IHRvIHNwZWNpZnkgYW4gQUJJIHZlcnNpb24gYnV0IGluc3RlYWQgbG9hZHMgd2hh dGV2ZXIgdGhlIGxpYmZvby5zbw0KPiBzeW1saW5rIHJlZmVycyB0by4NCkkgaGF2ZSBub3Qg bWFkZSBhbnkgcHJvcG9zYWwgdG8gY2hhbmdlIHRoaXMgYmVoYXZpb3VyLg0KDQpHcmVldGlu Z3MsDQpNYXhpbWUuDQo= --------------7TKEkSgR5EaWS4SKEfwdUj0K Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On 24-07-2022 14:16, S=C3=B6ren Tempel= wrote:
Hi,

Thanks for your feedback, comments below.

Maxime Devos <maximedevos@telenet.be> wrote:
Long term, I think it woul=
d be ideal for Guile to decide upon a major=20
version (and maybe even location, depending on the choices of the=20
distro) at _compile_ time instead of runtime, not unlike how other=20
compilers work.
Sure, that could work too.

If the Guile module is bei=
ng compiled with --rpath, it searches
$CROSS_LIBRARY_PATH or $LIBRARY_PATH and encodes the full file name
(/usr/lib/.../libguile-... or /gnu/store/.../lib/...) in the .go,
which avoids some manual patching we have to do in Guix.
What kind of manual patching do you do on Guix? Could you refer me to
the code for that? Maybe that's something we could also do on Alpine in
the meantime.

A few examples:

'guile-squeue' is one of the simplest examples.

IIUC, the string-prefix? s=
earch is non-deterministic, which can make=20
debugging complicated when multiple versions are installed.=20
Well, on Linux readdir(3) file name order depends on the file system
implementation. Since the algorithm returns the first file with a
substring match, it depends on the readdir order. As long as the same
filesystem is used, it should be deterministic.

'File system-specific' is a form of non-determinism. Additionally, the file system implementation can change over time, so even if a file system is fixed in advance, it would still be non-deterministic.

Even if the file system implementation doesn't change, there can still be non-determinism. For example, if directories are implemented as hash tables and 'readdir' iterates over the buckets -- if other files are added or removed, the size changes, which can cause different hashed to be used and hence a different order. As such, the readdir order can depend on the presence and absence of other files, which seems an undesirable form of non-determinism to me.

I think it would be better=
 to bail out if there are multiple matches
instead of a risk of guessing incorrectly.

In that situation, they are all the same file, just with a different name, so in that situation it's no problem.

However, consider multiple (potentially incompatible) versions. What version do you select then? Maybe just the latest? But they might be incompatible ...


      
  * When doing (load-forei=
gn-library "/gnu/store/.../libfoo.so")
    (absolute file name!), would it search for
    /gnu/store/.../libfoo.so.N?=C2=A0 If so, that would be surprising,
    especially if libfoo.so.N exists.
Yep, it does. I originally didn't want to modify the handling of
absolute paths but unfortunately during testing I noticed that Guile
extensions seem to be loaded with an absolute path

I don't see what's unfortunate about that.

and hence don't work without=
 the libfoo.so symlink [1].

Seems to work locally:

(load-extension=C2=A0 "/home/antipode/.guix-home/profile/lib/libpng16.so.16" "t") ; In procedure dlsym: Error: ... --- though library was loaded succesfully.

It appears that load-extension already automatically adds a .so though (tested with (load-extension=C2=A0 "/home/antipode/.guix-home/profile/lib/libpng16" "t"), so extending it to also add the .N as done here doesn't seem a regression to me.


      
  * If doing libfoo.so.N, =
will it search for libfoo.so.N.M?
Yes, since libfoo.so.N is a prefix of libfoo.so.N.M.

What about: =E2=80=98If doing libfoo.so.5, will it accept libfoo.s= o.50"?=C2=A0 libfoo.so.5 is a prefix of libfoo.so.50, so unless care is taken with dots, it could accept a different version than was asked for.


      
  * Does it only apply to =
the system paths, or also to
    GUILE_SYSTEM_EXTENSION_PATH, LTDL_LIBRARY_PATH and
    GUILE_EXTENSION_PATH? The latter would be surprising to me, as
    versioning is more of a system thing.
If those paths are also searched using the load-foreign-library
procedure then they are affected by this change. Also, I am not a Guile
expert but on Alpine, Guile extensions such as guile-reader also ship
versioned sonames [1].

They are versioned, but AFAIK the versioning is mostly meaningless, as (IIRC) the installation directory for Guile extensions is versioned (using the Guile version) and as libguile doesn't take care of properly changing the version in case of new symbols or incompatible changes.

Though apparently sometimes (e.g. for guile-reader) it's just put in [...]/lib ...

  * To test it, and avoid =
breaking things later with future changes to
    load-foreign-library, could some tests be added?
Probably, though I am not familiar with the Guile test setup and there
don't seem to be any existing tests for foreign-library.

test-suite/tests/foreign.test, though it does not test actually loading the libraries, only the Guile equivalent of dlsym.

I always forget how to run individual tests (instead of the whole suite) myself.

 * Is this change desirabl=
e?=C2=A0 I mean, this is an FFI API, so the ABI of
   the library is rather important. If a Guile module links to
   libfoo.so, and they had version N in mind, then it's important it
   doesn't link to N-1 or N+1 instead, because of ABI
   incompatibilities. As such, to me it seems _good_ that you got some
   errors, as now you get a reminder to explicitly state which ABI
   version is needed. (YMMV, and the mileage of the Guile maintainers
   might vary, etc.)
In my experience, most languages which don't link against shared
libraries directly but instead load them at run-time don't hardcode ABI
versions (for example, refer to Python's ctypes.util.find_library).

How does this show the (un)desirability of the change?

The fact that most languages don't that, doesn't seem relevant to me. Guile is not most languages, and the explanation I gave is not specific to Guile, it would work just as well for Python.

More generally, you appear to be inferring "X is acceptable" from "many entities do X", ignoring my explanation of why "X is not acceptable". This is a variant of the "ad populum" fallacy.

Also, the current implemen=
tation of load-foreign-library does not force
you to specify an ABI version but instead loads whatever the libfoo.so
symlink refers to.
I have not made any proposal to change this behaviour.

Greetings,
Maxime.
--------------7TKEkSgR5EaWS4SKEfwdUj0K-- --------------0SdRp0NCFPS8AY0fP1W0V0bE Content-Type: application/pgp-keys; name="OpenPGP_0x49E3EE22191725EE.asc" Content-Disposition: attachment; filename="OpenPGP_0x49E3EE22191725EE.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xjMEX4ch6BYJKwYBBAHaRw8BAQdANPb/d6MrGnGi5HyvODCkBUJPRjiFQcRU5V+m xvMaAa/NL01heGltZSBEZXZvcyA8bWF4aW1lLmRldm9zQHN0dWRlbnQua3VsZXV2 ZW4uYmU+wpAEExYIADgWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCX4ch6AIbAwUL CQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRBJ4+4iGRcl7japAQC3opZ2KGWzWmRc /gIWSu0AAcfMwyinFEEPa/QhUt2CogD/e2RdF4CYAgaRHJJmZ9WU7piKbLZ7llB4 LzgezVDHggzNJU1heGltZSBEZXZvcyA8bWF4aW1lZGV2b3NAdGVsZW5ldC5iZT7C kAQTFggAOBYhBMHzPuIMUo/bfdcBH0nj7iIZFyXuBQJf56ycAhsDBQsJCAcDBRUK CQgLBRYCAwEAAh4BAheAAAoJEEnj7iIZFyXujpQBAKV1SwDDl4f24rXciDlB9L8W ycZt30CgbewMSRQk4mvbAP9dFMbVVixYBd6C8cfhR+NsOBGiOJnQABlUmgNuqGFJ Dc44BF+HIegSCisGAQQBl1UBBQEBB0BOlzIWiJzgobMF6/cqwLaLk7jIcFSZ++c0 k9cCNT6YXwMBCAfCeAQYFggAIBYhBMHzPuIMUo/bfdcBH0nj7iIZFyXuBQJfhyHo AhsMAAoJEEnj7iIZFyXuMr0BAJc8cl5PGvVmVuSQVKjleNl4DK1/XAaPAYPe34AE fZJPAP9IqLCQhH/FeJanHqBP8gNdGNI2qn8RnnLVfRJgUjZ1BA=3D=3D =3DOVqp -----END PGP PUBLIC KEY BLOCK----- --------------0SdRp0NCFPS8AY0fP1W0V0bE-- --------------c11BUmnRC3DcQe0RBR0rIUIW-- --------------hRYIOB5x8etmL3n1jK5Hv5bo Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wnsEABYIACMWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYwEoKwUDAAAAAAAKCRBJ4+4iGRcl7nrm AP4qix5qTZKi7S6ezZDcNZA/FGe9hKWzYZOwOqtmiTBe/QD/RXWNRuIZI9IFj6uaIeOm/Z8EfgEB N0oDlfqKZV8edwY= =wIS3 -----END PGP SIGNATURE----- --------------hRYIOB5x8etmL3n1jK5Hv5bo--