summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* add new release to perlhistv5.15.2Ricardo Signes2011-08-201-0/+1
|
* remove boilerplate text from perldeltaRicardo Signes2011-08-201-243/+3
|
* update perldelta for release;Ricardo Signes2011-08-201-8/+47
| | | | | | | In particular, note the addition of the coreargs opcode in perldelta We might have no need of this entry in the perl5160 delta, but for those brave enough to read 5.15.2 delta, it may be of interest.
* WIPRicardo Signes2011-08-201-0/+4
|
* Update Module::CoreList for 5.x.yRicardo Signes2011-08-202-9/+686
|
* bump version to 5.12.2 using Porting/bump-perl-versionRicardo Signes2011-08-2021-142/+142
|
* &CORE::fork()Father Chrysostomos2011-08-192-0/+3
| | | | | | | In commit 7fa5bd9b5, I not only forgot about getpwent (see commit cc131e4, in which I mistakenly called it pwent), but fork as well. Again, all this commit has to do is add it to the list of ‘ampable’ functions in gv.c. The rest already works.
* Add OPpASSIGN_CV_TO_GV to B::ConciseFather Chrysostomos2011-08-191-0/+1
|
* Add OPpDONT_INIT_GV to B::ConciseFather Chrysostomos2011-08-191-0/+1
|
* pp.c:pp_rv2gv: Skip amagic check when vivifying a globFather Chrysostomos2011-08-191-1/+1
| | | | | | | | | | Commit bb1bc619 eliminated the only case that ‘goto wasref’ is called with something that might have overloading. The only ‘goto wasref’ that remains is the autovivifying case, which cannot have any magic (since the GV has just been created). So the wasref label can be moved below the amagic check. Consider this a picoöptimisation.
* &CORE::pwent()Father Chrysostomos2011-08-192-2/+3
| | | | | | In commit 7fa5bd9b5, I forgot about pwent. All this commit has to do is add it to the list of ‘ampable’ functions in gv.c. The rest already works.
* Ignore ExtUtils::Manifest's release tests in the coreFlorian Ragwitz2011-08-191-0/+1
|
* Upgrade ExtUtils::Manifest from version 1.59 to 1.60Florian Ragwitz2011-08-193-2/+6
|
* Swap the release suckers for 5.15.3 and 5.15.4Florian Ragwitz2011-08-191-2/+2
| | | | | | Turns out I mixed things up and would've had to do two releases in one month, which is probably not a good idea. Stevan was happy to do his release a month earlier.
* perldelta for perl #97010Father Chrysostomos2011-08-181-0/+6
|
* [perl #97020] Carp (actually caller) leaking memoryFather Chrysostomos2011-08-184-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit eff7e72c3 (Detect incomplete caller overrides in Carp) used this little trick for detecting a @DB::args that an overridden caller() failed to set: + @args = \$i; # A sentinal, which no-one else has the address of But there is a bug in caller(). The first time caller tries to write to @DB::args, it calls Perl_init_dbargs first. That function checks whether @DB::args is AvREAL, in case someone has assigned to it, and takes appropriate measures. But caller doesn’t bother calling Perl_init_dbargs more than once. So manually-assigned items in @DB::args would leak, starting with the *second* call to caller. Commit eff7e72c3 triggered that bug, resulting in a regression in Carp, in that it started leaking. eff7e72c3 was backported to 5.12.2 with commit 97705941a4, so in both 5.12 and 5.14 Carp is affected. This bug (the caller bug, not Carp’s triggering thereof) also affects any caller overrides that set @DB::args themselves, if there are alternate calls to the overridden caller and CORE::caller. This commit fixes that by changing the if (!PL_dbargs) condition in pp_caller to if (!PL_dbargs || AvREAL(PL_dbargs)). I.e., if @args is either uninitialised or AvREAL then call Perl_init_dbargs. Perl_init_dbargs also has a bug in it, that this fixes: The array not only needs AvREAL turned off, but also AvREIFY turned on, so that assignments to it that occur after its initialisation turn AvREAL back on again. (In fact, Larry Wall added a comment suggesting this back in perl 5.000.)
* Update perldiag/&CORE::%s cannot be called directlyFather Chrysostomos2011-08-181-1/+1
| | | | Something I missed in commit d47dcd9c7
* Document &CORE::nullary() callsFather Chrysostomos2011-08-182-6/+10
|
* &CORE::wantarray()Father Chrysostomos2011-08-185-5/+36
| | | | | | | | This commit allows &CORE::wantarray to be called via ampersand syntax or through references. It adds a new private flag for wantarray, OPpOFFBYONE, which caller will use as well, telling wantarray (or caller) to look one call fur- ther up the call stack.
* &CORE::foo() for nullary functionsFather Chrysostomos2011-08-185-11/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit makes nullary subs in the CORE package callable with ampersand syntax and through references--except for wantarray, which is more complicated and will have its own commit. It does this by creating an op tree like this: $ ./perl -Ilib -MO=Concise,CORE::times -e 'BEGIN{\&CORE::times}' CORE::times: 3 <1> leavesub[1 ref] K/REFC,1 ->(end) - <@> lineseq K ->3 1 <$> coreargs(IV 310) v ->2 2 <0> tms ->3 -e syntax OK The coreargs op checks to make sure there are no arguments, for now. The 310 is the op number for times (OP_TMS). There is no nextstate op, because we want to inherit hints from the caller. The __FILE__, __LINE__ and __PACKAGE__ directives are implemented like this: $ ./perl -Ilib -MO=Concise,CORE::__FILE__ -e 'BEGIN{\&CORE::__FILE__}' CORE::__FILE__: 7 <1> leavesub[1 ref] K/REFC,1 ->(end) - <@> lineseq K ->7 1 <$> coreargs(PV "__FILE__") v ->2 6 <2> lslice K/2 ->7 - <1> ex-list lK ->4 2 <0> pushmark s ->3 3 <$> const(IV 1) s ->4 - <1> ex-list lK ->6 4 <0> pushmark s ->5 5 <0> caller[t1] l ->6 -e syntax OK The lslice op and its children are equivalent to (caller)[1].
* Add coreargs opFather Chrysostomos2011-08-186-3/+20
| | | | &CORE::foo subs will use this operator for sorting out @_.
* rafl has accepted the burden of a maint release.Jesse Vincent2011-08-181-1/+1
|
* Dave Cross has been volunteered for a blead releaseJesse Vincent2011-08-181-2/+2
|
* Correct spelling of KaňkovskýFather Chrysostomos2011-08-171-1/+1
|
* [perl #96126] Allocate CvFILE more simplyFather Chrysostomos2011-08-178-72/+59
| | | | | | | | | | | | | | | | | | | See the thread starting at: http://www.nntp.perl.org/group/perl.perl5.porters/2011/07/msg175161.html Instead of assuming that only Perl subs have mallocked CvFILEs and only under threads, resulting in various hackery to borrow parts of the SvPVX buffer where that assumption proves wrong, we can simply add another flag (DYNFILE) to indicate whether CvFILE is mallocked, instead of trying to use the ISXSUB flag for two purposes. This simplifies the code greatly, eliminating bug #96126 in the pro- cess (which had to do with sv_dup not knowing about the hackery that this commit removes). I removed that comment from cv_ckproto_len about CONSTSUBs doubling up the buffer field, as it is no longer relevant. But I still left the code as it is, since it’s better to do an explicit length check.
* Add Max as a release victimJesse Vincent2011-08-171-1/+9
|
* Update AUTHORS following commit f5458e3a4f.Steve Hay2011-08-161-0/+1
|
* Fix tabbing from commit f5458e3a4f and bump IO::Handle version.Steve Hay2011-08-162-3/+3
|
* Fix setting sockets nonblocking in Win32Stephen Oberholtzer2011-08-161-2/+14
|
* Merge branch 'blead' of ssh://perl5.git.perl.org/perl into bleadJesse Vincent2011-08-1614-79/+162
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'blead' of ssh://perl5.git.perl.org/perl: [perl #97076] Fix mad+threads bareword strict exemption perldelta update Two AUTHORS fixes Remove OPpENTERSUB_NOMOD from B::Concise Remove OPpENTERSUB_NOMOD. Propagate lvalue context only to children of list ops which are not in void context. Fix tabbing and trailing whitespace from commit f1d35e3443 and bump IO::Socket version. Use the exception set in select (connect()) to early return when remote end is busy or in non existing port generic perldelta entry for prototype changes &CORE::not and &CORE::getprotobynumber Give not and getprotobynumber listop prototypes Document and test $; prototype syntax Move checking of CV to GV assigned (OPpASSIGN_CV_TO_GV) from the peephole optimizer to scalarvoid
| * [perl #97076] Fix mad+threads bareword strict exemptionFather Chrysostomos2011-08-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As reported in the ticket this was broken by: commit eb796c7f1a47acbd996034731639c1bb76e31a19 Author: Gerard Goossen <gerard@ggoossen.net> Date: Tue Aug 9 20:35:06 2011 +0200 Move bareword checking from the peephole optimizer to finalize_optree. Fixes [perl #95998] The bareword checking is moved from the peephole optimizer to finalize_optree. newRANGE needs additional bareword checking because the constants may be optimized away by 'gen_constant_list'. The OPpCONST_STRICT flag is removed after giving an error about a bareword to prevent giving multiple errors about the same bareword. In some cases, like pipe(foo,bar), the bareword was subject to strict 'subs' even though it was meant to be exempt. A backtrace revealed that it happened in S_finalize_op when called recursively from this block: #if defined(PERL_MAD) && defined(USE_ITHREADS) { /* Make sure mad ops are also thread-safe */ MADPROP *mp = o->op_madprop; while (mp) { if (mp->mad_type == MAD_OP && mp->mad_vlen) { OP *prop_op = (OP *) mp->mad_val; /* We only need "Relocate sv to the pad for thread safety.", but this easiest way to make sure it traverses everything */ finalize_op(prop_op); } mp = mp->mad_next; } } #endif That comment about only needing to relocate the sv to the pad is telling. If that’s the only reason for the recursive call, then we don’t want that recursive call doing strict checking. So this commit simply turns off the strict flag, which should be safe, since S_no_bareword_allowed does the same thing itself.
| * perldelta updateFather Chrysostomos2011-08-151-4/+58
| |
| * Two AUTHORS fixesFather Chrysostomos2011-08-151-1/+2
| | | | | | | | | | • Correct Kankovský • Add Karthik Rajagopalan
| * Remove OPpENTERSUB_NOMOD from B::ConciseFather Chrysostomos2011-08-151-2/+2
| |
| * Remove OPpENTERSUB_NOMOD.Gerard Goossen2011-08-153-7/+0
| | | | | | | | | | | | OPpENTERSUB_NOMOD was always set in combination with OPf_WANT_VOID which is now used to not propagate the lvalue context, making OPpENTERSUB_NOMOD redundant.
| * Propagate lvalue context only to children of list ops which are not in void ↵Gerard Goossen2011-08-152-2/+14
| | | | | | | | | | | | | | | | | | | | | | context. Children list ops might be in void context because the list is in scalar context. A test that discarded elements in a list are not assigned lvalue context is added. Children of a list op might also be in void context because they are special entersub ops for attributes. This patch makes the OPpENTERSUB_NOMOD flag redundant.
| * Fix tabbing and trailing whitespace from commit f1d35e3443Steve Hay2011-08-151-16/+16
| | | | | | | | and bump IO::Socket version.
| * Use the exception set in select (connect()) to early return when remote end ↵Karthik Rajagopalan2011-08-151-4/+15
| | | | | | | | | | | | | | | | | | | | is busy or in non existing port For non blocking socket, it a timeout has been specified, IO::Socket internally use select(..) to detect the result of socket connection. In situation, where remote end is busy or in non-existing port, we spend entire timeout mentioned in select(..) call. We cannot completely differentiate if error is WSAECONNREFUSED(10061) or WSAETIMEDOUT(10060) in this situation. If we use the exception set in select(..) call, we can do early return and also a make a clear differentiation in error condition. This is same like what Linux handle in this situation.
| * generic perldelta entry for prototype changesFather Chrysostomos2011-08-151-2/+3
| |
| * &CORE::not and &CORE::getprotobynumberFather Chrysostomos2011-08-154-10/+7
| | | | | | | | | | | | These two are now supported. They were not before, because their prototypes gave them unary precedence, even though these ops both have list precedence. That was corrected in the previous commit.
| * Give not and getprotobynumber listop prototypesFather Chrysostomos2011-08-152-2/+3
| | | | | | | | | | They parse as list operators, but their prototypes imply unop precedence.
| * Document and test $; prototype syntaxFather Chrysostomos2011-08-152-2/+17
| | | | | | | | | | This has worked this way for yonks. It is actually useful, so it might as well be documented.
| * Move checking of CV to GV assigned (OPpASSIGN_CV_TO_GV) from the peephole ↵Gerard Goossen2011-08-151-45/+41
| | | | | | | | optimizer to scalarvoid
* | Restore (and slightly update) documentation about The Rules and theJesse Vincent2011-08-161-0/+51
| | | | | | | | | | structure of Perl 5 governance removed during the major refactoring of perlhack.pod in 04c692a854b61dfae1266e29468ce4fb51c80512.
* | Add another explicit synonym for the porters.Jesse Vincent2011-08-161-1/+1
|/
* Merge branch 'blead' of ssh://perl5.git.perl.org/perl into bleadJesse Vincent2011-08-15218-5865/+5889
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'blead' of ssh://perl5.git.perl.org/perl: (198 commits) CORE.pod: fix nit grammar podcheck.t pod grammar fix Make lock(&foo) syntax nominally lock the subroutine Forgot one in d677d0fca41325ba7203de00652fdeb43659754a. Write some missing version strings in configure.com Correct some format strings in configure.com. Improve comments about op_private bits. And move the non op specific flags to the top. get authors.t passing again Update AUTHORS file and convert from Latin-1 to UTF-8 perldiag.pod on defined %hash perldelta for &CORE::foo Update core_prototype’s docs Move pp_-specific code out of core_prototype Change core_prototype to take a keyword num Add tests for precedence of CORE:: subs Add inlinable &CORE::functions Make core_prototype provide the op number as well Make sure the CORE package is always called CORE Remove select’s prototype B::Terse and B::Xref were missing some documentation. ...
| * CORE.pod: fix nit grammarKarl Williamson2011-08-151-1/+1
| |
| * podcheck.t pod grammar fixKarl Williamson2011-08-151-1/+1
| |
| * Make lock(&foo) syntax nominally lock the subroutineFather Chrysostomos2011-08-156-14/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 5.10, lock(&foo) was an error for non-lvalue subs. For lvalue subs, it passed &foo to the lockhook and return \&foo. In 5.12, lock(&foo) was still an error for non-lvalue subs. For lvalue subs, it would pass &foo to the lockhook and then either trip an assertion (-DDEBUGGING) or return &foo, resulting in inter- esting bugs. Commit f4df43b5e changed lock(&lvalue_sub) to call the sub and lock its return value. As Reini Urban pointed out in <CAHiT=DE5cVZbuCR3kb=Q5oCa18vo3jr5jZKmURHYha2PwF4pEQ@mail.gmail.com>, locking a subroutine does have its uses. Since lock(&foo) has never really worked anyway, we can still change this. So, for lvalue subs, this reverts back to the 5.10 behaviour. For non-lvalue subs, it now behaves the same way, the lvalue flag making no difference. Note that it still causes an error at run-time, if threads::shared is loaded, as its lockhook is conservative in what it accepts. But this change allows for future extensibility, unlike f4df43b5e. A note about the implementation: There are two pieces of code (at least) in op.c that convert an entersub op into an rv2cv, one in S_doref and the other in Perl_op_lvalue_flags. Originally (before f4df43b5e) it was S_doref that took care of that for OP_LOCK. But Perl_op_lvalue_flags is called first, so it would assume it was an assignment to a sub call and croak if there was no lvalue sub in the symbol table. This commit adds back the special case for OP_LOCK, but in Perl_op_lvalue_flags, not S_doref.
| * Forgot one in d677d0fca41325ba7203de00652fdeb43659754a.Craig A. Berry2011-08-141-0/+1
| |