Recently in Parrot Category

The Perl 6 design team met by phone on 17 September 2008. Larry, Allison, Jerry, Jesse, and Nicholas attended.

Jerry:

  • gave a presentation last night on Perl 6 and Parrot to the Seattle Perl User Group. It was well received.
  • what is the ownership of Perl test suite?

Jesse:

  • ask about the Linux kernel for an analogous situation

Jerry:

  • what's the license?

Jesse:

  • the licence was fixed from the beginning. Audrey did it

Allison:

  • it's Artistic 2, early draft.

Jesse:

  • I thought it was an early draft.

Patrick:

  • Artistic 2 plus MIT

Patrick:

  • yesterday I got the September release of Parrot out.

Allison:

  • thank you very much.

Patrick:

  • It went so smoothly. The documentation is good. Karma points to everyone who put that together. It's working out really well.
  • I've been answering questions, guiding other people to do stuff.
  • Fine by me, but not done much core hacking. Guiding is good.
  • Statement modifiers after listops now work.
  • C now a named unary, with the precedence correct.
  • I'm answering questions even off the Perl list and subscribed to the November wiki list
  • I chime in, see where they are running into Problems.
  • I'm giving them advice in designing wikis [http://www.pmwiki.org/]
  • Jerry joined it too

Jerry:

  • Yesterday put a FAQ on November Wiki about how to subscribe to the list

Patrick:

  • I've been talking with Jonathan about design issues.
  • We still have problems with lexicals - putting ideas forward.
  • Putting ideas forwards on perl6-language about how lexicals and others should work. Got feedback, which is good.
  • There's an impedance mismatch between Perl 6 and Parrot about how things should work.
  • I have a design, where we don't need scalar PMCs for every aggregate type. I [will?] put it on the web.
  • Jonathan and I are working on it tomorrow.
  • Good not to have all those GC-able PMCs around.
  • It's not a pretty design, but it should be good enough to work.
  • This week I will be working on lexicals, and getting list interpolations stored correctly. These are ongoing forms for those using Rakudo.
  • This weekend going to restart "this week...", but it might be every 10 days. 2 weeks is too slow, 1 week is to frequent.

Jesse:

  • Are the milestones still good?

Patrick:

  • I might have knocked one off. I'm doing it by RT ticket. The next to be knocked off is list assignment. We may get lazy lists as part of that as well, but still I'm still thinking.

Larry:

  • I have a fabulous cold. My brain is in sideways.
  • "Tweaking things here and there as people point out things."
  • Tweaking STD.pm as people do things in tests.
  • For example, people check in tests and don't syntax check them very well, especially if as TODO tests. For example, unbalanced parentheses.
  • STD.pm tends to catch those.
  • What people have been saying, eg how lists work.
  • My thinking is of a more general nature, how much we expose the indeterminacy of the world, how to balance out eager vs lazy; expectations of how assignment will work.
  • Combining paradigms, and how it requires us to set up things like we did with the regexps.
  • Some are deterministic, but naturally the non-deterministics.
  • Whether they work the same way, or assignment works the same way, eager or lazy, and whether the users' control knob can deliver
  • Totally eager isn't going to fly, but "as eager as it can be until it arrives at some Inf", or whether list policy as general says "eager on easy, lazy on hard" - haven't decided that yet.
  • POD parsing -- defined POD such that we can say =begin end
  • This can go to end of the file if there is no corresponding =end end
  • Is that a general policy, for unbalancing?
  • Or should end be a special case; =begin end, or =begin data

Jesse:

  • =begin data feels more like Perl 5

Larry:

  • should we have a different keyword other than BEGIN?

Patrick:

  • An adverb, "begin", go all the way to the end, make it explicit.

Jesse:

  • anything more, on canonicalising the core test stuff?

Larry:

  • the test functions? nothing has been done, but no reason not to.

Patrick:

  • I've been spreading the word "this may be coming"

Larry:

  • any feedback, let me know

Patrick:

  • so far, uniformly positive. People are "oh, that would be nice"
  • One thought
  • How eager is assignment?

Larry:

  • Some thoughts, assignment is naturally eager. It falls out from copy semantics. One can't copy unless source is eager or immutable.
  • Else you can't copy unless you snapshot the iterator.
  • Eager might fall out of the copy semantics.

Allison:

  • 5 failing tests on Macs.
  • Almost done, taken 2 weeks longer than I hoped.
  • As I make my way through the subsystems, cleaning the problems, each has fewer problems for the surrounding code.
  • The lexical is system on my list, after we've found the last few problems.

Jerry:

  • I hope to have time for Perl 6 development for the remainder of the
  • year, starting in October.

The Perl 6 design team met by phone on 10 September 2008. Larry, Allison, Jerry, Patrick, Nicholas, and chromatic attended.

Allison:

  • debugging the MMD branch
  • we've dgone from 900 failing tests to 47 in the past two days
  • working my way through failing tests has had a compounding effect
  • chromatic has been helping
  • I shifted the nastiest failure from a termination in the middle of nasty code with no warnings to a segfault
  • and he fixed that
  • we're very close to merging the branch

c:

  • probably after the next release

Allison:

  • yes, probably

Jerry:

  • a segfault is better?

c:

  • much easier to fix

Allison:

  • this was a PGE problem
  • it pretended it was successful
  • it output nothing
  • it was so much easier to debug then

Nicholas:

  • die early, die often

Patrick:

  • I can't tell you how many times I had PGE output nothing
  • zero?!

Allison:

  • we're having a Parrot developer day in November in Moutain View

Jerry:

  • finally had time to do a little development this week
  • then I had hardware trouble, and couldn't commit anything

Larry:

  • between my day job and my grandson visiting over the last week, not a lot of spare time
  • took several hundred Parrot-specific tests that Moritz put into t/spec
  • fudged them all
  • went through several permutations of how to write the tests
  • realized that there was a missing operator
  • no way to do a pattern object for smart matching that's equivalent to a junctional and but guarantees the order of evaluation
  • that's almost exactly what a where infix operator would do
  • a type on the left and a constraint on the right of it
  • you want to test against a subtype name and a constraint in order
  • lots of places want that sort of pattern
  • we had no easy way to express that short of defining a subset type, which is hard to use for one op
  • or 700 ops in that file
  • there's now a where operator that parses just like the junctional &, but in guaranteed order
  • otherwise just random spec cleanups
  • answering questions
  • lots of people thinking about the nature of lists and iterations now
  • did a little catchup on email on p6l
  • woefully behind on my own personal email
  • doubtless there are bugs in that
  • oh, ended up adding a Perl 5 grammar to STD
  • copied and pasted the Perl 6 regex rules and cut out two thirds of them
  • maybe just need to borrow a test from the Perl 5 suite

Patrick:

  • PGE uses one
  • just uses the test file directly

Larry:

  • not fudgeable

Patrick:

  • it doesn't use the perl5: flag
  • PGE doesn't understand that flag
  • it'll fail miserably

