Branch: refs/heads/yves/robust_inc_unsquash
  Home:   https://github.com/Perl/perl5
  Commit: 60e04f30545949c51802f450996f2cb35deb2603
      
https://github.com/Perl/perl5/commit/60e04f30545949c51802f450996f2cb35deb2603
  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: b411b830a57bbce961c7a77385871b1c2ad32f8e
      
https://github.com/Perl/perl5/commit/b411b830a57bbce961c7a77385871b1c2ad32f8e
  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: a0769ccd6256a25ee2cf79cdf993b88215344cb6
      
https://github.com/Perl/perl5/commit/a0769ccd6256a25ee2cf79cdf993b88215344cb6
  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: 7f47f0e6bbcce7e46fabcb71f220728179f288c0
      
https://github.com/Perl/perl5/commit/7f47f0e6bbcce7e46fabcb71f220728179f288c0
  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: 3b5a9fc5a847756679fe3b5d9b29457fc1a0a25c
      
https://github.com/Perl/perl5/commit/3b5a9fc5a847756679fe3b5d9b29457fc1a0a25c
  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: 28fba85bf0512311ee2b61463e11c04b80678392
      
https://github.com/Perl/perl5/commit/28fba85bf0512311ee2b61463e11c04b80678392
  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: 2feb1a7ff124075344a0964447df6ca452a5d3e6
      
https://github.com/Perl/perl5/commit/2feb1a7ff124075344a0964447df6ca452a5d3e6
  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: d653de5e1bef7e51c60dcad376614563733a7302
      
https://github.com/Perl/perl5/commit/d653de5e1bef7e51c60dcad376614563733a7302
  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: 1f1545d2a0ab5b2b30fc2047f3d782fc515201dc
      
https://github.com/Perl/perl5/commit/1f1545d2a0ab5b2b30fc2047f3d782fc515201dc
  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: 091a11f40ce2b09c2c74adc00143561ee2fd8905
      
https://github.com/Perl/perl5/commit/091a11f40ce2b09c2c74adc00143561ee2fd8905
  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: 502745ca5a97f31a6247206e008c21469935fe16
      
https://github.com/Perl/perl5/commit/502745ca5a97f31a6247206e008c21469935fe16
  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: 065d2142974504ed2ccfe5df7243b9ac6ba151eb
      
https://github.com/Perl/perl5/commit/065d2142974504ed2ccfe5df7243b9ac6ba151eb
  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/05a3241d908d...065d21429745

Reply via email to