Release Notes#
v0.27.1#
Released on 2023-01-20 - GitHub - PyPI
Release Notes
Bugs fixed
- Replace
np.bool8
withnp.bool_
for numpy 1.24 deprecation warning by @pseudo-rnd-thoughts in #221 - Remove shimmy as a core dependency by @pseudo-rnd-thoughts in #272
- Fix silent bug in ResizeObservation for 2-dimensional observations. by @ianyfan in #230 and by @RedTachyon in #254
- Change env checker assertation to warning by @jjshoots in #215
- Revert
make
error when render mode is used without metadata render modes by @pseudo-rnd-thoughts in #216 - Update prompt messages for extra dependencies by @XuehaiPan in #250
- Fix return type of
AsyncVectorEnv.reset
by @younik in #252 - Update the jumpy error to specify the pip install is jax-jumpy by @pseudo-rnd-thoughts in #255
- Fix type annotations of
callable
toCallable
by @ianyfan in #259 - Fix experimental normalize reward wrapper by @rafaelcp in #277
New features/improvements
- Improve LunarLander-v2
step
performance by >1.5x by @PaulMest in #235 - Added vector env support to StepAPICompatibility wrapper by @nidhishs in #238
- Allow sequence to accept stacked np arrays if the feature space is Box by @jjshoots in #241
- Improve the warning when an error is raised from a plugin by @pseudo-rnd-thoughts in #225
- Add changelog (release notes) to the website by @mgoulao in #257
- Implement RecordVideoV0 by @younik in #246
- Add explicit error messages when unflatten discrete and multidiscrete fail by @PierreMardon in #267
Documentation updates
- Added doctest to CI and fixed all existing errors in docstrings by @valentin-cnt in #274
- Add a tutorial for vectorized envs using A2C. by @till2 in #234
- Fix
MuJoCo.Humanoid
action description by @Kallinteris-Andreas in #206 Ant
use_contact_forces
obs and reward DOC by @Kallinteris-Andreas in #218MuJoCo.Reacher-v4
doc fixes by @Kallinteris-Andreas in #219- Mention truncation in the migration guide by @RedTachyon in #105
- docs(tutorials): fixed environment creation link by @lpizzinidev in #244
Mujoco/Hooper
doc minor typo fix by @Kallinteris-Andreas in #247- Add comment describing what convolve does in A2C tutorial by @metric-space in #264
- Fix environment versioning in README.md by @younik in #270
- Add Tutorials galleries by @mgoulao in #258
Thanks to the new contributors to Gymnasium, if you want to get involved, join our discord server. Linked in the readme.
- @PaulMest made their first contribution in #235
- @nidhishs made their first contribution in #238
- @lpizzinidev made their first contribution in #244
- @ianyfan made their first contribution in #230
- @metric-space made their first contribution in #264
- @PierreMardon made their first contribution in #267
- @valentin-cnt made their first contribution in #274
- @rafaelcp made their first contribution in #277
Full Changelog: v0.27.0...v0.27.1
v0.27.0#
Released on 2022-12-12 - GitHub - PyPI
Release Notes
Gymnasium 0.27.0 is our first major release of Gymnasium. It has several significant new features, and numerous small bug fixes and code quality improvements as we work through our backlog. There should be no breaking changes beyond dropping Python 3.6 support and remove the mujoco Viewer
class in favor of a MujocoRendering
class. You should be able to upgrade your code that's using Gymnasium 0.26.x to 0.27.0 with little-to-no-effort.
Like always, our development roadmap is publicly available here so you can follow our future plans. The only large breaking changes that are still planned are switching selected environments to use hardware accelerated physics engines and our long standing plans for overhauling the vector API and built-in wrappers.
This release notably includes an entirely new part of the library: gymnasium.experimental
. We are adding new features, wrappers and functional environment API discussed below for users to test and try out to find bugs and provide feedback.
New Wrappers
These new wrappers, accessible in gymnasium.experimental.wrappers
, see the full list in https://gymnasium.farama.org/main/api/experimental/ are aimed to replace the wrappers in gymnasium v0.30.0 and contain several improvements
- (Work in progress) Support arbitrarily complex observation / action spaces. As RL has advanced, action and observation spaces are becoming more complex and the current wrappers were not implemented with this mind.
- Support for Jax-based environments. With hardware accelerated environments, i.e. Brax, written in Jax and similar PyTorch based programs, NumPy is not the only game in town anymore for writing environments. Therefore, these upgrades will use Jumpy, a project developed by Farama Foundation to provide automatic compatibility for NumPy, Jax and in the future PyTorch data for a large subset of the NumPy functions.
- More wrappers. Projects like Supersuit aimed to bring more wrappers for RL, however, many users were not aware of the wrappers, so we plan to move the wrappers into Gymnasium. If we are missing common wrappers from the list provided above, please create an issue and we would be interested in adding it.
- Versioning. Like environments, the implementation details of wrappers can cause changes in agent performance. Therefore, we propose adding version numbers to all wrappers, i.e.,
LambaActionV0
. We don't expect these version numbers to change regularly and will act similarly to environment version numbers. This should ensure that all users know when significant changes could affect your agent's performance for environments and wrappers. Additionally, we hope that this will improve reproducibility of RL in the future, which is critical for academia. - In v28, we aim to rewrite the VectorEnv to not inherit from Env, as a result new vectorized versions of the wrappers will be provided.
Core developers: @gianlucadecola, @RedTachyon, @pseudo-rnd-thoughts
Functional API
The Env
class provides a very generic structure for environments to be written in allowing high flexibility in the program structure. However, this limits the ability to efficiently vectorize environments, compartmentalize the environment code, etc. Therefore, the gymnasium.experimental.FuncEnv
provides a much more strict structure for environment implementation with stateless functions, for every stage of the environment implementation. This class does not inherit from Env
and requires a translation / compatibility class for doing this. We already provide a FuncJaxEnv
for converting jax-based FuncEnv
to Env
. We hope this will help improve the readability of environment implementations along with potential speed-ups for users that vectorize their code.
This API is very experimental so open to changes in the future. We are interested in feedback from users who try to use the API which we believe will be in particular interest to users exploring RL planning, model-based RL and modifying environment functions like the rewards.
Core developers: @RedTachyon, @pseudo-rnd-thoughts, @balisujohn
Other Major changes
- Refactor Mujoco Rendering mechanisms to use a separate thread for OpenGL. Remove
Viewer
in favor ofMujocoRenderer
which offscreen, human and other render mode can use by @rodrigodelazcano in #112 - Add deprecation warning to
gym.make(..., apply_env_compatibility=True)
in favour ofgym.make("GymV22Environment", env_id="...")
by @pseudo-rnd-thoughts in #125 - Add
gymnasium.pprint_registry()
for pretty printing the gymnasium registry by @kad99kev in #124 - Changes discrete dtype to np.int64 such that samples are np.int64 not python ints. by @pseudo-rnd-thoughts in #141
- Add migration guide for OpenAI Gym v21 to v26 by @pseudo-rnd-thoughts in #72
- Add complete type hinting of
core.py
forEnv
,Wrapper
and more by @pseudo-rnd-thoughts in #39 - Add complete type hinting for all spaces in
gymnasium.spaces
by @pseudo-rnd-thoughts in #37 - Make window in
play()
resizable by @Markus28 in #190 - Add REINFORCE implementation tutorial by @siddarth-c in #155
Bug fixes and documentation changes
- Remove auto close in
VideoRecorder
wrapper by @younik in #42 - Change
seeding.np_random
error message to report seed type by @theo-brown in #74 - Include shape in MujocoEnv error message by @ikamensh in #83
- Add pretty Feature/GitHub issue form by @tobirohrer in #89
- Added testing for the render return data in
check_env
andPassiveEnvChecker
by @Markus28 in #117 - Fix docstring and update action space description for classic control environments by @Thytu in #123
- Fix
__all__
in root__init__.py
to specify the correct folders by @pseudo-rnd-thoughts in #130 - Fix
play()
assertion error by @Markus28 in #132 - Update documentation for Frozen Lake
is_slippy
by @MarionJS in #136 - Fixed warnings when
render_mode
is None by @younik in #143 - Added
is_np_flattenable
property to documentation by @Markus28 in #172 - Updated Wrapper documentation by @Markus28 in #173
- Updated formatting of spaces documentation by @Markus28 in #174
- For FrozenLake, add seeding in random map generation by @kir0ul in #139
- Add notes for issues when unflattening samples from flattened spaces by @rusu24edward in #164
- Include pusher environment page to website by @axb2035 in #171
- Add check in
AsyncVectorEnv
for success before splitting result instep_wait
by @aaronwalsman in #178 - Add documentation for
MuJoCo.Ant-v4.use_contact_forces
by @Kallinteris-Andreas in #183 - Fix typos in README.md by @cool-RR in #184
- Add documentation for
MuJoCo.Ant
v4 changelog by @Kallinteris-Andreas in #186 - Fix
MuJoCo.Ant
action order in documentation by @Kallinteris-Andreas in #208 - Add
raise-from
exception for the whole codebase by @cool-RR in #205
Behind-the-scenes changes
- Docs Versioning by @mgoulao in #73
- Added Atari environments to tests, removed dead code by @Markus28 in #78
- Fix missing build steps in versioning workflows by @mgoulao in #81
- Small improvements to environments pages by @mgoulao in #110
- Update the third-party environment documentation by @pseudo-rnd-thoughts in #138
- Update docstrings for improved documentation by @axb2035 in #160
- Test core dependencies in CI by @pseudo-rnd-thoughts in #146
- Update and rerun
pre-commit
hooks for better code quality by @XuehaiPan in #179
v0.26.3#
Released on 2022-10-24 - GitHub - PyPI
Release Notes
Note: ale-py (atari) has not updated to Gymnasium yet. Therefore pip install gymnasium[atari]
will fail, this will be fixed in v0.27
. In the meantime, use pip install shimmy[atari]
for the fix.
Bug Fixes
- Added Gym-Gymnasium compatibility converter to allow users to use Gym environments in Gymnasium by @RedTachyon in #61
- Modify metadata in the
HumanRendering
andRenderCollection
wrappers to have the correct metadata by @RedTachyon in #35 - Simplified
EpisodeStatisticsRecorder
wrapper by @DavidSlayback in #31 - Fix integer overflow in MultiDiscrete.flatten() by @olipinski in #55
- Re-add the ability to specify the XML file for Mujoco environments by @Kallinteris-Andreas in #70
Documentation change
- Add a tutorial for training an agent in Blackjack by @till2 in #64
- A very long list of documentation updates by @mgoulao, @vairodp, @WillDudley, @pseudo-rnd-thoughts and @jjshoots
Full Changelog: v0.26.2...v0.26.3
Thank you for the new contributors
- @vairodp made their first contribution in #41
- @DavidSlayback made their first contribution in #31
- @WillDudley made their first contribution in #51
- @olipinski made their first contribution in #55
- @jjshoots made their first contribution in #58
- @vmoens made their first contribution in #60
- @till2 made their first contribution in #64
- @Kallinteris-Andreas made their first contribution in #70
v0.26.2: 0.26.2 #
Released on 2022-10-05 - GitHub - PyPI
This Release is an upstreamed version of Gym v26.2
Bugs Fixes
- As reset now returns (obs, info) then in the vector environments, this caused the final step's info to be overwritten. Now, the final observation and info are contained within the info as "final_observation" and "final_info" @pseudo-rnd-thoughts
- Adds warnings when trying to render without specifying the render_mode @younik
- Updates Atari Preprocessing such that the wrapper can be pickled @vermouth1992
- Github CI was hardened to such that the CI just has read permissions @sashashura
- Clarify and fix typo in GraphInstance @ekalosak
v0.26.1: 0.26.1#
Released on 2022-09-16 - GitHub - PyPI
This Release is an upstreamed version of Gym v26.1
In addition, the gym docs repo has been merged in with the new website https://gymnasium.farama.org/
v0.26.0: Initial Release#
Released on 2022-09-13 - GitHub - PyPI
This is the first release of Gymnasium, a maintained fork of OpenAI Gym
This release is identical to the Gym v0.26.0 except for the project name (Gymnasium) and Code of Conduct
Read #12 for the roadmap of changes