| Recent Topics | heading style: summary | tabular |
|
|
[ANNOUNCE] ExtUtils::MakeMaker 6.53_03
By Michael G Schwern in Perl 5 Porters at Jul 3, 2009, 01:24 am UTC
http://github.com/schwern/extutils-makemaker/v6.53_03 This is a release to fix a few test bugs on Cygwin, Windows and OS X. Its a 6.54 release candidate I'm hoping to get into 5.10.1. In particular I need more Windows testing. 6.53_03 Thu Jul 2 14:47:45 PDT 2009 Bug Fixes like Config (broken in... More...
http://github.com/schwern/extutils-makemaker/v6.53_03
This is a release to fix a few test bugs on Cygwin, Windows and OS X. Its a 6.54 release candidate I'm hoping to get into 5.10.1. In particular I need more Windows testing.
6.53_03 Thu Jul 2 14:47:45 PDT 2009 Bug Fixes * You'd get a warning if you had a PREREQ_PM on a module with no $VERSION like Config (broken in 6.51_01) [rt.cpan.org 47448]
Test Fixes * Upgrade the version of Test::More we ship with to 0.88. * Fix MM_Cygwin.t for older Perls missing Cygwin::win_to_posix_path() broken in 6.53_01. * Fix miniperl.t for Windows. Our method of shutting off XS didn't work for Win32.pm * Old versions of version.pm, like what ships with OS X, dent Foo->VERSION causing prereq.t to fail. [rt.cpan.org 47296] * Add missing core test boilerplates [blead e39d780342f3e91579069fdc80eda72bfe639ae7]
6.53_02 Sun Jun 7 19:24:56 PDT 2009 Test Fixes * Stray use of Shell::Command broke older perls
Other * MakeMaker will now automatically test itself with multiple perl versions before releasing.
6.53_01 Sun Jun 7 19:02:20 PDT 2009 Bug Fixes * blib will now be rebuilt if the Makefile is changed [rt.cpan.org 46658] * 6.52 broke the setting of EXTRALIBS, LDLOADLIBS and BSLOADLIBS when $self->{LIBS}[0] is undefined. [rt.cpan.org 46633] (Craig Berry)
Cygwin * Fixed MM_Cygwin.t when the path prefix (ie. cygdrive) has been changed by the user. [rt.cpan.org 46585] (JDHEDDEN)
VMS * Removed attempts to compensate for the "bin" logical added by some versions of GNV, Craig says they're futile. Put a warning into the Makefile.PL instead. [rt.cpan.org 46679] (Craig Berry) * Removed the arch_check() special case for VMS. [rt.cpan.org 46678] (Craig Berry)
Win32 * Restore building the core by not trying to load the Win32 module in arch_check() with miniperl. [rt.cpan.org 46667] (Max Maischein)
Tests * Forgot to get rid of the tests for bytes and vmsish which were removed in 6.51_01. * Stopped running a Windows specific arch_check.t test on non-Windows. (Craig Berry) [rt.cpan.org 46678]
6.52 Sat May 30 11:22:04 PDT 2009 Docs * Documented CONFIGURE_REQUIRES (Alexandr Ciornii) * Modernized the docs for PREREQ_PM
2 Replies
|
|
|
[ANNOUNCE] Test::More/Builder/Simple 0.90
By Michael G Schwern in Perl 5 Porters at Jul 3, 2009, 02:23 am UTC
This is a quick release to sync with perl so 5.10.1 can release with a stable version number. It does NOT include the subtest() code in 0.89_01 (don't worry, it'll be back). http://github.com/schwern/test-more/tree/v0.90 0.90 Thu Jul 2 13:18:25 PDT 2009 Docs how to work around it. Test Fixes Other... More...
This is a quick release to sync with perl so 5.10.1 can release with a stable version number. It does NOT include the subtest() code in 0.89_01 (don't worry, it'll be back).
http://github.com/schwern/test-more/tree/v0.90
0.90 Thu Jul 2 13:18:25 PDT 2009 Docs * Finally added a note about the "Wide character in print" warning and how to work around it. * Note the IO::Stringy license in our copy of it. [test-more.googlecode.com 47]
Test Fixes * Small fixes for integration with the Perl core [bleadperl eaa0815147e13cd4ab5b3d6ca8f26544a9f0c3b4] * exit code tests could be effected by errno when PERLIO=stdio [bleadperl c76230386fc5e6fba9fdbeab473abbf4f4adcbe3]
Other * This is a stable release for 5.10.1. It does not include the subtest() work in 0.89_01.
0.88 Sat May 30 12:31:24 PDT 2009 Turing 0.87_03 into a stable release.
-- If at first you don't succeed--you fail. -- "Portal" demo
2 Replies
|
|
|
AttributeHelpers naming (again)
By Hans Dieter Pearcey in Moose at Jul 3, 2009, 12:45 am UTC
I hate to keep coming back to this, but I'm unsettled and unemployed, so I might as well keep at it until I feel like I've got it right. We've been talking about the roles that AH provides as being "Perl5" or "Native", but they're really not -- some of them are (Str) but some of them aren't... More...
I hate to keep coming back to this, but I'm unsettled and unemployed, so I might as well keep at it until I feel like I've got it right.
We've been talking about the roles that AH provides as being "Perl5" or "Native", but they're really not -- some of them are (Str) but some of them aren't (Counter, Bool, ImmutableHash, etc.). It doesn't even match up exactly with Moose's builtin types, so "Moose" isn't a good name either.
It's a collection of common, simple data types. I can't think of a good name for this. (And it's not even correct -- Counter is very useful, but isn't really a "data structure" so much as it is a common code pattern.)
The fact that the underlying data structures are normal Perl hashes, arrays, scalars, etc. is also not something we really want to draw attention to; after all, the whole point is that you use $self->push_things instead of push @{$self->things}, so that consumers of your API don't hardcode that sort of thing.
In the end of I'm not saying much different than I have before: what is the most precise way to distinguish these particular attribute traits from other traits?
I also keep coming back to something Dave said, along the lines of "well, if these values actually had methods, we'd just delegate to them instead of special-casing it", and wondering how much work it would take to solve auto- or manual boxing in a way that people would like. I don't want to be distracted by that and end up with nothing to show for the hackathon work that we did on AH, though.
hdp.
9 Replies
|
|
|
XS question
By Torsten Foertsch in Perl 5 Porters at Jul 2, 2009, 10:15 pm UTC
Hi, perhaps this is not the right list but I know the knowledge is here. So, please be lenient. I have a bunch of C-strings with or without a trailing \0. I want to make them available in Perl as read-only variables. When the perl SV is destroyed the string must not be freed obviously. Do I need to... More...
Hi,
perhaps this is not the right list but I know the knowledge is here. So, please be lenient.
I have a bunch of C-strings with or without a trailing \0. I want to make them available in Perl as read-only variables. When the perl SV is destroyed the string must not be freed obviously.
Do I need to make those variables magic? Or is there a simpler way?
If I need magic, do I need to implement all of the 8 MGVTBL members? What if some of them are NULL?
I think I need only an svt_free function that does:
SvPVX(var) = NULL; SvCUR(var) = 0;
Is this correct?
I have read somewhere that perl strings do not need the trailing \0 byte. But for some reasons it is normally allocated. Why? Is it necessary? What can happen if there is no trailing \0?
Thanks, Torsten
-- Need professional mod_perl support? Just hire me: torsten.foertsch@gmx.net
7 Replies
|
|
|
[PATCH] Quiet autodie's pollution of test output
By "Jerry D. Hedden" in Perl 5 Porters at Jul 2, 2009, 5:00 pm UTC
The attached patch quiets the output from lib/autodie/t/hints.t which is currently outputting the following: lib/autodie/t/format-clobber..................................ok lib/autodie/t/hints...........................................# Sub::Identify is not loaded ok... More...
The attached patch quiets the output from lib/autodie/t/hints.t which is currently outputting the following:
lib/autodie/t/format-clobber..................................ok lib/autodie/t/hints...........................................# Sub::Identify is not loaded ok lib/autodie/t/hints_insist....................................ok
Attachment: quiet.patch
4 Replies
|
|
|
[PATCH] Update ExtUtils::CBuilder to 0.2601
By David Golden in Perl 5 Porters at Jul 2, 2009, 9:47 pm UTC
0.2601 - Wed Jul 1 09:37:39 EDT 2009 Bugs fixed: - On VMS, cleans up extra files generated during testing Porting/Maintainers.pl | 2 +- lib/ExtUtils/CBuilder.pm | 2 +- lib/ExtUtils/CBuilder/Base.pm | 2 +- lib/ExtUtils/CBuilder/Platform/Unix.pm | 2 +- lib/ExtUtils/CBuilder/Platform/VMS.pm | 2 +-... More...
0.2601 - Wed Jul 1 09:37:39 EDT 2009
Bugs fixed: - On VMS, cleans up extra files generated during testing [John E. Malmberg, Craig Berry] --- Porting/Maintainers.pl | 2 +- lib/ExtUtils/CBuilder.pm | 2 +- lib/ExtUtils/CBuilder/Base.pm | 2 +- lib/ExtUtils/CBuilder/Platform/Unix.pm | 2 +- lib/ExtUtils/CBuilder/Platform/VMS.pm | 2 +- lib/ExtUtils/CBuilder/Platform/Windows.pm | 2 +- lib/ExtUtils/CBuilder/Platform/aix.pm | 2 +- lib/ExtUtils/CBuilder/Platform/cygwin.pm | 2 +- lib/ExtUtils/CBuilder/Platform/darwin.pm | 2 +- lib/ExtUtils/CBuilder/Platform/dec_osf.pm | 2 +- lib/ExtUtils/CBuilder/Platform/os2.pm | 2 +- lib/ExtUtils/CBuilder/t/01-basic.t | 5 +++++ lib/ExtUtils/CBuilder/t/02-link.t | 5 +++++ 13 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index 07aa92e..26c315d 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -608,7 +608,7 @@ package Maintainers; 'ExtUtils::CBuilder' => { 'MAINTAINER' => 'kwilliams', - 'DISTRIBUTION' => 'DAGOLDEN/ExtUtils-CBuilder-0.26.tar.gz', + 'DISTRIBUTION' => 'DAGOLDEN/ExtUtils-CBuilder-0.2601.tar.gz', 'FILES' => q[lib/ExtUtils/CBuilder.pm lib/ExtUtils/CBuilder], 'EXCLUDED' => [ qw{devtools} ], 'CPAN' => 1, diff --git a/lib/ExtUtils/CBuilder.pm b/lib/ExtUtils/CBuilder.pm index 246a43c..b018547 100644 --- a/lib/ExtUtils/CBuilder.pm +++ b/lib/ExtUtils/CBuilder.pm @@ -5,7 +5,7 @@ use File::Path (); use File::Basename (); use vars qw($VERSION @ISA); -$VERSION = '0.26'; +$VERSION = '0.2601'; $VERSION = eval $VERSION; # Okay, this is the brute-force method of finding out what kind of diff --git a/lib/ExtUtils/CBuilder/Base.pm b/lib/ExtUtils/CBuilder/Base.pm index 0c78b97..baef158 100644 --- a/lib/ExtUtils/CBuilder/Base.pm +++ b/lib/ExtUtils/CBuilder/Base.pm @@ -9,7 +9,7 @@ use Text::ParseWords; use IO::File; use vars qw($VERSION); -$VERSION = '0.26'; +$VERSION = '0.2601'; sub new { my $class = shift; diff --git a/lib/ExtUtils/CBuilder/Platform/Unix.pm b/lib/ExtUtils/CBuilder/Platform/Unix.pm index 876fd42..8881d26 100644 --- a/lib/ExtUtils/CBuilder/Platform/Unix.pm +++ b/lib/ExtUtils/CBuilder/Platform/Unix.pm @@ -4,7 +4,7 @@ use strict; use ExtUtils::CBuilder::Base; use vars qw($VERSION @ISA); -$VERSION = '0.26'; +$VERSION = '0.2601'; @ISA = qw(ExtUtils::CBuilder::Base); sub link_executable { diff --git a/lib/ExtUtils/CBuilder/Platform/VMS.pm b/lib/ExtUtils/CBuilder/Platform/VMS.pm index b0c3489..9b5bb50 100644 --- a/lib/ExtUtils/CBuilder/Platform/VMS.pm +++ b/lib/ExtUtils/CBuilder/Platform/VMS.pm @@ -4,7 +4,7 @@ use strict; use ExtUtils::CBuilder::Base; use vars qw($VERSION @ISA); -$VERSION = '0.26'; +$VERSION = '0.2601'; @ISA = qw(ExtUtils::CBuilder::Base); use File::Spec::Functions qw(catfile catdir); diff --git a/lib/ExtUtils/CBuilder/Platform/Windows.pm b/lib/ExtUtils/CBuilder/Platform/Windows.pm index eeaa58c..e219567 100644 --- a/lib/ExtUtils/CBuilder/Platform/Windows.pm +++ b/lib/ExtUtils/CBuilder/Platform/Windows.pm @@ -10,7 +10,7 @@ use ExtUtils::CBuilder::Base; use IO::File; use vars qw($VERSION @ISA); -$VERSION = '0.26'; +$VERSION = '0.2601'; @ISA = qw(ExtUtils::CBuilder::Base); sub new { diff --git a/lib/ExtUtils/CBuilder/Platform/aix.pm b/lib/ExtUtils/CBuilder/Platform/aix.pm index 73e5c6c..c6de6a5 100644 --- a/lib/ExtUtils/CBuilder/Platform/aix.pm +++ b/lib/ExtUtils/CBuilder/Platform/aix.pm @@ -5,7 +5,7 @@ use ExtUtils::CBuilder::Platform::Unix; use File::Spec; use vars qw($VERSION @ISA); -$VERSION = '0.26'; +$VERSION = '0.2601'; @ISA = qw(ExtUtils::CBuilder::Platform::Unix); sub need_prelink { 1 } diff --git a/lib/ExtUtils/CBuilder/Platform/cygwin.pm b/lib/ExtUtils/CBuilder/Platform/cygwin.pm index ccc05c9..41d3600 100644 --- a/lib/ExtUtils/CBuilder/Platform/cygwin.pm +++ b/lib/ExtUtils/CBuilder/Platform/cygwin.pm @@ -5,7 +5,7 @@ use File::Spec; use ExtUtils::CBuilder::Platform::Unix; use vars qw($VERSION @ISA); -$VERSION = '0.26'; +$VERSION = '0.2601'; @ISA = qw(ExtUtils::CBuilder::Platform::Unix); sub link_executable { diff --git a/lib/ExtUtils/CBuilder/Platform/darwin.pm b/lib/ExtUtils/CBuilder/Platform/darwin.pm index 1d70568..e6b1be0 100644 --- a/lib/ExtUtils/CBuilder/Platform/darwin.pm +++ b/lib/ExtUtils/CBuilder/Platform/darwin.pm @@ -4,7 +4,7 @@ use strict; use ExtUtils::CBuilder::Platform::Unix; use vars qw($VERSION @ISA); -$VERSION = '0.26'; +$VERSION = '0.2601'; @ISA = qw(ExtUtils::CBuilder::Platform::Unix); sub compile { diff --git a/lib/ExtUtils/CBuilder/Platform/dec_osf.pm b/lib/ExtUtils/CBuilder/Platform/dec_osf.pm index 624d805..1e0a5f5 100644 --- a/lib/ExtUtils/CBuilder/Platform/dec_osf.pm +++ b/lib/ExtUtils/CBuilder/Platform/dec_osf.pm @@ -6,7 +6,7 @@ use File::Spec; use vars qw($VERSION @ISA); @ISA = qw(ExtUtils::CBuilder::Platform::Unix); -$VERSION = '0.26'; +$VERSION = '0.2601'; sub link_executable { my $self = shift; diff --git a/lib/ExtUtils/CBuilder/Platform/os2.pm b/lib/ExtUtils/CBuilder/Platform/os2.pm index bbe4dc4..d6fc8f5 100644 --- a/lib/ExtUtils/CBuilder/Platform/os2.pm +++ b/lib/ExtUtils/CBuilder/Platform/os2.pm @@ -4,7 +4,7 @@ use strict; use ExtUtils::CBuilder::Platform::Unix; use vars qw($VERSION @ISA); -$VERSION = '0.26'; +$VERSION = '0.2601'; @ISA = qw(ExtUtils::CBuilder::Platform::Unix); sub need_prelink { 1 } diff --git a/lib/ExtUtils/CBuilder/t/01-basic.t b/lib/ExtUtils/CBuilder/t/01-basic.t index 5f9ad87..79a0b0c 100644 --- a/lib/ExtUtils/CBuilder/t/01-basic.t +++ b/lib/ExtUtils/CBuilder/t/01-basic.t @@ -66,6 +66,11 @@ for ($source_file, $object_file, $lib_file) { 1 while unlink; } +if ($^O eq 'VMS') { + 1 while unlink 'COMPILET.LIS'; + 1 while unlink 'COMPILET.OPT'; +} + my @words = $b->split_like_shell(' foo bar'); SKIP: { diff --git a/lib/ExtUtils/CBuilder/t/02-link.t b/lib/ExtUtils/CBuilder/t/02-link.t index d2bacf7..c748d3b 100644 --- a/lib/ExtUtils/CBuilder/t/02-link.t +++ b/lib/ExtUtils/CBuilder/t/02-link.t @@ -85,6 +85,11 @@ for ($source_file, $object_file, $exe_file) { 1 while unlink; } +if ($^O eq 'VMS') { + 1 while unlink 'COMPILET.LIS'; + 1 while unlink 'COMPILET.OPT'; +} + sub my_system { my $cmd = shift; if ($^O eq 'VMS') {
-- 1.5.6.3
2 Replies
|
|
|
[perl #56690] Some bugs in Perl regexp (core Perl issues)
By Kevin Wolf in Perl 5 Porters at Jul 2, 2009, 8:21 pm UTC
This is caused by a failure of the start_class optimization in the case of lookahead, as per the attached comment. In more detail: at the point study_chunk() attempts to deal with the start_class discovered for the lookahead chunk, we have SCF_DO_STCLASS_OR set, and_withp has the starting value of... More...
On Tue Jul 08 14:49:43 2008, [email protected: ab...@abigail.be] wrote: > Here are some tests for this bug: > > > > --- t/op/re_tests.orig 2008-04-11 14:20:20.000000000 +0200 > +++ t/op/re_tests 2008-07-08 18:43:39.000000000 +0200 > @@ -1344,4 +1344,7 @@ > .*?(?:(\w)|(\w))x abx y $1-$2 b- > > 0{50} 000000000000000000000000000000000000000000000000000 y - - > +# Bug #56690 > +^a?(?=b)b ab y $& ab > +^a*(?=b)b ab y $& ab
This is caused by a failure of the start_class optimization in the case of lookahead, as per the attached comment.
In more detail: at the point study_chunk() attempts to deal with the start_class discovered for the lookahead chunk, we have SCF_DO_STCLASS_OR set, and_withp has the starting value of ANYOF_EOS | ANYOF_UNICODE_ALL, and data->start_class has [a] | ANYOF_EOS.
So given: start = ANYOF_EOS | ANYOF_UNICODE_ALL pre = [a] | ANYOF_EOS lookahead = [b] post = [b] what we should be getting is: start_class = start & (pre | (lookahead & post)) = start & (pre | [b]) = start & [ab] = [ab] but what we are getting is: start_class = start & ((pre & lookahead) | post) = start & (ANYOF_EOS | post) = start & [b] = [b]
In other words, we need to stack an alternation of ANDs and ORs to cope with this situation, and we don't have a mechanism to do that except to recurse into study_chunk() some more.
A simpler short-term fix is instead to throw up our hands in this situation, and just nullify start_class. I'm not sure exactly how to do that, but it seems the more likely to be achievable for 5.10.1.
Hugo --- regcomp.c.old 2009-06-18 10:21:11.000000000 +0100 +++ regcomp.c 2009-06-26 11:55:47.000000000 +0100 @@ -3729,6 +3729,12 @@ if (f & SCF_DO_STCLASS_AND) { const int was = (data->start_class->flags & ANYOF_EOS); + /* [perl #56690] When (flags & SCF_DO_STCLASS_OR) this does + the wrong thing: this lookahead stclass should be ANDed + with what follows but not with what comes before. + We see this with /^a?(?=b)b/: here we combine [a]|$ with + [b] to give []|$, and end up with wrong stclass [b]. + */ cl_and(data->start_class, &intrnl); if (was) data->start_class->flags |= ANYOF_EOS;
2 Replies
|
|
|
[perl #66930] segmentation fault modifying array ref during push
By Kevin Wolf in Perl 5 Porters at Jul 3, 2009, 01:28 am UTC
# New Ticket Created by dan@gina.alaska.edu # Please include the string: [perl #66930] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=66930 > This is a bug report for perl from dan@gina.alaska.edu, generated with the help... More...
# New Ticket Created by [email protected: d...@gina.alaska.edu] # Please include the string: [perl #66930] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=66930 >
This is a bug report for perl from [email protected: d...@gina.alaska.edu], generated with the help of perlbug 1.36 running under perl 5.10.0.
----------------------------------------------------------------- [Please enter your report here]
The following program causes a segmentation fault:
#!/usr/bin/perl
use strict; use warnings;
my $x; #my $x = []; # also crashes
push @$x, abc();
sub abc { $x = 1; #$x = []; # also crashes return 2; #return $x = 1; # also crashes # absense of return statement prevents crash }
#####
$ gdb --args perl crash.pl Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7d091a8 in Perl_av_store (my_perl=0x602010, av=0x606e88, key=6319745, val=0x6070b0) at av.c:336 336 ary[++AvFILLp(av)] = &PL_sv_undef; (gdb) bt #0 0x00007ffff7d091a8 in Perl_av_store (my_perl=0x602010, av=0x606e88, key=6319745, val=0x6070b0) at av.c:336 #1 0x00007ffff7d3f23a in Perl_pp_push (my_perl=0x602010) at pp.c:4454 #2 0x00007ffff7cead38 in Perl_runops_debug (my_perl=0x602010) at dump.c:1931 #3 0x00007ffff7d114f8 in S_run_body (oldscope=<value optimized out>, my_perl=<value optimized out>) at perl.c:2391 #4 perl_run (oldscope=<value optimized out>, my_perl=<value optimized out>) at perl.c:2309 #5 0x0000000000400cfc in main (argc=2, argv=0x7fffffffe018, env=0x7fffffffe030) at perlmain.c:113
I am using Fedora 11.
[Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=medium --- This perlbug was built using Perl 5.10.0 in the Fedora build system. It is being executed now by Perl 5.10.0 - Fri Apr 10 06:34:03 EDT 2009.
Site configuration information for perl 5.10.0:
Configured by Red Hat, Inc. at Fri Apr 10 06:34:03 EDT 2009.
Summary of my perl5 (revision 5 version 10 subversion 0) configuration: Platform: osname=linux, osvers=2.6.18-128.1.6.el5, archname=x86_64-linux-thread-multi uname='linux x86-3.fedora.phx.redhat.com 2.6.18-128.1.6.el5 #1 smp tue mar 24 12:05:57 edt 2009 x86_64 x86_64 x86_64 gnulinux ' config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DPERL_USE_SAFE_PUTENV -Dversion=5.10.0 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Dprivlib=/usr/lib/perl5/5.10.0 -Dsitelib=/usr/local/lib/perl5/site_perl/5.10.0 -Dvendorlib=/usr/lib/perl5/vendor_perl/5.10.0 -Darchlib=/usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi -Dsitearch=/usr/local/lib64/perl5/site_perl/5.10.0/x86_64-linux-thread-multi -Dvendorarch=/usr/lib64/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi -Dinc_version_list=none -Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpag! er=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin -Dotherlibdirs=/usr/lib/perl5/site_perl' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm', optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DPERL_USE_SAFE_PUTENV', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/include/gdbm' ccversion='', gccversion='4.4.0 20090409 (Red Hat 4.4.0-0.32)', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='gcc', ldflags ='' libpth=/usr/local/lib64 /lib64 /usr/lib64 libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc libc=, so=so, useshrplib=true, libperl=libperl.so gnulibc_version='2.9.90' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DPERL_USE_SAFE_PUTENV'
Locally applied patches:
--- @INC for perl 5.10.0: /usr/local/ION/lib/perl /usr/local/ION/lib/perl /usr/local/lib64/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/local/lib/perl5/site_perl/5.10.0 /usr/lib64/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl .
--- Environment for perl 5.10.0: HOME=/home/dstahlke LANG=C LANGUAGE (unset) LD_LIBRARY_PATH=/usr/local/lib:/usr/local/jprofiler3/bin/linux-x86:/home/dstahlke/thesis/lib LOGDIR (unset) PATH=/usr/java/jdk1.6.0_04/bin:/usr/local/bin:/usr/java/jdk1.6.0_04/bin:/usr/local/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dstahlke/bin:/usr/local/Acrobat5/bin:/usr/local/ION/bin:/usr/java/jdk1.5.0_14/bin:/usr/local/jprofiler3/bin:/home/dstahlke/bin:/home/dstahlke/bin:/usr/local/Acrobat5/bin:/usr/local/ION/bin:/usr/java/jdk1.5.0_14/bin:/usr/local/jprofiler3/bin PERL5LIB=:/usr/local/ION/lib/perl:/usr/local/ION/lib/perl PERL_BADLANG (unset) SHELL=/bin/bash
8 Replies
|
|
|
[perl #66834] allow space or tab before unquoted string terminators in addition to before quoted ones
By Kevin Wolf in Perl 5 Porters at Jul 3, 2009, 01:13 am UTC
# New Ticket Created by David Nicol # Please include the string: [perl #66834] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=66834 > This is a bug report for perl from davidnico@cpan.org, generated with the help of perlbug... More...
# New Ticket Created by David Nicol # Please include the string: [perl #66834] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=66834 >
This is a bug report for perl from [email protected: davi...@cpan.org], generated with the help of perlbug 1.35 running under perl v5.8.5.
----------------------------------------------------------------- [Please enter your report here]
I should have fixed this a decade ago, but I fixed it tonight.
Perl's commitment to allowing white space most anywhere has been broken in the case of here-document string terminators without quotes, such as
print << blah; test blah
which is a syntax error, while
print << "blah"; test blah
prints "test\n" as desired.
I think I reported this a long time ago and someone agreed that it was a bug, but I couldn't find my report in rt so here's a new ticket.
And a patch to duplicate the existing logic for skipping spaces and tabs before the quoted terminators for bare terminators and backslash-prefaced terminators, consisting of two new lines in toke.c (not dependent on my other work there, but the comment in the earlier patch does show up in this one) and two new tests, expected to go in heredoc.t which doesn't exist in origin yet.
Please note the use of test.pl's C<fail> method and string eval as a method for testing syntax which without repair simply doesn't parse. Is what I have done the standard way to do that?
diff --git a/t/op/heredoc.t b/t/op/heredoc.t index b1ab684..607b19f 100644 --- a/t/op/heredoc.t +++ b/t/op/heredoc.t @@ -7,7 +7,7 @@ BEGIN { } use strict; -plan(tests => 6); +plan(tests => 8); # heredoc without newline (#65838) @@ -65,3 +65,19 @@ HEREDOC "long terminator fails correctly" ); } + +# allow whitespace before the termstring +is( << 'WITH', <<'WITHOUT', "allow SPACE_OR_TAB before quoted terminator"); +test +WITH +test +WITHOUT + +eval <<\SYNTAX or fail( "allow SPACE_OR_TAB before terminator"); +is( << WITH, <<WITHOUT, "allow SPACE_OR_TAB before terminator"); +test +WITH +test +WITHOUT +1; +SYNTAX diff --git a/toke.c b/toke.c index 24c28c5..5cccb61 100644 --- a/toke.c +++ b/toke.c @@ -11281,6 +11281,8 @@ S_scan_heredoc(pTHX_ register char *s) s++; } else { + if (*peek == '\\' || isALNUM_lazy_if(peek,UTF)) + s = peek; if (*s == '\\') /* <<\FOO is equivalent to <<'FOO' */ s++, term = '\'';
[Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=low --- This perlbug was built using Perl v5.8.5 in the Red Hat build system. It is being executed now by Perl v5.8.5 - Mon Jul 24 18:27:47 EDT 2006.
Site configuration information for perl v5.8.5:
Configured by Red Hat, Inc. at Mon Jul 24 18:27:47 EDT 2006.
Summary of my perl5 (revision 5 version 8 subversion 5) configuration: Platform: osname=linux, osvers=2.6.9-22.18.bz155725.el, archname=s390x-linux-thread-multi uname='linux spark.z900.redhat.com 2.6.9-22.18.bz155725.el #1 smp thu nov 17 15:25:33 est 2005 s390x s390x s390x gnulinux ' config_args='-des -Doptimize=-O2 -g -pipe -m64 -Dversion=5.8.5 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Dprivlib=/usr/lib/perl5/5.8.5 -Dsitelib=/usr/lib/perl5/site_perl/5.8.5 -Dvendorlib=/usr/lib/perl5/vendor_perl/5.8.5 -Darchlib=/usr/lib64/perl5/5.8.5/s390x-linux-thread-multi -Dsitearch=/usr/lib64/perl5/site_perl/5.8.5/s390x-linux-thread-multi -Dvendorarch=/usr/lib64/perl5/vendor_perl/5.8.5/s390x-linux-thread-multi -Darchname=s390x-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dinc_version_list=5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm', optimize='-O2 -g -pipe -m64', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/include/gdbm' ccversion='', gccversion='3.4.6 20060404 (Red Hat 3.4.6-2)', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='gcc', ldflags ='' libpth=/usr/local/lib64 /lib64 /usr/lib64 libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc libc=/lib/libc-2.3.3.so, so=so, useshrplib=true, libperl=libperl.so gnulibc_version='2.3.4' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib64/perl5/5.8.5/s390x-linux-thread-multi/CORE' cccdlflags='-fPIC', lddlflags='-shared'
Locally applied patches:
--- @INC for perl v5.8.5: /usr/lib64/perl5/5.8.5/s390x-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib64/perl5/site_perl/5.8.5/s390x-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.4/s390x-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.3/s390x-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.2/s390x-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.1/s390x-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.0/s390x-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.5/s390x-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.4/s390x-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.3/s390x-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.2/s390x-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.1/s390x-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.0/s390x-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .
--- Environment for perl v5.8.5: HOME=/root LANG=en_US.UTF-8 LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin PERL_BADLANG (unset) SHELL=/bin/bash
1 Reply
|
|
|
Re: pjf: dual life modules (autodie)
By Paul Fenwick in Perl 5 Porters at Jul 3, 2009, 02:16 am UTC
G'day Dave, There's autodie 1.999_01 on the CPAN. It supports the hinting interface, has tests, and is passing on all the platforms on which I expect it to pass. The work to turn 1.999_01 into 2.000 is going through and making sure the documentation matches the code, since a few things changed... More...
G'day Dave,
Dave Mitchell wrote:
> bleed, maint currently at 1.999. > There was talk of a 2.00. Is this likely to appear any time soon, > and if so, will it be suitable for 5.10.1; if not, is 1.999 > suitable for 5.10.1?
There's autodie 1.999_01 on the CPAN. It supports the hinting interface, has tests, and is passing on all the platforms on which I expect it to pass.
The work to turn 1.999_01 into 2.000 is going through and making sure the documentation matches the code, since a few things changed during development. There's also a few TODOs in the code itself to examine, most of which have to do with minimising technical debt (eg, making sure all the diagnostics messages are well-formed and documented).
The most likely time for these changes to occur is on my Australia -> Dubai -> Saudi Arabia flights tomorrow. I'm fond of conserving battery life on my laptop, and coding tends to use a lot less power than anything else. ;)
> Also, IIRC, you said that the new Fatal.pm was suitable for maint > but there was an internal i/f that has changed; which you were > planning to fix. Has this been done?
autodie 1.999 doesn't keep compatibility with classical Fatal on the internal interfaces.
For autodie 1.999_01 the fill_protos(), one_invocation() and write_invocation() calls are backward compatible with classical Fatal. There are test cases to ensure things stay this way.
The _make_fatal() subroutine (note the leading underscore) is not backwards compatible, as it now expects to be called as a class method. If you really, really want, I can potentially fix that, although the code will look even less pretty than it is now.
The public interface is completely backwards compatible with Fatal.
Cheerio,
Paul
-- Paul Fenwick <pjf@perltraining.com.au> | http://perltraining.com.au/ Director of Training | Ph: +61 3 9354 6001 Perl Training Australia | Fax: +61 3 9354 2681
15 Replies
|
|
 | |