Brussels / 31 January & 1 February 2015


How (not) to create a language specification for Perl 6

Lessons learned

In the process of designing, implementing, and using Perl 6 (or any programming language), people often refer to ""the language specification"" as a commonly understood and perhaps self-evident fixed reference point. For mature languages this can be reasonable, because the people using that language have generally developed a shared understanding of what constitutes the language's specification. But languages are not all specified in the same manner, and in a new or rapidly evolving language it may be unwise to prematurely commit to an inflexible specification. Perl 6 has gone through several imprecise notions of what constitutes its specification, such as design documents like the Synopses, reference implementations of certain features, and the ""official"" test suite. This imprecision sometimes leads to misunderstandings among developers, confusion for newcomers to the language, and difficulty communicating with external audiences. This talk presents a historical perspective on how Perl 6's specification process has evolved over the past decade: identifying things we've done (or are doing) wrong, things we've gotten very right, and ideas of what that process ought to look like going forward.


Patrick 'pmichaud' Michaud