Patrick:

  • added code to Rakudo to go to standalone PIR
  • generates PIR that you can run directly from Parrot

c:

  • that should help you help me

Patrick:

  • that should help a lot of people help you help me
  • updated the Failure type in Parrot
  • warns if you use it while undefined
  • originally I put it in to die fatally
  • that broke the test suite
  • a few people are going through the test suite to fix the evaluation of undef Failures
  • created a couple of functions in Rakudo to make it easier
  • finished my final report for the Mozilla Foundation
  • Richard and Jesse are happy with that
  • I'll publish that later today or early tomorrow
  • that grant is over now
  • trying to figure out list interpolation and how things fit together
  • Rakudo has some nasty bugs there
  • I feel like I'm missing something there
  • it seems like there's another type in there

c:

  • added a new feature to Rakudo last week
  • fixed a couple of bugs to get a lot more tests passing
  • keeping up with the incoming patch and bug queue
  • Christoph is good at helping
  • also trying to fix bugs and help the MMD branch along

The Perl 6 design team met by phone on 03 September 2008. Larry, Allison, Patrick, Jerry, Jesse, Nicholas, and chromatic attended.

Larry:

  • I was at the Lightweight Languages Conference in Tokyo last week
  • about a thousand people there
  • a large Ruby presence, as well as some of the other "scripting" languages
  • gave another variant on my talk
  • seemed well-received
  • mostly just vacationing and touring around otherwise
  • did some work getting STD and the test suite to agree with each other
  • now have symbol table checking in STD
  • a global scale, not lexical
  • can tell when you call an undefined function
  • found surprisingly few difficulties with the existing parsing
  • that makes me happy
  • hanging out on IRC and email, doing a little bit of spec work
  • the standard parser can parse itself in under 30 seconds
  • I have other ideas to make it faster
  • not sure I want to implement them yet
  • it might adversely impact other work with installing a real LTM
  • they remain ideas for the moment

Patrick:

  • most of you saw the announcement about Paula
  • we celebrated last Friday
  • mostly answering questions and debugging problems on Rakudo
  • expect to be back full-time on hacking tomorrow
  • Jonathan's out on vacation this week
  • Moritz and Carl and other people have been continuing to make progress
  • I've been responding to them
  • not a lot has happened beyond testing improvement
  • the primary coders are on vacation or busy with other things

Allison:

  • another nice quiet and productive week
  • we have a new, much cleaner dispatch route in Parrot
  • it uses signature objects, which are like Perl 6's Captures
  • everything you need to invoke a sub is all in one place now, not spread out over lots of calls and varargs and unpacking varargs and...

c:

  • you realize that code has always been haunted, right?

Allison:

  • I'm ripping out some of the old code, but some of it will stick around
  • we can make another branch to clean it up
  • the branch has some problems in TGE
  • I probably haven't caught all old dispatch instances yet
  • we're ready to launch the new Parrot website
  • doing some work on that
  • almost ready to launch the new Parrot mailing lists too
  • just need to ask Ask or Robert for subscriber lists

c:

  • started a couple of arguments online
  • need to work on the "How to Help the Patchmonster" document
  • worked on vtable cleanup in Parrot, had MMD problems, may have to wait a bit
  • otherwise applying patches
  • should have more time in the next couple of weeks

Nicholas:

  • I love parallel tests in blead, and I'm missing them in 5.10

Jesse:

  • I've been working and traveling for the past two weeks
  • also been trying to goad chromatic to post suggestions to p5p

Allison:

  • which seems to have worked

Jesse:

  • is there anything I can do to help you?

Patrick:

  • I just need time and energy
  • so maybe saying "Get back to work!"

Jesse:

  • I can do that

Jerry:

  • haven't had any commits recently
  • helping lots of people with implementation questions
  • talked to Evan Phoenix about the Rubinius VM
  • he had some questions about Parrot's architecture and design decisions
  • good chat
  • we started talking about bytecode and AST translation
  • they're lacking a well-defined AST now
  • just S-expressions
  • we'll chat more frequently
  • there are only so many people interested in implementing VMs
  • we should all get together
  • still talking to Microsoft
  • they want to know what an ideal testing environment would look like in their labs
  • I need to figure that out
  • it could be good for Perl 6, Parrot, and Perl 5

Patrick:

  • is that worth taking to the mailing list?
  • Allison mentioned something about old MMD and new MMD
  • what's the difference from a PIR perspective?

Allison:

  • absolutely none

Patrick:

  • there should be no difference in PGE and TGE then

Allison:

  • there are a few places internally which are C code
  • if there's a direct C call into the old MMD system, bam!
  • I've been replacing them with the new C-style calls

Patrick:

  • it's just that PGE is exposing the bugs
  • it's not a source

Allison:

  • that's why it's so perplexing
  • I haven't been able to trace it back to a particular call

Patrick:

  • I'll look at it too
  • I'm happy to see Parrot taking this new model

Allison:

  • we can avoid a lot of indirection

Larry:

  • there have been discussions of different levels of test harness support
  • we need to straighten out the namespace
  • "What does use Test; mean?"
  • it has overloaded meanings for many people
  • should that be the minimal thing, and everything else be larger
  • or should the minimal test thing be built into the language

Jesse:

  • that would be fascinating

Jerry:

  • and everything's multi and can be overridden?

Allison:

  • ok() and is() are easy to write
  • easy to include in the language

Larry:

  • just in the standard Prelude
  • it's like POD's play to bring documentation into the language to make it easy
  • it could be a module that Prelude brings in

Patrick:

  • just a module that implements these?
  • they print what they print now?
  • I'm happy with that
  • I'd like to define the minimal set of functions that the test suite can rely on

Larry:

  • or the fancy set should be the default set

Patrick:

  • I can argue it that way too
  • but that seems to be the wrong way
  • I'm happy for any clarity the Perl 6 designers throw in there

Jerry:

  • for a Perl 6 implementation to be a real implementation, it uses the core tests only
  • and builds on top of those
  • any other fancy test library is out of the core and builds on Perl 6?

Patrick:

  • the test suite functions are part of the official test suite

Nicholas:

  • that scared me slightly in how the perl 5 core bootstraps itself to testing, and trusting/testing its test system
  • the very early tests run inline
  • you can't be sure that require works
  • the next step uses a file named test.pl
  • doesn't use ++ for example
  • everything beyond the core ops tests are free to use Test::More
  • written in proper grown-up Perl
  • uses constructs which may have failed earlier

Larry:

  • we still have two of those things
  • the third level is potentially possible
  • the core definition of standard Perl 6 could have a fancier test module
  • the test prelude we're talking about is the equivalent of that test.pl

c:

  • and if you're implementing this, you can hardcode these as special cases in the compiler
  • and then you can rewrite them in your Prelude when you have that working

Patrick:

  • we can get rid of the line use Test; in our tests now

Larry:

  • that's part of the motivation

Patrick:

  • we don't have to worry about getting our namespaces working first
  • I'm in favor of that
  • that would have sped up a lot of stuff in Rakudo development

