On Sat, Mar 07, 2026 at 01:42:55PM +0100, Patrice Dumas wrote:
> Hello,
> 
> Currently the XS modules, in practice the associated libtool-generated
> .la files are searched for in @INC Perl path directories array.  I think
> that it is not a good idea for two reasons:
> 
> 1) we actually know exactly where the modules will be found and we put
>   the corresponding directories in front of @INC.  Using @INC add come
>   complexity, a little bit of inefficiency and useless information to
>   XS loading debugging messages but has no effect.
> 
> 2) we do not follow the Perl conventions for XS modules paths, that are
>   in auto/<package> in @INC directories.  Therefore it is very likely that
>   if we find something on @INC it is not what we are looking for.  And
>   also this could be confusing for people knowing Perl well and not
>   getting the module they expect to be loaded.
> 
> I think that we should setup our own path, which could actually be only
> one directory, and if we want to add to it, we should use a
> customization or command-line variable or specific ENV variable.  We
> consider these XS modules internal, it is more consistent that we set a
> separate path, if we need one.  I do not think that we need to be able
> to set a path, actually.

OK that sounds fine.  There is a comment in XSLoader.pm:

# We look for the .la and .so files in @INC because this allows us to override
# which modules are used using -I flags to "perl".

However, I'm not sure if or where we use these -I flags.  I had a look at
a few Makefile.am files but didn't see anything.

The DynaLoader manpages only mentions using @INC in a function that we
don't call, I believe (DynaLoader::bootstrap, not to be confused with the
bootstrap XSUB of the XS module).

Reply via email to