]> git.proxmox.com Git - rustc.git/blame - src/doc/trpl/release-channels.md
Imported Upstream version 1.3.0+dfsg1
[rustc.git] / src / doc / trpl / release-channels.md
CommitLineData
bd371182
AL
1% Release Channels
2
3The Rust project uses a concept called ‘release channels’ to manage releases.
4It’s important to understand this process to choose which version of Rust
5your project should use.
6
7# Overview
8
9There are three channels for Rust releases:
10
11* Nightly
12* Beta
13* Stable
14
15New nightly releases are created once a day. Every six weeks, the latest
16nightly release is promoted to ‘Beta’. At that point, it will only receive
17patches to fix serious errors. Six weeks later, the beta is promoted to
18‘Stable’, and becomes the next release of `1.x`.
19
20This process happens in parallel. So every six weeks, on the same day,
21nightly goes to beta, beta goes to stable. When `1.x` is released, at
22the same time, `1.(x + 1)-beta` is released, and the nightly becomes the
23first version of `1.(x + 2)-nightly`.
24
25# Choosing a version
26
27Generally speaking, unless you have a specific reason, you should be using the
28stable release channel. These releases are intended for a general audience.
29
30However, depending on your interest in Rust, you may choose to use nightly
31instead. The basic tradeoff is this: in the nightly channel, you can use
32unstable, new Rust features. However, unstable features are subject to change,
33and so any new nightly release may break your code. If you use the stable
34release, you cannot use experimental features, but the next release of Rust
35will not cause significant issues through breaking changes.
36
37# Helping the ecosystem through CI
38
39What about beta? We encourage all Rust users who use the stable release channel
40to also test against the beta channel in their continuous integration systems.
41This will help alert the team in case there’s an accidental regression.
42
43Additionally, testing against nightly can catch regressions even sooner, and so
44if you don’t mind a third build, we’d appreciate testing against all channels.
45
c1a9b12d
SL
46As an example, many Rust programmers use [Travis](https://travis-ci.org/) to
47test their crates, which is free for open source projects. Travis [supports
48Rust directly][travis], and you can use a `.travis.yml` file like this to
49test on all channels:
50
51```yaml
52language: rust
53rust:
54 - nightly
55 - beta
56 - stable
57
58matrix:
59 allow_failures:
60 - rust: nightly
61```
62
63[travis]: http://docs.travis-ci.com/user/languages/rust/
64
65With this configuration, Travis will test all three channels, but if something
66breaks on nightly, it won’t fail your build. A similar configuration is
67recommended for any CI system, check the documentation of the one you’re
68using for more details.