Announce: Raku Perl 6 'Diwali' 6.d Language Specification Release

On behalf of the development team, it brings me great pleasure to announce the 6.d ‘Diwali’ major version release of the Official Specification of the Raku Perl 6 programming language.

Please see the PDF of our Release Brochure for all the details: marketing.perl6.org/id/1541379592/pdf_digital (print-friendly version is also available on marketing.perl6.org)

If you are unable to view PDF documents, most important details are also available as a plain text file in the repository github.com/perl6/roast/blob/master/docs/announce/6.d.md

Compiler releases with 6.d as their default language version will follow their standard release scheduling (for Rakudo compiler, release process will start on 2018-11-17)

Happy Diwali!

Untitled.png

Perl 6 Advent Calendar 2018 Call for Authors

Read this article on Rakudo.Party

Every year since 2009, the Perl 6 community publishes a Perl 6 advent calendar, in the form of blog posts on perl6advent.wordpress.com.

To keep up this great tradition, we need 24 blog posts, and volunteers who write them. If you want to contribute a blog post about anything related to Perl 6, please add your name (and potentially also a topic already) to the schedule, and if you don't yet have a login on the advent blog, please tell Zoffix or someone on #perl6 IRC chat your email address so that they can send you an invitation to Wordpress for the site.

Perl 6 advent blog posts should be finished the day before they are due, and published on midnight (UTC) of the due date as publishing date.

If you have any questions, or want to discuss blog post ideas, please join on the #perl6 IRC channel on irc.freenode.org.

A Request to Larry Wall to Create a Language Name Alias for Perl 6

Read this article on Rakudo.Party

I (Zoffix Znet) am writing this document to Larry Wall to request the creation of a second name for the "Perl 6" language. This name is not a rename of the language, but is simply an alternative name, an alias. Similar to how TimToady is an alias for Larry Wall.

It's been a year and a half since the time when I first re-opened this issue with a blog post, and in this document, I compiled the argumentation for creation of the alias, the community suggestions for what that alias might look like, along with the observations of discussions on the topic that occured during that time period.

I ask that Larry Wall renders his decision on the alias by November 1, 2018, so we would have the time to create proper informational materials for the 6.d language release, during which time, the name alias would be officially announced, if one is chosen.

Community Alias

The original idea for the alias came in the form of creating a "marketing alias", for markets where Perl "is a swear word." However, I believe such an alias has a more immediate application closer to home, by improving the wellbeing of the existing community and the interactions of its members with other programming communities, including the Perl 5 community.

The idea of Perl 6 was birthed in the form of the community rewrite of the Perl language. This name alias, then, is the Community Alias for that language.

Reasoning for Alias

The current language name "Perl 6" comes with a set of built-in assumptions that do not apply either to the language or to currently-available compilers for it. The assumptions encoded in the name are:

  • It is similar to earlier Perl language (and thus comes with all the negative connotations attributed to it)
  • It is the next version of Perl language
  • It is faster, more stable, and "better" than earlier Perl language

In reality, what we have is an entirely brand new language. Different, and with all the caveats typical of brand new software.

Similarity

Other than the "spirit" some claim the Perl 5 and Perl 6 languages share, they're dissimilar in many ways.

$ perl  -e 'print "I am a Perl ", "0" && 6||5, " program\n"'
I am a Perl 5 program
$ perl6 -e 'print "I am a Perl ", "0" && 6||5, " program\n"'
I am a Perl 6 program

In Perl 5 you choose your own OO system, concurrency/parallelism system, your list processing utilities, etc; in Perl 6, many of these features are a large part of the standard language itself. In Perl 5, you're told to never use threads; in Perl 6, even an empty program is multi-threaded (JIT runs on a separate thread). In Perl 5, lists autoflatten; In Perl 6, they don't and you have a choice of multiple core list types.

Thus, we lose on two fronts: those who love Perl 5 and come to Perl 6 get disappointed because they get a different language; and those who hate Perl 5 never bother trying out Perl 6, assuming it's the same language they hate.

Next Version

The naming of "Perl 6" has a strong suggestion that "6" is the version number rather than a part of the name. Some suggested it's easy to explain this caveat of naming, but my personal experience was quite the opposite of that. First, it's hard to wedge this information during a real-time meatspace conversation:

— What are you working on?
— Writing an AI for a game in Python.
— You?
— Hacking on Rasperry Pi with C.
— You?
— Making a media center for my car in Perl 6. YES. YOU MAY HAVE HEARD OF PERL, BUT PERL 6 IS NOT PERL BUT A RELATED LANGUAGE.
— ...

