Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

coke (5373)

  (email not shown publicly)

Journal of coke (5373)

Monday September 29, 2008
10:34 AM

For future partcl updates, see Regards.
Thursday September 25, 2008
01:22 AM

partcl running with tcltest.tcl

With recent updates (just in the past week), partcl (tcl on parrot) can now use the tcltest library that comes with tcl 8.5.4 [1]

For some time, we have been limping along with partcl's hand-rolled Test::More analog on a slightly processed version of tcl's *.test files.

The current version of make spectest is actually processing the raw .test files from the CVS repository.[2]

While tcltest doesn't generate TAP, being able to run the spec test using the native testing tool is a big step forward for partcl. Here's a sample:

$ ./tclsh t_tcl/llength.test
llength.test: Total 6 Passed 6 Skipped 0 Failed 0

I've checked a file into the repository to track the progress of the suite. v?view=markup

"2008-09-25 00:00",31396,38,1481,743,290,448

This is analogous to the file rakudo (Perl 6 on parrot) is using.

Hopefully a few more small tweaks will let us run more of the other 99 test files: we were passing many of those tests when they were lightly converted, so the number of passes should hopefully go up quickly soon as more functionality required by tcltest is implemented.

[1] Not exactly a pristine copy: one of the core features of tcltest (where should I send my output) requires some relatively advanced functionality - tcl's tests are not designed like perl6's to allow new implementations to ease into things. I've tacked on 2 replacement subs in our copy of tcltest that for now always say "just print to stdout/stderr". Still, that's a two oneline proc bodys compared to the original 3375 lines of tcltest.tcl

Wednesday October 17, 2007
01:15 AM

Parrot 0.4.17 Released

On behalf of the Parrot team, I'm proud to announce Parrot 0.4.17
"Two for Finching." Parrot ( is a virtual machine aimed
at running all dynamic languages.

Parrot 0.4.17 can be obtained via CPAN (soon), or follow the
download instructions at
For those who would like to develop on Parrot, or help develop
Parrot itself, we recommend using Subversion or SVK on the
source code repository to get the latest and best Parrot code.

Parrot 0.4.17 News:
- Implementation
  + Bug fixes (including Coverity IDs 20, 22, 30, 119-122, 124-126, 129-131)
      Also various GC, memory, and segfault issues
  + Fix & reenable CGP core
  + Parrot's -r flag now works again (compile to and execute bytecode)
  + Updates to pmc2c & PIR syntaxes
  + Fix Complex PMC
  + Minor performance improvements, especially in PGE
- Documentation
  + PDD02 "Vtables" - superceded by PDD17
  + PDD06 "PASM" - minor updates
  + PDD17 "PMC" - add VTABLE syntax, update core PMC struct, restore UnionVal
  + PDD19 "PIR" - early review started
  + PDD21 "Namespaces" - cleanup
  + PDD24 "Events" - draft approved
  + PDD25 "Concurrency" - minor updates
  + PDD26 "AST" - draft version begun
  + PIR tutorials updated
- Languages/Compilers
  + Make scheme work with the current calling conventions, other major work.
  + Updates to m4, lua, compilers/pirc, languages/PIR, dotnet, tcl
- Miscellaneous:
  + make -j functional again
  + Code cleanup (refactoring, optimizations)

Thanks to all our contributors for making this possible, and our
sponsors for supporting this project.


Wednesday March 21, 2007
06:10 AM

Parrot 0.4.10 Released

Tuesday November 28, 2006
09:48 AM

partcl update

We're able to run quite a few more tests now with some judicious skips of certain tests. We're still not running tcltest.tcl natively (though we're getting close!); So, this is with our Test::More like 'test' proc, which doesn't parse all the variants of tcl's test proc. (We've recently modified it to run tests with simple constraint specs: we run it regardless of whether the constraint would have said don't bother.)

446 subtests skipped.
Failed 41/65 test scripts, 33.85% okay. 4131/7608 subtests failed, 45.70% okay.

That's 3031 tests passing, out of 20683 in a recent cvs checkout of tcl's test suite. That's 14.65%

Monday August 07, 2006
01:19 AM

tcl update

Recent tcl on parrot work:

1) update [expr] to use the parrot compiler tools, PGE, TGE - this allows us to write the expr grammar using perl6 rules instead of handrolled PIR.

2) create a test::more like set of procedures which allow us to run the tcl tests with only very minor modifications. This lets us drop the huge (and incomplete) test conversions to a perl based suite. partcl tests are mostly converted to using this like test::more - we provide a 'test' sub that is implemented in terms of the test::more subs - this lets us generate the normal (to us) TAP output, even on the tclsh tests.

