=encoding UTF-8

=head1 release_guide.pod - guide to Rakudo releases

Rakudo’s development release cycle is the third Saturday of
each month.

Each development release is given a sequential number and a name based
on the release year and month.  Older releases had code names based on
an active Perl Mongers group.

For releases made so far, see the list of development releases at the
end of this document.

=head2 Planned future releases

Note that we are trying very hard to ensure there are no backward
compatibility issues post version 6.c. As such, we may end up delaying
some releases to ensure any compatibility issues are resolved.

  2022-08-26   Rakudo #158 (jdv + Releasable)

(More planned dates can be generated with F<tools/release-dates.p6>).

=head2 Steps to create a release (for release managers)

Currently there are two tools:

=over

=item *
L<Release Akefile|https://github.com/rakudo/rakudo/blob/master/tools/releasable/Akefile>
which is meant to be used together with
L<Releasable|https://github.com/Raku/whateverable/wiki/Releasable> bot

=item *
L<NeuralAnomaly|https://github.com/zoffixznet/na> bot

=back

Some things are hard to automate, and you have to understand what is
(and what is not) done by the tool you are using, so read on.

=over 4

=item 1.

Once a week or on-demand run the L<Blin tool|https://github.com/Raku/Blin> to
check regressions in the ecosystem modules.

First, bump MoarVM and NQP if necessary. To do so you can either use
a very helpful L<Z script|https://github.com/Raku/z> or obtain
actual values using `git describe` in appropriate repo and edit the MOAR_REVISION
and NQP_REVISION files.

Given you have a Blin image built and ready, run it to get results.
Don't forget to remove previous results with

    sudo rm -rf /var/tmp/Blin-volume/

On a machine with 12-16 cores Ryzen CPU and SSD it usually
takes about 2 hours to test the ecosystem.
Note you need at least 32 GB of RAM for this.

When the results are here, a file C<failures.md> is generated in
the C</var/tmp/Blin-volume/output/> directory. Carefully read what
modules are there and manually check them for false positives.

Possible false positives are:

* Modules related to async sometimes have flapping tests, such as C<Test::Async> etc.
* The C<November> module

If the module installs fine on the latest Rakudo built from HEAD
and failed on Blin it is likely not necessary to report it,
when in doubt ask. If the module has weird failure mode (MoarVM oops, a segfault etc)
then it's a good idea to report it anyway, if it fails more times than installs
it's a good idea to report it too.

Modify the C<failures.md> report to remove false positives and
post it as a new Rakudo blocker ticket.

Generally, any kind of breakage in modules is unwanted, but there are
exceptions. Submit Pull Requests to anything that is affected and file
rakudo tickets for all unwanted changes in Rakudo behavior.

=over 4

=item 2.

A few days before the Rakudo release, it’s a good idea to...

=item *

Remind people of the upcoming release, invite people to update the
L<ChangeLog|https://github.com/rakudo/rakudo/wiki/ChangeLog-Draft> or
do it yourself, etc. Note that the ChangeLog is kept on the wiki
so that people can easily do minor corrections, but for the release it
has to be moved into C<docs/ChangeLog>.

=item *

Check if any DEPRECATED code needs to be removed because the end of the
deprecation cycle is reached.  One way of doing this, is to grep on the
YYYYMM of the release (e.g. 201412 for the 2014.12 release).  If you find
any occurrences, remove the code and make sure the spectest is still ok.

=item *

Review the issue tracker for tickets that might need resolving
prior to the release, addressing them as needed.  “Tickets
that need resolving” is left to your discretion.  Any problem
that has a large impact on users is worth addressing either
as a fix or as prominent documentation (the README and/or
the release announcement).

=item *

B<Bump often>, especially the day before the release. Otherwise issues
with MoarVM/NQP might go unnoticed for too long.

=item *

If it’s a month relatively early in the calendar year,
double-check that the copyright date in the README file includes
the current year.  (It’s not necessary to update copyright dates
in other files, unless you know that a given file has been modified
in a year not reflected by the file’s copyright notice.)

