ok(!defined($foo3), "block enclosed by parentheses should not auto-execute (1)", :todo<bug>);
Note that TODO tests are marked as passing only if they're actually passing
(i.e., unexpected passing from the perspective of implementers) and they're marked
as failing only if they're actually failing (i.e. expected failing). I don't
introduce special marks for these tests because added complexity will lead to unnecessary
Skipped tests have no marks at all and the intention is straightforward. Just don't mistake
blank tests for smartlinks.pl's bugs or something like that. ;)
There's also brief stats info in the link name so that you can see how many sub-tests are failing
and how many are not without actually expanding the code snippet. (Thanks Juerd++ for
suggesting this one.)
On top of the web page, there's a header like this:
This page was generated at 2006-09-17 05:58:59 GMT.
(syn r12136, pugs r13398)
where the revision number for pugs is extracted from the corresponding smoker's
report. Christopher has ensured the version of the Pugs test suite used by the smoke server
matches exactly the smoker's local Pugs. The timestamp was
proposed by Juerd while
the revision numbers for both syn and pugs were
proposed by [particle]++.
All the Synopses on the smoke server are updated periodically by cron, even including
old smoke reports that had been processed. We're trying to offer you the latest Perl 6 Spec
For more details on the original motivation and Christopher's design decisions,
please read the p6c threads below:
Thanks Gaal and Larry's tests.yml while I was implementing smoke result rendering feature in
smartlinks.pl many weeks ago. At last but not least, I really appreciate Christopher's
work on the smoke server/client mechanism to make this feature truly useful.
(We don't need auto-smoking
on feather any more, whee!) And I also thank iblech++ (yes, iblech's alive!) for helping
Christopher through the whole process.
The Synopses on feather will still go without smoke results,
since smoke results are always specific to a certain Perl 6 implementation or a Pugs backend.
We hope you will still like it. :)
Audrey once said on #perl6 that she was biased to fix tests with smartlinks. And [particle] recently said that he had started a port of smartlinks.pl to PIR so as to cross-reference PGE's tests with the Synopses and parrot PDDs. Furthermore, I've seen more and more people are adding both tests and smartlinks to the Pugs test suite, which is really really wonderful. :D
The Pugs team is now in release mode.
The focus is reviewing and addressing all the failing tests.
Reports on failing tests can be found by looking for a fresh report posted to
smoke.pugscode.org , or by running
"make smoke" yourself, and reviewing your own
The test may be failing for a number of different reasons:
The test is broken for some reason and needs to be repaired. Maybe the spec changed. Who knows.
New tests have been added for unimplemented features. These should have :todo<feature>
added as the last argument. These kinds of of failures are more likely to occur at the end of the test script.
There is a regression. Something that worked in the last release quit working. This should be fixed before the release, and should be left failing if you are unable to fix it yourself.
The other activity that's important during release mode is "changelogging"--
figuring out what's new and adding it to the ChangeLog. Some helpful people
have already made good progress on this by reviewing the commit history.
Once this release is out, I expect we'll see some significant OO improvements and other larger scale changes land in the tree.
the bridge between Pugs' Haskell core and
the Perl 5 module Pugs::Compiler::Rule, thus bringing rules support
to our pugs ``for free''. This is really good news to us. :)
For more than one year, Pugs required parrot to provide full Perl 6
regexes (rules) support since Pugs didn't have its own grammar engine. In
those early days, parrot's
PGE (Parrot Grammar Engine)
was the only choice.
However, obtaining and compiling parrot is a daunting task for most
inexperienced users. And furthermore, the Pugs team has been struggling with the
interoperability between these two ``animals'' to ensure they play together well.
Everyone must still remember that parrot embedding was almost like a nightmare.
Hence it was hoped that pugs could get rid of the parrot dependency completely.
With fglock's excellent work started from the beginning of this year, it is a reality
(PCR) is a pure Perl 5 implementation for Perl 6 regexes. Although there's
still a lot of missing features in PCR
(see its TODO file
for details), we have already got a simple
Perl 6 compiler based on PCR,
which has passed
~1000 tests in the Pugs test suite. So it's good enough. And you can try out Perl 6 regexes
without parrot anymore:
Audrey says it reuses the now-on-by-default perl 5 embedding feature of
pugs. It also works for Windows users since I've
helped her to solve
the long-overdue p5 embedding problem on ActivePerl 5.8.x. And gone is the long-standing message
``perl5 embedding is not available on Win32'' while building Pugs. Yay!
Note that the PCR integration work is still under way, but we believe it's
a good start anyway. :D
It is still undecided if Pugs should keep PGE as an alternative. I think
leaving the choice to the user is more sensible. :)
Tonight I had chance interview Flávio Soibelmann Glock (aka:
"fglock") about the status of the 'v6', the project to get Perl 6 run on Perl
5, and eventually to have Perl 6 run on Perl 6. Read on for the interview.
Today's learning experience with Perl 6 was Smart Links. Smart Links refer to a special syntax used in the test suite which connect a particular part of a test script with a related point the Perl 6 specification.
Smart links are especially valuable for a language in development. They help answer these important questions:
Has this feature been tested? If you don't see references to tests from the spec, there's a possibility the feature is not only untested, but unimplemented!
Are there duplicates tests for this feature? If you see more than one test script linked in to the same point in the spec, it's possible there are duplicate tests, and the tests suite can be simplified.
Is there a spec for this feature? On the other hand, if you find a test without a smart link, it may simply not have one yet, or the feature may be unspec'ed. It was discovered that the basic function "say" did not have a formal definition through this kind of review.
However, to the receive the benefits of smart linking, the smart links must actually exist.
Today, 263 test scripts have at least one smart link, but 349 do not.
To help with this, you mostly just need some motivation to help, and commit access
to the pugs tree. Ask for it on #perl6 if you don't have it.
Today I discovered to my surprise that part of the core of Perl 6 is written in Perl6. This is Prelude.pm. Having this part of the code in Perl6 means it is easier for Perl 6 users to hack on. It also means this functionality is available to all Perl 6 implementations, not just Pugs.
For effiency, Prelude.pm is compiled into a YAML format file, and later read back into Haskell with less effort.
There are still some functions which are currently implemented in Pugs which would be good candidates to include in Prelude.pm. These are listed on the Preludification Candidates page, although I can't vouch for the freshness of the list. This is your chance to write some of Perl 6 in Perl 6!
(There's also a Prelude/PIR.pm which is written in a Perl 6, and I'm not sure how it's related. If you know, please add a comment to the top of PIR.pm to explain the difference. )
Humberto Massa asked about how to get stated hacking CGI.pm for Perl 6. To answer his question, I've enhanced some of the Perl 6 wiki pages. The download page is cleaner now and I've added a new page on getting started with Perl 6 module projects. Mostly you need to know to use util/prove6 to run your tests with, instead of prove.