Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Perl 5.12.0 has been released!

by ikegami (Patriarch)
on Apr 13, 2010 at 03:03 UTC ( [id://834384]=perlnews: print w/replies, xml ) Need Help??

Perl 5.12.0 has been released!

Release notes follow.


FromJesse Vincent
toperl5-porters@perl.org
DateMon, 12 Apr 2010 22:28:04 -0400
SubjectPerl 5.12.0 is now available

'Please would you tell me,' said Alice, a little timidly, for she was not quite sure whether it was good manners for her to speak first, 'why your cat grins like that?'

'It's a Cheshire cat,' said the Duchess, 'and that's why. Pig!'

She said the last word with such sudden violence that Alice quite jumped; but she saw in another moment that it was addressed to the baby, and not to her, so she took courage, and went on again:--

'I didn't know that Cheshire cats always grinned; in fact, I didn't know that cats COULD grin.'

'They all can,' said the Duchess; 'and most of 'em do.'

-- Lewis Carroll, /Alice's Adventures in Wonderland/

On behalf of Perl's development team, It gives me great pleasure to announce the release of Perl 5.12.0.

Perl 5.12.0 represents approximately two years of development since version 5.10.0 and contains over 750,000 lines of changes across over 3,000 files from over 200 authors and committers.

SHA-1 signatures for this release:

f533687077e2da113b48a6c5e578f4a206fbf173 perl-5.12.0.tar.bz2 5341e60d099fdda71bc33b2a36e417fc0926518f perl-5.12.0.tar.gz
You can download this release from your nearest CPAN mirror or from:

http://search.cpan.org/dist/perl-5.12.0/

This release cycle marks a change to a time-based release process. Beginning with version 5.11.0, we make a new development release of Perl available on the 20th of each month. Each spring, we will release a new stable version of Perl. One month later, we will make a minor update to deal with any issues discovered after the initial ".0" release. Future releases in the stable series will follow quarterly. In contrast to releases of Perl, maintenance releases will contain fixes for issues discovered after the .0 release, but will not include new features or behavior.

Notable changes in Perl 5.12 include:

  • Perl now conforms much more closely to the Unicode standard. Additionally, this release includes an upgrade to version 5.2 of the standard.

  • New experimental APIs allow developers to extend Perl with "pluggable" keywords and syntax.

  • Perl now has a better sense of time and will be able to keep accurate time well past the "Y2038" barrier.

  • New syntax allows developers to specify package version numbers directly in "package" statements

  • Perl now warns the user about the use of deprecated features by default.

Perl 5.12.0 features numerous new features, optimizations and bugfixes. You can find a complete list of these changes on the web at:

http://search.cpan.org/~jesse/perl-5.12.0/pod/perl5120delta.pod

As specified in the licenses for Perl (see the files named Artistic or Copying in the Perl distribution), THIS PACKAGE IS PROVIDED WITH ABSOLUTELY NO WARRANTY.

Based on extensive testing over the past 3 months, we believe that Perl 5.12.0 is ready for production deployments. However, you should never blindly trust any software vendor. It is imperative that you test new software before deploying it in production.

While we have worked tirelessly to ensure that Perl 5.12.0 will be a solid platform for your software, it's possible that issues will be found after release day. You can find a current list of known issues with Perl 5.12.0 at http://dev.perl.org/perl5/errata.html

Perl continues to flourish into its third decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl 5.12.0:

Aaron Crane, Abe Timmerman, Abhijit Menon-Sen, Abigail, Adam Russell, Adriano Ferreira, Ćvar Arnfjörđ Bjarmason, Alan Grover, Alexandr Ciornii, Alex Davies, Alex Vandiver, Andreas Koenig, Andrei Yelistratov, Andrew Rodland, Andy Armstrong, Andy Dougherty, Jose Auguste-Etienne, Benjamin Smith, Ben Morrow, bharanee rathna, Bo Borgerson, Bo Lindbergh, Brad Gilbert, Bram, Brendan O'Dea, brian d foy, Charles Bailey, Chip Salzenberg, Chris 'BinGOs' Williams, Christoph Lamprecht, Chris Williams, chromatic, Claes Jakobsson, Craig A. Berry, Dan Dascalescu, Daniel Frederick Crisman, Daniel M. Quinlan, Dan Jacobson, Dan Kogai, Dave Rolsky, David Cantrell, David Dick, David Golden, David Mitchell, David M. Syzdek, David Nicol, David Wheeler, Dennis Kaarsemaker, Dintelmann, Peter, Dominic Dunlop, Dr.Ruud, Duke Leto, Enrico Sorcinelli, Eric Brine, Father Chrysostomos, Florian Ragwitz, Frank Wiegand, Gabor Szabo, Gene Sullivan, Geoffrey T. Dairiki, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Graham Barr, Green, Paul, Hans Dieter Pearcey, Harmen, H. Merijn Brand, Hugo van der Sanden, Ian Goodacre, Igor Sutton, Ingo Weinhold, James Bence, James Mastros, Jan Dubois, Jari Aalto, Jarkko Hietaniemi, Jay Hannah, Jerry Hedden, Jesse Vincent, Jim Cromie, Jody Belka, John Malmberg, John Peacock, John P. Linderman, John Wright, Josh ben Jore, Jos I. Boumans, Karl Williamson, Kenichi Ishigaki, Ken Williams, Kevin Brintnall, Kevin Ryde, Kurt Starsinic, Leon Brocard, Lubomir Rintel, Luke Ross, Marcel Grünauer, Marcus Holland-Moritz, Mark Jason Dominus, Marko Asplund, Martin Hasch, Mashrab Kuvatov, Matt Kraai, Matt S Trout, Max Maischein, Michael Breen, Michael Cartmell, Michael G Schwern, Michael Witten, Mike Giroux, Milosz Tanski, Moritz Lenz, Nicholas Clark, Nick Cleaton, Niko Tyni, Offer Kaye, Osvaldo Villalon, Paul Fenwick, Paul Gaborit, Paul Green, Paul Johnson, Paul Marquess, Philip Hazel, Philippe Bruhat, Rafael Garcia-Suarez, Rainer Tammer, Rajesh Mandalemula, Reini Urban, Renée Bäcker, Ricardo Signes, Richard Foley, Rich Rauenzahn, Rick Delaney, Risto Kankkunen, Robert May, Roberto C. Sanchez, Robin Barker, Tomoyuki Sadahiro, Salvador Ortiz Garcia, Sam Vilain, Scott Lanning, Sébastien Aperghis-Tramoni, Sérgio Durigan Júnior, Shlomi Fish, Simon Schubert, Sisyphus, Slaven Rezic, Smylers, Steffen Müller, Steffen Ullrich, Stepan Kasal, Steve Hay, Steven Schubiger, Steve Peters, Tels, The Doctor, Tim Bunce, Tim Jenness, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tom Wyant, Tony Cook, Torsten Schoenfeld, Tye McQueen, Vadim Konovalov, Vincent Pit, Hio Yamashina, Yasuhiro Matsumoto, Yitzchak Scott-Thoennes, Yuval Kogman, Yves Orton, Zefram and Zsban Ambrus.

This list is woefully incomplete as it's automatically generated from version control history. In particular, it doesn't include the names of the (very much appreciated) contributors who reported issues in previous versions of Perl that helped make Perl 5.12.0 better. For a more complete list of all of Perl's historical contributors, please see the AUTHORS file in the Perl 5.12.0 distribution.

Best,

Jesse Vincent

Replies are listed 'Best First'.
Re: Perl 5.12.0 has been released!
by Anonymous Monk on Apr 13, 2010 at 06:34 UTC
    csjewell notes there will be a beta of Strawberry Perl 5.12.0 by the end of the week, and a release by the end of the month.
Re: Perl 5.12.0 has been released! (exetype problem 64-bit)
by BrowserUk (Patriarch) on Apr 13, 2010 at 15:48 UTC

    Anyone else getting this problem building 5.12 for 64-bit windows?

    Finished generating code if exist ..\perl.exe.manifest mt -nologo -manifest ..\perl.exe +.ma copy ..\perl.exe ..\wperl.exe 1 file(s) copied. ..\miniperl.exe -I..\lib bin\exetype.pl ..\wperl.exe WINDOWS 'x' outside of string in unpack at bin\exetype.pl line 39. NMAKE : fatal error U1077: '..\miniperl.exe' : return code '0xff' Stop.

    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      Anyone else getting this problem building 5.12 for 64-bit windows?

      Builds fine for me straight out of the box with the (64-bit) Microsoft Platform SDK for Windows Server 2003 R2 compiler.
      I guess you would have had to remove the bufferoverflowU.lib from win32/Makefile ... or did you use makefile.mk ?

      Cheers,
      Rob

        If you remember, I long ago aquired a copy of bufferoverflowU.lib and stuck it in my compiler lib directory. It satisfies the linker's need to find it, even though it is never called upon to supply any entrypoints.

        But I guess that the bufferoverflowU problem could be avoided by:

        # The 64 bit Platform SDK compilers contain a runtime library that doe +sn't # include the buffer overrun verification code used by the /GS switch. # Since the code links against libraries that are compiled with /GS, t +his # "security cookie verification" must be included via bufferoverlow.li +b. !IF "$(WIN64)" == "define" && ( "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" + == "MSVC80FREE" ) LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib !ENDIF

        That said, it is intriguing that you are not having the same problem with exetype.pl. It is only a problem here when run under miniperl.exe... It was at this point it dawned on my that in order to be modifying wperl.exe, it had just copied a successfully built perl.exe.

        So, insteand of using $(MINIPERL) it should be possible to use $(PERLEXE) to work around the problem with miniperl. And it is and does. With that change, nmake install completes successfully.

        $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES) $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS +) \ $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERL +EXE_RES) $(EMBED_EXE_MANI) copy $(PERLEXE) $(WPERLEXE) # $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS $(PERLEXE) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS

        And while we're at it, the spurious -Wp64 is deprecated and will be remove warning could go:

        !IF "$(WIN64)" == "define" DEFINES = $(DEFINES) -DWIN64 -DCONSERVATIVE !IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" OPTIMIZE = $(OPTIMIZE) -Wp64 -fp:precise !ELSE OPTIMIZE = $(OPTIMIZE) -fp:precise !ENDIF !ENDIF

        Would those changes work on your 2003 setup?


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.
Re: Perl 5.12.0 has been released!
by AR (Friar) on Apr 13, 2010 at 14:59 UTC
    Congratulations and thank you to all contributers, bug reporters, and everyone else who helped out.
