]>
git.vpit.fr Git - perl/modules/Lexical-Types.git/log
Vincent Pit [Mon, 9 Nov 2015 12:49:14 +0000 (10:49 -0200)]
Fix a declaration-after-code error
Vincent Pit [Mon, 9 Nov 2015 12:48:29 +0000 (10:48 -0200)]
Make sure import and unimport don't return anything
Vincent Pit [Mon, 9 Nov 2015 12:47:32 +0000 (10:47 -0200)]
Also set the $^H lexical flag in unimport
Vincent Pit [Mon, 9 Nov 2015 12:45:35 +0000 (10:45 -0200)]
Remove a misleading comment
Storing coderefs in the hints hash is safe because we do it correctly, not
because it's only for compile time.
Vincent Pit [Wed, 4 Nov 2015 13:38:20 +0000 (11:38 -0200)]
The Big Boilerplate Factorization
Vincent Pit [Fri, 31 Jul 2015 18:58:54 +0000 (15:58 -0300)]
Fix a misleading typo in the Changes files
Vincent Pit [Fri, 31 Jul 2015 18:57:34 +0000 (15:57 -0300)]
Remove the code coverage link
It's outdated and now covered by cpancover.
Vincent Pit [Fri, 31 Jul 2015 17:15:26 +0000 (14:15 -0300)]
Revamp module setup/teardown
This fixes crashes and bugs when loading the pragma in several threads run
in parallel.
Vincent Pit [Fri, 31 Jul 2015 16:17:33 +0000 (13:17 -0300)]
Remove one extraneous line feed
Vincent Pit [Fri, 31 Jul 2015 16:16:35 +0000 (13:16 -0300)]
Replace one remaining STATIC into static
Vincent Pit [Fri, 31 Jul 2015 16:15:53 +0000 (13:15 -0300)]
Update ptable.h
Vincent Pit [Fri, 31 Jul 2015 16:07:27 +0000 (13:07 -0300)]
Update VPIT::TestHelpers to
ba865c42
This causes several other changes :
- Test::Leaner is now bundled.
- t/80-threads.t and t/81-threads-teardown.t were ported to the new
VPIT::TestHelpers interface. They also use Test::Leaner instead of
Test::More.
- Lexical::Types::TestThreads has been removed.
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 [Sat, 14 Mar 2015 03:10:57 +0000 (00:10 -0300)]
This is 0.14
Vincent Pit [Sat, 14 Mar 2015 02:44:24 +0000 (23:44 -0300)]
Bump perl dependency to 5.8.4
This lets us remove some flaky test exceptions.
Vincent Pit [Sat, 14 Mar 2015 02:27:24 +0000 (23:27 -0300)]
Bump copyright year
Vincent Pit [Sat, 14 Mar 2015 02:26:57 +0000 (23:26 -0300)]
Add lib.pm to BUILD_REQUIRES
Vincent Pit [Sat, 14 Mar 2015 02:13:50 +0000 (23:13 -0300)]
Replace STATIC by static
Vincent Pit [Thu, 12 Mar 2015 14:11:31 +0000 (11:11 -0300)]
Update VPIT::TestHelpers to
3c878c7c
Vincent Pit [Fri, 6 Feb 2015 14:04:33 +0000 (15:04 +0100)]
Really be compatible with the OP_PARENT feature
OP_SIBLING() has been renamed to OpSIBLING() in perl 5.21.7.
Father Chrysostomos [Fri, 6 Feb 2015 14:00:09 +0000 (15:00 +0100)]
Compatibility fix for perl 5.21.6
Given
my Int ($x, ($y, $z), $t) = ("x", "y");
In 5.20.1 it parses as:
6 <;> nextstate(main 2 -e:1) v:{ ->7
e <2> aassign[t5] vKS ->f
- <1> ex-list lKP ->a
7 <0> pushmark s ->8
8 <$> const(PV "x") s ->9
9 <$> const(PV "y") s ->a
- <1> ex-list lKPRM* ->e
a <0> padrange[$x:2,3] lRM/LVINTRO,1 ->b
- <0> padsv[$x:2,3] lRM*/LVINTRO ->b
c <@> list lKPRM* ->d
b <0> padrange[$y:2,3; $z:2,3] lRM/LVINTRO,2 ->c
- <0> padsv[$y:2,3] lRM*/LVINTRO ->-
- <0> padsv[$z:2,3] lRM*/LVINTRO ->c
d <0> padsv[$t:2,3] lRM*/LVINTRO ->e
In 5.21.6-to-be:
6 <;> nextstate(main 3 -e:1) v:{ ->7
b <2> aassign[t5] vKS ->c
- <1> ex-list lKP ->a
7 <0> pushmark s ->8
8 <$> const[PV "x"] s ->9
9 <$> const[PV "y"] s ->a
- <1> ex-list lKPRM* ->b
a <0> padrange[$x:3,4; $y:3,4; $z:3,4; $t:3,4] lRM/LVINTRO,4 ->b
- <0> padsv[$x:3,4] lRM*/LVINTRO ->-
- <1> ex-list lKPRM* ->-
- <0> ex-pushmark sRM*/LVINTRO ->-
- <0> padsv[$y:3,4] lRM*/LVINTRO ->-
- <0> padsv[$z:3,4] lRM*/LVINTRO ->-
- <0> padsv[$t:3,4] lRM*/LVINTRO ->-
The inner list is optimised away, but still visible in the op tree.
Also, I noticed that this comment in Types.xs is wrong:
/* In a padrange sequence, either all lexicals are typed, or none are.
* Thus we can stop at the first padsv op. However, note that these
* lexicals can need to call different methods in different packages. */
$ perl5.20.1 -MO=Concise -e '(my main $a, my $b, my main $c) = ()'
6 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v:{ ->3
5 <2> aassign[t4] vKS ->6
- <1> ex-list lK ->4
3 <0> pushmark s ->4
- <0> stub lP ->-
- <1> ex-list lKPRM* ->5
4 <0> padrange[$a:1,2; $b:1,2; $c:1,2] lRM/LVINTRO,3 ->5
- <0> padsv[$a:1,2] lRM*/LVINTRO ->-
- <0> padsv[$b:1,2] lRM*/LVINTRO ->-
- <0> padsv[$c:1,2] lRM*/LVINTRO ->-
-e syntax OK
I don’t know whether that has any bearing on the correctness of the code,
but I suspect there is a bug.
The attached patch gets all the tests passing, but I don’t know whether I
caught everything. Note that there are cases where the sibling of the
padrange is actually a null op :
$ ./perl -ILib -MO=Concise -e '@a[my $x, my $y, my $z]'
7 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v:{ ->3
6 <@> aslice vK ->7
3 <0> padrange[$x:1,2; $y:1,2; $z:1,2] l/LVINTRO,3 ->4
- <1> ex-list lK ->4
- <0> ex-pushmark s ->-
- <0> padsv[$x:1,2] lM/LVINTRO ->-
- <0> padsv[$y:1,2] lM/LVINTRO ->-
- <0> padsv[$z:1,2] lM/LVINTRO ->-
5 <1> rv2av[t2] sKR/1 ->6
4 <#> gv[*a] s ->5
-e syntax OK
This fixes RT #100202.
Vincent Pit [Sat, 4 Oct 2014 23:34:10 +0000 (01:34 +0200)]
This is 0.13
Vincent Pit [Sat, 4 Oct 2014 23:20:41 +0000 (01:20 +0200)]
Fix a wrong copypasta in Changes
Vincent Pit [Sat, 4 Oct 2014 23:07:58 +0000 (01:07 +0200)]
Bump copyright year
Vincent Pit [Sat, 4 Oct 2014 23:00:31 +0000 (01:00 +0200)]
Warn about the global slowdown
Vincent Pit [Sat, 4 Oct 2014 22:59:00 +0000 (00:59 +0200)]
Add support for PERL_OP_PARENT
This was introduced in perl 5.21.2.
Vincent Pit [Sat, 4 Oct 2014 22:54:33 +0000 (00:54 +0200)]
Do nothing after that the thread local storage has been freed
This de facto disables the pragma for code eval'd during global
destruction of a thread or a pseudo-fork.
Vincent Pit [Sat, 4 Oct 2014 22:39:58 +0000 (00:39 +0200)]
Nullify thread local storage entries when they are freed
This makes possible problems easier to reproduce.
Vincent Pit [Sat, 4 Oct 2014 22:39:00 +0000 (00:39 +0200)]
Properly decrement the refcount of the default method name at thread end
Vincent Pit [Sat, 4 Oct 2014 22:31:46 +0000 (00:31 +0200)]
Don't cleanup thread local storage before END blocks are executed
reap.h is no longer necessary.
Vincent Pit [Sat, 4 Oct 2014 22:27:40 +0000 (00:27 +0200)]
Use run_perl() from VPIT::TestHelpers
This updates VPIT::TestHelpers to
4fb18792 .
Vincent Pit [Fri, 4 Oct 2013 20:34:48 +0000 (17:34 -0300)]
Renumber test files
To make place for the upcoming addition of non scalar types.
Vincent Pit [Fri, 4 Oct 2013 20:20:43 +0000 (17:20 -0300)]
Remove a now useless SKIP directive
The block was skipped for perl 5.8.2 and below, but we now require 5.8.3.
Vincent Pit [Mon, 9 Sep 2013 12:18:56 +0000 (14:18 +0200)]
Remove profanity
Vincent Pit [Fri, 6 Sep 2013 15:37:59 +0000 (17:37 +0200)]
Add support for padrange ops, introduced in perl 5.17.6
This fixes RT #86112.
Vincent Pit [Fri, 6 Sep 2013 15:32:20 +0000 (17:32 +0200)]
Rename <lt_op_info>, lt_op_map to <lt_op_padxv_info>, lt_op_padxv_map
As we'll need a new pointer table soon.
Vincent Pit [Fri, 6 Sep 2013 15:26:36 +0000 (17:26 +0200)]
Add more basic tests
Vincent Pit [Fri, 6 Sep 2013 11:10:30 +0000 (13:10 +0200)]
Move the run-time initializer call into a new lt_op_info_call() helper
Vincent Pit [Fri, 6 Sep 2013 10:56:40 +0000 (12:56 +0200)]
Rename lt_op_info.old_pp_padsv to .old_pp
For it will be soon allowed to be something else.
Vincent Pit [Sat, 24 Aug 2013 18:12:19 +0000 (15:12 -0300)]
Make Perl version numbers more readable
Vincent Pit [Sat, 24 Aug 2013 16:24:44 +0000 (13:24 -0300)]
Remove obsolete kwalitee workarounds
Vincent Pit [Fri, 23 Aug 2013 18:56:38 +0000 (15:56 -0300)]
No tabs please
Vincent Pit [Fri, 23 Aug 2013 18:40:43 +0000 (15:40 -0300)]
POD verbatim paragraphs should fit into a terminal
Vincent Pit [Fri, 23 Aug 2013 18:39:38 +0000 (15:39 -0300)]
Make sure the POD headings are linkable
Vincent Pit [Thu, 22 Aug 2013 21:14:15 +0000 (18:14 -0300)]
Replace check functions in a thread-safe way
Vincent Pit [Tue, 20 Aug 2013 21:10:19 +0000 (18:10 -0300)]
Stop bundling author tests
Vincent Pit [Wed, 7 Aug 2013 14:39:02 +0000 (11:39 -0300)]
Update the bug tracker URL in META after the rt.perl.org upgrade
Vincent Pit [Tue, 6 Aug 2013 02:55:44 +0000 (23:55 -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 [Wed, 30 Jan 2013 16:45:05 +0000 (14:45 -0200)]
Update VPIT::TestHelpers to
e8344578
Vincent Pit [Fri, 2 Nov 2012 12:40:37 +0000 (10:40 -0200)]
Preserve the PATH environment variable when running a sub-perl on cygwin
Vincent Pit [Fri, 2 Nov 2012 12:37:21 +0000 (10:37 -0200)]
Strip spaces at the end of lines
Vincent Pit [Fri, 2 Nov 2012 12:35:46 +0000 (10:35 -0200)]
Threads tests may not be able to spawn all the threads
To work around this :
- move all the threads boilerplate to a new helper test module ;
- capture the warnings/errors that threads->create may throw and reprint
them properly as diagnostics ;
- do not hardcode the plan and use 'no_plan' instead.
Vincent Pit [Fri, 2 Nov 2012 01:42:11 +0000 (23:42 -0200)]
Port module loading in magic tests to VPIT::TestHelpers
Vincent Pit [Fri, 2 Nov 2012 01:32:27 +0000 (23:32 -0200)]
Update author tests, and add a POD spelling test
Also make sure that the kwalitee test unlinks its byproducts.
Vincent Pit [Fri, 2 Nov 2012 01:28:39 +0000 (23:28 -0200)]
Kill Debian_CPANTS.txt suffixes as well
Vincent Pit [Fri, 2 Nov 2012 01:27:31 +0000 (23:27 -0200)]
Quote version numbers in Makefile.PL
Vincent Pit [Fri, 2 Nov 2012 01:25:57 +0000 (23:25 -0200)]
Add BUILD_REQUIRES to WriteMakefile()
Vincent Pit [Fri, 2 Nov 2012 01:23:14 +0000 (23:23 -0200)]
Simplify Config loading in Makefile.PL
Also add it to configure_requires and build_requires.
Vincent Pit [Fri, 15 Jun 2012 12:40:43 +0000 (14:40 +0200)]
Correct a skip reason in t/18-hints.t
Copypasta is baaad.
Vincent Pit [Sun, 19 Feb 2012 13:09:03 +0000 (14:09 +0100)]
Require Module::ExtractUse 0.24 for the Kwalitee test
Vincent Pit [Tue, 6 Sep 2011 17:25:21 +0000 (19:25 +0200)]
Silence some "unused result" compiler warnings
Vincent Pit [Sun, 4 Sep 2011 16:01:30 +0000 (18:01 +0200)]
Skip the hint entry vivification test on 5.11
It fails the same way even when indirect is not loaded.
Vincent Pit [Wed, 24 Aug 2011 16:27:57 +0000 (18:27 +0200)]
This is 0.12
Vincent Pit [Wed, 24 Aug 2011 16:12:57 +0000 (18:12 +0200)]
Encode the README file in UTF-8
Vincent Pit [Wed, 24 Aug 2011 16:11:32 +0000 (18:11 +0200)]
Add META.json
Vincent Pit [Wed, 24 Aug 2011 16:10:35 +0000 (18:10 +0200)]
Ignore MYMETA.json
Vincent Pit [Wed, 24 Aug 2011 16:09:48 +0000 (18:09 +0200)]
Replace $] by "$]"
An old bug could cause $] to be initialized to a wrong decimal value.
Since its stringified value was always right, we use it instead.
Occurences of $^V were also replaced by $].
Vincent Pit [Wed, 24 Aug 2011 15:48:45 +0000 (17:48 +0200)]
The last argument to hv_fetch is the lvalue flag, not the hash
This could have caused entry vivifications in %^H on 5.8.
Vincent Pit [Sat, 26 Feb 2011 21:58:43 +0000 (22:58 +0100)]
This is 0.11
Vincent Pit [Sat, 26 Feb 2011 19:22:05 +0000 (20:22 +0100)]
Minor POD tweak
Vincent Pit [Sat, 26 Feb 2011 19:18:09 +0000 (20:18 +0100)]
Always skip seen ops in our peep replacement
Sometimes, there are loops in the next chain as e.g. with infinite loops
like "for (;;) { ... }". We can't reuse the op_opt member because it's
almost always set after the first pass.
This fixes RT #66146.
Vincent Pit [Mon, 3 Jan 2011 20:32:15 +0000 (21:32 +0100)]
This is 0.10
Vincent Pit [Mon, 3 Jan 2011 20:24:38 +0000 (21:24 +0100)]
Switch to qw<>
Vincent Pit [Mon, 3 Jan 2011 20:20:16 +0000 (21:20 +0100)]
Fix building on Windows
Vincent Pit [Mon, 3 Jan 2011 15:01:34 +0000 (16:01 +0100)]
Require perl 5.8.3
5.8.2 has a buggy peephole optimizer that may cause test failures.
Vincent Pit [Mon, 3 Jan 2011 14:59:22 +0000 (15:59 +0100)]
Skip threads tests unless perl version is 5.13.4 or greater
There was a long standing bug in the handling of GV <-> CV double linkage
that could (and explicitely did with a poisonous perl) cause segfaults at
thread destruction. It got fixed by Dave in commit
803f274 which went in
5.13.3, but the fix was amended for 5.13.4 in commit
09aad8f . Since it's
not really fair for the user to not be able to install the module because
of this, we skip the threads tests unless perl is at least 5.13.4.
Vincent Pit [Mon, 3 Jan 2011 14:46:33 +0000 (15:46 +0100)]
Force linking against the perl dll when using gcc 3.4 on Windows
When a Windows perl links an XS shared object to an import library using
gcc/g++ version 3.4.x, strange breakage happens at load time because the
mutex-related symbols seems not to be reachable. This situation happens
especially for AS perl and the default compiler suite it installs.
We fix this by forcing g++ to link against the dll instead, which should
be in the same directory as the perl executable (at least for AS perl).
This change is the integration of commit
14f8af2 from Variable::Magic's
repository.
Vincent Pit [Mon, 3 Jan 2011 14:25:13 +0000 (15:25 +0100)]
Introduce LT_FORKSAFE
Vincent Pit [Mon, 3 Jan 2011 14:18:36 +0000 (15:18 +0100)]
Only load Carp on error
Vincent Pit [Mon, 3 Jan 2011 11:40:59 +0000 (12:40 +0100)]
Fix test failures with Strawberry Perl 5.12
perl crashes because the SystemRoot environment variable is missing.
Vincent Pit [Mon, 3 Jan 2011 11:20:15 +0000 (12:20 +0100)]
Use TARG in lt_pp_padsv
This is how Perl_pp_padsv gets the SV.
Vincent Pit [Sat, 1 Jan 2011 22:48:08 +0000 (23:48 +0100)]
Bump copyright year
Vincent Pit [Sat, 1 Jan 2011 22:32:43 +0000 (23:32 +0100)]
Remove the #ifdef wrapping the mutex locks/unlocks
Vincent Pit [Sat, 1 Jan 2011 22:28:48 +0000 (23:28 +0100)]
Only declare dMY_CXT when really needed
Vincent Pit [Sat, 1 Jan 2011 22:23:59 +0000 (23:23 +0100)]
Get rid of CALL_FPTR
Vincent Pit [Sat, 1 Jan 2011 22:21:10 +0000 (23:21 +0100)]
Set the ppaddr member of padsv ops at peep time
There was a race in the "PL_ppaddr[OP_PADSV] save/restore dance" in that
perl might be compiling ops inside and outside the scope of the pragma at
the same time. We solve this by setting the op_ppaddr member of padsv ops
to a_pp_deref during the peephole optimization phase.
Vincent Pit [Fri, 31 Dec 2010 16:36:54 +0000 (17:36 +0100)]
Use cop_hints_fetch_pvn() whenever possible
refcounted_he_fetch() never was public, but in recent 5.13.x versions it is
no longer linkable.
Vincent Pit [Fri, 31 Dec 2010 17:12:38 +0000 (18:12 +0100)]
Use the new CLONE_PARAMS API with perl 5.13.2
Vincent Pit [Fri, 31 Dec 2010 16:48:02 +0000 (17:48 +0100)]
Clarify our policy towards C++ compilers
Vincent Pit [Fri, 31 Dec 2010 16:46:28 +0000 (17:46 +0100)]
Update ptable.h
Vincent Pit [Fri, 31 Dec 2010 16:39:15 +0000 (17:39 +0100)]
Ignore MYMETA.yml
Vincent Pit [Fri, 31 Dec 2010 16:34:14 +0000 (17:34 +0100)]
Get rid of ENTERn/LEAVEn
They are no longer needed since
420f91f3c4f8aa318ede84928eb7c671921500ea .
Vincent Pit [Tue, 1 Jun 2010 17:09:15 +0000 (19:09 +0200)]
Identify the require scope by the outmost cv outside of the current one
Vincent Pit [Tue, 1 Jun 2010 16:36:55 +0000 (18:36 +0200)]
Fix the thread destructor trick for 5.13.1
Vincent Pit [Tue, 18 May 2010 22:15:11 +0000 (00:15 +0200)]
Require perl 5.8.1
Vincent Pit [Thu, 15 Apr 2010 23:32:33 +0000 (01:32 +0200)]
{ENTER,LEAVE}_with_name are no longer needed starting perl 5.11.4
Vincent Pit [Sat, 2 Jan 2010 23:59:11 +0000 (00:59 +0100)]
This is 0.09
Vincent Pit [Sat, 2 Jan 2010 23:58:06 +0000 (00:58 +0100)]
Bump copyright year
Vincent Pit [Sat, 2 Jan 2010 23:37:05 +0000 (00:37 +0100)]
Trailing whitespace
Vincent Pit [Sat, 2 Jan 2010 23:35:01 +0000 (00:35 +0100)]
Do not mix declarations and code