Larry:

  • the only other major argument against it is the notion that the function names are Huffman-coded for testing
  • not necessarily general use in a language
  • a user might want an ok() function that does something else
  • that's okay, if we do the overriding properly
  • but there's a conflict with the current spec because there are two different meanings of is
  • I can change the meaning of is Dog;> within a class
  • it can be specific, so it only parses on is followed by a type name

Jerry:

  • or it's only a single parameter

Larry:

  • multidispatch could handle that, but it's declaration
  • declarators need compile-time resolution
  • it needs compile-time distinguishing
  • the other is has multiple arguments
  • this one never does

Patrick:

  • it hasn't been a problem in Rakudo yet

Larry:

  • it's doable
  • the question is if it's too much of a hack
  • or if there's a better way

Patrick:

  • that depends on what the meaning of "is" is
  • what kind of equivalence does it do?

Larry:

  • in the header, it's either a trait
  • or if it's a type name, it turns into an isa
  • there's some argument of some kind

Patrick:

  • what if I say is $a, 3?

Larry:

  • or we can do is_eq, is_eqv
  • or just ok

c:

  • but you do lose diagnostic messages

Larry:

  • unless it's a macro
  • but that could be too clever

c:

  • what if someone thinks is is infix?
  • equivalent to == or eq?

Nicholas:

  • or is can do smart match
  • you have smart match in Perl 6

The Perl 6 design team met by phone on 20 August 2008. Larry, Allison, Patrick, Jerry, and Jesse attended.

Larry:

  • decommuting from Copenhagen
  • couple of tiring days wandering city
  • mostly hacking on STD.pm grammar to speed it up a bit
  • mostly propagating ratchet optimization around
  • compiles itself in under 90 secs
  • it's an improvement
  • also working on adding rudimentary symbol table checking
  • can figure out where it's misparsing things as function calls
  • getting ready for trip to Japan next week
  • lightweight languages conference, for some definition of "lightweight"

Patrick:

  • returning home from Copenhagen, which was quite productive
  • on the plane ride I implemented pieces for precompiled modules in Rakudo
  • finished that up last night, so now Rakudo can use precompiled modules
  • spectest_regression on my box went from 12 minutes to under 4 minutes
  • it also means that use statement can start doing load_bytecode things
  • today been working on lazy lists with jonathan
  • much of my time in the next couple of days will be writing reports and blog posts, catching up on events at OSCON and YAPC::EU
  • also, at YAPC::EU hackathon Jesse and I put in some refactoring on Rakudo's ROADMAP, identifying task dependencies and some relative effort required

Jerry:

  • GSOC update; mentors reviewing and submitting final reports
  • looks very good that all three are completing
  • very successful SOC
  • we have good NCI stubs for Parrot, no longer need to write function signatures for things in C header files
  • have 700 new tests added by Adrian for Perl 6 spectests
  • have mostly complete GC implementation (some debugging needed)

Jesse:

  • the recent blog post sounded a little "unhappy" with outcome

Jerry:

  • yes, that the student's self-perspective
  • however, it's design-wise complete, just not debugged fully

Allison:

  • we didn't expect total rewrite of GC system
  • we can do the GC integration with Parrot
  • he did what we needed him to do, indeed he went much farther than I expected

Patrick:

  • chromatic also mentioned that things are farther along than intimated
  • just need a bit more debugging before we can pull it back into trunk
  • didn't want to potentially block others' progress

Jerry:

  • trying to catch up on work done at YAPC::EU
  • much didn't happen online
  • missed out on some good conversations
  • today discussed exportation in Parrot on IRC with Patrick

Jesse:

  • getting way too little sleep at YAPC
  • very nice conversations with Patrick
  • developed ROADMAP, put estimates of relative effort on them
  • there's a lot less left to do than I would've estimated
  • I also talked to Jonathan about what he'll be up to after his current grants expire

Allison:

  • reverse commute from Copenhagen
  • diving right into mmd branch, have tasklist
  • Andrew and smash very helpful
  • finished parsing of multi declarations
  • build multi-dispatch table from C declarations
  • then deprecate a bunch of C code to get to a single mmd impl
  • roll that branch back into trunk
  • should finish MMD milestone this week or next
  • then it's onto IO implementation

Jesse:

  • Perl 6 IO specification was flagged in Saturday's discussions
  • Where does that belong?

Larry:

  • I've looked at it a few times, it's certainly not complete
  • "It's just a library issue!"
  • it needs some TLC

Jesse:

  • Are there others worth harassing for proto-TLC?

Larry:

  • where IO interacts with concurrency I tend to sweep under the carpet
  • I tend to not stress about it
  • let's do one step better than P5 and not worry about it

Patrick:

  • I also think that as long as we can soon provide an implementation that can do basic file I/O and sockets, then people can explore and play in the design space

Larry:

  • as long as it's properly OO to begin with, there's lots of room to play

Allison:

  • Parrot's IO model is becoming much more OO, yes

Jesse:

  • could Rakudo take care of providing an OO interface to Parrot's IO?

Allison:

  • independent of Rakudo, Parrot IO needs to be OO
  • the old design seems to be "reinventing multiple systems to do the same thing"
  • also wanted to mention volunteers working on test.parrot.org
  • moving pages over to new parrot.org domain
  • as soon as pages are moved over, we just need security certificate

The Perl 6 design team met by phone on 06 August 2008. Larry, Jerry, Nicholas, Jesse, and chromatic attended.

c:

  • started the release management expectation for post 1.0
  • want to get that nailed down before the end of the year
  • applying patches, fixing bugs
  • more small projects, the better
  • helped Allison get the concurrency branch merged, looks fairly good

Jerry:

  • agree with that timeline for getting documents sane on the release process
  • lots of traveling for several Parrot and Rakudo hackers
  • work has slowed down because of that
  • the concurrency branch merge was pretty smooth
  • able to dedicate more time to Parrot and Rakudo lately
  • reviewing Kevin Tew's GSoC project as it nears completion
  • running into a miniparrot build problem
  • trying to help him debug that
  • taken over mentoring for Adrian while Moritz is on vacation
  • he's been pretty quiet this week

Larry:

  • the standard grammar parses 99+% of t/
  • four of the six failing tests are the fact that it does not install new grammar rules for user-defined operators
  • one of the tests fails because the author of the test thought that Perl 6 as should read your mind as to where to apply adverbs
  • straightening out some of the parsing snafus
  • we need to be able to distinguish between types and variables all over the place
  • now :: really isn't a sigil
  • it gets in the way all over again
  • special symbols like ::?CLASS are specially parsed at this point
  • responding to questions on p6l about exception handling with defined-or and MMD semantics
  • mostly just hacking on the standard grammar and the tests
  • always have to decide whether the test or the grammar is wrong, when they conflict
  • thankfully it's often the tests
  • going to Copenhagen next week

Nicholas:

  • part of the problem of Perl 5 and the CPAN gets solved with Perl 6
  • which allows different versions of modules by different authors

