The monthly Parrot release is out, version 0.5.0. Included in this version:
- Implementation
- PDD15 (OO) branch merged with trunk; this release contains a working, tested implementation of the latest OO model
- Added pop_eh/push_eh_p/count_eh opcodes
- Add --runcore command line option
- Add gcdebug runcore to help track down GC bugs
- minor improvements to IA-32 JIT
- Documentation
- PDD19 (PIR): updates to macros, .pcc* directives
- PDD25 (Concurrency): updated
- PDD26 (AST): draft approved
- PDD23 (Exceptions): draft approved
- Copyright cleanups
- Languages/Compilers
- languages/APL: minor updates, PDD15 conformance
- languages/dotnet: minor updates
- languages/lua: minor updates, PDD15 conformance
- languages/lisp: minor updates
- languages/perl6: minor updates, PDD15 conformance
- languages/plumhead: minor updates
- languages/punie: minor updates, PDD15 conformance
- languages/nqp: minor updates
- languages/scheme: many updates, PDD15 conformance, improved tests, use PMCs instead of primitive registers to represent values
- languages/tcl: bugfixes, PDD15 conformance
- languages/WMLScript: minor updates
- compilers/pirc: updates from PDD19, PDD06
- compilers/pct: minor updates, PDD15 conformance
- compilers/pge: PDD15 conformance
- compilers/tge: PDD15 conformance
- Configuration
- Improve test coverage
- Improve reporting when a step fails; allow abort on failure
- Miscellaneous
- More coding standard conformance, tests, cleanup, speedups, warnings cleanup
- Bug cleanup, esp. GC bugs
- Eliminate .imc extension (use .pir)
- Simplify some core config steps to not allow interactive prompting
- Removed
- clear_eh opcode
Rafael Garcia Suarez announced on the Perl 5 Porters list that code freeze for Perl 5.10.0 is coming soon, with release to follow soon after.
For dual-life module maintainers, where the module is distributed as a core module in Perl, as well as a separate distribution on CPAN, make sure that your modules are in sync with the core version. A list that may not be complete of these modules includes:
- Attribute::Handlers
- CGI::Util
- Cwd
- Data::Dumper
- Exporter and Exporter::Heavy
- ExtUtils::MakeMaker and ExtUtils::MM_Unix
- several File::Spec::* modules
- IO
- IO::Socket
- Locale::Maketext
- Log::Message::Simple
- MIME::Base64
- Memoize
- Module::Build
- NEXT
- Pod::Perldoc
- Shell
- Time::Piece
- Win32
Parrot 0.4.16 has been released to the wild. As always, code is available at parrotcode.org. Notable in this release:
- Code review on every PMC
- PMC code generation now uses Storable to reduce compile time
- Automated test coverage data of C source
- Design document PDD17 covering PMCs is complete
- Added lists, for loops, operators, comparison and multiplicative operators for NQP
What's NQP? It's "Not Quite Perl", and is an implementation of a subset of Perl 6 in Parrot. NQP will be used for all compiler tools for languages using Parrot as a way to bootstrap the Perl 6 implementation.
Finally, Allison Randal has been working on Parrot full time, with her machine funded by a Perl Foundation grant. Details of the grant progress are available, including ... <fanfare type="trumpet"/> a schedule! And she's reached the milestones on it! Huzzah! Perhaps other parts of the Parrot and Perl 6 projects could create and publish schedules as well...
Chris Dolan writes in his use.perl.org journal:
The policy that has generated the most talk so far has been Subroutines::RequireArgUnpacking which says that you can only use @_ in the first lines of your subroutine, and only to populate lexical vars. If you use more complex patterns like Params::Validate, then this policy is not for you and you should consider deactivating it by putting "[-Subroutines::RequireArgUnpacking]" in your perlcriticrc or putting "##no critic(Subroutines::RequireArgUnpacking)" near the top of your .pm file.
The first batch of changes from Chris's work have been released in Perl::Critic 1.07.
If you haven't given Perl::Critic a try, do so today. I guarantee that running Perl::Critic against your code will find at least two or three little bugs or bugs-in-waiting.
Ricardo Signes has been writing about embedding Perl code in Keynote presentations. The problem is that you can't easily do syntax highlighting in those presentations.
So now he's working on syntax to RTF tools. He's uploaded a synrtf tool to his hacks page.
Next up, I may attempt to write a very crude Vim colorscheme parser. With that done, it just becomes a matter of automating the highlighting of text in a Keynote text box.
jonswar is proposing a standard logging API:
This being Perl, there are many fine logging frameworks available: Log::Log4perl, Log::Dispatch, Log::Handler, Log::Agent, Log::Trivial, etc. So why do CPAN modules eschew the use of these and invent their own mechanisms that are almost guaranteed to be less powerful?
He proposes a module called Log::Any to standardise how CPAN modules log errors, debugging information, and so forth.
Read more over on use.perl.org.
Over on use.perl.org, Brian Cassidy wrote about a YAML-formatted changelog he happened across:
This makes total sense -- Machine parsable high-level changelogs. I'd love to see a spec created for this. A quick poll of #perl-qa shows that some other folks agree. I searched around but couldn't find any existing specs -- any takers? :)
Later, Roland Giersig takes up the challenge with a first attempt at a spec.
I must say, I'd be all in favour of machine-parsable changelogs. It'd make CPAN Watch much more automatable.
Jeff Horwitz, who has previously embedded Perl 5 code in Oracle PL/SQL code, has embedded Perl 6 in Apache. He writes on the perl6-internals list today that:
It gives me great pleasure to introduce you to the world's first mod_perl6 handlers! They are run using Parrot's Perl6 compiler on top of mod_parrot, and are compiled on the fly the first time a handler is called. Each handler is passed an Apache::RequestRec object instantiated by mod_parrot, and the handlers can call methods on that object from Perl6 land.
The code is simple and familiar, yet uses new Perl 6 constructs.
sub counter_handler($r)
{
our $x;
unless ($x) {
$x = 1;
}
$r.puts("<h1>Hello, I'm a mod_perl6 response handler!</h1>\n");
$r.puts("Page views for this interpreter: $x\n");
$x++;
0; # Apache OK
}
Seeing working Perl 6 code, especially interoperating with other software, is what Parrot and Perl 6 need to show the community that these two projects, crucial to the future of Perl, are making progress. Bravo, Jeff!
