Skip to content

[deps] Upgrade Bazel/environment dependencies and require Python 3.12 - #425

Merged
Trinkle23897 merged 14 commits into
mainfrom
jiayi/dependency-upgrades
Aug 25, 2026
Merged

[deps] Upgrade Bazel/environment dependencies and require Python 3.12#425
Trinkle23897 merged 14 commits into
mainfrom
jiayi/dependency-upgrades

Conversation

@Trinkle23897

@Trinkle23897 Trinkle23897 commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

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 for new features and bug fixes)

Dependency maintenance and compatibility migration; no separate issue was opened.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds core functionality)
  • New environment (non-breaking change which adds 3rd-party environment)
  • Breaking change (Python 3.11 support is removed)
  • Documentation (update in the documentation)
  • Example (update in the folder of example)

Implemented Tasks

  • Upgrade the Bazel/PyPI dependencies and every requested environment oracle.
  • Unify MuJoCo/MJX/dm-control/MyoSuite/MetaWorld on published MuJoCo 3.11.0.
  • Remove Python 3.11 from build, packaging, release, and documentation paths.
  • Cover every newly registered Highway, MiniGrid, Taxi, and Jumanji task ID.
  • Keep native C++ runtime logic and existing strict deterministic/alignment/render checks.
  • Validate Python 3.12–3.14 binary dependency resolution on Linux x64/ARM64, macOS ARM64, and Windows x64.
  • 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

  • I have read the CONTRIBUTION guide (required)
  • My change requires a change to the documentation.
  • I have updated the tests accordingly (required for a bug fix or a new feature).
  • I have updated the documentation accordingly.
  • I have verified formatting using the individual formatter checks (required).
  • I have checked the code using the make lint components, run individually (required).
  • 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.

  • Runtime logic is native C++ and does not bridge to the official Python environment.
  • All newly intended upstream task IDs/scenarios are registered, documented, and covered.
  • Official upstream versions are pinned, and existing tests verify actual upstream registry coverage.
  • Determinism checks cover reset and multi-step rollouts across the registered task families.
  • 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.
  • Existing render suites cover reset, multi-step, batched render, and upstream frame alignment.
  • envpool/make_test.py, release packaging, docs, and README support lists reflect the migrated task families.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 25, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-08-25T02:37:36.667628Z 30a012c PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 30a012c310

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread envpool/pgx/BUILD
@Trinkle23897 Trinkle23897 changed the title [deps] Upgrade Bazel and PyPI dependencies [deps] Upgrade Bazel/environment dependencies and require Python 3.12 Aug 25, 2026
@Trinkle23897
Trinkle23897 merged commit c8d93a4 into main Aug 25, 2026
2 of 12 checks passed
@Trinkle23897
Trinkle23897 deleted the jiayi/dependency-upgrades branch August 25, 2026 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant