| # IREE Releasing |
| |
| This file documents the extant release process that IREE uses. This process |
| and the automation (such as it is) has grown over many years and is due for |
| a refresh. However, in the interests of documenting what exists, we attempt |
| to do so here. |
| |
| ## Nightly Core Releases |
| |
| IREE development is primarily driven via automated nightly release snapshots. |
| These are scheduled automatically each day by the |
| `schedule_candidate_release.yml` workflow, which selects a green commit from |
| main (for non optional CI tasks), created a tag of the format |
| `iree-{X.Y.ZrcYYYYMMDD}` and schedules automation to populate the release. |
| |
| The `build_package.yml` workflow then runs jobs to do builds for all |
| platforms and packages, finally triggering the |
| `validate_and_publish_release.yml` workflow. |
| |
| Release artifacts are uploaded as a GitHub |
| [pre release](https://github.com/iree-org/iree/releases) and an index of files |
| is updated by periodic automation at https://iree.dev/pip-release-links.html. |
| |
| Some debugging notes for this process are available here: |
| https://iree.dev/developers/debugging/releases/. |
| |
| ### Nightly Release Packages |
| |
| A number of packages are produced automatically: |
| |
| * `iree-dist-*.tar.xz` (manylinux x86_64 and aarch64): Install image of the |
| binaries and development assets needed to use or depend on the C/C++ parts |
| of the project. |
| * `iree-base-compiler`: Binary Python wheels |
| * `iree-base-runtime`: Binary Python wheels |
| * `iree-tools-tf` and `iree-tools-tflite`: Pure Python wheels |
| |
| #### Linux Builds |
| |
| Binary Linux packages are built using a custom `manylinux` based Docker image |
| hosted here: |
| https://github.com/iree-org/base-docker-images/pkgs/container/manylinux_x86_64 |
| using isolated self-hosted runners (only used for building checked in code) of |
| sufficient size for building large components and GitHub managed runners for |
| smaller components. The project aims to target all non-EOL Python versions with |
| Linux builds on x86_64 and aarch64. |
| |
| #### Windows Builds |
| |
| Windows builds are built using GitHub-hosted runners. Due to the cost, the |
| project aims to target the most recent version of Python only while building |
| version N-1 for the first year of the lifecycle of the next version. |
| |
| Only the Python `iree-base-compiler` and `iree-base-runtime` packages are |
| built for Windows. |
| |
| The release is published even if the Windows build fails. When this happens, it |
| is fixed forward for the next snapshot. |
| |
| #### MacOS Builds |
| |
| MacOS builds are performed using GitHub-hosted runners. Due to the cost, the |
| project aims to target the most recent version of Python only while building |
| version N-1 for the first year of the lifecycle of the next version. |
| |
| Only the Python `iree-base-compiler` and `iree-base-runtime` packages are |
| built for MacOS. |
| |
| The release is published even if the MacOS build fails. When this happens, it |
| is fixed forward for the next snapshot. |
| |
| ## Retention |
| |
| The project will keep pre-release tagged releases on its releases page for a |
| minimum of 6 months. Releases older than this can be purged. |
| |
| ## Distribution to Package Registries |
| |
| The following package registry projects are managed as part of the IREE |
| release process: |
| |
| ### PyPI |
| |
| * https://pypi.org/project/iree-base-compiler/ |
| * https://pypi.org/project/iree-base-runtime/ |
| * https://pypi.org/project/iree-turbine/ |
| * https://pypi.org/project/iree-tools-tf/ |
| * https://pypi.org/project/iree-tools-tflite/ |
| |
| Deprecated projects no longer updated: |
| |
| * https://pypi.org/project/iree-compiler/ (replaced by iree-base-compiler) |
| * https://pypi.org/project/iree-runtime/ (replaced by iree-base-runtime) |
| * https://pypi.org/project/iree-runtime-instrumented/ (functionality is |
| included in the main iree-runtime package) |
| * https://pypi.org/project/iree-tools-xla/ (functionality is no longer needed) |
| |
| |
| ## Build Promotion |
| |
| There are presently two build promotion processes documented: |
| |
| * Releasing IREE core packages: |
| https://iree.dev/developers/general/release-management/ |
| * Releasing iree-turbine packages: |
| https://github.com/iree-org/iree-turbine/blob/main/docs/releasing.md |