July 2010 Archives

Leon Timmermans sent an update report on his work, that I transcribe bellow.

I've been working on porting it to Windows. After a number of bugfixes it compiled, but ExtUtils::CBuilder has linking issues with C++ on Windows that I don't quite grok yet. I've also added a dist target to my Build so now I can actually easily publish it to CPAN; I was planning to do that as soon as my windows issues are fixed. I've been refactoring the build library to the point where I actually like it (finally) and think it's reusable. I also added some unit tests and fixed some bug reports. Now I'm preparing a lightning talk that I'll be giving at YAPC::EU.

On behalf of the Rakudo and Perl 6 development teams, I'm happy to announce the July 2010 release of "Rakudo Star", a useful and usable distribution of Perl 6. The tarball for the July 2010 release is available from http://github.com/rakudo/star/downloads.

Rakudo Star is aimed at "early adopters" of Perl 6. We know that it still has some bugs, it is far slower than it ought to be, and there are some advanced pieces of the Perl 6 language specification that aren't implemented yet. But Rakudo Perl 6 in its current form is also proving to be viable (and fun) for developing applications and exploring a great new language. These "Star" releases are intended to make Perl 6 more widely available to programmers, grow the Perl 6 codebase, and gain additional end-user feedback about the Perl 6 language and Rakudo's implementation of it.

In the Perl 6 world, we make a distinction between the language ("Perl 6") and specific implementations of the language such as "Rakudo Perl". "Rakudo Star" is a distribution that includes release #31 of the Rakudo Perl 6 "compiler, version 2.6.0 of the Parrot Virtual Machine, and various modules, documentation, and other resources collected from the Perl 6 community. We plan to make Rakudo Star releases on a monthly schedule, with occasional special releases in response to important bugfixes or changes.

Some of the many cool Perl 6 features that are available in this release of Rakudo Star:

  • Perl 6 grammars and regexes
  • formal parameter lists and signatures
  • metaoperators
  • gradual typing
  • a powerful object model, including roles and classes
  • lazy list evaluation
  • multiple dispatch
  • smart matching
  • junctions and autothreading
  • operator overloading (limited forms for now)
  • introspection
  • currying
  • a rich library of builtin operators, functions, and types
  • an interactive read-evaluation-print loop
  • Unicode at the codepoint level
  • resumable exceptions

There are some key features of Perl 6 that Rakudo Star does not yet handle appropriately, although they will appear in upcoming releases. Thus, we do not consider Rakudo Star to be a "Perl 6.0.0" or "1.0" release.

In many places we've tried to make Rakudo smart enough to inform the programmer that a given feature isn't implemented, but there are many that we've missed. Bug reports about missing and broken features are welcomed.

See http://perl6.org/ for links to much more information about Perl 6, including documentation, example code, tutorials, reference materials, specification documents, and other supporting resources. Rakudo Star also contains a draft of a Perl 6 book -- see in the release tarball.

The development team thanks all of the contributors and sponsors for making Rakudo Star possible. If you would like to contribute, see http://rakudo.org/how-to-help, ask on the [email protected] mailing list, or join us on IRC #perl6 on freenode.

Rakudo Star releases are created on a monthly cycle or as needed in response to important bug fixes or improvements. The next planned release of Rakudo Star will be on August 24, 2010.

Editor's notes

For questions, contact Perl Foundation Public Relations at [email protected]

Perl

Perl is a dynamic programming language created by Larry Wall and first released in 1987. Perl borrows features from a variety of other languages including C, shell scripting (sh), AWK, sed and Lisp. It is distributed with practically every version of Unix available and runs on a huge number of platforms, as diverse as Windows, Mac OS X, Solaris, z/OS, os400, QNX and Symbian.

The Perl Foundation

The Perl Foundation is dedicated to the advancement of the Perl programming language through open discussion, collaboration, design, and code. It is a non-profit, 501(c)(3) organization incorporated in Holland, Michigan, USA in 2000.

If you weren't at YAPC::NA 2010, then you probably missed the announcement that the location and dates for YAPC::NA 2011 have been decided. Chris Prather and Dahut.pm have won the bid to host YAPC::NA 2011 in Asheville, North Carolina.

Mark your calendars because the conference dates have already been decided and will be June 27 - July 1 2011.

Congratulations to Dahut.pm on hosting the next YAPC::NA!

We have received the following Hague Grant application from Jonathan Worthington.

Before the Board votes on this proposal we would like to have a period of community consultation. Please leave feedback in the comments or if you prefer send email with your comments to karen at perlfoundation.org.

Name

Jonathan Worthington

Project Title

Meta-model Improvements and Natively Typed Attributes

Synopsis