Jesse:

  • had several chats with Audrey, who's hacking on Perl 6 again
  • she's taking Pugs apart into separate useful packages of Haskell code for Hackage
  • it's a Voltron-style development method for Pugs
  • the current version passes about the same number of tests as the version of two years ago
  • it now passes them in 15 minutes, instead of two hours
  • a dramatic performance improvement already

Nicholas:

  • why?

Jesse:

  • some internals changes
  • she's documented some of them
  • she's waiting for the 6.10 version of GHC, which adds built-in DSL support
  • it'll be a lot easier to port the standard grammar for running in Pugs atop GHC
  • it's easier to drop pure Perl 6 implementations of Perl 6 on top of Pugs and get them to work then
  • now a lot of cleanup and stabilization is going on
  • she wants a lot of people hacking on Rakudo, v6.pm, and the tests
  • also Haskell hackers
  • Flavio's back to hacking, but we haven't caught up
  • there's a lot more activity now than three weeks ago
  • I'm presuming there's no call next week, with so many people at YAPC::EU

Nicholas:

  • applied a patch to get parallel tests working in the Perl 5 core
  • running full tests in parallel is only slightly faster than serial

Jesse:

  • use -j 9 on a dual-core machine with the new Test::Harness
  • --fork also works well
  • --save and --slow front-loads the slowest tests, which causes things to run faster

Nicholas:

  • Andy Armstrong says this is moderately brittle
  • I think he pays more attention to issues from p5p at the moment than Parrot

Last year I received a Perl 6 development grant from the Mozilla Foundation and The Perl Foundation. Below is a copy of the final report I've submitted to close out the grant. It's also available in PDF if anyone wants a more printable version.

My thanks to everyone who helped me with this grant, and I'm looking forward to the next one.

[2008-09-11 update: the original version of this report mis-attributed the Squaak tutorial to Kevin Tew; the corrected author is Klaas-Jan Stol (kjs). My sincere apologies for the mistake, it is now corrected below.]

----------

Perl 6 Development Grant
Final Report

Patrick R. Michaud
September 10, 2008

INTRODUCTION

This is the final report for the Perl 6 and Parrot development grant provided by the Mozilla Foundation and The Perl Foundation. This report summarizes the work performed under the grant, what has been accomplished, and where things are headed from here. As this report illustrates, we have achieved all of the goals and outcomes intended for this grant.

REPORT

The primary focus of the project was to get Perl 6 on Parrot development "over the hump" and acquire a critical mass of infrastructure, developers, and tools from which sustained further development of Perl 6 can take place. The project proposal identified five specific expected outcomes:

  1. A working Perl 6 on Parrot implementation that supports commonly used Perl constructs and operators
  2. Review and improvements to the Perl 6 language test suite
  3. A substantially complete Parrot Compiler Toolkit, with documentation
  4. Ongoing, active development efforts for other languages based on the Parrot Compiler Toolkit
  5. An increased number of participants in Perl 6 and Parrot design, implementation, and testing

1. A working Perl 6 on Parrot implementation

We now have a substantial Perl 6 implementation on Parrot. At the beginning of this project, we had a rudimentary Perl 6 compiler that could handle some of the basic features and syntax of Perl. However, some key features such as arrays and hashes were only marginally implemented, and most of the translation components of the compiler were written in Parrot's intermediate assembly language (PIR).

Today the Perl 6 on Parrot compiler has been substantially rewritten using the Parrot Compiler Toolkit (described below), and is now known as "Rakudo Perl" or "Rakudo" [1]. Rakudo currently supports arrays, hashes, classes, objects, inheritance, roles, enumeration types, subset types, role composition, multimethod dispatch, type checking, basic I/O, named regular expressions, grammars, optional parameters, named parameters, slurpy parameters, closures, smart match, junctions, and many other features expected from Perl 6. Rakudo has progressed to the point that others are now using Rakudo as an Apache handler ("mod_perl6") [2], a wiki engine ("November") [3], and recently to build applications on Xlib [4]. The Perl Foundation also recently awarded a grant to Vadim Konovalov to implement a Tk GUI interface for Rakudo [5].

During the project there have been many contributors to the development of Rakudo Perl; some of the major contributors include chromatic, Vasily Chekalkin (bacek), Jerry Gay, Jeff Horwitz, Moritz Lenz, Carl Mäsak, Cory Spencer, Stephen Weeks (Tene), and Jonathan Worthington. Jonathan Worthington's efforts deserve special mention: he is primarily responsible for the bulk of the work on classes and types in Rakudo Perl, and much of his work was supported by a grant from Vienna.pm [6].

2. Review and improvements to the Perl 6 test suite

At the beginning of this project, the test suite that existed for Perl 6 had been implemented as part of the Pugs effort and contained approximately 16,000 tests. However, in many cases the tests were out of date with respect to the current Perl 6 language specification, and we needed a way for multiple independent Perl 6 implementations to be able to easily make use of the test suite.

In December 2007 I proposed a structure for reorganizing the test suite [7]; Jerry Gay and Larry Wall then extended this proposal and developed tools to make it easier to share the tests among multiple implementations. In May 2008 Moritz Lenz refactored Rakudo's test harness to provide a "make spectest_regression" target -- since then this has become our primary measure of Rakudo progress [8]. Moritz Lenz also developed a tool to display the progress in graphical form:

    

Adrian Kreher received a Google Summer of Code grant (with Moritz Lenz and Jerry Gay as mentors) to continue the test suite refactoring [9]. As of early September 2008, the official, refactored test suite contains a little over 8,000 tests, or approximately half the size of the original Pugs test suite. Furthermore, the official suite includes many new tests for object-oriented and typing features of Perl 6 that weren't present in the original test suite. As the graph above indicates, Rakudo is currently passing over 3,200 of the tests in the official suite, and work is continuing on refactoring the suite and increasing Rakudo's pass rate.

3. A substantially complete Parrot Compiler Toolkit, with documentation

As mentioned previously, the compilers that existed for Parrot at the beginning of the project (such as Perl 6) were primarily written in Parrot's intermediate assembly language. This made working on the compilers less accessible to new developers, as well as increasing the time needed to build a compiler. Therefore, the first couple of months of this project were spent on developing the Parrot Compiler Toolkit (PCT) and a simple Parrot language called Not Quite Perl (NQP). PCT provides an abstract syntax tree representation and code generator for Parrot languages; NQP enables compiler writers to easily create compilers and builtin functions for Parrot using a simplified Perl 6 syntax.

Once PCT and NQP were substantially complete, we were then able to convert Perl 6 (now "Rakudo Perl") and many other Parrot compilers to use the new toolkit. This went surprisingly quickly -- most of the existing compilers were converted within just a couple of weeks. In addition, a few new compilers and languages arrived on the scene: Will Coleda and Simon Cozens quickly created an implementation of LOLCODE [10], and Klaas-Jan Stol created a language called "Squaak" as a demonstration and tutorial for the toolkit [11]. A couple of quotes from the period give a sense of how these tools opened up Parrot development to others:

"The real fun, though, has been digging into perl6, the Parrot Perl 6 implementation. Recently, Patrick Michaud has been doing some incredible work building NQP (Not Quite Perl 6), a bootstrapping language for implementing Perl 6, and extensively refactoring the existing Perl 6 on Parrot compiler to fit with it. I'm still very much getting my head wrapped around the whole thing, but it's been easy enough to start digging into and implementing and fixing a few things."
- Jonathan Worthington, December 2007 [12]
"It's really, really true. Parrot lets you implement your own languages using Perl 6 rules for the grammar and Perl 6 for the compiler."
- Simon Cozens, January 2008 [13]

Both PCT and NQP stabilized early in the project; recent changes have been primarily to optimize existing features or make other minor improvements. We expect these tools to continue to evolve as needed to support compiler development; however, given the wide variety of languages being implemented using the toolkit surprisingly few changes have been needed. Primary documentation for the toolkit consists of a Parrot Design Document (PDD26) for the abstract syntax tree representation [14], the Squaak tutorial [11], and numerous example languages in the Parrot repository. More detailed documentation and examples for the toolkit are expected to be developed over the coming months.

4. Ongoing, active development efforts for other languages based on the Parrot Compiler Toolkit

Currently there is active development on at least three languages for Parrot; these include Perl 6 (Rakudo Perl), PHP (Pipp), and Ruby (Cardinal). In addition, there is ongoing but less active development on implementations of Python (Pynie) and Smalltalk (ChitChat). All of these are based on the tools from the Parrot Compiler Toolkit. The Perl 6 and PHP implementations are usable from mod_parrot [2], and our next steps are to improve the toolkit and library conventions to support loading multiple languages simultaneously in Parrot.

5. An increased number of participants in Perl 6 and Parrot design, implementation, and testing

There can be little question that momentum for Perl 6 and Parrot development continues to grow, and the work supported by this grant has been a major catalyst for that growth. For the twelve months prior to September 2007 the Parrot subversion repository had a total of 6,634 commits; in the subsequent twelve months Parrot had 9,686 commits -- a year-over-year increase of 46% in the commit rate.

At the beginning of this project there were perhaps three or four active contributors to the Perl 6 on Parrot compiler (i.e., Rakudo Perl); over the course of the past year that number has increased to at least ten active contributors and at least as many more occasional contributors to Rakudo Perl. Parrot and the Parrot Compiler Toolkit have also garnered new contributors, including several new committers. There are also new teams of developers working on applications based on Rakudo Perl and Parrot, such as the November wiki engine and the Rakudo/Tk GUI interface.

Lastly, recent improvements in the Rakudo compiler architecture will allow much of the Perl 6 runtime library currently written in PIR to be rewritten substantially in Perl 6. This will enable even more new contributors to participate in Perl 6 development.

PROJECT EVALUATION

The project proposal identified five criteria by which the success of this project could be measured:

  • Ability to write and test Perl 6 programs and language features
  • Passing rate for Perl 6 language test suite
  • Improved coverage and accuracy of the Perl 6 language test suite
  • Increased number of participants in Perl 6 and Parrot development
  • Active development of at least two other languages using Parrot compiler tools

This report demonstrates the success of this project along all of these measures. Perl 6 on Parrot ("Rakudo") is being used to write and test Perl 6 programs and language features, and has become a strong driver for improving the coverage and accuracy of the test suite (and indeed, of the Perl 6 language specification itself). Continual reporting and publication on Perl 6 and Parrot activities continues to attract increased interest and participation from the wider community.

Moreover, this project helped jump-start even larger fund-raising efforts. In May 2008 the Perl Foundation received a $200,000 philanthropic donation from Ian Hague; roughly half of this donation is intended to continue the Perl 6 development efforts that have been part of this project [15]. And, as mentioned earlier, Jonathan Worthington and others are receiving grants for continued work on Rakudo Perl and Parrot [6,8,16].

CONCLUSION AND FUTURE WORK

The funding provided by the Mozilla Foundation and The Perl Foundation has indeed enabled us to get Perl 6 on Parrot development "over the hump" in development. We now have a robust platform for higher-level language development on Parrot, along with an active and growing development and support community (which is the hallmark of any successful open source project). All of the desired outcomes of this project have been realized.

Our next steps will be to continue to extend and build upon the work of this project -- increasing Rakudo's coverage of the Perl 6 language and bringing all of our efforts much closer to production releases. In fact, we recently developed a "road map" for Rakudo Perl that identifies the major steps to be taken in the upcoming months and assists in coordinating the remaining development activities [17].

Lastly, I want to express my sincere appreciation to the many people who contribute time and energy to Perl 6 and Parrot, and to give special thanks to the people of the Mozilla Foundation and The Perl Foundation for their ongoing support and enthusiasm for this project. It is a great honor to work and correspond with such a terrific and professional group of individuals.

REFERENCES

  1. P. Michaud (January 16, 2008), "The compiler formerly known as 'perl6'", http://use.perl.org/~pmichaud/journal/35400
  2. J. Horwitz, "Mod_parrot website", http://www.smashing.org/mod_parrot/
  3. C. Mäsak, "Announcing November, a wiki in Perl 6", http://use.perl.org/~masak/journal/37212
  4. http://svn.perl.org/parrot/trunk/examples/nci/xlibtest.p6
  5. Alberto Sim&otild;es (August 30, 2008), "2008Q3 Grants Results", http://news.perlfoundation.org/2008/08/2008q3_grants_results.html
  6. "Vienna.pm funds Jonathan Worthington to work on Ra[kudo]" (April 23, 2008), http://use.perl.org/article.pl?sid=08/04/23/2314234
  7. P. Michaud (December 20, 2007), "Proposal: refactor the test suite according to synopsis, http://groups.google.com/group/perl.perl6.compiler/msg/ed748490f030da2f
  8. P. Michaud (June 16, 2008), "Rakudo test suite progress", http://use.perl.org/~pmichaud/journal/36695
  9. A. Kreher, "Auzon's Blog: gsoc2008", http://auzon.blogspot.com/search/label/gsoc2008
  10. "I HAZ A PARROT" (January 3, 2008), http://lolcode.com/news/i-haz-a-parrot
  11. K. Stol (March 9, 2008), "PCT Tutorial Episode 1: Introduction", http://www.parrotblog.org/2008/03/targeting-parrot-vm.html
  12. J. Worthington, "Chipping away at perl6", http://www.jnthn.net/cgi-bin/blog_read.pl?id=589
  13. S. Cozens (January 3, 2008), "Parrot is really quite wonderful", http://blog.simon-cozens.org/post/view/132
  14. "Parrot Abstract Syntax Tree (PDD 26)", http://www.parrotcode.org/docs/pdd/pdd26_ast.html
  15. R. Dice (May 16, 2008), "TPF receives large donation in support of Perl 6 development", http://news.perlfoundation.org/2008/05/tpf_receives_large_donation_in.html
  16. J. Worthington (August 5, 2008), "Multiple Dispatch Design Work", http://use.perl.org/~JonathanWorthington/journal/37101
  17. "Perl 6 Development Roadmap", http://svn.perl.org/parrot/trunk/languages/perl6/ROADMAP