Re: Perl 5.12.0 has been released!
by wazoox (Prior) on Apr 13, 2010 at 13:52 UTC
    And an awesome new feature, the "yadda yadda" operator :) Kudos everyone!

      Not to be critical, but what is so "awesome" about a less flexible replacement for die('Unimplemented');?


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

        It finally makes my pseudocode compile:

        print "Step 1"; ... print "Profit!\n";

        :)

        IMHO the ... doesn't make much sense in Perl 5.

        In Perl 6 it is actually not the same as a fail('Unimplemented') - classes that only consist of ... are "stubbed", and you can declare them later on without error:

        # this is fine: class A { ... } # other code here class A { # actually implement A here } # this dies, because class B is re-declared class B { fail('Unimplemented') } # other code here class A { # <-- ERROR # whatever }

        Maybe someday the yada-yada-yada term will throw an error in Perl 5 that's somehow distinct from other errors (like a different exception class), but until that time I don't really see the use.

        Perl 6 - links to (nearly) everything that is Perl 6.
        The name of the operator is awesome! Unfortunately it looks like it can't be overloaded, which would have been really useful. Feature request!
        Not as visible or searchable either, but lexing editors could detect it and create a TODO task for it.
Re: Perl 5.12.0 has been released!
by Anonymous Monk on Apr 15, 2010 at 07:19 UTC
    Use of "goto" to jump into a construct
    Using goto to jump from an outer scope into an inner scope is now deprecated. This rare use case was causing problems in the implementation of scopes.
    Does this include Magic goto in relation to AUTOLOAD?

      I think not, as with AUTOLOAD, you mostly leave the current scope and enter the scope of the target subroutine:

      use strict; use Carp qw(croak); use vars qw($AUTOLOAD); my %handler = ( hello => sub { print "Hello World\n" }, ); sub AUTOLOAD { (my $fn = $AUTOLOAD) =~ s/.*:://g; if (exists $handler{ $fn }) { goto &{ $handler{ $fn } } }; croak "Unknown method '$AUTOLOAD' called."; }; hello();

      In the above example, we only leave enclosed scopes and don't goto into an inner scope. Potentially (but I can't test this currently, due to lack of a 5.12), the following could fall under "goto into an inner scope", but I think it's not really into in this case:

      use strict; use Carp qw(croak); use vars qw($AUTOLOAD); sub AUTOLOAD { (my $fn = $AUTOLOAD) =~ s/.*:://g; my %handler = ( hello => sub { print "Hello World\n" }, ); if (exists $handler{ $fn }) { goto &{ $handler{ $fn } } }; croak "Unknown method '$AUTOLOAD' called."; }; hello();

      Here, the handlers are arguably in an inner scope, relative to AUTOLOAD. But what I think the change note really means is that jumping "into (the middle of) an inner scope" is deprecated:

      START: goto INSIDE; OUTSIDE: if (0) { INSIDE: print "Hello "; INSIDE2: print "World\n"; };

      Here, I think the labels INSIDE and INSIDE2 are not reachable from START (or rather, reaching them is deprecated with 5.12), while OUTSIDE is reachable.

      AUTOLOAD subroutines are not affected by that, unless you goto into the body of such a subroutine by holding onto a label within that subroutine, but that's not related to AUTOLOAD:

      my $handler = sub { INSIDE: print "Hello "; INSIDE2: print "World\n"; }; goto INSIDE; # deprecated goto INSIDE2; # deprecated goto &$handler; # still works, as we start "just on the outside" of $h +andler

      goto &$f doesn't do any jumping at all. It's unrelated and thus unaffected.

      $ perl5.12.0 -E'sub g { say "g" } sub f { goto &{ \&g } } f();' g

      It's stuff like this:

      $ perl5.12.0 -e'goto FOO; while (1) { FOO: last }' Use of "goto" to jump into a construct is deprecated at -e line 1.

      Jumping out is fine.

      $ perl5.12.0 -E'while (1) { goto FOO; } FOO: say "done"' done
Re: Perl 5.12.0 has been released!
by Anonymous Monk on Apr 16, 2010 at 08:01 UTC
    With Perl 6 still no longer in sight, good to see that Perl 5 has moved on. Thanks to all the contributors for making this happen.
      Perl 6 is no longer in sight? You surely aren't looking hard enough.
        ___________________________ /| /| | | ||__|| | Please don't | / O O\__ feed | / \ the trolls | / \ \ | / _ \ \ ---------------------- / |\____\ \ || / | | | |\____/ || / \|_|_|/ | __|| / / \ |____| || / | | /| | --| | | |// |____ --| * _ | |_|_|_| | \-/ *-- _--\ _ \ // | / _ \\ _ // | / * / \_ /- | - | | * ___ c_c_c_C/ \C_c_c_c____________

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlnews [id://834384]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2024-03-19 05:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found