=head1 release_guide.pod - guide to NQP releases

NQP's development release cycle is intimately tied to Rakudo's release
cycle.  There is no separate, independent release cycle for NQP.

Parrot releases the third Tuesday of each month; Rakudo will generally
issue its own development release soon after the Parrot release (Usually
within a few days).  To accomplish this, NQP must be tagged for release
immediately prior to the Rakudo release.

=head2 Steps to create an NQP release

=over 4

=item 1.

I<Note: This step has changed starting in 2012.07.>

Check to see if F<tools/build/PARROT_REVISION> needs to be
bumped to a later Parrot release.  If PARROT_REVISION already
contains a Parrot release tag (e.g., C<RELEASE_3_9_0>) then
it does not need to be changed.  If PARROT_REVISION refers to 
an interim commit, as in C<RELEASE_4_6_0-27-gda9adfa>, then
update PARROT_REVISION to contain the tag corresponding to
Parrot's monthly release.

To see a list of Parrot release tags, use C<git tag> on an
up-to-date Parrot repository.

Once F<tools/build/PARROT_REVISION> has been set to a Parrot 
release, it must not be changed (except to another Parrot
release) until after the Rakudo release.

=item 2.

Change the C<VERSION> file in nqp:

  $ echo '2012.12' > VERSION
  $ git commit -m 'bump VERSION to 2012.12' VERSION
  $ git push

=item 3.

Make sure everything compiles and runs from a known clean state.
This step is especially important if PARROT_REVISION was changed
in step 1 above.

  $ make realclean
  $ perl Configure.pl --gen-parrot
  $ make
  $ make test

Resolve any problems that may still exist.  

=item 4.

Create a release tarball (needed for the Rakudo Star release)
by entering C<make release VERSION=YYYY.MM>, where YYYY.MM is
the month for which the release is being made.  This will
create a tarball file named C<nqp-YYYY.MM.tar.gz>.

=item 5.

Unpack the tar file into another area, and test that it
builds and runs properly using the same process in step 3
above.  If there are any problems, fix them and go back to
step 3.

=item 6.

Tag NQP by its release month ("YYYY.MM")

  $ git tag -a -m"tag release YYYY.MM" YYYY.MM    # e.g., 2012.12
  $ git push --tags

=item 7.

Upload the release tarball to L<http://rakudo.org/downloads/rakudo>:

  $ scp nqp-2013.12.tar.gz rakudo@rakudo.org:public_html/downloads/nqp/

If you do not have permissions for that, ask one of (pmichaud, jnthn,
masak, tadzik, moritz, PerlJam) on #perl6 to do it for you.

=item 8.

If creating the NQP release as part of a Rakudo release,
continue with the Rakudo release process.

=back