As Rakudo gains features, its relatively low performance is increasingly
being viewed as a blocker for continued progress and adoption. Prior to now,
a focus on Rakudo features has been a good thing; we have a releasable product
in Rakudo * that demonstrates the power of Perl 6, and working on optimization
prior to the features would have ultimately done more harm than good. As Rakudo
reaches a wider user base, it's time to examine some of the remaining tasks and
work on delivering a more performant Rakudo.

We have been able to build Perl 6 capabilities into Rakudo by starting out with
Parrot default components and gradually replacing them with Perl 6-specific
ones. A prime example of this is the object metamodel. Parrot's object model
has not mapped well to Perl 6, but in the "ng" branch work earlier this year
we have abstracted most of it to a well-defined API. However, the abstraction
is inefficient and in some places inadequate for implementing some features
from the Perl 6 specification.

The work this grant proposes aims to re-build what lies beneath the meta-model
API in a way that is far more optimal for Perl 6. Since this is used by both
Rakudo and nqp-rx, it will deliver both compile time and runtime speed gains.
Furthermore, the re-implemented meta-model will suport natively-typed attributes
and compact structs, enabling portions of Synopsis 9 to be implemented for Rakudo
(one of the areas where Rakudo and the specification are currently weakest).

Benefits to Perl 6 Development

This work will contribute towards addressing one of the most cited problems with
Rakudo Perl 6 today - its performance. It will also deliver more Perl 6
features, bring Rakudo still closer to the specification, and provide a basis
for further development. A faster, more complete Rakudo will attract
additional interest, grow the Perl 6 community and provide more feedback to
move much closer to having a full Perl 6 implmentation.

Deliverables

D1. A new, clean, efficient implementation of the core of the Perl 6 meta-model,
replacing the current P6object implementation.

D2. Modify nqp-rx to use the new meta-model implementation, particularly
enabling compile-time index offsets of attributes and detection of
mis-spelled attribute names.

D3. Modify Rakudo to use the new meta-model implementation.

D4. Implement natively typed attributes in Rakudo.

D5. Finish the pieces needed to enable writing custom meta-classes in
Rakudo and document how it is to be done.

D6. Review and ensure we have good test coverage for all of the above
deliverables.

Project Details

Deliverable 1 is the really big part of this project. The new meta-model
implementation should be capable of:

  • Accessing object attributes by index offset rather than a more expensive
    hash table lookup
  • Having natively typed attributes
  • Performing type checks (isa and does) faster than currently possible
  • Providing custom dispatchers
  • Supporting all features of the existing metamodel implementation

The core should not implement every Perl 6 feature, but rather provide a fast
implementation of the fundementals required to do so. For example, the core
metamodel itself may only support single inheritance, but it would be
possible to build multiple inheritance on top of this using the Perl 6
ClassHOW implementation.

Deliverable 2 involves converting nqp-rx to use the new meta-model. This will
provide some early feedback and experience that will guide the process of
integrating the new meta-model core with Rakudo. NQP is also a simpler target
than Rakudo. Work on the new metamodel will begin in a branch, which will
eventually replace the current metamodel that NQP uses.

Deliverable 3 converts Rakudo to use the new meta-model core. Essentially
this requires rewriting Rakudo's ClassHOW and RoleHOW in terms of the
new metamodel primitives. The aim will be to use nqp-rx as the primary
language for these objects, to simplify further development and prove
that they can be specified in Perl 6 with minimal "hacks" or "magic".

Deliverable 4 adds natively typed attribute declarations to Rakudo.
This will need some discussions with the Perl 6 and Parrot design teams
and some prototyping attempts. The end result should be the ability to
declare natively typed attributes as described in S09. The majority
of the S09 sized types will be implemented, and initial support for the
"compact structs" section will be provided.

Deliverable 5 completes the ability to create custom metaclasses that is
/almost/ present in Rakudo today. The above work on the metamodel should
allow this highly-requested feature to become available.

Deliverable 6 ensures we have good test coverage of this work. This
task will be ongoing as part of test-driven development in producing
the other deliverables above.

Project Schedule

Initial design work on Deliverable 1 will begin in July, with much of the
implementation work happening during August. Deliverable 2 should be
complete between the end of September and the middle of October. Deliverables
3 and 4 are targeted for November. Deliverables 5 and 6 will be done shortly
after that, meaning this entire project should be finished sometime in late
December.

Report Schedule

Blog posts will be made throughout the duration of the work on a blog which is
aggregated by Planet Perl 6.

Public Repository

All code, documentation and other relevant files that relate to Rakudo will be
checked into the Rakudo repository. The new P6object replacement will be
developed in the nqp-rx repository. All code, documentation and other
relevant files relating to Parrot fixes or additions will be checked
into the Parrot repository. All contributions to the specification
and specification tests will be checked into the Pugs repository.

