Releases: AcademySoftwareFoundation/rez
3.3.0 (2025-10-17)
This release is a minor update that includes several bug fixes and improvements. The main highlights are support for
python 3.12 and 3.13 (finally), a new way to register plugins using python entry points, new settings to control the package payload caching disk usage, and an improved plugins documentation. It also contains a lot of various bug fixes that should benifit a lot of users.
Note that this release also drops support for Python 3.7. We are aware that this might affect some users, but we believe that the benefits of dropping Python 3.7 outweigh the potential drawbacks. Maintaining support for 3.7 was becoming impossible as the ecosystem is moving forward with future versions and leaving behind older versions.
Features
- Add wildcard support on
rez-testcommand #1870 (@Ni-g-3l) - Add ability to change the
executable_fullpathsetting for the gitbash shell plugin #1938 (@vanridal) - Use
$REZ_LOGGING_CONFin package payload cache daemon to allow configuring the logger via environment variable #1969 (@BryceGattis) - Allow registring plugins using entry points #1991 (@Ni-g-3l)
- Add new settings to control the package payload caching disk usage #2023 (@sanikache)
- Add support for Python 3.12 and 3.13 and drop support for 3.7 #1950 (@instinct-vfx, @maxnbk)
Fixes
- Fix
rez.system.is_production_rez_installto handle forward slash paths under windows #1899 (@michalfratczak) - Fix race condition in
FileSystemPackageRepositorydirectory creation, modernize usage ofos.makedirs#1913 (@nrusch) - PowerShell: Fix assumption that
$LASTEXITCODEis always defined #1962 (@nrusch) - Improve package repository case insensitive error handling #1974 (@BryceGattis)
- Fix type of PackageOrderList in
ResolvedContext.from_dict#1985 (@vanridal) - Fix calling rez-test with empty test name to run all tests #1988 (@Ni-g-3l)
- Fix an AttributeError in
rez-pipcaused by missing package name normalization #1950 (@JeanChristopheMorinPerso)
Documentation
- Add security policy #1883 (@maxnbk)
- Add warning about rez bind to docs #1922 (@instinct-vfx)
- Mention
.rezconfig.pyin docs #1981 (@JeanChristopheMorinPerso) - Improved plugins docuemntation #1991 (@Ni-g-3l)
Miscellaneous
- Drop support for Python 3.7 #1950 (@instinct-vfx, @maxnbk)
- Run code coverage on rezplugins folder #1975 (@BryceGattis)
- Update vendored dependencies part 1 #1944 (@maxnbk)
- Update vendored dependencies part 2 #2022 (@maxnbk)
3.2.1 (2024-10-27)
Fixes
-
Fix key error on getting the "testing" key on older contexts #1863 (@JeanChristopheMorinPerso)
This will fix issues where contexts created from rez less than 3.2.0 would fail to be loaded in 3.2+.
3.2.0 (2024-10-20)
This release introduces a long awaited and requested feature: the ability to synchronously cache
package payloads. This behaviour can be controlled centrally using the new package_cache_async
setting in your rezconfig files. The default value is True, which means that as before, caches
will be synced asynchrously. rez-env also gained a new --pkg-cache-mode to control the
caching behaviour on a per case basis.
Other note worthy additions are the new testing object that can be used to test if rez-test is currently running from withing commands functions and early bound functions. Additionally, a new setting default_build_process
was added to set the default build process to be used by rez-build.
Thanks to everybody who contributed and made all these features, bugfixes and improvements possible!
Features
- Add ability to cache package payloads synchronously #1679 #1853 (@isohedronpipeline, @Pixel-Minions)
- Add new
default_build_processsetting to set the default build process #1724 (@predat) - Add new
testingobject to check if rez-test is running #1740 (@fabal, @nca45) - Convert Windows registry queries to use
winregmodule. Expect some speed improvements on Windows #1780 (@nrusch)
Fixes
- Fix shell detection code to handle a case where the parent PID is zero #1735 (@JeanChristopheMorinPerso)
- Don't expand tilde in
REZ_USED_IMPLICIT_PACKAGESandREZ_USED_REQUESTenvironment variables #1760 (@cfxegbert) - Fix incorrect string operations on bytes output of 'ps' subprocess in shell detecton code #1765 (@parikshittiwari740)
- Fix missing path in GitBash warning message #1775 (@brycegbrazen)
- Make Powershell aliases exit with correct exit code #1778 (@brycegbrazen)
- Fix TypeError when running get_rpaths in
rez.utils.elfmodule #1798 (@ruzette) - Fix
package_cache_asyncmissing fromResolvedContextdict round-trip #1810 (@nrusch) - Move winreg import to local import to avoid import errors on non-windows systems #1846 (@JeanChristopheMorinPerso)
- Fix rez-test commands defined as list that result in an empty command #1850 (@JeanChristopheMorinPerso)
- Adjust python requirement of rez bound package to
python-3.7+<3.12"#1848 (@JeanChristopheMorinPerso)
Documentation
- Add adopters list #1720 (@maxnbk)
- Various updates to contributing.md for support, legal, versioning #1721 (@maxnbk)
- Various updates to release.md for release cadence and versioning used #1722 (@maxnbk)
- Add package orderers documentation #1737 (@BryceGattis)
Miscellaneous
- Fix formatting sonarcloud compliance issue #1697 (@BryceGattis)
- Add argcomplete vendored version to vendor README.md #1742 (@BryceGattis)
- Add date to vendored pika #1743 (@BryceGattis)
- Migrate plugin type settings to plugin rez configs #1746 (@BryceGattis)
- Remove Python 2 vendored pyyaml library #1845 (@maxnbk)
Deprecated
- The
rez.package_cache.PackageCache.add_variants_asyncmethod. Use theadd_variantsmethod instead.
3.1.1 (2024-04-14)
This is a small patch release to introduce a couple small fixes related to filesystem links, and an issue affecting weak references which was introduced in 3.1.0. Some documentation updates and configuration consistency details are also included.
Thank you to everybody that contributed to this release!
Fixes
- Add symlink locking for filesystems that do not support hardlinks #1708 (@cfxegbert)
- Fix error caused by weakly referenced package not specifying version #1712 (@loonghao)
Documentation
- Add plugin documentation page #1703 (@BryceGattis)
- Make gh-rez external link dynamic #1707 (@BryceGattis)
Miscellaneous
- Convert all plugin rezconfig to rezconfig.py #1692 (@brycegbrazen)
3.1.0 (2024-03-30)
This is a small release that adds two new features to the installer (install.py) and fixes two bugs. We also got a lot of contributions to remove some of the Python 2 leftovers in the code base. Lastly, we have a new documentation page dedicated to releasing packages, and some sections of the documentation were improved/clarified.
Thank you to everybody that contributed to this release!
Features
- Add support for
virtualenvin the installer #1645 (@Pixel-Minions) - Add
-e/--editableflag to the installer to create an editable install #1672 (@JeanChristopheMorinPerso)
Fixes
- Add retry mechanism when renaming folders on Windows #1666 (@loonghao)
- Apply package orderers on variants #1684 (@isohedronpipeline and @pmolodo)
Documentation
- Remove the note about Python 2.7 compatibility from the docs #1644 (@vergeev)
- Add clear information on how to contact maintainers #1659 (@JeanChristopheMorinPerso)
- Installation instructions now include how to download rez #1660 (@JeanChristopheMorinPerso)
- Add development environment docs to CONTRIBUTING.md #1633 (@BryceGattis)
- Improve clarity and expliciteness of
rez-env --commandflag help #1682 (@BryceGattis) - Add releasing packages documentation #1689 (@BryceGattis)
- Improve clarify of early binding functions documentation #1677 (@BryceGattis)
Miscellaneous
- Remove Python2-related
__future__imports #1640 (@vergeev) - Replace usages of
rez.vendor.enumwith the built-in enum module #1649 (@predat) - Remove
rez.backport#1634 (@BryceGattis) - Remove
rez.utils.json#1673 (@BryceGattis) - Remove
rez.utils.py23and cleanup more python 2.7 leftovers #1678 (@wandth)
3.0.0 (2024-02-08)
This release marks a big turning point for rez by completely dropping support for Python 2.
In 2.114.0, it was still possible to install rez with Python 2 using pip. This functionality has
now been removed. As of now, rez will support Python 3.7+. As of now, we test against 3.7, 3.8, 3.9,
3.10 and 3.11.
This was a tough decision to make considering that we still have users relying on Python 2, but
it was becoming more and more complicated and time-consuming to maintain support for Python 2.
Thank you to everyone who's put a lot of effort into supporting Python 2 for that long. Without
you, it wouldn't have been possible.
As part of the effort to remove support for Python 2, we also refreshed our CI a bit:
- The GitHub Action workflows are now simplified and unified. We now have one workflow to
run all tests for all platforms instead of four. - We also got rid of the Windows containers. With these changes, our Windows tests are now
as fast as Linux and macOS tests, it's easier to see test results and we can also more
easily test all support python versions. - Running the tests directly on the GH hosted runners instead of containers,
we discovered some big flaws in how our tests were set up. These issues are now
fixed and our tests are now much more portable and don't rely on a centrally installed
Python orPATHEXTto be set. Big thanks to @Dennis-Lehmann
and @MrLixm for helping us with debugging our Window tests!
The CI refresh is not user-facing, but it took us a significant amount of effort
and time to do and we hope that it will help increase the quality of rez and make
for a better contributor experience. This is why we mention these in the release notes.
Features
- It is now possible to configure the execution policy used when starting PowerShell (and pwsh) shells
by setting theexecution_policysetting in the shell's config file. This should hopefully help to
smooth the transition from the cmd shell to powershell/pwsh. #1505 (@herronelou) - Built-in bind modules can now be overridden by adding your custom implementations to
bind_module_path. #1557 (@Pantsworth)
Fixes
- Fix infinite loop in the dot graph generation when
--fail-graphis used and there are indirect cycles. #1620 (@Pantsworth)
Removed
As communicated in the 2.114.0 release notes, we've followed through on the removal of certain things.
-
Python 2: It is now impossible to install and use rez with Python 2.
-
Modules
rez.vendor.version: Userez.versioninstead.rez.build_process_: Userez.build_processinstead.rez.package_maker__: Userez.package_makerinstead.rez.package_resources_: Userez.package_resourcesinstead.rez.packages_: Userez.packagesinstead.
-
Configuration settings
rxt_as_yaml: No replacement.warn_commands2: No replacement. This was a no-op.error_commands2: No replacement. This was a no-op.rez_1_cmake_variables: You can use theREZ_BUILD_TYPECMake variable instead ofCENTRAL.
-
CLI
- rez-pip: The
--pip-versionis removed. - rez-search: The
--sortis removed.
- rez-pip: The
-
API
- The
isolatekeyword argument of therez.rex.RexExecutor.execute_codemethod is now officially removed.
Instead ofexecutor.execute_code(..., isolate=True), usewith executor.reset_globals(): executor.execute_code(...)
- The
-
Build system:
CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECTand_ECLIPSE_VERSIONwere removed from the list of default variables passed to CMake. #1623 (@JeanChristopheMorinPerso)- rez will no longer print a custom error message if no build system is detected or set and an old "bez"
rezbuild.pyis detected. #1624 (@JeanChristopheMorinPerso)
Changed
Change of default values as announced in 2.114.0:
rez_1_environment_variables: Now disabled by default.disable_rez_1_compatibility: Now enabled by default.
New unannounced changes:
- The default shell on Windows is now PowerShell unless you configure
default_shell
to a different value. The previous default wascmdand was causing a lot of problems.
Docs
The effort to improve and add content to our docs continues.
- New documentation dedicated to caching.
This is only the beginning and only contains information on package payload caching and
memcached. We hope to add more content in the future. #1615 (@brycegbrazen)
- The note about SemVer in the docs
has been clarified. While we encourage SemVer like versioning, rez doesn't know
what SemVer is. This has been a source of confusion in the past. #1614 (@brycegbrazen)
2.114.1 (2023-12-09)
Merged pull requests:
- Fix exception when deprecated settings appear in a user config #1595 (JeanChristopheMorinPerso)
- Add cross reference for package_cache_during_build in docs #1598 (brycegbrazen)
2.114.0 (2023-11-23)
This is mainly a maintenance release. It will probably the last release in the 2.x series. We might issue a 2.115.0, but this isn't guaranteed.
Rez installations now only support Python 3.7+. It is important to note that the API
can still be used with Python 2.7+ but this will be dropped in 3.0.0.
Features
-
New environment variable
REZ_LOG_DEPRECATION_WARNINGSthat will force
all deprecation warnings to be printed, ignoringPYTHONWARNINGSand custom
warning filters. Note that enabling this will forcefully load every
configuration file instead of loading them lazilly. -
This PR adds a new config variable called
error_on_missing_variant_requiresthat controls what happens when
a variant lists missing packages in its requirements.By default, it is True and will continue the existing behaviour of erroring when it encounters
a variant with missing packages in its list of requirements. This means that if the first variant
encounters a missing package in its request, it will not continue even if the second variant can resolve.If it is disabled, it will print to stderr, treat the current phase as failed and continue on to the next phase.
If all variants fail, it will be the same as if no variants could resolve.
Deprecations
We decided to deprecated some things that have been "deprecated" for a while but were never
officially marked as deprecated. We have prepared
a guide
to help you navigate these deprecations.
What follows is everything that is marked as deprecated with information on when
removal will happen or when defaults will change.
- Configuration settings:
- disable_rez_1_compatibility:
Will be removed in a yet to be determined future release. - debug_old_commands:
Will be removed in 3.0.0. This setting is currently a no-op. - warn_old_commands:
Will be removed in a yet to be determined future release. - error_old_commands:
Will be removed in a yet to be determined future release. - warn_commands2:
Will be removed in 3.0.0. This setting is currently a no-op. - error_commands2:
Will be removed in 3.0.0. This setting is currently a no-op. - rez_1_cmake_variables:
Will be removed in 3.0.0. - rez_1_environment_variables:
Will be removed in a yet to be determined future release. - rxt_as_yaml:
Will be removed in 3.0.0.
- disable_rez_1_compatibility:
- Modules:
rez.vendor.version. Userez.versioninstead. Will be removed in 3.0.0.rez.packages_maker__. Userez.packages_makerinstead. Will be removed in 3.0.0.rez.package_resources_. Userez.package_resourcesinstead. Will be removed in 3.0.0.rez.packages_. Userez.packagesinstead. Will be removed in 3.0.0.
- CLI:
- rez-pip: The
--pip-versionargument is deprecated. Will be removed in 3.0.0. - rez-search: The
--sortargument is deprecated and has been a no-op for a while now. Will be removed in 3.0.0.
- rez-pip: The
- API:
- The
isolatekeyword argument of therez.rex.RexExecutor.execute_codemethod is now officially deprecated and will be removed in 3.0.0.
Instead ofexecutor.execute_code(..., isolate=True), usewith executor.reset_globals(): executor.execute_code(...)
- The
- Python: rez 3.0.0 will completely drop support for installing and using the rez API with Python 2.
Change of default values due to deprecations
Some default values have changed:
- rez_1_cmake_variables
is now disabled by default.
Some default values will change in 3.0.0:
- disable_rez_1_compatibility will become enabled by default.
- rez_1_environment_variables will become disabled by default.
2.113.0 (2023-09-11)
Notes
Numerous maintenance updates to CI, TSC notes, docs, ownership, badges, and licensing not featured below.
Expect #1469 to merge in 2.114.0, which will drop the ability to install rez with versions of python below 3.7.
Merged pull requests:
- powershell: fix prepend for new variables and fix unsetenv for non-existing variables #1477 (maxnbk)
- @include: Only include modules from the current package #1485 (SitiSchu)
- Colorize: Granularly wrap each given stream with Colorama #1506 (herronelou)
- Fix 'gbk' codec can't encode character '\u200b' when resolve context #1508 (loonghao)
- Allow user to pass extra arguments to underlying rez test command (REP-001 part 3). #1523 (bhawkyard1)
- Filter out empty extensions when parsing PATHEXT on Windows #1528 (herronelou)
2.112.0 (2022-11-15)
Notes
First Official AcademySoftwareFoundation rez release!
Merged pull requests:
- Fix 1255-possible-regression-appendenv-in-powershell-fails-if-env-variable-does-not-exist-already #1285 (instinct-vfx)
- fix: add platform/arch to variant for rez-pip packages with entry point scripts #1287 (bpabel)
- working with embedded python scanning rezplugins #1359 (loonghao)
- Replace nerdvegas with aswf #1368 (maxnbk)
- fix asserts causing flake8 linter failures #1369 (maxnbk)
- Edit rezconfig docstrings for package_filter to reflect python form rather than YAML #1377 (herronelou)
- Add REZ_USED_LOCAL_RESOLVE context environment variable #1378 (JoshkVFX)
- Document .ignore pkg repo functionality #1385 (jasoncscott)
- Clarify when the commands block is executed during rez-build #1391 (jasoncscott)