The Perl 6 design team met by phone on 30 July 2008. Allison, Jerry, Will, Jesse, and chromatic attended.

Allison:

  • OSCON was a success
  • now I'm completely free from all responsibilities until at least December
  • launched the PIR PDD
  • now working on the last few failing language tests before I merge back the concurrency branch
  • also spent some time talking to PhD advisors at Cambridge this week
  • might start fall 2009, if I can get funding and such
  • leaving for London on Saturday
  • speaking at the BBC on Tuesday
  • may miss next week's meetings

c:

  • was very busy with OSCON
  • trying to apply a few patches
  • trying to get other people to the place where they can help with that
  • mostly I need tasks I can do in 30 minutes when I can grab an hour or two
  • fixed some small stuff at the hackathon

Allison:

  • I need to split up the MMD PDD into bite-sized tasks

Jerry:

  • OSCON was fabulous
  • our talk was successful
  • good feedback and enthusiasm
  • the lighting talks with Jeff were successful
  • most of my hacking was on mod_parrot
  • trying to refactor its configure system into something more robust and portable
  • it's just about working in the same state it was before
  • hope to reach that point this afternoon
  • met with some folks at Microsoft's open source lab on Monday
  • promising beginning to a relationship between them and the Parrot Foundation
  • the hackathon was productive as well

Jesse:

  • I talked to some Sun people about what makes CPAN tick

Will:

  • mostly absent the past couple of weeks
  • trying to resurrect Tcl, which was untouched for some time
  • making progress there on spec tests
  • identifying what's left to do

c:

  • what's our roadmap look like for the rest of the year?

Jesse:

  • I asked Patrick about that
  • he said there's a good chance to get that from the hackathon
  • if not, he said I could get his attention at YAPC and get his milestones to break down soon

Jerry:

  • he spoke on IRC about that today
  • he wants to break it down into better granularity and put dependencies between tasks
  • have a feeling it'll happen at YAPC::EU
  • Jonathan is keen to get together with Allison and Patrick there to discuss related designs

c:

  • I've noticed projects in Parrot like Reini's attempt to get installation and loading sorted out
  • seems like time to get those sorted out

Jerry:

  • it's difficult to have willing volunteers and not get them the right guidance
  • and to make "eventually" now

c:

  • thinking we should ask Reini for a list of concerns, needs, and use cases
  • then try to make a design that addresses more of those

Jerry:

  • especially as he's about to leave on a two-week business trip
  • sounds like a PDD to me

Allison:

  • sounds like several

Jerry:

  • library loading, runtime components

c:

  • does he have commit access?

Jerry:

  • we can encourage him to apply

c:

  • thinking about bindings to Prophet
  • probably client-side

Jerry:

  • we need sockets

Will:

  • we have experimental sockets
  • we need to make tickets or mark up PDDs for unimplemented things
  • I did some of that with PDD 19 today
  • stuff's deprecated and only exists in the PDD
  • just to warn people who are going to write code that docs don't match reality

Jerry:

  • that merits a CAGE task for reviewing the PDDs
  • we could spread that out among many people

Will:

  • I'll send an email

c:

  • and post it on parrotblog

Will:

  • no one reads those

c:

  • they won't if we don't publish them

Jesse:

  • I see them posted places like Reddit fairly often

Allison:

  • probably will roll that into parrot.org eventually

The Perl 6 design team met by phone on 16 July 2008. Larry, Allison, Jerry, Will, Jesse, and chromatic attended.

Larry:

  • switched my laptop to Ubuntu for various reasons, mostly work
  • helped me get a runnable Pugs too
  • haven't worked much on the standard grammar
  • mostly thinking about refactoring the names
  • thinking about various other questions people are asking
  • just checked in a revamp of the closure semantics
  • a little under the weather too

Allison:

  • almost entirely absorbed by OSCON this week
  • hacking a little bit on the three remaining test failures on the pdd25cx branch
  • Patrick gave me some information on the PGE failures
  • we'll work on that tonight
  • hopefully will merge in the branch finally

Jerry:

  • haven't done much this week
  • will report for Patrick and Jonathan though
  • Patrick's working on lexical issues
  • he's much closer to understanding how Parrot can handle them
  • he's also working with HLL to get it to work within PCT
  • then he can make it work within high-level languages itself
  • that'll let them use the same named classes as Parrot's base classes (for example, Integer) instead of funky workarounds
  • Jonathan added enum support
  • fixed a couple of segfaults
  • something like 910 new spectests passing between Parrot 0.6.3 and 0.6.4
  • that's a great number
  • much of it came from the Summer of Code project for the Perl 6 test suite
  • Adrian and Moritz have been a big help there

Patrick: (in a followup)

The primarily reason we want HLL support is to take advantage of HLL type mapping, so that str register-to-PMC conversion automatically gives me back a Perl 6 Str object instead of a Parrot String PMC. Same for int to Int, num to Num, and ResizablePMCArray to List conversions.

c:

  • things are pretty slow
  • traveling and haven't had much time
  • still working with Andrew on the GC; he's making progress
  • helping Allison; we're getting close
  • will definitely start the string branch very soon
  • maybe we'll merge that back in stages
  • waiting for some guidance on the closure issue

Will:

  • Parrot 0.6.4 came out on Tuesday, thanks to Bernhard
  • no major new features, although the NEWS listing has lots of little updates
  • hopefully will get the concurrency branch merged by the next release, to make it 0.7
  • I hate Subversion
  • I wonder when we're going to update RT on perl.org
  • and that's it

Jesse:

  • talked to Richard last week about other interesting funding sources and corporate support for Perl 6
  • he's working on that
  • general strategizing on that for pushing implementations forward
  • sounds like the hackathon is fairly set post-OSCON?

Allison:

  • yes

c:

  • do we have a sense of prioritization of features, or is that up to implementors?

Jesse:

  • it's been up to implementors so far
  • every time I've asked, each one has strong feelings about how to prioritize

c:

  • I mention it just because I believe that giving people something productive to experiment with sooner is very useful for marketing

Jesse:

  • I've talked to Flavio about this, for example
  • wondering if there are subsystems of features that could come before others

Jerry:

  • what I really want in Rakudo right now is IO so I can use it for work
  • it's limited
  • you can't do sockets, basically
  • that probably won't be fixed until it's fixed in Parrot
  • that's Parrot blocking for Rakudo
  • as far as other implementations go, there are early features that all implementations share
  • I think Larry's said before that the Synopses deliberately don't look ahead too much
  • if you do operators before you do objects, that's a way forward
  • although parameterized roles are funded work
  • and volunteer work

Larry:

  • I do use those in my work

c:

  • I don't have a sense of our priorities

