Skip to content

@AlexDaniel AlexDaniel released this Jul 18, 2019 · 2291 commits to master since this release

On behalf of the Rakudo development team, I’m very happy to announce the
August 2018 release of Rakudo Perl 6 #125. Rakudo is an implementation of
Perl 6 on the Moar Virtual Machine[^1].

This release implements the 6.c version of the Perl 6 specifications.
It includes bugfixes and optimizations on top of
the 2015.12 release of Rakudo.

Upcoming releases in 2018 will include new functionality that is not
part of the 6.c specification, available with a lexically scoped
pragma. Our goal is to ensure that anything that is tested as part of the
6.c specification will continue to work unchanged. There may be incremental
spec releases this year as well.

The tarball for this release is available from https://rakudo.org/files/rakudo.

Please note: This announcement is not for the Rakudo Star
distribution[^2] — it’s announcing a new release of the compiler
only. For the latest Rakudo Star release, see
https://rakudo.org/files/star.

The changes in this release are outlined below:

New in 2018.08:

  • SPECIAL NOTES:
  • Deprecations:
  • Fixes:
    • Fixed .assuming on subs with slurpies [93a8ec6]
    • Fixed auto-printing of low-level (non-Mu) objects in REPL [9ea427a]
    • Made Map.list return a List instead of a Seq [60447c6]
    • Made internal safely_stringify routine safer [0e2a7d9]
    • Made .perl of (|) signature a bit more idiomatic [24467ed]
    • Fixed coping with failures to open a directory in internal
      DIR-RECURSE sub [e9351cb]
    • Fixed preservation of newlines in pod blocks [c643383]
    • Fixed big int values in BagHash [fd77910]
    • Fixed several crashes and bugs involving meta assign operator [b9b0838]
    • Fixed roundtripability of QuantHashes [84f60ad][ddf496c]
    • Fixed .comb on allomorphs with leading 0's [f8d6a3f][72ccd43]
    • Fixed crash when doing EVAL :lang from multiple threads [6668308]
    • Fixed potential race condition in EVAL [80bbfbb]
    • Fixed Test's diag to no longer die on Junctions [5ec2c96]
    • Fixed Cool consistency in arguments of &round [e547811]
    • Fixed &prompt to convert numeric data to allomorphs [38d7f2a]
      [0275ea2][07b032d]
    • Many fixes and improvements to the contributors.p6 script
      [7a87b7f][8fee8d4][c5cfbc6][f6c8159][1197c3f][ade83c8]
    • Made Routine.perl more verbose / precise [d6c161b]
    • Added some missing is rw [6caf86b][832ccd8]
    • Fixed problem in concatenation of 2 Junctions [4ef8433]
    • Fixed failure to set up encoder/decoder in IO::Handle via
      .encoding call in certain cases/encodings [86846ac]
    • Made it impossible to assign to a Map [fffe89c]
    • Fixed Map.WHICH to reflect subclasses correctly [199d276]
    • Gave PseudoStash its own non-value based .WHICH [bb5db6a]
    • Fixed QuantHash.hash/Hash return values [7629820]
    • Made Proc.command return an immutable List instead of Array [925c113]
    • Fixed loop to always return Nil [aff96ba]
    • Made an uncomposed class type-check against roles that have been added
      [38d046f]
    • Fixed IO::Handle.encoding to check if$!decoder was set up [edf81bf]
    • Fixed is required($reason) [7c349b7]
    • Fixed Range.roll(*)/roll(N)/pick(N) with big ints [b30800c]
    • Removed <?before> token in term:sym<multi_declarator> [51e41da]
    • [6.d] Reserved :sym colonpair on names of routines [a68784a]
    • Fixed a ThreadPoolScheduler memory leak whereby certain usage
      patterns caused it to build up an ever-deeper call stack, due
      to continuation mis-use [bf514c1]
    • Fixed misscoping of blocks in whatever curries [8549589]
    • Made sure that onlystar Routines cannot be optimized away when
      wrapped [434ede4][1188f80]
    • Made it possible to use Array:: as a top level namespace
      in modules [a71e370]
    • Fixed Distribution::Resource.^mro to not error [bb46381]
    • [6.d] Changed $*ARGFILES to be based on $*IN inside sub MAIN
      [84d45f0]
    • [6.d] Made num variables default to 0e0 [f045042]
    • Made Rationals fully-immutable [5c429e4]
    • Fixed problem in QuantHash.ACCEPTS [712d0f0]
    • Slightly changed semantics of (+), (-), (&), (.), (^), (|) on QuantHashes
      [3a6c119][b826a07][42595c2][f1693f2][64ab717][8cedbbd]
    • Fixed wrong math with largish Ints [fec1bd7][8e2c70f][342c5a9]
    • Fixed crash with attr + submethod TWEAK [d09756a]
    • Removed sig from Routine.perl if it is empty [546d08c]
    • Gave Routine its own .gist [6ad50d7]
    • Made sure my ($a,$b) does not have any runtime effect [90ef306]
    • Prevented REPL from writing to filehandle when opening a file [07d00db]
    • Fixed a couple of thinkos in Map.STORE [6587bf7]
    • Fixed Unicode Regional Indicators [80a7cff]
    • Normalized the path portion of repo specs [aae0827]
    • Gave Blob.subbuf the same feature set as Str.substr [26b4916]
    • Added support for Buf.subbuf(x,Any) [22f779a]
    • Gave native arrays their own ACCEPTS [9726e64][6a48132]
    • Gave Buf/Blob their own ACCEPTS [9531455]
    • Fixed occasional crashes in deprecation location handling code [0979b77]
    • Various improvements to produced messages [e2e4218][e2bbe3f]
      [35fec8e][1956df2][21eb168][7a7e5e9][e9e8cd5][2e90c66][0357454]
      [4494a24][d60be5e][9a45b2b][2c7692f][08b449e][b5e92a5][ef61ce3]
  • Additions:
    • Added X::ParametricConstant exception [b6cd612]
    • Added enforcement of type constraints on constants [1dea303]
    • Improved auto-coercion of values to @- and %-sigilled constants
      (the %- one requires use of v6.d.PREVIEW pragma) [1dea303]
    • Added a warning on definition of anon sub in sink context
      [d6c0539][08a5421]
    • Exposed host and port of IO::Async::Socket.listen via the Tap
      [cb2ea93][2d16e12]
    • Added ability to mixin roles on attrs, aka has %.a does Foo [3158ae7]
    • Added Callable indexing candidate for CArray [541922a]
      [68ebe71][2a803a3]
    • Added QuantHash.Setty|Baggy|Mixy coercer methods [3d9ea6e][76e5f9c]
    • Added proper handling of pod =defn block [6e8ca32]
  • Removals:
    • Use of syntax for parameterized constants now throws (such
      constrains were never enforced) [1dea303]
    • Removed unspecced/used pre-6.c jvm modules [e6c5e85]
    • Removed unused Universal role [2670236]
    • Renamed IO::Handle.*-internal methods to their final names [03d7997]
    • Removed previously deprecated $*INITTIME dynamic variable [a37c6aa]
  • Build system:
    • Bumped JVM memory limit to survive setting build [80dca6b][8feb13c]
    • Added passing of --execname to nqp so that nqp::execname() works
      [359ac12]
  • Efficiency:
  • Internal:
    • Implemented Perl6::World.lang-ver-before for easier language
      version check [4dcf592]
    • Removed Set, Bag, Mix .clone special casing [7865bfa]
    • Updated makeUNIPROP.pl6 with Unicode 10 property names [2ff4676]
    • Removed propname → propname mapping from Cool.pm6 [a9e844a]
    • Made infix:<!=> for Ints consistent with other infix
      operators [46e7640]
    • Simplified HashMap coercion [c567af7]
    • PseudoStash "pseudoers" hash is now a native hash [8a8ce95]
    • Various Range internal changes [6ad096c][806752f]
    • Tightened up some trait_mod:<is> signatures [f6209d7]
    • Renamed nqp::getstrfromname to nqp::strfromname [4522132]
    • Changed install-dist.p6 to use and prefer full namespace for
      builder identifier [0249afc]
    • Turned p6reprname into a desugar [07cfbeb]

