Commit c8d93a4
authored
[deps] Upgrade Bazel/environment dependencies and require Python 3.12 (#425)
## Description
Upgrade EnvPool's Bazel dependencies, Python packages, and official
environment oracles together. All physics families now share the
published MuJoCo 3.11.0 baseline; Python 3.11 support is removed,
leaving Python 3.12–3.14. Compared with `main`, 48 existing
development-lock packages and 16 existing release-lock packages are
upgraded.
| Dependency / oracle | Previous | New |
| --- | ---: | ---: |
| EnvPool release | 1.2.5 | 1.2.6 |
| MuJoCo | 3.6.0 | 3.11.0 |
| MuJoCo MJX | 3.6.0 | 3.11.0 |
| dm-control | 1.0.38 | 1.0.44 |
| Arcade Learning Environment | 0.11.2 | 0.12.1 |
| Gymnasium | 1.2.3 | 1.3.0 |
| highway-env | 1.10.2 | 1.12.1 |
| MiniGrid | 3.0.0 | 3.1.0 |
| MyoSuite | 2.11.6 | 2.12.2 |
| MetaWorld | 3.0.0 | 3.1.1 |
| Jumanji | 1.1.1 | 1.1.2 |
| rules_python | 1.6.3 | 2.3.2 |
| pybind11 | 3.0.2 | 3.1.0 |
| protobuf | 34.1 | 36.0 |
| OpenCV | 4.13.0 | 4.14.0 |
| FreeType | 2.13.3 | 2.14.3 |
| PyTorch | 2.10.0 | 2.13.0 |
| setuptools | 70.3.0 | 84.0.0 |
## Motivation and Context
The original dependency refresh deliberately excluded environment
oracles. Updating those packages together exposes compatibility changes
that must be handled in the native implementations and existing
official-oracle suites:
- Remove Python 3.11 from package metadata, Bazel toolchains/hubs,
release matrices, Docker builds, Ruff, and documentation. MuJoCo 3.11's
C++ atomics require a macOS 11 minimum deployment target.
- Extend Highway's native implementation to all 31 upstream environment
IDs, including the newly registered generic merge/roundabout and
multi-agent/continuous intersection variants. Preserve existing
full-registry deterministic, step-by-step, and render alignment; only
`merge-generic-v1` on Linux x86_64 needs a single `float64` epsilon
(`2.22e-16`) for one near-zero lateral observation, while all other
scenarios, rewards, and renders remain bitwise.
- Implement Gymnasium's native Taxi-v4 rainy transitions, fickle
passengers, `info:prob`, and action masks while retaining Taxi-v3
compatibility. Switch the Gymnasium rendering dependency from `pygame`
to `pygame-ce`.
- Add MiniGrid's new `MultiRoom-N4-S5-v1`, cover all 82 upstream
MiniGrid IDs, update the existing WFC oracle shims for renamed registry
entry points, and remove redundant hard-coded registry counts.
- Migrate Jumanji's Connector to canonical `Connector-v3` while
retaining the `Connector-v2` compatibility alias and preserving its
long-rollout/render oracle checks.
- Upgrade MyoSuite's source-based isolated oracle and all 398 native
tasks to the same MuJoCo 3.11 engine. Keep its isolated oracle on
upstream-compatible Gymnasium 1.2.3, add the newly required `imageio`
dependency, and replace removed simulation accessors with MuJoCo's
current `mj_model`/`mj_data` APIs.
- Upgrade MetaWorld's source-backed oracle, fix the changed wall-button
`tcp_closed` reward behavior, and match official NumPy `float32` action
scaling before moving the mocap body. The official Linux MuJoCo wheel is
compiled with Clang 20 while the native engine uses GCC 13; their
contact solver diverges only on `door-lock-v3` and `door-unlock-v3`, so
measured 128-step observation residuals are scoped to those two Linux
x86_64 tasks only (`5e-6` / `1.5e-5`), with `2e-6` limited to their
reward and the two affected continuous reward-info fields. All other
tasks, platforms, binary info, and render assertions retain their
existing thresholds.
- Reuse a single Bazel-built MuJoCo library for macOS/Windows official
contact-heavy oracles. Match NumPy's non-fused velocity arithmetic in
native Franka Kitchen, eliminating a demonstrated 280-step contact
bifurcation without widening tolerances.
- Include MuJoCo 3.11's OBJ/STL decoder plugins in its shared library
and delete obsolete Windows plugin-entry wrappers and the upstreamed
MyoSuite MjSpec patch.
- Preserve the existing rules_python extras/platform-marker fixes,
Windows/OpenCV compatibility, PGX sharding, packaged Jumanji
renderer/database assets, Linux EGL/OpenGL loading, and clang-tidy
failure propagation. Pin the previously unverified `rules_boost` archive
with its actual SHA-256.
- Keep Matplotlib 3.10.8 and the `<3.11` runtime bound because
Matplotlib 3.11 still regresses the Jumanji MMST renderer. Bazel remains
at 8.6.0.
MyoSuite's published metadata currently caps MuJoCo below 3.7 and
Gymnasium below 1.3. EnvPool therefore continues using the
already-existing isolated, pinned source oracle instead of forcing
incompatible package metadata into its public runtime. All 398 task
alignments and render checks execute against MuJoCo 3.11. MetaWorld is
likewise checked from its pinned official source against the unified
engine.
- [ ] I have raised an issue to propose this change
([required](https://envpool.readthedocs.io/en/latest/pages/contributing.html)
for new features and bug fixes)
Dependency maintenance and compatibility migration; no separate issue
was opened.
## Types of changes
- [x] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds core functionality)
- [ ] New environment (non-breaking change which adds 3rd-party
environment)
- [x] Breaking change (Python 3.11 support is removed)
- [x] Documentation (update in the documentation)
- [x] Example (update in the folder of example)
## Implemented Tasks
- [x] Upgrade the Bazel/PyPI dependencies and every requested
environment oracle.
- [x] Unify MuJoCo/MJX/dm-control/MyoSuite/MetaWorld on published MuJoCo
3.11.0.
- [x] Remove Python 3.11 from build, packaging, release, and
documentation paths.
- [x] Cover every newly registered Highway, MiniGrid, Taxi, and Jumanji
task ID.
- [x] Keep native C++ runtime logic and existing strict
deterministic/alignment/render checks.
- [x] Validate Python 3.12–3.14 binary dependency resolution on Linux
x64/ARM64, macOS ARM64, and Windows x64.
- [x] Complete full local macOS and Linux-devbox lint, tests, coverage,
release builds, and installed-wheel release checks.
- [ ] Complete actual hosted GitHub Actions jobs after the
repository-account billing lock is resolved.
## Checklist
- [x] I have read the
[CONTRIBUTION](https://envpool.readthedocs.io/en/latest/pages/contributing.html)
guide (**required**)
- [x] My change requires a change to the documentation.
- [x] I have updated the tests accordingly (*required for a bug fix or a
new feature*).
- [x] I have updated the documentation accordingly.
- [x] I have verified formatting using the individual formatter checks
(**required**).
- [x] I have checked the code using the `make lint` components, run
individually (**required**).
- [x] I have ensured existing and new upstream task IDs are covered by
deterministic/alignment/render checks.
### Verification
Final source commit: `508effd64fa7ab4c9409101049405881c7145f87`. The
complete macOS/Linux suites below passed on
`782d5b442068811de151fd2a0af31a531f5aa6e6`, immediately before the
two-line release-version bump; the complete macOS installed-wheel
release path was rerun on the final 1.2.6 commit.
On **both macOS ARM64 and Linux x86_64 devbox**, run all
formatting/static/documentation/spelling checks; all **98 Bazel test
targets uncached**; a development wheel; a Python 3.12 release wheel;
isolated wheel installation; `uv pip check`; and the complete
installed-wheel `make release-test`. Linux additionally runs
`clang-tidy`, full Bazel coverage, coverage reporting, and both
Qt-absent Procgen import modes.
- **macOS ARM64:** all lint checks, **98/98 uncached Bazel targets**,
development wheel, release wheel, clean-venv installation/`uv pip
check`, and installed-wheel `make release-test` passed on the full-suite
baseline (7.9 minutes of recorded validation). The final commit
additionally built `envpool-1.2.6-cp312-cp312-macosx_11_0_arm64.whl`,
installed it into a fresh virtual environment, passed `uv pip check`,
reran the complete installed-wheel `make release-test`, and verified
version `1.2.6` plus `Requires-Python: >=3.12`.
- **Linux x86_64 devbox (full-suite baseline):** all lint checks,
**98/98 uncached Bazel targets**, development wheel, release wheel
(`envpool-1.2.5-cp312-cp312-manylinux_2_38_x86_64.manylinux_2_39_x86_64.whl`),
clean-venv installation/`uv pip check`, and installed-wheel `make
release-test` passed; full clang-tidy, coverage, and Qt-absent release
checks passed (54.7 minutes of recorded validation).
Release-lock and wheel-runtime requirements additionally resolve from
**binary wheels only** for Python 3.12, 3.13, and 3.14 across Linux
x86_64, Linux aarch64, macOS arm64, and Windows x86_64: **24/24
successful resolution checks**. These are dependency-resolution checks,
not execution on every platform.
- **Coverage:** the full uncached Linux LCOV report passed with **91.14%
overall line coverage**, **93.65% C/C++**, and **86.65% Python**.
### Remaining CI / platform gaps
- **GitHub Actions remains blocked before runner startup by repository
billing:** GitHub reports, "The job was not started because your account
is locked due to a billing issue." This is not a failing test result;
hosted checks must be rerun after repository billing is restored.
The devbox uses native Ubuntu rather than the actual `manylinux_2_28`
release container. Hosted Linux aarch64, Windows, macOS GitHub runners,
and the broader Python execution matrix remain CI validation gaps until
GitHub Actions can start.
## New Environment Checklist
No new environment family is introduced; the existing Highway, MiniGrid,
Taxi, and Jumanji upstream families are extended.
- [x] Runtime logic is native C++ and does not bridge to the official
Python environment.
- [x] All newly intended upstream task IDs/scenarios are registered,
documented, and covered.
- [x] Official upstream versions are pinned, and existing tests verify
actual upstream registry coverage.
- [x] Determinism checks cover reset and multi-step rollouts across the
registered task families.
- [x] Oracle checks compare step-level observations, rewards,
done/truncation, info, and available renders; unavoidable cross-compiler
contact residuals are measured and scoped only to the two affected Linux
x86_64 tasks/fields.
- [x] Existing render suites cover reset, multi-step, batched render,
and upstream frame alignment.
- [x] `envpool/make_test.py`, release packaging, docs, and README
support lists reflect the migrated task families.1 parent 6d9e1a2 commit c8d93a4
97 files changed
Lines changed: 1466 additions & 884 deletions
File tree
- .github/workflows
- benchmark
- docker
- docs
- content
- env
- envpool
- box2d
- classic_control
- highway
- jumanji
- minigrid
- mujoco
- dmc
- gym
- metaworld
- myosuite
- playground
- robotics
- pgx
- toy_text
- examples/cleanrl_examples
- third_party
- ale
- jpeg
- jumanji
- mujoco_playground
- mujoco
- myosuite
- opencv
- pip_requirements
- rules_python
- rules_shell
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
1 | 4 | | |
2 | 5 | | |
3 | 6 | | |
| |||
21 | 24 | | |
22 | 25 | | |
23 | 26 | | |
24 | | - | |
25 | | - | |
26 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
27 | 30 | | |
28 | 31 | | |
29 | 32 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
98 | | - | |
99 | 98 | | |
100 | 99 | | |
101 | 100 | | |
102 | 101 | | |
103 | 102 | | |
104 | 103 | | |
105 | | - | |
| 104 | + | |
106 | 105 | | |
107 | 106 | | |
108 | 107 | | |
| |||
123 | 122 | | |
124 | 123 | | |
125 | 124 | | |
126 | | - | |
127 | 125 | | |
128 | 126 | | |
129 | 127 | | |
| |||
176 | 174 | | |
177 | 175 | | |
178 | 176 | | |
179 | | - | |
| 177 | + | |
180 | 178 | | |
181 | 179 | | |
182 | 180 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | 1 | | |
3 | 2 | | |
4 | 3 | | |
| |||
67 | 66 | | |
68 | 67 | | |
69 | 68 | | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | 69 | | |
79 | 70 | | |
80 | 71 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
31 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
32 | 34 | | |
33 | 35 | | |
34 | 36 | | |
| |||
160 | 162 | | |
161 | 163 | | |
162 | 164 | | |
| 165 | + | |
163 | 166 | | |
164 | 167 | | |
165 | 168 | | |
| |||
259 | 262 | | |
260 | 263 | | |
261 | 264 | | |
262 | | - | |
| 265 | + | |
| 266 | + | |
263 | 267 | | |
264 | 268 | | |
265 | 269 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| |||
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
| 75 | + | |
| 76 | + | |
75 | 77 | | |
76 | 78 | | |
77 | 79 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
| 1 | + | |
| 2 | + | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
27 | | - | |
| 26 | + | |
| 27 | + | |
28 | 28 | | |
29 | 29 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | | - | |
| 74 | + | |
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| |||
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
150 | | - | |
151 | | - | |
| 150 | + | |
| 151 | + | |
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
| |||
161 | 161 | | |
162 | 162 | | |
163 | 163 | | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
164 | 170 | | |
165 | 171 | | |
166 | 172 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
709 | 709 | | |
710 | 710 | | |
711 | 711 | | |
712 | | - | |
| 712 | + | |
713 | 713 | | |
714 | 714 | | |
715 | 715 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| |||
0 commit comments