Branch: refs/heads/yves/robust_inc_unsquash
Home: https://github.com/Perl/perl5
Commit: 752fef105b81b7adafd2f2a70f81ad5233a97863
https://github.com/Perl/perl5/commit/752fef105b81b7adafd2f2a70f81ad5233a97863
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M t/op/inccode.t
M t/op/require_errors.t
Log Message:
-----------
t/ - INC hardening tests
These tests are pretty much all marked TODO. In the
following patches we will remove the TODO as we fix
the bug or implement the feature.
Commit: 9bf3962b3230144c40b875d3f72d3625e5a854e8
https://github.com/Perl/perl5/commit/9bf3962b3230144c40b875d3f72d3625e5a854e8
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
Log Message:
-----------
pp_ctl.c - rename vars to something more descriptive in require_file()
"i" and "ar" is a bit too minimal, and I will be refactoring
this code somewhat in following patches, so this preps it for
future changes.
Commit: 4b892ca9f0829483f7d1cbaa85a5ed1c211ee337
https://github.com/Perl/perl5/commit/4b892ca9f0829483f7d1cbaa85a5ed1c211ee337
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
Log Message:
-----------
pp_ctl.c - make ENTER debug data a bit more clear
We will have more than one INC hook in the future.
Commit: 93ee45fb7c8d5c5b05b85a2afe88daba6dbba1d6
https://github.com/Perl/perl5/commit/93ee45fb7c8d5c5b05b85a2afe88daba6dbba1d6
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
Log Message:
-----------
pp_ctl.c - refetch @INC from *INC after hook
The original value may have been freed by the time the hook
returns, so we have to refetch it immediately after execution.
We also move the declaration into a more minimal scope.
Commit: 2921725276e833bf5446f39a914de72c5eb81005
https://github.com/Perl/perl5/commit/2921725276e833bf5446f39a914de72c5eb81005
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
M t/op/require_errors.t
Log Message:
-----------
pp_ctl.c - eval INC hooks, and rethrow errors with more useful message
When an INC hook blows up debugging what is going on can be
somewhat difficult. This adds some debugging data if the error
message does not seem to be customized.
Commit: 12099306f0acfb335c4a0a98a647eac5529b3a91
https://github.com/Perl/perl5/commit/12099306f0acfb335c4a0a98a647eac5529b3a91
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
Log Message:
-----------
pp_ctl.c - dedupe @INC entries, especially hooks.
Allowing a hook to execute more than once opens up a bunch of failure
modes that are difficult to debug and potentially fatal. Simply skipping
anything seen twice makes all the pain go away. It also might save some
time in terms of not checking the same dir twice, but that is a side
benefit.
Currently this breaks a test, but that test is kinda broken anyway
and will be fixed in a follow up patch.
Commit: 2b6dd2457fb0e5f0e08aec8d882153a82c63c808
https://github.com/Perl/perl5/commit/2b6dd2457fb0e5f0e08aec8d882153a82c63c808
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
M t/op/inccode.t
M t/op/require_errors.t
Log Message:
-----------
pp_ctl.c - require_file: truthful errors and tests: ties are called once
We need to keep track of what we actually checked. We cannot simply
report the state of @INC at the end of the require, as it might have
changed, possibly several times during the require. This also accounts
for most "silly" stuff that might upset our internal assumptions, for
instance where a tie might report one value to the code doing the
directory check and another in the error message.
We had long standing tests to see that @INC tie elements where called
"once" but they actually tested they were called twice despite claiming
otherwise. This fixes all of those test so that a tied @INC entry is
called exactly once, and whatever it returned the first time is placed
in the error message.
Commit: 6e7c392ad6f611859ae7b623873066ec1842255d
https://github.com/Perl/perl5/commit/6e7c392ad6f611859ae7b623873066ec1842255d
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
M t/op/require_errors.t
Log Message:
-----------
pp_ctl.c - support $INC in require_file @INC hook
$INC is localized to be the C level index of the loop over the @INC
array. At the end of the hook its value is assigned back to the C level
loop iterator (inc_idx). This allows a hook to control where in the @INC
array the loop should continue, for instance -1 represents "reprocess
from the beginning" (and as a convenience so does undef). This can be
useful if the @INC array is modified by a hook. Normally we would just
"continue along", but this may or may not be the right thing to do, so we
let the user decide.
Commit: f295733cf4deeffb0b807803c42f72bb64b84e2d
https://github.com/Perl/perl5/commit/f295733cf4deeffb0b807803c42f72bb64b84e2d
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
M t/op/require_errors.t
Log Message:
-----------
pp_ctl.c - handle objects in @INC a bit more gracefully
If an object doesn't have an INC hook then don't call it. Either simply
stringify the ref (think overloads), OR, if it is a blessed coderef,
then just execute it like it was an unblessed coderef.
Also handle when an object is passed as the first argument of the
array form of call. Previously this would throw an exception as the
first argument on the stack when we call_method() would not be
blessed. When this is the scenario we pass in the array as the third
argument to the method.
Commit: 978fbcd3175377bc638015b6dd270d8448e2a6d2
https://github.com/Perl/perl5/commit/978fbcd3175377bc638015b6dd270d8448e2a6d2
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
M t/op/inccode.t
M t/op/require_errors.t
Log Message:
-----------
pp_ctl.c - add support for an INCDIR hook
This hook returns a list of directories for Perl to search.
If it returns an empty list it acts like a no-op (except for the
error message). The return from INCDIR is always stringified,
they are not treated the same as normal @INC entries so no hooks
returning hooks.
Commit: a09190f29a8a3ba2528fa9b146f0b662307fe471
https://github.com/Perl/perl5/commit/a09190f29a8a3ba2528fa9b146f0b662307fe471
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pp_ctl.c
Log Message:
-----------
pp_ctl.c - move logic closer to where it is used
No sense doing something that has not effect.
Commit: 05a3241d908d4515dee7ae013a1005694dbac5d2
https://github.com/Perl/perl5/commit/05a3241d908d4515dee7ae013a1005694dbac5d2
Author: Yves Orton <[email protected]>
Date: 2022-11-26 (Sat, 26 Nov 2022)
Changed paths:
M pod/perldelta.pod
M pod/perldiag.pod
M pod/perlfunc.pod
M pod/perlvar.pod
Log Message:
-----------
pod for INC hook changes, $INC and INCDIR hooks
Compare: https://github.com/Perl/perl5/compare/06bddc15fe17...05a3241d908d