Grant Deliverables ownership/copyright and License Information

All work on produced as a result of this grant will be licensed under
the Artistic License Version 2.0. I already have signed the relevant
CLAs for both The Perl Foundation and The Parrot Foundation regarding
my contributions.

Bio

I first started contributing to Parrot in 2003, and have previously
contributed to Parrot core development. I have been involved in Rakudo
development since December 2007, and have implemented a wide range of
features, with a primary focus on the object model, multiple dispatch,
and the type system. I am also a frequent speaker on Perl 6 and Parrot
at European Perl conferences and workshops. I have successfully completed
3 previous Hague Grants.

I also have strong academic underpinnings, holding a first class Computer
Science degree with honours from the University of Cambridge.

My unique combination of Parrot internals knowledge, in-depth
knowledge of Rakudo Perl 6, academic background, and previous
contributions to Rakudo and Parrot put me in a very strong position to
successfully deliver an implementation of the features described in
this proposal.

Country of Residence

Sweden

Nationality

United Kingdom

Amount Requested

$9000 USD (50% paid after D1 and D2 are completed; remainder when all complete)

Dave Mitchell writes:

As per my grant conditions, here is a report for the June period.

This month was mainly spent on overload and symbol table bugs. Over the first 17 weeks I have now averaged about 17 hours per week, slightly less than the nominal 20. I have used up approx 55% of the hours allocated to the grant.

Report for period 2010/06/01 to 2010/06/30 inclusive

Summary

Effort (HH::MM):

3:45 diagnosing bugs
48:32 fixing bugs
0:00 reviewing other people's bug fixes
0:00 reviewing ticket histories
0:15 review the ticket queue (triage)
-----
52:32 Total

Numbers of tickets closed:

4 tickets closed that have been worked on
0 tickets closed related to bugs that have been fixed
1 ticket closed that was reviewed but not worked on (triage)
-----
5 Total

Short Detail

