Release Notes¶
v1.12: Vehicle behaviour fix, generic merge env, Gymnasium-compliant render behaviour, and docs refresh¶
Released on 2026-07-06 - GitHub - PyPI
HighwayEnv v1.12.0
This is a big release that brings:
- a new generic version of the
mergeenvironment - major documentation updates
- reduction in startup latency
- improvements in dependency situation (replacing
pygamewithpygame-ce, removingscipy) - multiple new environment versions due to a bug discovered in neighbouring vehicle detection in environments with multiple road segments (causing non-player vehicles to have a higher likelihood of crashing than they should, as shown here).
Minor breaking change
Previously, HighwayEnv did not implement render mode according to Gymnasium; instead, whether the environments are actually rendered is set with the offscreen_rendering config key. #700 introduced correct behaviour for treating different values of render_mode, while still keeping old config keys as overrides:
render_mode="human"-> render to window by default,render()returnsNonerender_mode="rgb_array"-> headless render by default,render()returns image array- Keeping
offscreen_renderingin config as an override - The
OFFSCREEN_RENDERINGenvironment variable is now ignored because explicit is better than implicit
So, basically, you can set render_mode="rgb_array" and pass offscreen_rendering=True in the config dict to get both an RGB array returned by render() and pygame rendering in a new window for your viewing pleasure (note that you still need real_time_rendering=True to render at the intended fps).
New environment variant
- Generic version of the
mergeenvironment (merge-generic-v0,merge-generic-v1) by @Minipoloalex (#694)
New environment version
- With neighbour vehicle detection fix:
exit-v1,intersection-v2,intersection-multi-agent-v2,merge-v1,racetrack-v1,racetrack-large-v1,racetrack-oval-v1,roundabout-v1,oundabout-generic-v1,u-turn-v1by @Lidang-Jiang (#667)
Bug fix
- Fix
neighbour_vehiclesnot detecting vehicles on connected lanes by @Lidang-Jiang (#667) - Ensure compliance with Gymnasium's definition of
render_modeby @Trenza1ore (#700) - Minor typing and NumPy 2.x compatibility fixes by @Trenza1ore (#698, #705)
- Call
superinLinearVehicle.randomize_behaviorby @m-walters (#614)
Dependencies
- Replaced
pygamewithpygame-ceby @Trenza1ore (#678) - Removed dependency on
scipyby @Trenza1ore (#691)
Performance
- Reduced startup latency by initializing only the needed
pygamemodules by @Trenza1ore (#687)
Documentation
- Docs added for 4 existing environments (
exit,lane_keeping,two_way,u_turn) by @Trenza1ore (#697) - Docs added for rendering modes and configurations by @Trenza1ore (#700)
- Docs added for neighbour vehicle detection issue by @Trenza1ore & @Lidang-Jiang (#667)
- Release notes section by @Trenza1ore (#706)
- Update outdated sections in docs by @Trenza1ore (#699)
- Fixed warnings in documentation build process by @Luzijano & @Trenza1ore (#690, #695)
Community
- Readme rewritten for compactness by @kydrahul & @Trenza1ore (#682)
- Contributing guideline written by @kydrahul & @Trenza1ore (#702)
- Issue & pull request templates by @Trenza1ore (#679)
- Unit test coverage requirements for pull requests by @Trenza1ore (#705, #707)
CI and build
- General CI improvements by @mwydmuch & @Trenza1ore (#680, #681, #683)
New Contributors
- @Trenza1ore made their first contribution in #678
- @mwydmuch made their first contribution in #680
- @kydrahul made their first contribution in #682
- @Luzijano made their first contribution in #690
Full Changelog: v1.11...v1.12
v1.11: Python 3.14 support, new env variant, and stability updates¶
Released on 2026-05-10 - GitHub - PyPI
Changes since v1.10.2
Compatibility
- Added Python 3.14 support.
- Dropped Python 3.9 support.
- Fixed NumPy 2.0 compatibility.
- Modernized build configuration.
CI and build tooling
- Added CI/install support for
pygamesystem dependencies. - Installed SDL2/freetype/portmidi packages for docs/build environment.
Bug fixes
- Fixed
SubprocVecEnvConnectionResetErrorwithforkserver/spawn. - Fixed zero division in
LinearSpline2D. - Fixed divide-by-zero warning in
LidarObservation. - Fixed incorrect coordinate transformation in spline.
Features and docs
- Added a generic version of the roundabout environment.
- Refreshed docs branding and added
mise/justtooling. - Updated docs workflows and README content.
- Added multiple paper citations / references.
v1.10.2: Bug fixes and new env¶
Released on 2025-10-18 - GitHub - PyPI
- Adds racetrack-oval-v0
- Minor fixes
v1.10.1: Gymasium v1.0 support¶
Released on 2024-08-19 - GitHub - PyPI
Fix release workflow
v1.10: Gymnasium v1.0 support¶
Released on 2024-08-18 - GitHub - PyPI
Update to support Gymnasium v1.0
v1.9.1: Update release version¶
Released on 2024-08-11 - GitHub - PyPI
(Didn't see that the version definition had been moved from config to init)
v1.9: Bug fixes¶
Released on 2024-08-11 - GitHub - PyPI
- Fix creation of vehicles in parking env
- Bug fixes for kinematics observation
- Fix Lidar observation
- Fix boundaries check in occupancy grid observation
- Update docs
- Update numpy deprecated calls
- Fix road priorities
- Fix non-determinism in route planning
- Fix multiagent wrapper for intersection env
v1.8.2: Hotfix of parking env reward function¶
Released on 2023-05-30 - GitHub - PyPI
- Fix collision reward in parking env
- Minor update of documentation and workflows
- Minor update of example notebooks
- Update rendering logic
v1.8.1: Hotfix of env registration entrypoint with gymnasium¶
v1.8: Move from gym to gymnasium¶
Released on 2023-03-18 - GitHub - PyPI
- fix vehicle order in occupancy grid obs
- fix broken seeding implementation
- support numpy types for discrete actions
- use Runge-Kutta 4 integration for dynamical continuous actions, making the dynamics make more stable
- use gymnasium rather than gym
v1.7.1: Hotfix of parking env init¶
Released on 2022-12-19 - GitHub - PyPI
Fixes #400
v1.7: Add support for gym 0.26¶
Released on 2022-11-06 - GitHub - PyPI
- Change the step / reset / render interfaces to match the new API of gym 0.26
- Drop support for gym <0.26
v1.6: Environment variants with continuous actions and multi-objective, bug fixes.¶
Released on 2022-08-14 - GitHub - PyPI
- fix a bug in generating discrete actions from continuous actions
- fix more bugs related to changes in gym's latest versions
- new intersection-env variant with continuous actions
- add longitudinal/lateral/angular offsets to the lane as part of the kinematics observation's features
- add more configurable options for reward function and termination conditions
- add configurable min/max speed for continuous actions
- bug fix for reward computation in the multi-agent setting
- add get_available_actions for MultiAgentAction
- fix various deprecation warnings
- add a multi-objective version of HighwayEnv
Huge thanks to contributors @zerongxi, @TibiGG, @KexianShen, @lorandcheng
v1.5: New observation types and lane geometries, and bug fixes¶
Released on 2022-03-19 - GitHub - PyPI
- Add documentation on continuous actions
- Fix various bugs or imprecision in collision checks and obstacles rendering
- Image observations are now centered on the observer vehicle
- Fix the lane change behaviour in some situations
- Add
TupleObservation, which is a union of several observation types - Improve the accuracy of the
LidarObservation - Add support for
PolyLane, and methods to save/load road networks from a config - Fix steering wheel / angle conversion
- Change of the velocity term projection in the reward function
- Add support for latest gym versions (>=0.22) which dropped the Monitor wrapper
- Add a copy of the
GoalEnvinterface which was removed from gym
v1.4: New continuous control environment: racetrack-v0¶
Released on 2021-09-21 - GitHub - PyPI
This release introduces additional content:
- a new continuous control environment,
racetrack-v0, where the agent must learn to steer and follow the tracks, while avoiding other vehicles - a new
"on_road"layer in theOccupancyGridobservation type, which enables the observer to see the drivable space - a new
"align_to_vehicle_axes"option in theOccupancyGridobservation type, which renders the observation in the local vehicle frame - a new
DiscreteActionaction type, which discretizes the originalContinuousActiontype. This allows to do low-level control, but with a small discrete action space (e.g. for DQN). Note that this is different from theDiscreteMetaActiontype, which implements its own low-level sub-policies. - new example scripts and notebooks for training agents, such as a PPO continuous control policy for racetrack-v0.
- updated documentation
v1.3: Faster variant of highway-v0, and bug fixes¶
Released on 2021-08-30 - GitHub - PyPI
This release contains
- A few fixes for compatibility with SB3
- Some changes for video rendering and framerate
highway-fast-v0: a faster variant of highway-v0 to train/debug models more quickly
v1.2: Compatibility with stable-baselines3¶
Released on 2021-04-29 - GitHub - PyPI
Minor update with
- different handling of image observations + example script with stable baselines
- small changes in the dynamical model
v1.1: First PyPI release¶
Released on 2021-03-12 - GitHub - PyPI
Main changes:
- vehicles appearance
- exit environment
- u-turn environment
- lidar observation
- big fix in video recording