Skip to content

Commit 0ae447c

Browse files
authored
Merge pull request #545 from vrurg/problem_solving_31
Changed release guide to reflect the latest state of things.
2 parents 2d1bd6c + 1eb5bd6 commit 0ae447c

File tree

3 files changed

+156
-18
lines changed

3 files changed

+156
-18
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
#
44
# Some implementations use this file to select which test files to run, e.g.:
55
# https://github.com/rakudo/rakudo/blob/master/docs/roast-spectest.data-versioning.md
6-
6.e-proposals
6+
6.e.PREVIEW

docs/announce/6.e.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
2+
# Announce: Perl 6.e Language Specification Release
3+
4+
_This to be filled up upon actual release_
5+
6+
## Authors
7+
8+
The following people contributed to this version of the language,
9+
including making documentation updates and contributing work to known
10+
open‑source compiler implementations. The list is ordered alphabetically.
11+
12+
If you believe your name has been erroneously omited, please contact us
13+
(https://perl6.org/irc), and we'll update the primary copy of this list.
14+
15+
_This to be filled up upon actual release_
16+
17+
## Changelog
18+
19+
This document lists changes in Perl 6.e language
20+
from Perl 6.d version. A particular implementation of the language
21+
may contain additional changes; please consult with the changelog for your
22+
implementation.
23+
24+
At the same time, a particular implementation may have had certain features
25+
already implemented during the previous versions period. This ChangeLog concerns
26+
itself with new features added to the specification on a language level and not
27+
the status of their implementation in a particular compiler.
28+
29+
### Scope / Target Audience
30+
31+
This ChangeLog is targeted towards language users, to help with preparation to use
32+
compilers supporting latest language version. Thus, it does not contain every minute
33+
change to the specification that occurred. Implementations wishing to ensure full
34+
compliance with the new version of the language specification should execute the
35+
test suite available at https://github.com/perl6/roast/ and examine any failing tests.
36+
37+
There are new features that did not exist in the previous releases. For full details about them,
38+
please consult with the language documentation on https://docs.perl6.org/
39+
Items in *Version-Controlled Changes* section are protected by version pragma and older
40+
behaviours can be obtained by explicitly using `use v6.<rev>` to request an older language
41+
version. All other changes do not conflict with the previous revisions and implementations
42+
may choose to make them available even when an earlier language version is requested.
43+
44+
#### Version-Controlled Changes
45+
46+
_Fill in this section as soon as such changes appear. The following line is a sample from 6.d announce_
47+
48+
- **[6.d]** `&await` no longer blocks *a thread* while waiting
49+
50+
_The following sections are to be filled with upcoming changes in 6.e language_
51+
52+
#### Deprecations
53+
54+
These methods are deprecated in 6.e language and will be removed in 6.f.
55+
Implementations may choose to emit deprecation warnings or to offer these
56+
methods for a longer period than 6.f release.
57+
58+
#### New Behaviors
59+
60+
#### New Parameters and Arguments
61+
62+
#### New Routines and Operators
63+
64+
#### New Types
65+
66+
#### New Variables
67+
68+
#### Clarifications of Edge Case/Coercion Behaviour
69+
70+
#### Miscellaneous

docs/release-guide.md

Lines changed: 85 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
# WORKING DRAFT: Language Release Guide
22

3-
This document contains the process for releasing the major version of the language. It uses
4-
`6.d` version as example. Adjust that reference for the version you're actually releasing.
5-
63
Many of the tasks in this document are concurrent. Please read through the entire document.
74

85
## Known Implementations of the Language
@@ -12,20 +9,61 @@ please list the main repository for those in this section:
129

1310
* Rakudo https://github.com/rakudo/rakudo
1411

15-
## Preparation
12+
## Terminology
13+
14+
The following terms are used in this document and in other related papers:
15+
16+
- _language revision_ or _revision_
17+
18+
A set of specifications defining a Perl 6 language variant. Revisions are represented by symbolic names consisting of
19+
a single letter of Latin alphabet.
20+
21+
_Note_ in this document we use `<rev>` to represent a generic revision letter.
22+
23+
- _language version_ or _version_
1624

17-
Release preparation should commence well in advance of planned release date, as there's often
18-
a large amount of work to perform.
25+
Version is a string which represents full revision identification at implementation level. It consist of `6.` prefix
26+
followed by revision letter. For example, `6.e`. In the language code and sometimes at other locations the version
27+
string might be prefixed with `v` to be unambiguously identified: `v6.e`
1928

20-
### Prep Repo
29+
- _review_
2130

22-
To keep various communications for the particular release in one place, and separate from general
23-
spec communications, a [separate repository](https://github.com/perl6/6.d-prep) is created:
31+
The process of preparing a new language release.
2432

25-
https://github.com/perl6/6.d-prep
33+
- `PREVIEW`
34+
35+
A modifier to mark language revision which is currently is in _review_ status: `e.PREVIEW`, `6.e.PREVIEW`,
36+
`v6.e.PREVIEW`.
37+
38+
## Release Status
39+
40+
_This section contains excerpts from [this discussion](https://github.com/perl6/problem-solving/issues/31)._
41+
42+
Language release process is based on the fact that changes are only allowed to a revision in _review_ status. Once a
43+
revision is released it becomes _immutable_. From this moment on the only changes allowed are fixes. From the point of
44+
view of a versioning system like git would look like the following diagram:
45+
46+
```
47+
6.<rev> tag
48+
V
49+
---[master]---O-----------------> master now defines 6.<next-rev>.PREVIEW
50+
\
51+
+---[6.<rev>-errata]
52+
```
53+
54+
## Preparation
2655

27-
Prior to release, ensure all the planned TODO items and Issues in that repository have
28-
been addressed.
56+
Release preparation should commence well in advance of planned release date, as there's often a large amount of work to
57+
perform.
58+
59+
### Communication Channels
60+
61+
All communications about language development and release process must be done via
62+
[the problem solving repo](https://github.com/perl6/problem-solving). Prior to release, ensure
63+
all the planned TODO items and Issues in that repository have been addressed.
64+
65+
_Note:_ 6.d release was using [Prep Repo](https://github.com/perl6/6.d-prep) to manage related
66+
information. It may still have useful bits worth considering.
2967

3068
### Spec Review
3169

@@ -39,14 +77,14 @@ The commits that aren't part of any release version of the spec can be removed o
3977
please coordinate with implementation authors, to avoid surprise breakage of code that uses these
4078
experimental behaviours.
4179

42-
During review, if you file any Issues regarding something that needs to be discussed/decided on
43-
before release, be sure to tag it with `6.d-review` tag, so that we know what still needs to be
44-
done before the release.
80+
During review, if you file any Issues regarding something that needs to be discussed/decided on before release, be sure
81+
to tag it with `6.<rev> review` tag (`6.e review`, for example), so that we know what still needs to be done before the
82+
release.
4583

4684
### TODO Issues
4785

48-
Ensure all open `6.d-review`-tagged Issues in the roast repo have been taken care of before release.
49-
Check with implementations authors for `6.d-review`-tagged issues in their repositories as well.
86+
Ensure all open `6.<rev> review`-tagged Issues in the roast repo have been taken care of before release.
87+
Check with implementations authors for `6.<rev> review`-tagged issues in their repositories as well.
5088
It's not required that all implementations implement all of the new functionality before the
5189
language release, but it can be very useful to be aware of the content of those Issues.
5290

@@ -91,3 +129,33 @@ ensure it works on new language version. Often, only a small part of the
91129
new language version is placed behind a version pragma, with the rest of the
92130
changes being simply clarifications to the past spec. The upgrade guide should
93131
focus on the version-pragma-protected changes.
132+
133+
## Release Steps
134+
135+
Those steps are to be done when a new language revision is stabilized and time comes for a release:
136+
137+
1. Edit `VERSION` file and remove `.PREVIEW` modifier: `6.<rev>.PREVIEW` -> `6.<rev>`
138+
1. Finalize revision announce in `docs/announce/6.<rev>.md`
139+
1. Make sure no `use v6.<rev>.PREVIEW;` pragma has been left behind in a test file.
140+
141+
Most of the time all is needed is removal of `.PREVIEW` modifier from the version string. Be careful as to make sure
142+
the pragma is not an essential part of the test.
143+
144+
1. Place version tag on the tip of `master` branch.
145+
146+
```
147+
$ git tag 6.<rev>
148+
```
149+
1. Create revision `-errata` branch.
150+
151+
```
152+
$ git branch 6.<rev>-errata
153+
```
154+
155+
1. Commit changes
156+
157+
### Starting A New Release.
158+
159+
1. Edit `VERSION` file and change the version to `6.<rev>.PREVIEW`
160+
1. Create revision announce in `docs/announce/6.<rev>.md`
161+
1. Commit changes

0 commit comments

Comments
 (0)