Second, even after you make that clarification, people still continue to shorten the name to just Perl ("You're the Perl guy, right?"). Moreover, some media, such as banners and posters, often do not allow for adding a suitable clarification.

Lastly, similar shortening of the name occurs with some software, such as DuckDuckGo search engine producing results for Perl 5 instead of Perl 6 when searching for "perl6 argv".

The biggest issue here, however, is the relationship with the Perl 5 community. The mere existence of a "Perl 6" language paints Perl 5 as obsolete. While the Perl 6 community has to make clarifications to distance itself from Perl 5's negatives that don't apply to Perl 6, the Perl 5 community must make the same clarifications just to convince people they're not dead. This brews understandable animosity towards Perl 6.

The Perl 5 language is effectively blocked from releasing the next "major version", because Perl 6 is squatting on it. And were Perl 5 to release a "Perl 7", that would immediatelly paint Perl 6 as obsolete. The lack of any established alternate names leaves Perl 6 vulnerable to such a scenario.

Thus, we have three community issues: difficulty for community to explain what language they're using; difficulty for community to find information about the language; and difficulty of amicable existence beside the Perl 5 community.

Speed and Stability

The Christmas release of Perl 6 came with a caveat that it's the language spec that's stable now, and the compiler itself needed more work. That is exactly the sort of a caveat you'd expect to come with a brand new language.

However, our brand new language is not named that way. The current name suggests it's the next version of Perl and thus it should be slightly different, and faster and more stable. None of which is currently true. By using the name to associate ourselves so closely with Perl 5, we effectively set a performance target to surpass. Yet, due to how new our language is, there is still a lot of work needed to reach that target, and due to significant differences between the languages, some of these targets might not be met when comparing exactly the same constructs (e.g. Perl 6 regexes produce a much more complex data structure—a tree of Match objects).

Thus, by mislabeling our brand new language with a next-version language, we suffer disproportionally when our compiler does not perform as well or is not as stable as a well-established language.

Summary

In summation, the name "Perl 6" is a misrepresentation. It's a wrong label on a can. It causes friction within the broad Perl community and confusion or difficulty when communicating with those outside the Perl community.

It sets incorrect expectations of performance, stability, and features of the language.

It is detrimental to our future.

No Full Rename

While numerous members of the community would have liked to see a full language rename, there are also those who believe a full rename would be detrimental. The full rename at this point in time is also a lot more challenging due to the existence of books, websites, documentation, environmental variables, and dynamic variables in the language—all with the name "Perl" in them.

As such, we are creating an alias only. One that does not have any reference to Perl in it (i.e. no "Perl++"). If another name is truly as superior as the full-rename proponents claim it would be, I believe the alias can become a defacto name through its sheer amount of use. Thus, the creation of the alias can be seen as a means for the full-rename proponents to prove their claims.

References

What follows are references to real-world examples of confusion and problems due to the current name, additional community discussions on the naming along with suggestions for what that name can be, and other resources relevant to the topic.

Naming Confusion

The (parentheticals) indicate what issue was encountered in an item. The issues refer to issues examined in Reasoning for Alias section above.

Naming Suggestions

Other

Conclusion

With the 6.d release around the corner, we have approached the point where a direct request to Larry Wall is made with the matter of assuaging the problem of the naming of the language.

Through a year and a half worth of discussions, we came to a conclusion that a second name to the language should be created, as opposed to a full rename. This will let the proponents of a rename to prove their claims, without severely upsetting those who believe the current name is beneficial.

This document presented argumentation for why a second name is beneficial, as well as compiled the discussions and suggestions that occured during that year and a half.

It is now up to TimToady to reach the final decision on whether the official alias is to be created during the 6.d language release and what that alias is to be.

See you at the 6.d release party! Bring your own virtual beer.

The 100 Day Plan: The Update on Perl 6.d Preparations

Read this article on Rakudo.Party

Today's is a milestone of sorts: it's 100 days before the first scheduled Rakudo Perl 6 compiler release that will occur after this year's festival of Diwali. As some know, Diwali is also the code name for the next major release of the Perl 6 language, version 6.d, which means there's a high chance that in about 100 days you'll be able to install and use that.

I figured, I'd write a update on the subject.

When?

The oft-asked questions is when is 6.d going to be released. The plan is to have the 6.d specification good and ready to release on this year's Diwali, which is November 6–7.

About 10 days later the Rakudo compiler will be released (compiler-only, not the Rakudo Star), with 6.d language enabled by default. That is, you'll no longer need to use use v6.d.PREVIEW pragma to get 6.d features, and if you wish to get old, 6.c behaviour you'll need to use an explicit use v6.c pragma.

