Branch: refs/heads/yves/robust_inc_unsquash
  Home:   https://github.com/Perl/perl5
  Commit: 9ecec4a53810a548839f0fb7793d1246c7110d48
      
https://github.com/Perl/perl5/commit/9ecec4a53810a548839f0fb7793d1246c7110d48
  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: 71899e3ec93ade257cd2e0cb5c93d25dea760fcc
      
https://github.com/Perl/perl5/commit/71899e3ec93ade257cd2e0cb5c93d25dea760fcc
  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: b13f55a708f60ba1f1d14adfa2c32c081828cac0
      
https://github.com/Perl/perl5/commit/b13f55a708f60ba1f1d14adfa2c32c081828cac0
  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: 94a664dfcc25133567d4f780a63f985c8d2afb2e
      
https://github.com/Perl/perl5/commit/94a664dfcc25133567d4f780a63f985c8d2afb2e
  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: 6151e905545f6a39b5dc7e25a2407e578d7913db
      
https://github.com/Perl/perl5/commit/6151e905545f6a39b5dc7e25a2407e578d7913db
  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: fb0a75a5895455850b9a44c6ada53d859b6347ce
      
https://github.com/Perl/perl5/commit/fb0a75a5895455850b9a44c6ada53d859b6347ce
  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: 612f091335528c181c14424abc8c705cca5af29b
      
https://github.com/Perl/perl5/commit/612f091335528c181c14424abc8c705cca5af29b
  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: bb95df3034e6e6db9e9b3e5d8a02dd187dcfe811
      
https://github.com/Perl/perl5/commit/bb95df3034e6e6db9e9b3e5d8a02dd187dcfe811
  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: 38366b454ac402f67f2362177623ec8d95960f78
      
https://github.com/Perl/perl5/commit/38366b454ac402f67f2362177623ec8d95960f78
  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: cbb9e21d9a4644ab9ddaec15993fcb48e96198fc
      
https://github.com/Perl/perl5/commit/cbb9e21d9a4644ab9ddaec15993fcb48e96198fc
  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: 506bc5d3f039058b80a91d36d85e8504f1347126
      
https://github.com/Perl/perl5/commit/506bc5d3f039058b80a91d36d85e8504f1347126
  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: 547f010f39d78b59e6342c0c96b2562106d4c198
      
https://github.com/Perl/perl5/commit/547f010f39d78b59e6342c0c96b2562106d4c198
  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/62bb8bceaf45...547f010f39d7

Reply via email to