=item *

If the release is nearing and you see that the state of Rakudo on HEAD
is inherently unstable (less stable than the previous release, or worse
than the previous release for other reasons), assess your options.
Even though rakudo releases are scheduled for every month, it doesn't
necessarily mean that there I<must> be a release every month. Cancelling
the release is an option. However, see if anything else can be done,
like if offending commits can be reverted, or if you can make a release
from an earlier state (e.g. previous release + some commits +
cherry-picked important fixes).

=back

=item 3.

Update Rakudo’s leap-second tables:

  perl tools/update-tai-utc.pl

If a new leap second has been announced, F<src/core.c/Rakudo/Internals.pm6>
will be modified, so commit the new version. B<Note:> be sure to double
check the modifications are correct before committing.

  git commit src

But probably there won’t be any new leap seconds, in which case the file
will be unchanged.

B<Note>: this program requires the perl modules L<Time::y2038>,
L<LWP::Simple> and L<File::Slurp> to be installed.

=item 4.

As the actual release date nears, use the `releasable6`
IRC bot to prepare a ChangeLog. The bot resides in
the C<#raku-dev> channel, call it as C<releasable6, status>
to obtain a report with commits you need to log.
Do not commit directly to Rakudo, but instead modify the wiki
page with a draft.

Ensure you have a proper list of "ignored" commits, such as
merge commits, tiny ones, reverts etc.
Later you will list them in a specific format in the commit
message for the release bot to understand that some commits
were not logged and there is no need to notify about them.

As for the format, refer to previous release commits to
get an inspiration of how it is done.

=item 5.

=item *

When it’s time to cut the release, checkout a new release branch.

=item *

Update the release dates and names at the bottom of this file
(F<docs/release_guide.pod>).  Also improve these instructions if
you find any steps that are missing.

=item *

Create a draft release announcement in docs/announce/YYYY.MM.md in
markdown format.

There is a helper script C<tools/create-release-announcement.raku> that
will create a basic release announcement for you based on the state
of the repository and the current date.  Feel free to use it to
save yourself some time, but please look over its output if you decide
to use it:

    raku tools/create-release-announcement.raku > docs/announce/YYYY.MM.md
    git add docs/announce/YYYY.MM.md
    git commit docs

Ensure dates of current and next releases are correct.

=item *

Sometimes you need to call the contributors script and re-generate the
announcement to ensure all contributors are mentioned:

    raku tools/contributors.raku

Ensure you have all supporting repositories
checked out, before running (this can be achieved by building rakudo
and running a spectest). Please check the result manually for duplicates
and other errors.

=item 6.

Ensure that a monthly MoarVM release has been completed.
It is usually done by the Rakudo release manager, so good luck.
Make sure that MoarVM builds on Windows and CI for MoarVM
is green. It is also a good idea to look for JVM issues at this point.

=item 7.

While it is possible to make a release by hands, nowadays most steps
are handled using the C<Akefile> script.

Ensure you have a working Raku with C<Ake> module installed, go to
the directory to do a release:

    cd rakudo/tools/releasable

While there is a single task in the script doing all the release process,
it is generally a much better practice to run it step by step.

=item *

Prepare environment variables for the invocation, for example:

    TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master

This means that:

- Version of the release made will be set to be 2021.10

- Version of the MoarVM used will be set to be 2021.10

- Other than C<6.c> and C<6.d> errata roast branches it will be tested
  against master branch of roast

- Branch to get Rakudo from is C<release-2021.10>

- NQP branch is set to C<master>

Be very careful and ensure all variables are spelled properly as it
affects what branches will be used to push commits to

=item 8.

Execute Akefile stages one by one, with appropriate env variable values:

=item *

    TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake clean
    TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake human-1

This will clone all appropriate repos, bump and tag for the NQP release.

=item *

    TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake nqp

This will create an NQP release.

=item *

    TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake human-2

This will sign NQP and do bumps for Rakudo release.

=item *

