]>
git.vpit.fr Git - perl/modules/autovivification.git/log
Vincent Pit [Fri, 11 Nov 2011 18:44:47 +0000 (19:44 +0100)]
Preserve the PATH environment variable when running a sub-perl on cygwin
Vincent Pit [Fri, 11 Nov 2011 18:41:17 +0000 (19:41 +0100)]
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 ;
- use Test::Leaner instead of Test::More, as older Test::More sometimes
cause out of sequence bugs ;
- last but not least, do not hardcode the plan and use done_testing with
the actual number of spawned threads instead.
Vincent Pit [Fri, 11 Nov 2011 18:18:18 +0000 (19:18 +0100)]
Make sure the POD headings are linkable
Vincent Pit [Fri, 11 Nov 2011 17:58:32 +0000 (18:58 +0100)]
Reorder the members of the a_op_info struct a bit
Vincent Pit [Mon, 17 Oct 2011 23:31:01 +0000 (01:31 +0200)]
Minor POD tweaks
Vincent Pit [Wed, 24 Aug 2011 14:58:40 +0000 (16:58 +0200)]
This is 0.10
Vincent Pit [Wed, 24 Aug 2011 14:35:32 +0000 (16:35 +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 14:29:42 +0000 (16:29 +0200)]
Add META.json
Vincent Pit [Wed, 24 Aug 2011 14:24:13 +0000 (16:24 +0200)]
Update bundled Test::Leaner to 0.04
Vincent Pit [Wed, 24 Aug 2011 12:53:55 +0000 (14:53 +0200)]
Ignore MYMETA.json
Vincent Pit [Wed, 24 Aug 2011 12:53:06 +0000 (14:53 +0200)]
Encode the README file in UTF-8
Vincent Pit [Mon, 18 Jul 2011 09:40:23 +0000 (11:40 +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 [Wed, 5 Jan 2011 18:40:45 +0000 (19:40 +0100)]
This is 0.09
Vincent Pit [Tue, 4 Jan 2011 18:22:12 +0000 (19:22 +0100)]
Only declare dMY_CXT when really needed
Vincent Pit [Tue, 4 Jan 2011 18:10:07 +0000 (19:10 +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 #64435.
Vincent Pit [Mon, 3 Jan 2011 20:53:49 +0000 (21:53 +0100)]
This is 0.08
Vincent Pit [Mon, 3 Jan 2011 20:40:18 +0000 (21:40 +0100)]
Bump copyright year
Vincent Pit [Mon, 3 Jan 2011 20:39:55 +0000 (21:39 +0100)]
Switch to qw<>
Vincent Pit [Mon, 3 Jan 2011 20:36:51 +0000 (21:36 +0100)]
Fix building on Windows
Vincent Pit [Fri, 31 Dec 2010 16:17:47 +0000 (17:17 +0100)]
This is 0.07
Vincent Pit [Fri, 31 Dec 2010 15:45:43 +0000 (16:45 +0100)]
Clarify our policy towards C++ compilers
Vincent Pit [Fri, 31 Dec 2010 15:42:56 +0000 (16:42 +0100)]
Spaces vs tabs
Vincent Pit [Fri, 31 Dec 2010 15:42:28 +0000 (16:42 +0100)]
Get rid of ENTERn/LEAVEn
They are no longer needed since
daea523653756bb45d89c7b17bbc6ac70f37019d .
Vincent Pit [Fri, 31 Dec 2010 15:39:57 +0000 (16:39 +0100)]
Move all run-time tweaks to the peephole optimizer
This should remove all the remaining races, but it requires perl 5.8.3
since 5.8.2 has a buggy peephole optimizer.
Vincent Pit [Fri, 31 Dec 2010 14:05:15 +0000 (15:05 +0100)]
Fix rare segfaults and bugs with threads
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 [Thu, 30 Dec 2010 22:58:04 +0000 (23:58 +0100)]
Make it easier to tweak the parameters of t/50-threads.t
Vincent Pit [Thu, 30 Dec 2010 22:35:10 +0000 (23:35 +0100)]
Remove trailing whitespace
Vincent Pit [Thu, 30 Dec 2010 14:54:13 +0000 (15:54 +0100)]
Remove the #ifdef wrapping the mutex locks/unlocks
Vincent Pit [Wed, 29 Dec 2010 23:25:59 +0000 (00:25 +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.
Andrew Main [Wed, 29 Dec 2010 23:03:09 +0000 (00:03 +0100)]
Compatibility fix for perl 5.13.7 and greater
This fixes RT #62800.
Vincent Pit [Wed, 29 Dec 2010 22:48:28 +0000 (23:48 +0100)]
Update ptable.h
Vincent Pit [Wed, 29 Dec 2010 22:13:43 +0000 (23:13 +0100)]
Run lengthy tests with Test::Leaner
This includes Test::Leaner 0.02.
Vincent Pit [Thu, 23 Dec 2010 13:56:37 +0000 (14:56 +0100)]
Document and test vivification of function arguments
Vincent Pit [Thu, 23 Dec 2010 13:34:28 +0000 (14:34 +0100)]
POD overhaul
Vincent Pit [Sun, 3 Oct 2010 00:31:48 +0000 (02:31 +0200)]
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 [Sun, 3 Oct 2010 00:26:00 +0000 (02:26 +0200)]
Ignore MYMETA.yml
Vincent Pit [Sun, 3 Oct 2010 00:25:28 +0000 (02:25 +0200)]
Get rid of CALL_FPTR()
Vincent Pit [Sat, 26 Jun 2010 14:09:05 +0000 (16:09 +0200)]
Test numerous autovivifications
Vincent Pit [Sat, 26 Jun 2010 13:43:21 +0000 (15:43 +0200)]
Use the new CLONE_PARAMS API with perl 5.13.2
Vincent Pit [Mon, 21 Jun 2010 23:25:51 +0000 (01:25 +0200)]
Make a_map_fetch() a simple macro around ptable_fetch() in the non-threaded case
This removes a bit of the run-time performance penalty caused by the pragma.
Vincent Pit [Mon, 21 Jun 2010 22:50:03 +0000 (00:50 +0200)]
Improve the benchmark
Vincent Pit [Sat, 19 Jun 2010 15:20:13 +0000 (17:20 +0200)]
Replace !a_defined() by a_undef()
Vincent Pit [Sat, 19 Jun 2010 14:58:10 +0000 (16:58 +0200)]
Bench several levels of dereferenciation
Vincent Pit [Sat, 19 Jun 2010 13:14:56 +0000 (15:14 +0200)]
Add a sample benchmark
Vincent Pit [Tue, 1 Jun 2010 16:20:35 +0000 (18:20 +0200)]
Improve the thread destructor trick
It's currently only used before 5.10.1, so it wasn't really broken by the
recent changes to blead. But the new technique is cleaner and easier to
maintain.
Vincent Pit [Tue, 1 Jun 2010 16:08:12 +0000 (18:08 +0200)]
Add a basic thread safety test in t/50-threads.t
Vincent Pit [Tue, 18 May 2010 21:34:50 +0000 (23:34 +0200)]
Use a PPCODE: section in CLONE
Vincent Pit [Tue, 18 May 2010 21:33:31 +0000 (23:33 +0200)]
Require perl 5.8.1
Vincent Pit [Sat, 24 Apr 2010 17:40:36 +0000 (19:40 +0200)]
This is 0.06
Vincent Pit [Sat, 24 Apr 2010 17:06:13 +0000 (19:06 +0200)]
Note that A_THREADSAFE only has a meaning with a threaded perl
Vincent Pit [Sat, 24 Apr 2010 15:07:23 +0000 (17:07 +0200)]
When a thread exits, teardown what we set up
Vincent Pit [Sat, 24 Apr 2010 14:27:22 +0000 (16:27 +0200)]
Introduce A_THREADSAFE and A_FORKSAFE
Vincent Pit [Sat, 24 Apr 2010 13:22:14 +0000 (15:22 +0200)]
Fix cloning of hints object when the require propagation workaround is enabled
Also, get rid of A_HINT_BITS().
Vincent Pit [Sat, 24 Apr 2010 12:54:59 +0000 (14:54 +0200)]
Improve the require propagation workaround
Those changes were backported from indirect 0.20.
Vincent Pit [Fri, 23 Apr 2010 23:23:20 +0000 (01:23 +0200)]
Make sure a_defined() calls get magic before testing for definedness
Before this lvalues never appeared as defined, which caused bugs with multiple
nested tied arrays and hashes.
This fixes RT #56870.
Vincent Pit [Fri, 5 Mar 2010 23:09:29 +0000 (00:09 +0100)]
This is 0.05
Vincent Pit [Thu, 4 Mar 2010 12:25:15 +0000 (13:25 +0100)]
This module doesn't care bout MULTIPLICITY, so remove the relevant cruft from Makefile.PL
Thus dynamic_config can now be set to 0.
Vincent Pit [Thu, 4 Mar 2010 00:27:56 +0000 (01:27 +0100)]
"leys" typo in POD
This fixes RT #53647.
Vincent Pit [Thu, 4 Mar 2010 00:22:35 +0000 (01:22 +0100)]
Handle non-numeric hints
We only create our hints as UVs, but we may still be getting non-numeric SVs
if e.g. the autovivification introduction was generated from B::Deparse.
This fixes RT #55154.
Vincent Pit [Sun, 10 Jan 2010 00:25:58 +0000 (01:25 +0100)]
This is 0.04
Vincent Pit [Sun, 10 Jan 2010 00:19:20 +0000 (01:19 +0100)]
Bump copyright year
Vincent Pit [Sun, 10 Jan 2010 00:18:58 +0000 (01:18 +0100)]
Add a caveat about dereferencing slices
Vincent Pit [Sat, 9 Jan 2010 15:01:13 +0000 (16:01 +0100)]
s/specific/kv/ in the array test generator
Vincent Pit [Sat, 9 Jan 2010 14:56:42 +0000 (15:56 +0100)]
Test keys/values @array
Vincent Pit [Sat, 9 Jan 2010 14:02:05 +0000 (15:02 +0100)]
Rename t/21-hash-specific.t to t/22-hash-kv.t
Vincent Pit [Tue, 29 Dec 2009 17:17:57 +0000 (18:17 +0100)]
Update ptable.h
Vincent Pit [Sun, 4 Oct 2009 09:18:03 +0000 (11:18 +0200)]
Re-indent WriteMakefile() arguments
Vincent Pit [Sun, 4 Oct 2009 08:43:29 +0000 (10:43 +0200)]
Build the $name and the main $file from $dist
Vincent Pit [Sun, 4 Oct 2009 07:52:30 +0000 (09:52 +0200)]
Put prerequisites in their own separate hash
Vincent Pit [Sun, 4 Oct 2009 07:28:22 +0000 (09:28 +0200)]
Give an explicit value to dynamic_config
Vincent Pit [Wed, 30 Sep 2009 22:49:16 +0000 (00:49 +0200)]
Only look up to the first require scope for the require propagation workaround
Vincent Pit [Sat, 26 Sep 2009 09:53:10 +0000 (11:53 +0200)]
Kwalitee test overhaul
Vincent Pit [Wed, 24 Jun 2009 16:50:42 +0000 (18:50 +0200)]
Handle array and hash slices
Vincent Pit [Wed, 24 Jun 2009 15:20:14 +0000 (17:20 +0200)]
Factor the rv2xv recheck logic
Vincent Pit [Tue, 23 Jun 2009 22:20:28 +0000 (00:20 +0200)]
This is 0.03
Vincent Pit [Tue, 23 Jun 2009 20:42:37 +0000 (22:42 +0200)]
Eliminate a quadratic behaviour at compile time
Vincent Pit [Fri, 19 Jun 2009 23:07:40 +0000 (01:07 +0200)]
Cover a_ck_padsv()
Vincent Pit [Fri, 19 Jun 2009 22:09:02 +0000 (00:09 +0200)]
Also handle old-style dereferencing "$$hashref{key}"
Vincent Pit [Fri, 19 Jun 2009 15:59:20 +0000 (17:59 +0200)]
Only generate the non-ref test once
Vincent Pit [Thu, 18 Jun 2009 23:28:27 +0000 (01:28 +0200)]
The hint in a_hint() need not to be const
Vincent Pit [Thu, 18 Jun 2009 23:27:58 +0000 (01:27 +0200)]
Store UVs more portably into the hint
Vincent Pit [Thu, 18 Jun 2009 22:47:45 +0000 (00:47 +0200)]
Also test arrays without aelemfast optimization
Vincent Pit [Thu, 18 Jun 2009 22:26:23 +0000 (00:26 +0200)]
Rename tests
Vincent Pit [Thu, 18 Jun 2009 17:54:35 +0000 (19:54 +0200)]
Classify aliasing constructs in the "store" category
There's no way to guess at compile time if the scalar will be modified, such as in "eval '$_ = 1' for $x->{key}". Practically, there's no way to distinguish the xelem op from the one you get for "$x->{key} = $val". I was going against the interpreter's will and this is my defeat.
This commit partially reverts
ddbfd527f4c54458985145aae3a837a8f5868551 .
Vincent Pit [Thu, 18 Jun 2009 15:41:20 +0000 (17:41 +0200)]
Reset the original pp whenever possible in pp_rv2xv
Vincent Pit [Thu, 18 Jun 2009 14:54:24 +0000 (16:54 +0200)]
rv2xv introducing a gv don't need to be overridden
Vincent Pit [Wed, 17 Jun 2009 22:12:56 +0000 (00:12 +0200)]
Better test descriptions
Vincent Pit [Wed, 17 Jun 2009 22:04:34 +0000 (00:04 +0200)]
Really test non-ref arrays and hashes
Vincent Pit [Wed, 17 Jun 2009 18:04:37 +0000 (20:04 +0200)]
This is 0.02
Vincent Pit [Wed, 17 Jun 2009 14:22:48 +0000 (16:22 +0200)]
Test "use autovivification"
Vincent Pit [Wed, 17 Jun 2009 14:15:11 +0000 (16:15 +0200)]
A crude warning test
Vincent Pit [Wed, 17 Jun 2009 14:12:56 +0000 (16:12 +0200)]
Test keys/values on true references
Vincent Pit [Wed, 17 Jun 2009 13:47:53 +0000 (15:47 +0200)]
If we fetch from the pointer table, the entry must exist (or segfault in a more explicit way)
Vincent Pit [Wed, 17 Jun 2009 13:34:15 +0000 (15:34 +0200)]
Run t/23-hash-specific.t under taint mode
Vincent Pit [Wed, 17 Jun 2009 13:19:53 +0000 (15:19 +0200)]
Update ck_root() comment
Vincent Pit [Wed, 17 Jun 2009 13:06:24 +0000 (15:06 +0200)]
Don't autovivify in keys/values
Vincent Pit [Wed, 17 Jun 2009 10:24:41 +0000 (12:24 +0200)]
Plain dereferencing shouldn't have a different behaviour
Vincent Pit [Tue, 16 Jun 2009 10:17:27 +0000 (12:17 +0200)]
Delete exists/delete ops from the map when the pragma isn't in use
Vincent Pit [Mon, 15 Jun 2009 21:59:02 +0000 (23:59 +0200)]
Fix segfaults for "keys %$x"
Vincent Pit [Mon, 15 Jun 2009 21:22:43 +0000 (23:22 +0200)]
Factor the common part of t/20-hash.t and t/21-array.t into a new t/lib/autovivification/TestCases.pm