This document simply outlines the release process:
Ensure you are running on the oldest supported Erlang version
-devextension from versions (see below for all files)
Ensure CHANGELOG is updated and add current date
Commit changes above with title "Release vVERSION" and generate new tag
make clean testto ensure all tests pass from scratch and the CI is green
Recompile an existing project (for example, Ecto) to ensure manifests can be upgraded
Push branch and the new tag
If a new
vMAJOR.MINOR, create a new branch "vMAJOR.MINOR" and set
CANONICAL=in Makefile before building docs
Publish new zips with
make zips, upload
Docs.zipto GitHub Releases
Add the release to
After a new
vMAJOR.MINOR, move back to master, bump versions, start new CHANGELOG, add
-devback and commit "Start vMAJOR.MINOR+1"
Places where version is mentioned
- src/elixir.app.src (not lib/elixir/src/elixir.app.src)
Elixir deprecations happens in 3 steps:
The feature is soft-deprecated. It means both CHANGELOG and documentation must list the feature as deprecated but no warning is effectively emitted by running the code. There is no requirement to soft-deprecate a feature.
The feature is effectively deprecated by emitting warnings on usage. In order to deprecate a feature, the proposed alternative MUST exist for AT LEAST two versions. For example,
Enum.uniq/2was soft-deprecated in favor of
Enum.uniq_by/2in Elixir v1.1. This means a deprecation warning may only be emitted by Elixir v1.3 or later.
The feature is removed. This can only happen on major releases. This means deprecated features in Elixir v1.x shall only be removed by Elixir v2.x.