Tuesday July 05, 2005
more test cleanups for partcl
Did a lot of low hanging fruit - builtins that we had already implemented, but needed slightly different error messages, or that we hadn't yet written a test for, or were otherwise borked.
Also committed some udpates to the script that generates our tcl tests, making it more verbose so one might figure out what's going on while it's running.
Oddly enough, we're passing a test here or there for builtins we haven't implemented. That can't be right. =-)
Matt is going to implement [lindex], which would give us some more easy passes.
I've pinged the list about getting PGE to support character classes, which will help any failing [string match] tests.
Current passing percentage of tcl's tests (not including [clock]): 12.00%
tcl-interactive, avoiding the real work.
Whee. partcl now passes along unknown commands to the shell as its big brother does:
$ make tclsh
(cd ../../ && ./parrot --output=languages/tcl/tcl.pbc languages/tcl/tcl.imc)
(cd ../../ && ./parrot --gc-debug languages/tcl/tcl.pbc)
% echo "whee"
This done as I've committed a per6 grammar for [expr], which when run through the demo for PGE seems to work just fine: problem is being able to get at this data programmatically afterward. it's a bit convoluted, hopefully I can build on what autrijus has done in PGE.hs
Thursday June 30, 2005
It was nice actually *meeting* some of the people that I've been interacting with since beginning working on/targetting parrot several years ago.
It's too bad that Matt Diephouse
couldn't go - I suspect we'd have been able to advance partcl quite a bit.
Matt's currently working on a patch to improve list to string shimmering, which should raise our test percentage quite a bit.
I'm working on updating [expr] handling. When I started writing this, parrot was in its infancy - the only real way to write a parser was to do it externally (and I didn't want to introduce any external dependencies), or by rolling your own in PIR or C: so I rolled my own parser.
With Patrick Michaud's
latest work on PGE, however, it looks like I'll be able to rewrite these bits into a Perl 6 grammar. I'm in progress on this, though after 3 days in Toronto, I have some real work to get done first. ^_^
Thursday March 03, 2005
Inching towards parrot 0.1.2
Looks like we're getting very close to another point release of parrot
, which will include Dan's string patch
, as well as Leo's new generational GC system
. use guest/guest as an RT login
The other items that were scheduled for the 0.1.2 release are mainly design-related TODOs which are getting bumped until at least the next point release, until we get Dan back --
Dan's been offlist for a few months now. Jesse
is working on getting some information out of him regarding the TPF grant
, hopefully that'll generate some movement soon.
Wednesday October 13, 2004
ParTcl: Dynamic Tcl PMCs
A few months ago, I put together a cargo cult version of basic PMC types for
Tcl based on their Perl counterparts. I ripped out all reference to PerlUndef,
and made sure the shimmering (automatic conversion of datatypes) was working between the various types.
After posting this to the list, I was told that this was good, but these PMCs
needed to be dynamic. That is, rather than being types that are shipped with
the basic parrot core, they should be available as a dynamically loadable
library. Makes sense. (Note: This also means that Perl's
PMCs should also
be moved to a dynamic library, especially now that parrot has its own,
non-Perl base types.).
Things sat for a bit after that. Thanks to Mattia Barbon who provided a way to group related pmcs together into a single library to load (Before this, interrelated
pmcs were uncompilable, as each depended on another that hadn't been compiled yet.). Also thanks to Steve Fink, who got that
working under OS X, which
is my primary development environment.
Now, if you
runtime/parrot/dynext/tclgroup.so (or something like it.) (If you don't, there's a bug, and please report it
to the perl6 internals list. )
Now, at the top level parrot directory, you can create
loadlib $P0, "tclgroup" # Load combined tcl lib
$I0 = find_type "TclInt" # Find ID for a TclInt *
$P0 = new $I0 # Instantiate
$P0 = "asdf" # Assign
$S0 = typeof $P0 # Get the type description.
This snippet prints out
Note that the type of the PMC has
shimmered (morphed, if you prefer) to the appropriate data type. I need to do
more work to nail down the appropriate reactions for each kind of shimmer for
- Remove any dependence in Tcl's PIR on the Perl* PMCs.
- Provide the ability to generate Tcl Lists from within Tcl
(that is, write [list]), and insure that the right thing happens when shimmering between a list and a string. For example, insure that:
puts '[string range [list 1 2 3] 0 2]'
which will have been shimmered from a TclList (returned by [list]) to a TclString
[*] - these steps are, of course, unnecessary with built in types. They're
necessary here because when parrot started, we didn't know anything about Tcl.
We have to load the pmcs, and then, because the pmc types were created at
runtime, we have to use a runtime check to get our class ID. (As opposed to
the builtin type
String, which you can, thanks to
runtime/parrot/include/pmctypes.pasm, just create with
$P0 = new String)
Tuesday October 12, 2004
I'm working on implementing Tcl (http://www.tcl.tk/) from scratch on top of parrot (http://www.parrotcode.org/). The code so far is available as part of the parrot distribution.
I've spoken briefly with some of the folks on the Tcl Core team, who suggested that this version of Tcl be called "ParTcl" ... which is so bad, I'm going to have to use it.
Right now, I've got a big chunk of the interpreter working. Next two big steps are overhauling [expr], and swapping out the generic (and Perl) PMCs for dynamically loaded Tcl PMCs. Now that Parrot 0.1.1 is released, I should be able to switch over to the dynamic PMCs without a problem.
Once those are done, I can add in/flesh out all the tcl builtins that rely on lists and arrays. (Or, if you speak perl, arrays and hashes. Mostly).
Volunteers welcome. ^_^