Skip to content

2020.11

Compare
Choose a tag to compare
@Altai-man Altai-man released this 21 Nov 13:45
· 2123 commits to master since this release
2020.11
34faae5

On behalf of the Rakudo development team, I’m very happy to announce the
November 2020 release of Rakudo #141. Rakudo is an implementation of
the Raku1 language.

The source tarball for this release is available from
https://rakudo.org/files/rakudo.
Pre-compiled archives will be available shortly.

New in 2020.11:

  • Additions:
    • Introduce new coertion semantics. It includes coercions being first-class
      type objects, a parameter being marked as coercive if its type is a coerce,
      coercions redelegating method calls to their target type, coercions type checking
      being more correct. Coercions are now nominalizable, they nominalize into
      the target type. Aside from those changes, coercion protocol is introduced.
      If coerce method of Metamodel::CoercionHOW is used for Foo(Bar),
      then the following methods are tried in the order of mentioning:
    • Implement the prefix:<||> operator in postcircumfixes for 6.e and later,
      originally described in Synopsis 09 [e6787d7][48b1b20][7a2264b][35213f6]
    • Give dd (an internal Rakudo-specific routine for debugging purposes)
      support for BOOTThread objects [59d140b]
    • Add a flag to symlink allowing creation of relative symlinks [089bd59]
    • Implement binding of array-slices (e.g. @A[1,2,3] := <a b c>) [051e036]
    • Implement binding of hash-slices (e.g. %h<a b c> := 1,2,3) [87ef76a]
    • Give raku -v a pure ASCII version [329e47f]
    • Introduce is test-assertion trait for routines, improving behaving of
      test assertions written by the user [585db59][86a208e][2436532]
    • Make Whatever slice work on 1-dim native shaped arrays [1cb2df8]
    • Handle :exists and :delete on 1-dim native shaped arrays with int index [db3ca28]
    • Add Windows specific build instructions [07c9513][5b282cf]
  • Changes:
    • Unicode support is updated to match with 13.0, 13.1 versions [bd803d5][68196c9]
    • Do not allow infix:<does> on Int or Str, print an error message saying
      but should be used [2f3de2f]
    • Datetime.local now defaults to $*TZ [9443fba]
    • Values passed to sub form of push and unshift are not longer flattened [e78c53b]
  • Efficiency:
    • Create common Version objects at setting compile time [18882bf][7f9f9e9]
    • Make Str.raku about 35% faster [97d473b][5cbe14e]
    • Make DateTime.now 60% faster [53b558f][fd5950f]
    • Simplify native shaped array .shape method [424ce71]
    • Constantize empty list / hash in Match [0447b15]
    • Constantize encoding and clean parts lookup [8af0c46]
    • Simplify Hash parameterization [1321a85]
    • Streamline handling of bind/delete on native arrays [adeff7d]
    • Make simple native shaped array access about 5x as fast [3e6e15e][75574be][f6cdbd8]
  • Fixes:
    • Fix building on Windows with MinGW [200821c]
    • Fix a rare issue with precompilation [dd0a2a1]
    • Improvements of postcircumfix[;] in 6.e language version [39c5159][03e1ba7][316902d]
    • Make auto-generated mixin role be of language revision c.
      This fixes $a but $b under use v6.e pragma [6b87d3e]
    • Don't inherit mixin class language revision. This allows mixin of custom roles
      under v6.e.PREVIEW pragma [2991016]
    • Fix some issues with $*TZ and long-running processes [613da57][78935eb]
    • Make MacOS nick lookup hash a constant, also improving build reproducibility
      on MacOS [78f1645][2ad244b]
    • Add support for MacOS 11.0 nick [ccc50f7]
    • Use alternate test for DST change [89211e2][ede52fb]
    • Make sure match processing can handle $/ being a Junction [5b36918]
    • Fix for isa-ok to handle test subjects not inheriting from Mu
      (e.g. isa-ok Any.HOW, Metamodel::ClassHOW) [dbf53c0]
    • Fix IO::Path.absolute(IO::Path) breakage on Windows [08f5d02]
    • Fix regression in list handling of take / take-rw introduced back in 2020.01 release [3e10cc6]
    • Provide more improvements to language revision support and provide a better fix for mixins
      [7de2b15][9075c76][b21dd02][38bb244][74faa0a]
  • Internal:
    • Replace all simple nqp::if(42,foo,bar) with ternaries [b1912d9]
    • Strip excessive escaping in an internal script [857fbfd]
    • Update docs/running.pod [39eedac]
    • Make sigils2bit mapper a setting compiler time thing [a541aed][0a4eaf3]
    • Expose the Array::Shaped role, Array::Shaped1|2|3 roles [ee08923][532b542][cb95c65][e45bcd5][e45bcd5]
    • Expose Hash::Object and Hash::Typed roles [1a6cf78]
    • Make unicode property tests deterministic [151fd31]
    • Pseudostash code doesn't need a sub [7b2d9af]
    • Refactor Array::set-shape a bit [18af3f4][417ad76]
    • Better check for subness of MAIN [e3352cd]
    • Don't use "perl" in identifiers unless needed [fa2013d]
    • Prevent a compiler warning about an invalid cast [f0808da]
    • Make setting array shapes more alike [e612214]

The following people contributed to this release:

Elizabeth Mattijsen, Vadim Belman, Will "Coke" Coleda, Patrick Böker,
Alexander Kiryuhin, Stoned Elipot, Christian Bartolomäus, Samantha McVey,
Nicholas Clark, Peter du Marchie van Voorthuysen, Daniel Green,
Stefan Seifert, Fernando Santagata, Ben Davies, Juan Julián Merelo Guervós,
Daniel Mita, Jonathan Worthington, José Joaquín Atria,
Matthew Wilson, Timo Paulssen, Yves Guillemot

This release implements 6.c and 6.d versions of the Raku specification.
6.c version of the language is available if you use the use v6.c
version pragma, otherwise 6.d is the default.

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

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

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

The next release of Rakudo (#142), is tentatively scheduled for 2020-11-21.

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 https://raku.org/