Welcome Perl 5.12.0! The latest upgrade of this classic do-anything language is now available. What's new?
According to the official Perl web site
"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."
That's a lot of coding for a decimal point upgrade!
The major changes are:
- 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.
There is also a new operator which acts as a placeholder for unimplemented code nicknamed the "Yada Yada Operator". Also new is the ability to hook extension omodules into the parser so that new kinds of keyword-headed expressions can be defined. This allows sub-languages to be parsed inline with the correct operators generated so extending the Perl language. The demo supplied with the download is a module that implements Reverse Polish Notation via pluggable keywords. The only warning is that this is considered to be an experimental feature and could be modified or removed in future versions. If it works and has no detrimental side effects it sounds like a really good idea. Deeper inside the system C APIs have been added so that XS extensions can access core features.
Core language changes are few and minor - each can work with arrays and when can be used as a statement modifier. Also good is the removal of the 32 bit limit on substr arguments - these can now use the full range of the machine's signed and unsigned integers.
Given that Perl is often used as a reference type for regular expressions the introduction of \N which is described, logically, as a reverse \n might have wider implications. This command matches any character that is not a newline. Regular expressions are also promoted to first class entities.
The release of Perl 5.12.0 also introduces a change to a new time-based release process. In future there will be a new stable version of Perl released each spring, followed by a bug fix release one month later, and quarterly maintenance updates after that. These maintenance releases will nothing but contain fixes.
Binary versions of Perl 5.12.0 are now available for Unix, Linux, Mac OS X and Windows from perl.org. The source code is also available to download.
If you would like to be informed about new articles on I Programmer you can either follow us on Twitter or Facebook or you can subscribe to our weekly newsletter.