Next step is related to Rakudo, which has more complicated process than NQP,
so it recommended to run stages separately:

  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-build
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-test
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-inline-perl5
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-stress

Next step is testing on errata branches. Tests here can fail in case
when Rakudo behavior was changed and it affected roast, so the developer
updated roast master branch, but the errata branch still checks for old
behavior.

  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-stress-errata

If the tests are failing, note which ones do, and investigate if there
were changes to the files recently. If yes, you have to cherry-pick or
port the changes to the errata branch so that in the end tests pass on
errata branches.

=item *

Once this is done, create the artifact and test it afterwards.

  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-archive
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-extract
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-post-build
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake rakudo-post-test

You can look at the resulting artifact unpacked in the C<temp/rakudo-test/> directory,
run C<raku --version> and ensure mentioned version is correct.

=item *

If everything looks correct, tag and sign the release:

    TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=master ake human-3

=item *

There is a C<human-upload> target to push all the commits to NQP and Rakudo repos, it
also includes uploading tarballs, but this is usually done manually:

    scp -P 2222 nqp/nqp-2021.10.tar.gz nqp/nqp-2021.10.tar.gz.asc rakudo.org@lavm-perl6infra-1.atikon.io:public_html/downloads/nqp
    scp -P 2222 rakudo-2021.10.tar.gz rakudo-2021.10.tar.gz.asc \
        rakudo-2021.10.tar.gz.checksums.txt \
        rakudo.org@lavm-perl6infra-1.atikon.io:public_html/downloads/rakudo/

But the Akefile has targets to do uploading, so it is possible to modify
the script to automate this part. Uploading requires having rights to upload files,
the best idea is to ping rba on one of Raku IRC channels and ask how to proceed.

=item *

Use the L<Github release|https://github.com/rakudo/rakudo/blob/master/tools/releasable/github-release.p6> script to create
NQP and Rakudo Github release, refer to MoarVM release guide for the details about artifacts attachment.

=item 9.

Build binary packages by following the steps in C<docs/release_guide_binary.md>.

=item 10.

Don’t send out any announcements until the files are actually available
per step 8 above.

Copy the release announcement file to the C<rakudo.org> repository into
C<post/announce-rakudo-release-20XX.XX.md>.
Change the heading to look as follows:

  %% title: Announce: Rakudo compiler, Release #151 (2021.10)
  %% date: 2020-06-19

Commit and push the change to GitHub.

=item 11.

Update the Wikipedia entry at L<http://en.wikipedia.org/wiki/Rakudo>.

=item 12.

You’re done! Celebrate with the appropriate amount of fun.

=back

=head2 Releases so far

