=encoding utf8

=head1 release_guide.pod - guide to Rakudo releases

Rakudo’s development release cycle is monthly.

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.

  2025-01-25   Rakudo #179 (Coke)

(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/main/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 upcoming ChangeLog addition is kept on the
wiki so that people can easily do minor corrections, but for the release it
has to be added to the top of 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 *

Call the contributors script 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 as well as having
the doc and doc-website repos nextdoor).  The script will say if a repo is
missing.  Please check the result manually for duplicates and other errors.

=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
    git commit docs

Ensure dates of current and next releases are correct.  Note that there seems to
be a bug where the next release date in the generated announce is wrong but the
release # is correct.  Remember to add the ChangeLog material from the wiki.
The helper script is supposed to do that using docs/ChangeLog but there's a bug
where it sucks in the entire Changelog if this release's entries are there.
That's why the changes to the Changelog are in the next step - this way the
script will not read in any of ChangeLog.

=item *

Add the ChangeLog material from the wiki to the top of C<docs/ChangeLog>.

=item *

Create the release commit (remember to look at previous for the special format)
and push the release branch up.  This has to be done before the ake commands run
as they update the remote.

=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=main

This means that:

- Run up to 24 test jobs in parallel but setting it to however many "procs" you
  have seems to work fine.

- 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<main>

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=main ake clean
    TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=main 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=main 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=main 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=main ake rakudo-build
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=main ake rakudo-test
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=main ake rakudo-inline-perl5
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=main 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=main 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.  You can look at
the resulting artifact unpacked in the C<temp/rakudo-test/$rel-branch-name>
directory, run C<./install/bin/raku --version> and ensure mentioned version is
correct.  Note that rakudo-post-test deletes the rakudo-test dir so must check
version beforehand.

  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=main ake rakudo-archive
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=main ake rakudo-extract
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=main ake rakudo-post-build
  (check version aka raku --version)
  TEST_JOBS=24 VERSION=2021.10 VERSION_MOAR=2021.10 BRANCH_ROAST=master BRANCH_RAKUDO=release-2021.10 BRANCH_NQP=main ake rakudo-post-test

=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=main 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 222 nqp/nqp-2023.12.tar.gz*  rakudo.org@trinity.raku.org:/var/www/htdocs/rakudo.org/binaries/nqp/
scp -P 222 rakudo/rakudo-2023.12.tar.gz*  rakudo.org@trinity.raku.org:/var/www/htdocs/rakudo.org/binaries/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 or coleman or andinus or any other "raku infra"
person on one of Raku IRC channels and ask how to proceed.

=item *

Create PR and merge on remote (github) because ake puts commits there (that
wouldn't be in your local).

=item *

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

Note that the artifacts upload is broken so you have to do it manually.

Copy the announce into the github release description field.

See previous releases for any details.

=item 9.

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

NOTE:  I, jdv, have never done this step.  Instead, I just tell patrickb and
El_Che on IRC that the source release is done and they build various downstream
release artifacts.

=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.

Run this to get rakudo.org to pickup the changes:

ssh -p 222 rakudo.org@trinity.raku.org 'cd ~/rakudo.org  && git pull && doas /usr/sbin/rcctl restart rakudo'

=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)
  2022-12-04   Rakudo #158 "2022.12"           (jdv + Releasable)
  2023-02-22   Rakudo #159 "2023.02"           (jdv)
  2023-04-21   Rakudo #160 "2023.04"           (jdv + Releasable)
  2023-05-31   Rakudo #161 "2023.05"           (jdv)
  2023-06-26   Rakudo #162 "2023.06"           (jdv)
  2023-08-21   Rakudo #163 "2023.08"           (jdv)
  2023-09-21   Rakudo #164 "2023.09"           (jdv)
  2023-10-19   Rakudo #165 "2023.10"           (jdv)
  2023-11-21   Rakudo #166 "2023.11"           (jdv)
  2023-12-21   Rakudo #167 "2023.12"           (jdv)
  2024-01-26   Rakudo #168 "2024.01"           (jdv)
  2024-02-29   Rakudo #169 "2024.02"           (jdv)
  2024-03-28   Rakudo #170 "2024.03"           (jdv)
  2024-04-25   Rakudo #171 "2024.04"           (jdv)
  2024-05-30   Rakudo #172 "2024.05"           (jdv)
  2024-06-27   Rakudo #173 "2024.06"           (jdv)
  2024-07-25   Rakudo #174 "2024.07"           (jdv)
  2024-08-29   Rakudo #175 "2024.08"           (jdv)
  2024-09-26   Rakudo #176 "2024.09"           (jdv)
  2024-10-24   Rakudo #177 "2024.10"           (jdv)
  2024-12-14   Rakudo #178 "2024.12"           (jdv)

=head1 COPYRIGHT

Copyright © 2009-2022, The Raku Foundation.

=cut

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