Open zmughal opened 1 year ago
Hey @zmughal. Sorry for the late response. I agree that this would be really nice to have.
It looks like Algorithm::Combinatorics
might have a pure-perl equivalent in Math::Combinatorics
. I'll investigate whether changing to that would be easy.
However, HTTP::Headers
is used by both LWP
and HTTP::Negotiate
, both of which are use in relatively core functionality:
LWP
for supporting loading RDF for FROM
clauses and for implementing SERVICE
HTTP::Negotiate
for Attean->negotiate_serializer
which isn't critical for query evaluation, but has been part of the public API since 2014)I don't think I can remove this code, but I will look into whether it could be disabled if you want to opt out of that functionality via an environment variable or something.
I have an experiment where I would like to have a fatpacked script that uses Attean for processing Turtle files. This means that the code would have to allow for a path that does not need to load XS.
I did a small experiment using the SYNOPSIS code and it works after skipping the following modules:
LWP::UserAgent
(because it usesHTTP::Headers
which usesClone
which is XS)Algorithm::Combinatorics
(is XS itself)So when I run:
it works!!
I don't know if this requires a change to the code as it seems to work with the above, but perhaps it could be a more explicitly supported scenario, i.e., with documentation and a test case, as long as it is not too much of a maintenance burden? I don't expect that those modules be replaced with pure Perl equivalents, just that there be a code path that avoids loading them that still allows for some minimal functionality.