1:25 [perl #8438] Tied scalars don't call FETCH when subref is dereferenced
4:30 [perl #27555] TIED $x = \$y{z}; delete $y{z} -- behaves badly
14:00 [perl #58530] Bus error with constant + overload + stash manipulation + bless ]
2:10 [perl #74868] Safe signals changes causing hangs with threads
3:10 [perl #75212] uid+euid assignment no longer works due to delaymagic changes
26:22 [perl #75716] overload removes tainting
0:40 [perl #75792] Unexpected nested closure circular reference
0:15 [TRIAGE]

We have received the following Hague Grant application from Patrick Michaud.

Before the Board votes on this proposal we would like to have a period of community consultation. Please leave feedback in the comments or if you prefer send email with your comments to karen at perlfoundation.org.

Name:

Patrick Michaud

Project Title:

Lists, Iterators, and Parcels -- Synopsis 7, 8, and other general Rakudo improvements

Project Overview:

This project will focus on solidifying the design of lists, iterators, and
Parcels in Perl 6 and Rakudo. Over the past several years the Synopses have
gone through successive designs for Perl 6 lists and iterators, and in
implementation all have been shown to have significant flaws or
contradictions to other parts of the specification. Recently I worked
with Larry to prototype a new design for Rakudo Perl 6 based on "immutable
cursors"; this new design appears to neatly resolve the many difficult
issues confounding the earlier designs. This grant proposes to
(1) complete the Rakudo implementation of the new design, (2) rewrite
Synopsis 7 ("Iterators") and Synopsis 8 ("Captures and Parcels") to
document the design, (3) update all remaining Synopses to be consistent
with the design, (4) document key details of Rakudo's implementation of
lists and iterators, and (5) review and update the test suite as appropriate.

Benefits to Perl 6 Development:

Lists and iterators are at the core of many of Perl 6's basic features.
Much of the power of Perl 6 comes from its ability to aggressively combine
and exploit the fundamental behaviors of its list structures across
many language features, including laziness, eagerness, flattening
behavior, slices, slurpy lists, pipes and feeds, etc. However, our
experience in implementation has shown that it's quite challenging to
come up with a completely workable design, such that the core design
for lists and iterators has changed many times in the Synopses. As
such, over time the Synopses have accumulated many inconsistencies
due to the different attempts, and the information in Synopses 7 and 8
is almost completely out of date.

In order to achieve a working Perl 6 implementation, the existing
documentation needs substantial updating to reflect the current
design. This will drive needed refinement of the existing
prototype in Rakudo Perl 6, as well as provide a clear roadmap for
other implementations of Perl 6. Having a clear description of
list and iterator semantics has also proven to be critical for the
development of the core libraries and other Perl 6 modules.

Deliverables:

D1. Completion of the new list implementation in Rakudo Perl 6.

D2. Reviewed and updated tests for iterables and lists in the official
test suite.

D3. A new version of Synopsis 7 describing Iterator, Iterable, List, and
related classes and roles.

D4. A new version of Synopsis 8 describing Parcels, Captures, and
(to the extent known) Slices.

D5. Updates to S32 API descriptions for Lists, Iterators, Parcels, etc.

D6. A compiler design document and blog postings describing the details
of Rakudo's list and iterator implementation (including how it manages
laziness and eagerness, list flattening and itemization, Parcels
and other list-like structures, vivification of list elements, etc.).

Project Details:

The primary focus and work to be performed in this grant will be
to develop a robust specification for Perl 6 iterators and lists
in the Synopses, based on the prototype implementation in Rakudo Perl 6.
Drafts of the updated Synopses will be maintained in the Pugs repository
to invite comments, updates, and feedback from the Perl 6 design team
and other members of the Perl community. There will also be design
team meetings on the phone, in person at conferences, and via email and
IRC.

Updating the synopses with the new iterator and list details will also
undoubtedly require additional refinements and improvements to the
prototype implementation in Rakudo. And, throughout the project the
test suite will be reviewed and updated to improve coverage and quality
of the iterator, list, and related tests.

Project Schedule:

The entire project should be completed within approximately two months
from its start date. Work will officially begin as soon as the project
is approved (although some items may start before then to meet other
Rakudo Perl 6 needs).

Report Schedule:

At least three interim reports will be provided during this project;
these will typically be in the form of blog postings describing the
grant work and/or many of the details of the design and implementation.
A new report will be posted approximately every other week to use.perl.org.

Public Repository and License:

All code and documentation will be developed and stored either in the
standard repository for each component (typically either the Rakudo Perl
or Pugs repositories). All copyrights for this work will be held by
The Perl Foundation, and licensed under the Artistic License 2.0.

Bio:

Since 2004 I have been the lead architect, developer, and project
manager for what is now Rakudo Perl (Perl 6 on Parrot), and I recently
led the development of the new design for iterators and lists in
Perl 6. My previous work on Perl 6 and Rakudo provides me with
unique experience and background for achieving the critical deliverables
described by this project.

Country of Residence:

United States

Amount Requested:

USD $3000

The Perl Foundation is looking at giving some grants ranging from $500 to $3000 in August 2010.

In the past, we've supported Adam Kennedy's PPI, Strawberry Perl and Perl on a Stick, Nicholas Clark's work on Perl internals, Jouke Visser's pVoice, Chris Dolan on Perl::Critic and many others (just check http://www.perlfoundation.org/grants for more references).

You don't have to have a large, complex, or lengthy project. You don't even have to be a Perl master or guru. If you have a good idea and the means and ability to accomplish it, we want to hear from you!

Do you have something that could benefit the Perl community but just need that little extra help? Submit a grant proposal by July 31.

As a general rule, a properly formatted grant proposal is more likely to be approved if it meets the following criteria

  • It has widespread benefit to the Perl community or a large segment of it.
  • We have reasons to believe that you can accomplish your goals.
  • We can afford it (please, respect the limits or your proposal should be rejected immediately).

To submit a proposal see the guidelines at http://www.perlfoundation.org/how_to_write_a_proposal and TPF new rules of operation at http://www.perlfoundation.org/rules_of_operation. Then send your proposal to [email protected] Note that starting with this round, proposals should be properly formatted accordingly with our POD template.

On August 1st, proposals will be made available publicly (on this blog) for public discussion, as it happened in the previous round. So, please make it clear in your proposal if it should not be public.

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at www.perlfoundation.org.

Recent Comments

  • idn: Ah crap, that should have been Jozef not Alberto.. read more
  • idn: Hi Alberto, Do you plan to import the existing RPMs read more
  • idn: This is an excellent plan getty! I'd vote for a read more
  • Neil Bowers: I think this is well worth funding (and more so read more
  • autarch.urth.org: The Perl community needs more well thought out and documented read more
  • autarch.urth.org: I'm all for improving ACT, and if the current maintainer read more
  • Jeffrey Ryan Thalhammer: This definitely gets my support. I'm thinking of putting on read more
  • Paul Seamons: While I like reading reviews, I'm not sure I'd pay read more
  • Jeffrey Ryan Thalhammer: tempire: It is probably impossible to do full justice to read more
  • Jeffrey Ryan Thalhammer: I'd love to see this proposal funded. Neil always writes read more

About this Archive

This page is an archive of entries from July 2010 listed from newest to oldest.

June 2010 is the previous archive.

August 2010 is the next archive.

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

OpenID accepted here Learn more about OpenID
Powered by Movable Type 4.38