The following people contributed to this release:

Zoffix Znet, Jonathan Worthington, Elizabeth Mattijsen,
Tom Browder, Jeremy Studer, Samantha McVey, Daniel Green,
Aleks-Daniel Jakimenko-Aleksejev, Will "Coke" Coleda, Paweł Murias,
Bart Wiegmans, 陈梓立, Timo Paulssen, Moritz Lenz, MorayJ,
Juan Julián Merelo Guervós, Steve Mynott, Ben Davies, Jonas Kramer,
Jonathan Scott Duff, Nick Logan, Stefan Seifert, Luca Ferrari,
Luis F. Uceta, Carl Masak, Altai-man, Daniel Mita, Jan-Olof Hendig,
Alexius Korzinek, Juerd Waalboer, Matthew Wilson, Tobias Leich,
Clifton Wood, Randy Lauen, David Warring, Joelle Maslak,
Marc Chantreux, Naoum Hankache, Norbert Buchmueller, Przemek Wesołek,
Tim Smith, ZzZombo, dmaestro, sarna, Alex Elsayed, Bartosz Janus,
Brad Gilbert, Cale, Douglas L. Schrag, Fernando Correa de Oliveira,
Innokenty Shniperson, Jack Kuan, Maik Hentsche, Mint, Nuno 'smash' Carvalho,
Prakash Kailasa, Przemysław Wesołek, Rafael Schipiura, Rob Hoelz, Sam S,
Simon Proctor, Tadeusz Sośnierz, Tobias Boege, benji, ijneb,
kjpye, mendel, ribbon-otter, thundergnat, ven, 唐鳳

If you would like to contribute or find out more information, visit
https://perl6.org, https://rakudo.org/how-to-help, ask on the
perl6-compiler@perl.org mailing list, or ask on IRC #perl6 on freenode.

Additionally, we invite you to make a donation to The Perl Foundation
to sponsor Perl 6 development: https://donate.perlfoundation.org/
(put “Perl 6 Core Development Fund” in the ‘Purpose’ text field)

The next release of Rakudo (#126), is tentatively scheduled for 2018-09-15.

A list of the other planned release dates is available in the
“docs/release_guide.pod” file.

The development team appreciates feedback! If you’re using Rakudo, do
get back to us. Questions, comments, suggestions for improvements, cool
discoveries, incredible hacks, or any other feedback – get in touch with
us through (the above-mentioned) mailing list or IRC channel. Enjoy!

Please note that recent releases have known issues running on the JVM.
We are working to get the JVM backend working again but do not yet have
an estimated delivery date.

[^1]: See http://moarvm.org/

[^2]: What’s the difference between the Rakudo compiler and the Rakudo
Star distribution?

The Rakudo compiler is a compiler for the Perl 6 language.
Not much more.

The Rakudo Star distribution is the Rakudo compiler plus a selection
of useful Perl 6 modules, a module installer, Perl 6 introductory
documentation, and other software that can be used with the Rakudo
compiler to enhance its utility.

Assets 4
You can’t perform that action at this time.