Previous releases were bundled as part of monthly Parrot releases.

  2009-02-26   Rakudo #14 "Vienna"             (pmichaud)
  2009-03-20   Rakudo #15 "Oslo"               (pmichaud)
  2009-04-23   Rakudo #16 "Bratislava"         (pmichaud)
  2009-05-21   Rakudo #17 "Stockholm"          (pmichaud)
  2009-06-18   Rakudo #18 "Pittsburgh"         (pmichaud)
  2009-07-23   Rakudo #19 "Chicago"            (moritz)
  2009-08-20   Rakudo #20 "PDX"                (kyle)
  2009-09-17   Rakudo #21 "Seattle"            (particle)
  2009-10-22   Rakudo #22 "Thousand Oaks"      (duff)
  2009-11-19   Rakudo #23 "Lisbon"             (masak)
  2009-12-17   Rakudo #24 "Seoul"              (chromatic)
  2010-01-22   Rakudo #25 "Minneapolis"        (pmichaud)
  2010-02-18   Rakudo #26 "Amsterdam"          (mberends)
  2010-03-18   Rakudo #27 "Copenhagen"         (smash)
  2010-04-22   Rakudo #28 "Moscow"             (moritz)
  2010-05-20   Rakudo #29 "Erlangen"           (colomon)
  2010-06-17   Rakudo #30 "Kiev"               (masak)
  2010-07-22   Rakudo #31 "Atlanta"            (Coke)
  2010-08-19   Rakudo #32 "Pisa"               (mathw)
  2010-09-23   Rakudo #33 "Milan"              (moritz)
  2010-10-21   Rakudo #34 "Paris"              (duff)
  2010-11-18   Rakudo #35 "Melbourne"          (masak)
  2010-12-23   Rakudo #36 "New York"           (smash)
  2011-01-20   Rakudo #37 "BristolBath"        (tadzik)
  2011-02-17   Rakudo #38 "Toulouse"           (arnsholt)
  2011-03-17   Rakudo #39 "Orlando"            (jdhore)
  2011-04-21   Rakudo #40 "ZA"                 (duff)
  2011-05-19   Rakudo #41 "Dahut"              (jdhore)
  2011-06-23   Rakudo #42 "Bruxelles"          (jdhore)
  2011-07-21   Rakudo #43 "Beijing"            (mberends,moritz)
  2011-09-30   Rakudo #44 "Riga"               (tadzik)
  2011-10-20   Rakudo #45 "Houston"            (duff)
  2011-11-17   Rakudo #46 "London"             (tadzik)
  2011-12-22   Rakudo #47 "Columbus"           (moritz)
  2012-01-23   Rakudo #48 "Toronto"            (moritz)
  2012-02-23   Rakudo #49 "SPb"                (masak)
  2012-03-22   Rakudo #50 "Argentina"          (masak)
  2012-04-19   Rakudo #51 "Brazos Valley"      (Coke)
  2012-04-25   2012.04.1                       (moritz)
  2012-05-17   Rakudo #52 "MadMongers"         (tadzik)
  2012-06-21   Rakudo #53 "Strasbourg"         (duff)
  2012-07-19   Rakudo #54 "Tallinn"            (masak)
  2012-08-23   Rakudo #55 "Frankfurt"          (tadzik,moritz)
  2012-09-20   Rakudo #56 "Perl"               (masak)
  2012-09-29   2012.09.1                       (pmichaud)
  2012-10-18   Rakudo #57 "Tokyo"              (duff)
  2012-11-22   Rakudo #58 "Walnut"             (FROGGS)
  2012-12-20   Rakudo #59 "Warszawa"           (masak)
  2013-01-17   Rakudo #60 "Sonoma"             (isBEKaml)
  2013-02-21   Rakudo #61 "drinkers"           (tadzik)
  2013-02-23   2013.02.1                       (moritz)
  2013-03-21   Rakudo #62 "Singapore"          (masak)
  2013-04-18   Rakudo #63 "Albany"             (Coke)
  2013-05-23   Rakudo #64 "Austin"             (FROGGS)
  2013-06-20   Rakudo #65 "Poznan"             (masak)
  2013-07-18   Rakudo #66 "Edinburgh"          (moritz,lizmat)
  2013-08-22   Rakudo #67 "Bicycle"            (moritz)
  2013-09-19   Rakudo #68 "Shanghai"           (masak)
  2013-10-17   Rakudo #69 "Roederbergweg"      (Coke)
  2013-11-21   Rakudo #70 "Malmö"              (lizmat)
  2013-12-19   Rakudo #71 "Advent"             (moritz)
  2014-01-23   Rakudo #72 "Plano"              (masak)
  2014-02-20   Rakudo #73 "Karlsruhe"          (timotimo)
  2014-03-20   Rakudo #74 "Adelaide"           (tadzik)
  2014-04-17   Rakudo #75 "Echt"               (masak)
  2014-05-22   Rakudo #76 "Bajor"              (FROGGS)
  2014-06-19   Rakudo #77 "Gdańsk"             (sergot)
  2014-07-17   Rakudo #78 "Sofia"              (FROGGS)
  2014-08-21   Rakudo #79 "Minsk"              (Coke)
  2014-09-18   Rakudo #80 "HongKong"           (masak)
  2014-10-23   Rakudo #81 "Linz"               (duff)
  2014-11-20   Rakudo #82 "Helsinki"           (lizmat)
  2014-12-18   Rakudo #83 "Cologne"            (lizmat)
  2014-12-19   2014.12.1                       (lizmat)
  2015-01-22   Rakudo #84 "Gotanda"            (Coke)
  2015-02-19   Rakudo #85 "Berlin"             (lizmat)
  2015-03-19   Rakudo #86 "Cluj"               (FROGGS)
  2015-04-23   Rakudo #87 "Vladivostok"        (masak)
  2015-05-21   Rakudo #88 "Dresden"            (FROGGS)
  2015-06-18   Rakudo #89 "Salt Lake"          (hoelzro)
  2015-07-24   Rakudo #90 "Prague"             (masak)
  2015-07-24   2015.07.1                       (masak)
  2015-07-25   2015.07.2                       (moritz)
  2015-09-17   Rakudo #91 "Zürich"             (Coke)
  2015-10-22   Rakudo #92 "Niceville"          (Coke) # v6.b
  2015-11-19   Rakudo #93 "Bend"               (Coke)

  2015-12-25   Rakudo #94 "коледа"             (Coke) # v6.c
  2016-02-01   Rakudo #95 "2016.01"            (Coke)
  2016-02-02   2016.01.1                       (Coke)
  2016-02-21   Rakudo #96 "2016.02"            (Coke)
  2016-03-23   Rakudo #97 "2016.03"            (Coke)
  2016-04-19   Rakudo #98 "2016.04"            (Coke)
  2016-05-21   Rakudo #99 "2016.05"            (hoelzro)
  2016-06-18   Rakudo #100 "2016.06"           (Zoffix)
  2016-07-16   Rakudo #101 "2016.07"           (Zoffix)
  2016-07-18   2016.07.1                       (Zoffix)
  2016-08-20   Rakudo #102 "2016.08"           (Zoffix)
  2016-08-20   2016.08.1                       (Zoffix)
  2016-09-17   Rakudo #103 "2016.09"           (Zoffix + NeuralAnomaly)
  2016-10-15   Rakudo #104 "2016.10"           (Zoffix + NeuralAnomaly)
  2016-11-19   Rakudo #105 "2016.11"           (Zoffix + NeuralAnomaly)
  2016-12-17   Rakudo #106 "2016.12"           (Zoffix + NeuralAnomaly)
  2017-01-20   Rakudo #107 "2017.01"           (Zoffix + NeuralAnomaly)
  2017-02-18   Rakudo #108 "2017.02"           (Zoffix + NeuralAnomaly)
  2017-03-18   Rakudo #109 "2017.03"           (Zoffix + NeuralAnomaly)
  2017-04-17   Rakudo #110 "2017.04"           (Zoffix + NeuralAnomaly)
  2017-04-18   2017.04.1                       (Zoffix)
  2017-04-18   2017.04.2                       (Zoffix)
  2017-04-23   2017.04.3                       (Zoffix)
  2017-05-20   Rakudo #111 "2017.05"           (Zoffix + NeuralAnomaly)
  2017-06-17   Rakudo #112 "2017.06"           (Zoffix + NeuralAnomaly)
  2017-07-15   Rakudo #113 "2017.07"           (Zoffix + NeuralAnomaly)
  2017-08-21   Rakudo #114 "2017.08"           (AlexDaniel + Releasable)
  2017-09-18   Rakudo #115 "2017.09"           (AlexDaniel + Releasable)
  2017-10-26   Rakudo #116 "2017.10"           (AlexDaniel + Releasable)
  2017-11-21   Rakudo #117 "2017.11"           (AlexDaniel + Releasable)
  2017-12-21   Rakudo #118 "2017.12"           (AlexDaniel + Releasable)
  2018-01-25   Rakudo #119 "2018.01"           (AlexDaniel + Releasable)
  2018-02-20   Rakudo #120 "2018.02"           (AlexDaniel + Releasable)
  2018-02-23   2018.02.1                       (AlexDaniel + Releasable)
  2018-03-19   Rakudo #121 "2018.03"           (AlexDaniel + Releasable)
  2018-04-25   Rakudo #122 "2018.04"           (AlexDaniel + Releasable)
  2018-04-30   2018.04.1                       (AlexDaniel + Releasable)
  2018-05-24   Rakudo #123 "2018.05"           (AlexDaniel + Releasable)
  2018-06-22   Rakudo #124 "2018.06"           (AlexDaniel + Releasable)
  2018-09-02   Rakudo #125 "2018.08"           (AlexDaniel + Releasable)
  2018-09-23   Rakudo #126 "2018.09"           (AlexDaniel + Releasable)
  2018-10-28   Rakudo #127 "2018.10"           (AlexDaniel + Releasable)

  2018-11-29   Rakudo #128 "2018.11"           (AlexDaniel + Releasable) # v6.d
  2018-12-21   Rakudo #129 "2018.12"           (AlexDaniel + Releasable)
  2019-03-07   Rakudo #130 "2019.03"           (AlexDaniel + Releasable)
  2019-03-17   2019.03.1                       (AlexDaniel + Releasable)
  2019-07-17   Rakudo #131 "2019.07"           (AlexDaniel + kawaii + Releasable)
  2019-07-28   2019.07.1                       (AlexDaniel + Releasable)
  2019-11-26   Rakudo #132 "2019.11"           (AlexDaniel + Releasable)
  2020-01-27   Rakudo #133 "2020.01"           (Altai-man + Releasable)
  2020-02-23   Rakudo #134 "2020.02"           (Altai-man + Releasable)
  2020-03-01   2020.02.1                       (Altai-man)
  2020-05-04   Rakudo #135 "2020.05"           (Altai-man + Releasable)
  2020-05-10   2020.05.1                       (Altai-man)
  2020-06-21   Rakudo #136 "2020.06"           (Altai-man + Releasable)
  2020-07-20   Rakudo #137 "2020.07"           (Altai-man + Releasable)
  2020-08-22   Rakudo #138 "2020.08"           (Altai-man + Releasable)
  2020-08-23   2020.08.1                       (Altai-man + Releasable)
  2020-08-26   2020.08.2                       (Altai-man + Releasable)
  2020-09-26   Rakudo #139 "2020.09"           (Altai-man + Releasable)
  2020-10-24   Rakudo #140 "2020.10"           (Altai-man + Releasable)
  2020-11-21   Rakudo #141 "2020.11"           (Altai-man + Releasable)
  2020-12-19   Rakudo #142 "2020.12"           (Altai-man + Releasable)
  2021-02-21   Rakudo #143 "2021.02"           (Altai-man + Releasable)
  2021-02-25   2021.02.1                       (Altai-man + Releasable)
  2021-03-20   Rakudo #144 "2021.03"           (Altai-man + Releasable)
  2021-04-24   Rakudo #145 "2021.04"           (Altai-man + Releasable)
  2021-05-22   Rakudo #146 "2021.05"           (Altai-man + Releasable)
  2021-06-19   Rakudo #147 "2021.06"           (Altai-man + Releasable)
  2021-07-23   Rakudo #148 "2021.07"           (Altai-man + Releasable)
  2021-08-21   Rakudo #149 "2021.08"           (Altai-man + Releasable)
  2021-09-18   Rakudo #150 "2021.09"           (Altai-man + Releasable)
  2021-10-23   Rakudo #151 "2021.10"           (Altai-man + Releasable)
  2021-12-23   Rakudo #152 "2021.12"           (jdv + Releasable)
  2022-02-11   Rakudo #153 "2022.02"           (jdv + Releasable)
  2022-03-20   Rakudo #154 "2022.03"           (jdv + Releasable)
  2022-04-24   Rakudo #155 "2022.04"           (jdv + Releasable)
  2022-06-05   Rakudo #156 "2022.06"           (jdv + Releasable)
  2022-07-31   Rakudo #157 "2022.07"           (jdv + Releasable)

=head1 COPYRIGHT

Copyright © 2009-2021, The Perl Foundation.

=cut

# Local Variables:
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4:
