# Releasing xtensor

## Releasing a new version

From the master branch of xtensor

- Make sure that you are in sync with the master branch of the upstream remote.

- Update the changelog.

- In file `xtensor_config.hpp`, set the macros for `XTENSOR_VERSION_MAJOR`, `XTENSOR_VERSION_MINOR` and `XTENSOR_VERSION_PATCH` to the desired values.

- In file `CMakeLists.txt`, update the version of the dependencies and the corresponding variables, e.g. `xtl_REQUIRED_VERSION`.

- In file `environment.yml`, update the version of the dependencies including `xtensor`.

- In file `README.md`, update the dependencies table.

- Stage the changes (`git add`), commit the changes (`git commit`) and add a tag of the form `Major.minor.patch`. It is important to not add any other content to the tag name.

- Push the new commit and tag to the main repository. (`git push`, and `git push --tags`)

## Updating the conda-forge recipe

xtensor has been packaged for the conda package manager. Once the new tag has been pushed on GitHub, edit the conda-forge recipe for xtensor in the following fashion:

- Update the version number to the new `Major.minor.patch`.

- Set the build number to `0`.

- Update the hash of the source tarball.

- Check for the versions of the dependencies.

- Optionally, rerender the conda-forge feedstock.

## Updating the stable branch

Once the conda-forge package has been updated, update the `stable` branch to the newly added tag.