Larry:

  • Perl 6 will be very useful when it does its Perl 5 subset in a way that's better than Perl 5
  • that said, there's a danger when Perl 6 gets used in anger by people who start to rely on transient bugs or workarounds for missing features
  • there needs to be expectations management

Jerry:

  • possibly the best way to do that is to say "Only use what passes in the spectest suite"

Jesse:

  • unless there's a way to disable unstable features outside of devel checkouts

Larry:

  • but what does it mean that a feature works?
  • closure cloning might almost work, but there are some bugs
  • we can put a large warning in the documentation that not all features are stable or final yet
  • or run into the problem of installing Cabal features to run Pugs
  • some packages are under development
  • you're lucky if it all works
  • it's easy to get an explosion of things that don't all work with each other
  • I don't profess to have the right answer
  • I don't think there is a right answer
  • mostly I think the order of implementation will tend to iron itself out
  • everyone has an itch to have the basic stuff working
  • everyone has extra itches which may not correspond to other itches
  • they're exercising parts of the design that other people aren't exercising
  • I want convergence to happen

Jerry:

  • provided you don't go crazy trying to keep it all in mind

Larry:

  • there may be a need to name development subset versions
  • maybe pre-6.0 isn't a sufficiently rich naming scheme
  • at least it's an interesting problem

Jesse:

  • it would be interesting to find a name for subsets of what will be Perl 6
  • the trivial functional subset of Perl 6 that Audrey made in a week was a working subset of Perl 6

Larry:

  • and it did junctions

Jesse:

  • I've had multiple implementors prod me about how to name or label these things
  • here's a thing we've targeted
  • we can talk about it as an entity, even if it's not 6.0.0

Larry:

  • there's a sense in which the true name is the list of all of the tests it passes

Jerry:

  • Rakudo has a ROADMAP
  • Patrick keeps it updated
  • but he had some unanswered questions in that thread

Larry:

  • there's a long list of things blocking from the Parrot end
  • a lot of things are in perpetual redesign

Allison:

  • I finished the last Parrot design document
  • we need resources to implement them

Jerry:

  • there were a lot of early prototypes that made it 60 - 80% of the way
  • a lot of these features are waiting for a final thing
  • it's no fun coding HLLs for a moving target
  • they want to wait for the final version, rather than rewriting it several times

Jesse:

  • the Rakudo ROADMAP is just a bullet list
  • no subtasks, no estimates of effort
  • a list in rough priority order
  • it could use a couple of more levels of information

Jerry:

  • we could make it a hackathon task

Jesse:

  • I'll only be there for a couple of hours

Jerry:

  • we could pull in some time earlier in the week
  • why don't we call these chunks of features "traits"?
  • that's an unused term

The Perl 6 design team met by phone on 09 July 2008. Larry, Allison, Jesse, Jerry, Patrick, and chromatic attended.

Larry:

  • standard grammar parses itself 100%
  • thinking about refactoring
  • how do we distinguish the use of grammars from grammars used as the current language
  • refactoring top level namespaces
  • whether STD is part of that name
  • meddling in everyone else's discussions
  • upgraded the spec on transliteration
  • in denial about all of the conferences coming up

Allison:

  • absorbed by OSCON and travel for the next couple of weeks
  • after that, things will pick up
  • working on one (hopefully) final patch to the concurrency branch
  • I know it'll resolve one failing test
  • hope it'll resolve several PGE failures on the branch
  • I'm an hour away from committing that (ideal minutes, but probably an actual hour)
  • we're talking about having a hackathon the Saturday after OSCON

Jesse:

  • is there a venue?

Allison:

  • nothing set up yet, but we do have a default

Jesse:

  • how many people?

Allison:

  • probably about ten
  • Portland State University worked out pretty well for us
  • I'll look for contact information

Patrick:

  • last week, we passed 1365 tests
  • now we're passing 1677, 312 more
  • from the last Friday of June to the first Friday of July, we had an increase of 500 tests
  • almost 50% more than we were

Jesse:

  • how many are newly ported tests and how many used to fail?

Patrick:

  • probably an equal mix of both
  • a big part of that is getting implicit lexicals working, $_, $!, and $/
  • implicit method calls too are working now
  • lots of refactoring, especially for builtins
  • they now seem to work better in the Any class
  • removed a lot of inline PIR code and stuff like that
  • spent an hour on the phone with the Houston Perl Mongers last night
  • they want to work on the test suite as part of their meetings for a while
  • I walked them through building Rakudo, checking out the Pugs repo and test suite, explaining how we do testing
  • they plan to have meetings where someone gives a topic, presents how they think it should work, and then they review or create tests for that feature
  • they'll either move tests from Pugs into spectests, or add tests to spectests
  • I'll try to write that into an article for use Perl or other places
  • a step by step guide for contributing tests
  • haven't started writing my "This Week in Perl 6 Articles" yet
  • should have one by this time next week

Jerry:

  • haven't been able to produce much code
  • participating in code reviews and design discussions
  • this is the mid-term evaluation period for Google Summer of Code
  • all of the mentors and students have submitted their mid-term evaluations
  • it's all gone smoothly
  • all three are going ahead
  • the Parrot Foundation is in process of taking over the NLNet grant from TPF
  • working with the OSU open source labs to host the website
  • expect more on that soon

Allison:

  • because we need SSL certificates, they were going to set us up with our own virtual machine
  • we'll need to purchase the certificate

Jerry:

  • and finalize the purchase of parrot.org

c:

  • applied some patches, fixed a couple of bugs
  • closed some tickets, but a lot more came in
  • worked with Andrew some on fixing bugs in his GC
  • getting closer to the point of merge
  • approved his milestone, setting some priorities for the second half of the work
  • probably won't have much time to work in the next week
  • thinking about Closures, not sure Parrot's approach is entirely right

Patrick:

  • did you see my note about the PGE bugs in the branch?
  • I ran PGE in the concurrency branch yesterday, and get an odd result
  • if you run it by using prove, it gives errors
  • if you run the PIR directly, it works just fine

c:

  • I don't think Parrot::Test adds any flags when it invokes Parrot
  • but t/harness does

Patrick:

  • it's in the operator precedence parser
  • you can specify a particular stop token
  • nothing uses that anywhere anymore, but the test tests it
  • I don't think anything that uses it

Allison:

  • does it throw an exception?

Patrick:

  • it just stops parsing at that point
  • the caller decides what to do
  • it's not detecting that token when it's parsing
  • I pass a string with a stop token in the middle
  • it's supposed to parse only the first part
  • but it doesn't stop at the stop token
  • it's just a simple comparison of some sort
  • seems kinda weird

Allison:

  • maybe it is detecting it, but isn't working right
  • but if you're not using exceptions, there's no old exception handler lying around
  • so it's not that

Patrick:

  • I gave instructions on how to reproduce in my message

Allison:

  • my current patch probably won't fix that
  • it sounds unrelated

Patrick:

  • I might put some tracing in and run it through the harness
  • figure out why it's failing to detect that stop token
  • also a question for Larry
  • do we have an official leaning on method fallback?
  • are they in or out?

