Vincent Pit [Tue, 20 Sep 2022 21:45:45 +0000 (23:45 +0200)]
This is 0.63
Vincent Pit [Tue, 20 Sep 2022 21:24:04 +0000 (23:24 +0200)]
Bump copyright year
Richard Leach [Tue, 20 Sep 2022 21:16:06 +0000 (23:16 +0200)]
Add support for 5.37.3's PADSV_STORE optimization
Teach B.pm-related tests about this new thing.
This fixes RT #144052.
Vincent Pit [Mon, 22 Aug 2022 13:23:49 +0000 (15:23 +0200)]
Update contact info
Vincent Pit [Mon, 22 Aug 2022 13:24:43 +0000 (15:24 +0200)]
Update META spec to 2.0
Vincent Pit [Sat, 4 Nov 2017 16:35:03 +0000 (17:35 +0100)]
This is 0.62
Vincent Pit [Sat, 4 Nov 2017 16:21:41 +0000 (17:21 +0100)]
Fix t/35-stash.t failures starting with 5.27.5
Typeglob reification may cause a store in 5.28+.
Thanks Father Chrysostomos for contributing a patch.
This fixes [RT #123314].
Vincent Pit [Sat, 4 Nov 2017 14:32:49 +0000 (15:32 +0100)]
Update VPIT::TestHelpers to
15e8aee3
Vincent Pit [Tue, 24 Jan 2017 15:30:21 +0000 (16:30 +0100)]
This is 0.61
Vincent Pit [Tue, 24 Jan 2017 14:56:04 +0000 (15:56 +0100)]
Bump copyright year
Vincent Pit [Wed, 7 Dec 2016 00:57:24 +0000 (22:57 -0200)]
Reorder some code to make identical sections more apparent
Vincent Pit [Wed, 7 Dec 2016 00:55:57 +0000 (22:55 -0200)]
Only enable careful self destruction on perl 5.25.3 and higher
Dave Mitchell [Tue, 6 Dec 2016 23:45:35 +0000 (21:45 -0200)]
Handle self destruction manually
A slightly modified version of the failing test code is as follows:
use Variable::Magic qw<wizard cast>;
my $wiz2 = wizard;
my $wiz1 = wizard free =>
sub { warn "recasting\n"; &cast($_[0], $wiz2); die ; };
warn "result of eval = [" . eval {
my $v = do { my $val = 123; \$val };
study;
&cast($v, $wiz1);
warn "just at end of eval\n";
} . "]\n";
warn "just after eval\n";
On 5.24.0, this gives:
just at end of eval
recasting
result of eval = []
recasting
just after eval
The mortal RV that is created to temporarily point at the scalar being
freed (the IV(123) above) to pass to the free method, isn't initially
freed, and is only freed by the FREETMPS in the nextstate following the
eval. When freed, it triggers another free of the IV(123), which although
it should now be under the influence of $wiz2 rather than $wiz1, it still
calls the 'free' anon sub (I don't understand why its still called, and I
haven't looked into it).
The TEMP not getting freed until after the statement following the eval is
the bug my blead patch was supposed to fix (which it does), but which
caused infinite recursion.
My fix avoids making the temporary mortal RV a TEMP on the tmps stack,
and instead stores a pointer to it in the vmg_svt_free_cleanup_ud struct.
This RV is then manually freed in both the normal and exception cleanup
paths.
Vincent Pit [Tue, 6 Dec 2016 23:38:07 +0000 (21:38 -0200)]
Test that recasting happens only once
This fails starting from perl 5.24.
Vincent Pit [Tue, 6 Sep 2016 22:34:17 +0000 (19:34 -0300)]
This is 0.60
Vincent Pit [Tue, 6 Sep 2016 21:33:16 +0000 (18:33 -0300)]
Skip len magic test on negative indices on recent perls
Starting from perl 5.25.4, this does not cause len magic to be triggered
anymore. It has been temporarily reverted from the core, but is likely to
come back, so this should appease the smokes.
This fixes [RT #128989].
Vincent Pit [Tue, 6 Sep 2016 21:25:41 +0000 (18:25 -0300)]
Bump copyright year
Vincent Pit [Tue, 6 Sep 2016 21:24:08 +0000 (18:24 -0300)]
Update VPIT::XSHelpers to
18554226
Modulo the C++ bit... sigh.
Vincent Pit [Wed, 4 Nov 2015 13:34:25 +0000 (11:34 -0200)]
The Big Boilerplate Factorization
Vincent Pit [Mon, 5 Oct 2015 19:05:32 +0000 (16:05 -0300)]
This is 0.59
Vincent Pit [Thu, 1 Oct 2015 13:51:18 +0000 (10:51 -0300)]
Remove a now obsolete workaround for context stack smashing
Since we switch stacks, we also switch context stacks, so this is no longer
necessary.
Vincent Pit [Thu, 1 Oct 2015 13:09:17 +0000 (10:09 -0300)]
Execute magic callbacks into separate stacks
When magic triggered, stack corruption could occur since the magic callback
arguments were passed on the same stack as the ambient one. This issue has
long gone unnoticed because most ops first unpack their stack arguments
before processing magic, but also because this module is mostly used in
practice to capture magic outside of the usual program op structure were
the argument stack is relevant.
This was made visible with core change
6442877a (publicized in perl 5.22.0)
which caused get magic on transliterations to happen on the same C argument
list as a PUSHmortal. This resulted in an undefined behaviour which was
usually resolved by the magic being processed first (for example by gcc),
but cl.exe on win32 prefers to execute the PUSHmortal first, hence the
stack was corrupted.
This fixes RT #107294.
Vincent Pit [Fri, 25 Sep 2015 10:54:47 +0000 (12:54 +0200)]
Improve support for custom ops
This was added to the core in commit
1830b3d9, which was publicized in perl
5.13.7. Note that our version is slightly different but simpler, since I
can't see how the op type might change during the call to OP_CLASS().
Vincent Pit [Fri, 25 Sep 2015 10:26:01 +0000 (12:26 +0200)]
Correctly bless UTF-8 transliteration op objects
This is a port of commit
512ba29b from perl.
Vincent Pit [Fri, 25 Sep 2015 10:09:04 +0000 (12:09 +0200)]
Represent nulled COPs as B::COP objects
This change was added to the core B.xs in commit
619dadb5, which was made
public in perl 5.21.7. It is pretty unlikely that magic will ever be called
for these nulled ops, but it is better to keep our chunk of B.xs in sync
with the core.
Vincent Pit [Fri, 25 Sep 2015 10:00:36 +0000 (12:00 +0200)]
Add support for ops of class UNOP_AUX
This class has been added in commit
2f7c6295, which was publicly available
in perl 5.21.7.
Vincent Pit [Fri, 31 Jul 2015 18:55:13 +0000 (15:55 -0300)]
Remove the code coverage link
It's outdated and now covered by cpancover.
Vincent Pit [Fri, 31 Jul 2015 18:50:17 +0000 (15:50 -0300)]
Make sure asserts are only checked on DEBUGGING builds
Vincent Pit [Tue, 21 Jul 2015 16:00:13 +0000 (13:00 -0300)]
This is 0.58
Vincent Pit [Tue, 21 Jul 2015 15:25:50 +0000 (12:25 -0300)]
Remove the done_testing() comment in t/09-load-threads.t
The croaking stubs are actually imported only when the environment variable
PERL_TEST_LEANER_USES_TEST_MORE is set.
Vincent Pit [Tue, 21 Jul 2015 15:09:57 +0000 (12:09 -0300)]
Simplify the timeout logic in t/09-load-threads.t
The old loop could actually never be executed more than one iteration.
A real good implementation would check whether any of the peers has exited,
but it would involve much more work.
Vincent Pit [Mon, 20 Jul 2015 22:37:15 +0000 (19:37 -0300)]
Remove an unused static variable
Vincent Pit [Mon, 20 Jul 2015 22:20:34 +0000 (19:20 -0300)]
Work around stray exits in t/09-load-threads.t
Vincent Pit [Mon, 20 Jul 2015 18:47:42 +0000 (15:47 -0300)]
Work around stray exits in t/40-threads.t and t/41-clone.t
Vincent Pit [Mon, 20 Jul 2015 22:34:14 +0000 (19:34 -0300)]
Update VPIT::TestHelpers to
ba865c42
Vincent Pit [Mon, 20 Jul 2015 18:03:32 +0000 (15:03 -0300)]
Avoid global lookups in the magic callbacks in t/18-opinfo.t
This will hopefull work around a rare test failure on MSWin32 (see
http://www.cpantesters.org/cpan/report/
cbda218a-6c4a-1014-b9c5-
a00a324d4f1e)
Vincent Pit [Mon, 20 Jul 2015 17:12:48 +0000 (14:12 -0300)]
Delay destruction of reference return values till the current statement end
Vincent Pit [Mon, 20 Jul 2015 16:32:52 +0000 (13:32 -0300)]
Test timely destruction of values returned from magic callbacks
Vincent Pit [Mon, 20 Jul 2015 16:28:55 +0000 (13:28 -0300)]
Update VPIT::TestHelpers to
3ba261a5
Vincent Pit [Fri, 17 Apr 2015 15:20:02 +0000 (12:20 -0300)]
This is 0.57
Vincent Pit [Thu, 16 Apr 2015 19:25:49 +0000 (16:25 -0300)]
Rename a variable in t/09-load-threads.t
Vincent Pit [Thu, 16 Apr 2015 19:24:18 +0000 (16:24 -0300)]
Also test cloning in t/09-load-threads.t
Vincent Pit [Tue, 14 Apr 2015 17:12:44 +0000 (14:12 -0300)]
vmg_teardown() should also be called at the end of cloned threads
This is achieved by removing the "top interpreter" guard in vmg_teardown(),
which has been obsoleted by our new loaded refcount.
Vincent Pit [Tue, 14 Apr 2015 17:07:43 +0000 (14:07 -0300)]
Update VPIT::TestHelpers to
6d578776
And list the dependencies for the 'capture' feature in BUILD_REQUIRES.
Vincent Pit [Tue, 14 Apr 2015 17:01:55 +0000 (14:01 -0300)]
Make sure t/40-threads.t does not use the CLONE method
This is t/41-clone.t's job.
Vincent Pit [Tue, 14 Apr 2015 16:53:04 +0000 (13:53 -0300)]
Update VPIT::TestHelpers to
3edc6d15
POSIX is now correctly required.
Vincent Pit [Tue, 14 Apr 2015 16:50:58 +0000 (13:50 -0300)]
Allow disabling thread safety in Makefile.PL
Note that thread safety still cannot be forcefully enabled if the necessary
macros are not defined.
Vincent Pit [Tue, 14 Apr 2015 14:46:12 +0000 (11:46 -0300)]
Make sure the load refcount is reset on global setup
Vincent Pit [Thu, 9 Apr 2015 18:12:26 +0000 (15:12 -0300)]
Don't lock the VMG_LOADED mutex across global destruction
If this mutex falls back to the OP_REFCNT mutex, and that a coderef is
freed during global destruction, the mutex is taken twice and the process
hangs. As a general rule, it does not seem very safe so we just set
vmg_loaded to zero early and only run the global teardown callback if
it is zero. This ensures that this callback will only be called once.
Vincent Pit [Thu, 9 Apr 2015 16:57:47 +0000 (13:57 -0300)]
Update VPIT::TestHelpers to
f24eb57f
And port t/17-ctl.t to the new 'capture' feature. Capture::Tiny is no
longer needed for the optional external tests.
Vincent Pit [Wed, 8 Apr 2015 12:24:50 +0000 (09:24 -0300)]
Reference-count global setup/teardown
This fixes surprises like this one : module loaded in thread 1, then in
thread 2, then thread 1 ends and now the module does not work anymore in
thread 2 (even though it should).
Vincent Pit [Mon, 6 Apr 2015 18:50:05 +0000 (15:50 -0300)]
Update t/09-load-test.t
It now has better diagnostics in case of failure, and it tests asymetrical
thread termination.
Vincent Pit [Tue, 31 Mar 2015 20:18:40 +0000 (17:18 -0300)]
Make sure MULTIPLICITY builds set PERL_IMPLICIT_CONTEXT
Vincent Pit [Tue, 31 Mar 2015 17:22:15 +0000 (14:22 -0300)]
Add a missing volatile qualifier
Vincent Pit [Tue, 31 Mar 2015 17:14:53 +0000 (14:14 -0300)]
Improve scheduling for the parallel loading test
Vincent Pit [Mon, 30 Mar 2015 20:45:56 +0000 (17:45 -0300)]
Revamp the setup boot logic
All of this just to fix a couple of leaks!
Vincent Pit [Mon, 30 Mar 2015 20:01:51 +0000 (17:01 -0300)]
Set PERL_DESTRUCT_LEVEL through the environment variable on debugging perls
Vincent Pit [Mon, 30 Mar 2015 19:39:04 +0000 (16:39 -0300)]
Always honor $ENV{PERL_DESTRUCT_LEVEL} when it's set for a debugging perl
I.e. don't fall back to Perl::Destruct::Level if the level is not high
enough.
Vincent Pit [Mon, 30 Mar 2015 17:16:21 +0000 (14:16 -0300)]
Use PERL_FORCE_TEST_THREADS to force testing global destruction
Vincent Pit [Mon, 30 Mar 2015 17:14:20 +0000 (14:14 -0300)]
Revamp PERL_DESTRUCT_LEVEL handling
Vincent Pit [Mon, 30 Mar 2015 17:13:40 +0000 (14:13 -0300)]
Allow passing level 0 to Variable::Magic::TestGlobalDestruction::import
Vincent Pit [Sat, 28 Mar 2015 00:41:12 +0000 (21:41 -0300)]
Port thread tests to the new VPIT::TestHelpers interface
The new 'force threads test' environment variable is
PERL_FORCE_TEST_THREADS.
Vincent Pit [Sat, 28 Mar 2015 00:32:38 +0000 (21:32 -0300)]
Thoroughly test module loading in threads
Vincent Pit [Sat, 28 Mar 2015 00:31:52 +0000 (21:31 -0300)]
Update VPIT::TestHelpers to
4eeb5afc
Vincent Pit [Tue, 24 Mar 2015 19:54:30 +0000 (16:54 -0300)]
Update the ActivePerl/gcc-3.4 hack for EUMM 7.04
Starting from this version, PERL_ARCHIVE is quoted so we can no longer set
it to the empty string. Instead, we remove all occurrences of PERL_ARCHIVE
in the linking step section of the Makefile, which is OK since we specify
the perl DLL in other variables. This new technique is still valid for
older versions of EUMM.
Vincent Pit [Wed, 11 Mar 2015 15:07:32 +0000 (12:07 -0300)]
This is 0.56
Vincent Pit [Wed, 11 Mar 2015 15:01:22 +0000 (12:01 -0300)]
Bump copyright year
Vincent Pit [Wed, 11 Mar 2015 14:39:51 +0000 (11:39 -0300)]
Update VPIT::TestHelpers to
3d200396
Vincent Pit [Wed, 11 Mar 2015 13:25:06 +0000 (10:25 -0300)]
Add lib.pm to BUILD_REQUIRES
Vincent Pit [Wed, 11 Mar 2015 01:30:07 +0000 (22:30 -0300)]
Replace STATIC by static
Vincent Pit [Wed, 11 Mar 2015 01:04:33 +0000 (22:04 -0300)]
Set the mg_flags inside vmg_sv_magicext() according to the vtbl entries
Vincent Pit [Wed, 11 Mar 2015 00:58:17 +0000 (21:58 -0300)]
Factor the sv_magicext() calls into one vmg_sv_magicext()
This new function effectively steals the given object.
Vincent Pit [Wed, 11 Mar 2015 00:41:08 +0000 (21:41 -0300)]
Add a couple of missing SvREFCNT_dec() after sv_magicext()
Vincent Pit [Tue, 10 Mar 2015 20:02:17 +0000 (17:02 -0300)]
Simplify vmg_propagate_errsv_free() so that ERRSV is not used as a lvalue
Vincent Pit [Tue, 10 Mar 2015 20:01:30 +0000 (17:01 -0300)]
Simplify vmg_pp_propagate_errsv() so that ERRSV is not used as a lvalue
Vincent Pit [Tue, 10 Mar 2015 19:33:52 +0000 (16:33 -0300)]
Simplify vmg_call_sv() so that ERRSV is no longer used as a lvalue
It's less hackish and more resilient to core changes.
Vincent Pit [Tue, 10 Mar 2015 19:10:36 +0000 (16:10 -0300)]
Code cleanups in Variable::Magic::TestGlobalDestruction::import
Vincent Pit [Tue, 10 Mar 2015 19:08:30 +0000 (16:08 -0300)]
Make Variable::Magic::TestGlobalDestruction::import return its result
Vincent Pit [Tue, 10 Mar 2015 19:07:08 +0000 (16:07 -0300)]
Output a diagnostic if global destruction is not tested
Vincent Pit [Tue, 10 Mar 2015 19:05:26 +0000 (16:05 -0300)]
Only test global destruction on perl 5.13.4+
Or if PERL_VARIABLE_MAGIC_TEST_THREADS is set, for debugging purpose.
Vincent Pit [Tue, 10 Mar 2015 18:55:52 +0000 (15:55 -0300)]
Remove taint mode from t/15-self.t
Or Config::Perl::V will never be used.
Vincent Pit [Tue, 10 Mar 2015 18:55:18 +0000 (15:55 -0300)]
Better logic for deciding if this perl has DEBUGGING enabled
In particular, it uses Config::Perl::V if it is present.
Vincent Pit [Mon, 20 Oct 2014 23:45:33 +0000 (21:45 -0200)]
This is 0.55
Vincent Pit [Mon, 20 Oct 2014 23:33:59 +0000 (21:33 -0200)]
Remove test dependencies list in POD
Vincent Pit [Mon, 20 Oct 2014 21:39:48 +0000 (19:39 -0200)]
Add support for METHOP ops
This new op class has been introduced with perl commit
b46e009d9, which was
published with perl 5.21.5.
This fixes RT #99319.
Vincent Pit [Mon, 20 Oct 2014 21:31:50 +0000 (19:31 -0200)]
Don't hardcode the OPc_* values
This simplifies the addition of new op classes.
Vincent Pit [Mon, 22 Sep 2014 17:30:47 +0000 (19:30 +0200)]
This is 0.54
Vincent Pit [Mon, 22 Sep 2014 17:09:53 +0000 (19:09 +0200)]
Bump copyright year
Vincent Pit [Mon, 22 Sep 2014 17:07:25 +0000 (19:07 +0200)]
Add support for copy magic on code prototype clone
This introduces the constant VMG_COMPAT_CODE_COPY_CLONE.
Vincent Pit [Mon, 22 Sep 2014 16:20:30 +0000 (18:20 +0200)]
Really make t/35-stash.t pass on 5.21.4
Looks like the core was changed between commit
31d52b17 and the release
of perl 5.21.4.
Vincent Pit [Mon, 1 Sep 2014 12:57:05 +0000 (14:57 +0200)]
Use run_perl() from VPIT::TestHelpers
This updates VPIT::TestHelpers to
4fb18792.
Vincent Pit [Mon, 1 Sep 2014 12:09:07 +0000 (14:09 +0200)]
Make t/35-stash.t pass on 5.21.4
Vincent Pit [Sun, 1 Sep 2013 17:50:02 +0000 (19:50 +0200)]
This is 0.53
Vincent Pit [Sun, 1 Sep 2013 17:42:32 +0000 (19:42 +0200)]
Bump copyright year
Vincent Pit [Sat, 24 Aug 2013 18:19:32 +0000 (15:19 -0300)]
Make Perl version numbers more readable
Vincent Pit [Sat, 24 Aug 2013 16:40:45 +0000 (13:40 -0300)]
Remove obsolete kwalitee workarounds
Vincent Pit [Fri, 23 Aug 2013 19:37:57 +0000 (16:37 -0300)]
No tabs please
Vincent Pit [Tue, 20 Aug 2013 21:17:15 +0000 (18:17 -0300)]
Stop bundling author tests
Vincent Pit [Tue, 6 Aug 2013 03:23:30 +0000 (00:23 -0300)]
Get rid of t/99-kwalitee.t
New versions started to throw warnings if specific environment variables
are not set. This may be appropriate for dist manager users, but not really
for the rest of the world.
Since kwalitee metrics are either obvious or useless, there's no big loss
in removing this test anyway.
Vincent Pit [Sun, 23 Jun 2013 02:24:58 +0000 (23:24 -0300)]
Update the bug tracker URL in META after the rt.perl.org upgrade