Language Name Alias Decision: "Raku"

Larry Wall has created a second name for the language, an alias or
a "stage name" if you will. That name is "Raku". It can be used
interchangeably with the original "Perl 6" name or even be combined with it
to form "Raku Perl 6". Pick the one that works the best for you and
use it consistently.

Authors

The following people contributed to this version of the language,
including making documentation updates and contributing work to known
open‑source compiler implementations. The list is ordered alphabetically.

If you believe your name has been erroneously omited, please contact us
(https://perl6.org/irc), and we'll update the primary copy of this list.

Changelog

This document lists changes in Perl 6.d (Diwali) language
from Perl 6.c (Christmas) version. A particular implementation of the language
may contain additional changes; please consult with the changelog for your
implementation.

At the same time, a particular implementation may have had certain features
already implemented during the 6.c version period. This ChangeLog concerns
itself with new features added to the specification on a language level and not
the status of their implementation in a particular compiler.

Scope / Target Audience

This ChangeLog is targeted towards language users, to help with preparation to use
compilers supporting latest language version. Thus, it does not contain every minute
change to the specification that occurred. Implementations wishing to ensure full
compliance with the new version of the language specification should execute the
test suite available at https://github.com/perl6/roast/ and examine any failing tests.

There are new features that did not exist in 6.c language. For full details about them,
please consult with the language documentation on https://docs.perl6.org/
Items in Version-Controlled Changes section are protected by version pragma and older
behaviours can be obtained by explicitly using use v6.c to request an older language
version. All other changes do not conflict with the 6.c language version and implementations
may choose to make them available even when an earlier language version is requested.

Version-Controlled Changes

[6.d]&await no longer blocks a thread while waiting

[6.d]whenever not in lexical scope of react throws

[6.d]$*ARGFILES inside sub MAIN is always fed by $*IN

[6.d] Constructs (literally) $(), @(), and %() are no longer magical

[6.d] variables with :D/:U type constraints default to type object of
the constrained type (e.g. so you could use .new with them)

[6.d]start blocks in sink context attach exception handler

[6.d] Routines must use return-rw to return a Proxy, even if
routine is marked as is raw or is rw

[6.d] Native num types default to 0e0 instead of NaN

[6.d] On subroutine names, the colonpair with key sym (e.g. :sym<foo>)
is reserved, in anticipation of possible future use.

Deprecations

These methods are deprecated in 6.d language and will be removed in 6.e.
Implementations may choose to emit deprecation warnings or to offer these
methods for a longer period than 6.e release.

The use of '-' (single hyphen) as a special path to &open to mean the
special handles (use IO::Special objects instead)

Typed arrays can be created with both my SomeType @array
and my @array of SomeType

Items with negative weights are removed when coercing
a Mixy to Setty/Baggy

:nth adverb on m// accepts a Junction as argument

CX::Warn and CX::Done can be caught inside CONTROL phaser

next can be used in whenever

require'd symbols no longer transitively exposed

Multi-dimensional access via {…}, similar to how it works with […]

Any open handles at END time get automatically closed

On a cached Seq, the cached list is used when &infix:<eqv>, .Slip,
.join, .List, .list, .eager, .Array and .is-lazy are called

IO::Handle.encoding takes Nil to indicate switch to binary mode

is default trait works with attributes

Parameters with is rw trait are considered narrower in multi dispatch
than those without it

.gist of Array, Blob, and Map gets trimmed to 100 elements

New for statement modifiers hyper for, race for, and lazy for

for loop automatically serializes RaceSeq/HyperSeq; use new for
statement modifiers hyper for/race for to avoid

&infix:<does> can be used with non-composable instances on RHS

Numeric comparators can be used with DateTime objects

Pod preserves the type of whitespace

Defined semantics for @-, %- and &-sigilled constants

Math

Rationals are always reduced on creation and remain
immutable throughout their life

-Inf, Inf, and NaN can be round-tripped through a Rational type
by being represented as values <-1/0>, <1/0>, and <0/0>
respectively. Zero-denominator Rationals are normalized to
one of those three values