Larry:

  • assume they're out for now

Patrick:

  • I'm happy
  • I don't have to rewrite my dispatcher
  • can I start telling people to organize the test suite that way?

Larry:

  • sure

Patrick:

  • for the eval built-in, can someone take String.eval and have it do what you expect?

Larry:

  • yes

Patrick:

  • a method that's exported
  • great!

Jerry:

  • STD.pm parses itself
  • that's fantastic
  • is the LTM implementable now in Rakudo or elsewhere?

Larry:

  • essentially

Jerry:

  • is anything blocking that?

Patrick:

  • just time
  • but I plan to develop that under the grant
  • I think it'll be a significant chunk of code and research
  • don't want to do a bunch of PGE refactoring until the concurrency branch is back in trunk though

Jerry:

  • I want to get that merged as soon as possible
  • it won't make a lot of progress until we do
  • hope we can get it before OSCON, even though Allison will be busy

Allison:

  • there are only three failing tests

Jerry:

  • but HLLs don't work

Patrick:

  • I don't want to go into OSCON without languages working on trunk

Larry:

  • maybe a reverse merge?

Allison:

  • we do that regularly

c:

  • I just don't want to block everyone from doing anything until the code gets fixed

Patrick:

  • just about everyone who can fix it is on this call

Allison:

  • we're almost to the point where it's time for HLL implementors to work on it

c:

  • seems like we can pick the top three HLLs that need to work (Rakudo, Pheme, Punie)
  • make them pass
  • give the other HLL implementors a week to fix their stuff
  • then do the merge

Patrick:

  • just don't want to show off all of this nice stuff at OSCON, then say "Don't download trunk, it doesn't work"
  • but show off the new stuff in Rakudo that's not in the new release
  • a week makes a big difference, the way things are moving

c:

  • that could be 500 tests

Patrick:

  • thanks to Larry for jumping in on the design discussions
  • hope you're not frustrated

Larry:

  • it's all part of the job
  • I'd rather see progress than vice versa

The Perl 6 design team met by phone on 02 July 2008. Allison, Will, Jerry, Patrick, and chromatic attended.

Allison:

  • still working on the pdd25cx branch
  • taking way too long — five remaining test files
  • I'm going to have zero tolerance for failing tests, even on a branch
  • I broke my natural tendency for that and it's biting me
  • I'll be traveling a lot for the next couple of weeks
  • hope to get one or two tests passing tomorrow
  • two of the failures are PGE, which probably means that no language built on PGE works now, depending on where the test failures apply

Will:

  • Tcl still fails a ton of tests on the branch now
  • that's not far off the mark

Jerry:

  • do you know the root causes?

Allison:

  • not in PGE
  • but the one I'm working on now is a fundamental problem
  • exception handlers used to be scoped
  • I shifted them over to global in the first stage
  • now I'm shifting them over to the context, so they'll behave like the old system
  • the old system used a global stack, which worked badly with CPS
  • I hope that this change will fix a bunch of the PGE tests

Jerry:

  • Summer of Code is progressing nicely
  • we're coming up on midterms now
  • everyone seems right on track for the Perl 6 and Parrot projects
  • the students are all engaged in their work and the community
  • I have high hopes that they'll continue to be around after the summer
  • Patrick and I need to coordinate our OSCON talk
  • have only had time for administration and question answering
  • don't know what my availability will be after next week, but I'll do my best

Patrick:

  • this year's Summer of Code is far more productive than previous years, from the Perl 6 and Parrot perspective
  • the work that they've done will stick around
  • it's really, really helping out
  • Rakudo now passes 1365 tests out of the spec repository — 422 over last week
  • increase of 75 over this morning
  • probably another 50 or so, after the lexical issue is now resolved
  • I can fix $_ and implicit method calls
  • I think that there are a lot of tests that use those; keep noticing some that aren't passing
  • it's been a banner week for adding new tests passes
  • some of it is improvements in Rakudo
  • moritz and auzon are also doing a great job in refactoring the tests, and making sure Rakudo passes them
  • every so often they find a Rakudo bug, we patch it, and we have more passing tests
  • Jonathan and chromatic managed to fix lexical handling over the past week
  • that removes a big blocker for me
  • I cleaned up part of PCT
  • about to clean up part of Rakudo
  • we should get better code generation out of that
  • plan to refactor the builtins to become part of the Any class
  • will fix $_, $!, and $/ to work correctly
  • will refactor parameter passing and handling
  • wrote my third progress report for the Mozilla grant
  • the final report will come out around the time of OSCON

c:

  • fixed some bugs
  • trying to remove as many blockers for Rakudo and other Parrot languages
  • continuing to work with Andrew to make sure his new GC branch compiles and runs and passes all tests

Jerry:

  • he's at 700 failures out of 7700 now right?

c:

  • it didn't even compile a few nights ago
  • so he's making good progress

Will:

  • trying to rip out old stuff from Parrot
  • added a :deprecated flag for ops
  • if you run Parrot with warnings, it'll warn in almost every program
  • started a branch to remove built-in method handling
  • magical non-ops dispatch to class methods on PMCs
  • we're trying to get rid of the old object system
  • the only one we're really using right now is say anyway
  • we don't have to worry about having too many opcodes right now anyway
  • removed a lot of custom code for our Perl::Critic configuration
  • increased our dependencies, decreased custom code
  • fixed a bug for subclassing Float
  • we have a whole class of bugs where when you subclass a PMC, the PMC assumes you have the same C type
  • we need someone to do a review on all of that
  • the RT #48014 is a good place to comment on how to migrate from using the PMC union to PMC attributes

Allison:

  • are we doing any hackathoning after OSCON?

Patrick:

  • I have Saturday open, so we can do that

Jerry:

  • I can do that too

Allison:

  • Larry left Saturday and Sunday open

Patrick:

  • I can move my flight; I have a place to stay on Saturday night too

Allison:

  • if it's just you and Larry, that might be valuable too
  • that's five or six of us
  • where's a good location?

Patrick:

  • it depends on who's coming
  • will Damian make it?
  • there could easy be six or seven of us

Allison:

  • I'll look into spaces
  • let's say Saturday for sure, but Sunday is possible

c:

  • and Friday afternoon and evening

Jerry:

  • I'm meeting with Hank at Microsoft's open source labs
  • he's offered some resources, right?

Allison:

  • smoke testing
  • some Windows licenses

Jerry:

  • now that we're very close to having Smolder work
  • (today or tomorrow)
  • just requires an upgrade to TAP::Harness 3
  • we could make this happen
  • I'll basically follow up and make things happen

Allison:

  • they want something automatable, so they don't have to think about it
  • it'll update once a week or whenever, run the tests, and submit a report

About this Archive

This page is a archive of recent entries in the Parrot category.

Documentation is the previous category.

Perl 6 is the next category.

Find recent content on the main index or look in the archives to find all content.

Subscribe

    Subscribe to rakudo.org

Powered by Movable Type 4.1
Technorati Profile