However, there's a ton of work to do and the work is largely done by volunteers, so we have no compunction about delaying the release of any of the deliverables indefinitely, if the need arises.

What?

The 6.d major version of the Perl 6 programming language includes over 3,400 new commits in its specification. The vast majority of these are clarifications to 6.c spec. In other words, most of these define previously undefined behaviour, rather than specify entirely new features.

Many of the clarifications and new features do not conflict with the 6.c specification. If you're using the Rakudo compiler, you are likely already reaping some of the benefits of the 6.d language, as such things do not require explicit use v6.d.PREVIEW pragma.

Those who've seen the 6.d Teasers frequently ask for the full list of 6.d changes. That list does not yet exist, as the spec is still in the process of being reviewed. The changelog will be available some time in October. You may have seen the 6.d prep repo, but that just contains guiding info for coredevs and isn't descriptive of the actual 6.d content.

The aforementioned ton of work includes:

  • Still have to review about 2,100 spec commits
  • Still have ~95% of ChangeLog to write
  • Still have to implement, 7 TODO features, costing 110 hours
  • Still have 0.3 policies to write (a draft already exists, but needs polishing)
  • Review and spec of any new features that were implemented in Rakudo but were not specced in the language
  • Marketing stuff regarding creation of marketing name alias for the language

The Future

Going forward for future language releases, I foresee us doing a point release every 6 months, and 6.e being released 2 or 3 years after 6.d. The previously 6.d-blocking Issue R#1289 still blocks a number of language changes, and all the 6.d changes blocked by that Issue were pushed to later language versions. So, if that Issue is resolved, that will likely be a reason to cut a language release soon thereafter.

Conclusion

The prep work for next major release of the Perl 6 Programming Language version 6.d (Diwali) is in a high gear. There's lots of work to do. Will likely release spec on November 7th, with compiler release following step and being released about 2 weeks after that. The list of changes will be ready in October and does not currently exist in any user-consumable form.

Let the hype begin \o/

-Ofun

Introducing: Perl 6 Marketing Assets Web App

Read this article on Rakudo.Party

As some of you already may have known from occasional tweets and mentions in the Weekly, we have a perl6/marketing repo that contains some flyers and brochures for Perl 6.

With one of the Perl 6 coredevs making a living as a Multi-Media Designer, the repo has seen a steady stream of new pieces designed, when inspiration strikes, or when someone makes a request. There are now several pieces available, but GitHub isn't the greatest interface for this sort of stuff.

Introducing marketing.perl6.org

To make it easier to see what we have available, we made a front-end for our marketing repo, that lets you browse all of the assets. It's hosted at marketing.perl6.org

The Assets

Under the thumbnail of each asset, there are a few buttons that show you which formats are available for download. The last two buttons are the GitHub button and the pencil button. The former will lead you to GitHub to the folder that particular asset is at, where you can download any files that aren't shown on the front end (e.g. the source files). The latter will lead you to the New Issue page on the marketing repo, with title/ID of the piece pre-filled. This is in case you'd like to request different format, size, or some other changes for that piece.

Each piece has an ID number (a Unix timestamp, e.g 1516098660). If you want to refer to some piece, try to include its ID, as that's the easiest way for the designer to know what piece you're talking about.

INB4, the Camelia logo variants are so numerous because the rules allow for her colours to be changed. Personally, I prefer transparent wings, as they're easier on my retinas than the default logo.

Keep in mind, you can request new pieces as well. Just file a new Issue in the marketing repo, describing the content that you want, including the sizes/colour restrictions, and our volunteers will hook you up.

The Prints

While files themselves are easy to make for free, the same isn't the case for hard copies. We (the volunteers handling the marketing repo) can't print any hardcopies for you. Unless you are able to use a local printing company and pay out of your own pocket, your best bet would be to contact The Perl Foundation and ask them if they can sponsor the prints. I know they made prints of the Introducing Perl 6 brochure for a conference in the past.

Licenses

The assets shown in the marketing web app are licensed under Creative Commons Attribution 4.0 International License. The Camelia logo is copyright by Larry Wall. Some of the pieces use purchased stock, which may have licenses that limit super-large print runs (50,000+ copies). Check the files in the repo or contact Zoffix if you have an unusual usecase for the materials and wish to clarify the licensing.

The source files (InDesign/PhotoShop/Adobe Illustrator) themselves can be modified freely, under the terms of Creative Commons Attribution 4.0 International License. Any images/fonts/other assets used by those source files might have additional licensing restrictions, which will usually be noted in the directory for that asset.

Conclusion

Going out for some tech meetup? Print out a few pieces from our marketing web app, hand them out, share the Perl 6 love!

-Ofun