The conversion means we're running larger tcl files (in the form of tests) than we have to date. This is exposing issues in both partcl and parrot that are spurring development on both fronts.

Because the tests are now being written in tcl, we can easily run them with the latest tclsh to verify we're testing for the right things: this helped find a bug in tcl8.5a4.

Here's the result of all the tcl tests we can currently parse ``natively'' (in quotes because we're still not using tcltest.tcl):

Failed 34/38 test scripts, 10.53% okay. 568/937 subtests failed, 39.38% okay.

So, passing 369 tests using the current method. We'd be shown passing more, but some test files die because of their size (chokes the compiler), or for other reasons after some passes. Any test that dies prematurely isn't counted in this list.

Friday June 09, 2006
07:33 AM

Tcl update

tcl on parrot is still not dead.

Matt Diephouse is effectively taking over partcl, though I anticipate I will help out with some PGE/TGE commits; I just committed some changes to the tcl-test harness so we can once again run the transformed test suite. (still hovering at just under 6%)

Monday January 09, 2006
09:25 AM

templates too verbose...

If you look at the last posting, you'll see the template is very verbose and optimized for the build tool. Changed it to be more like the actual usage mentioned on the man page: so, exit's manpage says:

    exit ?returnCode?

And our exit template now says:

    usage => "?returnCode:int=0?",

Which automatically generates code to treat it as an optional argument, generates the appropriate usage message if the user miscalls, expects the argument to be an integer (and carps properly if it's not), and sets the default value to 0.

Friday January 06, 2006
12:25 PM

better partcl compilation framework

partcl is still failing a few tests, but things are looking up. Fixed a bug that was bringing down our tcl test suite numbers, added regression tests to tcl to track them. Also did some expr cleanup (octal, ~ operator, more tests.)

In the past few days, added a build tool that lets us declare inline'd tcl builtins (originally, everything was interpreted. Now several commands have a version that generates PIR), rather than hand rolling them. this lets you declare the argument types (and whether they are optional, default values, etc.) and have them compiled automatically, and just define the small bit of PIR code that you need to process the arguments. It also automatically generates errors for bad calls, etc.

By moving all this setup code into the build script, we should lower the bar for implementing the builtins. as of this writing, six builtins have been converted to the new template style. Here's a sample:

    command => 'join',
    args =>
            name => 'list',
            type => 'list',
            name => 'joinString',
            type => 'string',
            optional => 1,
            default => " ",
    code => <<'END_PIR',

$S{register_joinString} = $P{register_joinString}
$S{register_num} = join $S{register_joinString}, $P{register_list}
$P{register_num} = new .TclString
$P{register_num} = $S{register_num}

Most of the declaration is pulled right from the manpage, as far as arguments go. The actual PIR code that does the work is actually a bit longer than it needs to be, due to boxing. (The compiler currently assumes that the result of the compilation is always a PMC - being able to specify a specific register as opposed to a PMC will let us reduce the amount of code even further.)

Friday December 30, 2005
09:09 AM

Tcl Version

Committed a patch last night changing some tests to expect error messages that are nowhere to seen in tcl 8.4, which prompted some confusion.

Just added a comment to partcl's README which will hopefully explain:

Note that we are targetting Tcl's cvs-latest, which is going to be 8.5. This allows us to test against what will likely be state of the art by the time we approach completion. As we get closer to that day, we'll probably settle down and code against the most recent version (which hopefully won't be 9.x by then).

This has the disadvantage that for side by side testing, you'll need to build your own tcl. Partcl users don't need to worry about this, and even most partcl developers can simply code against the test suite.