Perl 6 Release Goals Initial Grant Completed
Tue, 22-Sep-2015 by
_Jonathan Worthington writes:_
In April 2015 I started working on a "grant":http://news.perlfoundation.org/2015/04/grant-proposal-perl-6-release.html from The Perl Foundation's "Perl 6 Core Development Fund":http://www.perlfoundation.org/perl_6_core_development_fund. The grant was provided to enable me to dedicate much more time to the Perl 6 project than would otherwise have been possible, and it has indeed enabled this. My work has been, and continues to be, focused on enabling the release of the Perl 6 language along with a compliant implementation in late 2015.
In this report I will both provide an update of what has been achieved under the grant so far, and indicate what I intend to focus on from here. This also offers a chance for both the community and the Perl Foundation board to assert that they do indeed wish for my work under the Perl 6 Core Development Fund to continue.
Here is an overview of my key deliverables so far. While I played an instrumental role in all of these, it's important to note that the Perl 6 community as a whole have made numerous contributions along the way.
I delivered an implementation of Normal Form Grapheme strings (NFG) in MoarVM, updated the Rakudo Perl 6 compiler in various ways to take advantage of it, and reviewed various existing tests for NFG semantics. I also delivered implementations of the other Unicode normalization forms (NFC, NFD, NFKC, and NFKD). I incorporated the Unicode conformance tests for these into the Perl 6 test suite, and added numerous tests for NFG. NFG was the first of the three major areas flagged up for needing implementation ahead of a Perl 6 release, so having it in place is a large step forward.
The second major area for resolution ahead of a Perl 6 release was known as the "Great List Refactor" (GLR). The goal was to improve both semantics and optimizability of lists, arrays, and iteration. At the start of the grant, the intention was that somebody else would lead this work, and I would assist as needed. This plan did not work out, and instead I needed to take the lead on this work. Therefore, I did a large amount of the design work and core implementation work for the GLR. The later phases of the work saw intense contribution from the wider community, bringing the work to the point where I could merge it. This means that a second major step towards this year's release has been completed.
Having to focus so intensely on the GLR left me with less time than expected to work on the third major release goal: Native and Shaped Arrays (NSA). Furthermore, it did not make sense to work on various elements of this until the GLR was completed. Despite these setbacks, I have made fairly significant progress in this area. I got the VM-level support for compact storage of multi-dimensional arrays in place on both MoarVM and JVM, and extended the API for array access to support multi-dimensional access. I have partially completed the updates to the Array type in order to support multiple dimensions.
Another major area of work has been improving our concurrent, parallel, and asynchronous programming support. I have hunted down and fixed numerous stability issues in this area, including such "delights" as an ABA vulnerability in the fixed size memory allocator, and a data race involving closure finalization in the parallel garbage collector. Delivering modern and correct concurrent programming support in a VM and language implementation represents a significant technical challenge. As well as contributing to the low-level aspects of this area, I also have been driving forward syntactic relief for working with supplies. This is now largely in place, and provides Perl 6 with a strong story in processing streams of asynchronous data - be it incoming web requests, user interactions with a GUI, file system change notifications, or perhaps a composition of all three!
I have also contributed to improving Rakudo's startup time and reducing its memory footprint. We've more work to do here, but by this point Rakudo's startup time is, informally testing on my own development box, at just a third of the time it takes for Perl 5 with Moose to start up, and around 150% of the startup time of Perl 5 with Moo.
Finally, I have worked through numerous RT tickets, addressing both bugs and more minor missing features, resolving well over 100 tickets so far.
Provided the community and Perl Foundation support the continuation of my work, my focus over the coming months will be:
* Bringing the Native/Shaped Arrays work to completion
* Addressing various issues in I/O support, including performance
* Continuing to stabilize and polish concurrency support
* Continuing fixing issues with module pre-compilation, and contributing to bringing pre-compilation management into Rakudo itself
* Working on further reductions to startup time and memory usage, along with runtime performance improvements
* Addressing further RT tickets
To support this work, I'm requesting a further 250 hours of funded time ($10,000 USD)
Last but not least, I'd like to take a moment to thank all who have contributed to the "Perl 6 Core Development Fund":http://www.perlfoundation.org/perl_6_core_development_fund so far to make my work possible, and all in the Perl 6 community who have provided support, feedback, and encouragement as I've worked on this grant.
I wholeheartedly support this grant!
I'm in favor of extending Jonathan's grant. His work was invaluable to Rakudo's progress (as well as language and VM level design), and I'd fully expect that to continue.
Without the continuing support of Jonathan, the advancement of Perl 6 will go tremendously slower. Therefore I really would like to see this grant continuation awarded.
I totally support an extension of the grant, the more that gets done before an official release the greater the stability and happier new users.
The amount that has happened this year has been astonishing and it would be nice to retain the same velocity.
Extending jnthn's grant is the best chance at getting the best possible Perl 6 implementation out for Christmas. Having all the features is great, but much of his stated focus will be that "second 90%" where we get a faster, stabler compiler which will make for good first impressions on those people who pick up Perl 6 /because/ of the christmas release.
So ... +1 to the extension and hooray for the accomplishments so far!
I strongly support the extension of Jonathan's grant. He continues to tackle problems that no one else can, and produces excellent results. At the same time he has been unblocking large community efforts that have resulted in, as Jonathan Stowe points out, rather astonishing velocity.
Our project has numerous times seen the effects of a key project member unable to continue to contribute with their previous frequency/velocity. Let's avoid that this time.
Yes please! Jonathan is invaluable for getting Perl 6 ready before Christmas.
jnthn++ has slayed some of the nastiest technical dragons standing in the way of Perl6 and Christmas.
Please help him to keep hacking his way through!
+1. Jonathan's continued (heavily price discounted) work is crucial to the success of Perl 6.
+1. I am very much in favour in favour of this extension.
Congratulations Jonathan and all Perl 6 developers!
+1 for extension. Because Jonathan doesn't just makes us dream of Perl 6: he delivers!