Farama-Foundation/Shimmy
An API conversion tool for popular external reinforcement learning environments
The last Shimmy release was nearly 18 months ago, this release primarily add explicit support python 3.10 to 3.14 versions and a **Full Changelog**: https://github.com/Farama-Foundation/Shimmy/compare/v2.0.0...v2.0.1
This release updates Shimmy to support Gymnasium `>= 1.0.0a1`. Most importantly, this affects how environments are registered using Shimmy and Atari is now removed (don’t worry, [ale-py](https://github.com/Farama-Foundation/Arcade-Learning-Environment) now natively supports Gymnasium so there is just no need for Shimmy to do this anymore). In Gymnasium `< 1.0`, python modules could configure themselves to be loaded on `import gymnasium` removing the need for `import shimmy`, however, behind the scenes, this caused significant issues. Therefore, the development team took the decision to remove this feature from Gymnasium `v1.0`. Moving forward, using Shimmy, users must `import shimmy` for environments to be registered to then be created. For example, ```python import gymnasium as gym import shimmy # this is now necessary gym.register_envs(shimmy) # unnecessary but prevents IDEs from complaining env = gym.make("dm_control/swingup-v0", render_mode="human") obs, info = env.reset() episode_over = False while not episode_over: action = policy(obs) # replace with actual policy obs, reward, terminated, truncated, info = env.step(action) episode_over = terminated or truncated env.close() ``` **Full Changelog**: https://github.com/Farama-Foundation/Shimmy/compare/v1.3.0...v2.0.0
📦 Shimmy 1.3.0 Release Notes:
- This release updates Shimmy's Melting Pot wrapper to use Melting Pot's [pypi release](https://pypi.org/project/dm-meltingpot/), and includes a minor rendering bugfix for dm_control,
- Note: Melting Pot requires python version >= 3.10, please upgrade your python installation if you intend to use this wrapper
💥 Breaking Changes
- `install_melting_pot.sh` has been removed, as it is no longer necessary for installation because we are using Melting Pot's pypi release
- To install all required dependencies, simply run `pip install shimmy[meltingpot]`
✨ New Features and Improvements
- Update Melting Pot wrapper to use pypi release (https://github.com/Farama-Foundation/Shimmy/pull/111)
🐛 Bug Fixes
- Fix dm_control rendering bug when human mode is used by (https://github.com/Farama-Foundation/Shimmy/pull/104)
📦 Contributors
- @elliottower, @pseudo-rnd-thoughts, @spiglerg @KaleabTessera
- Full Changelog: https://github.com/Farama-Foundation/Shimmy/compare/v1.2.1...v1.3.0
📦 Shimmy 1.2.1 Release Notes:
- This is a minor hotfix which solves an issue where the Melting Pot dockerfile was not running successfully, leading to CI failures and making our install scripts fail.
🐛 Bug Fixes
- Fix meltingpot dockerfile (https://github.com/Farama-Foundation/Shimmy/pull/102)
- Fix meltingpot install script (https://github.com/Farama-Foundation/Shimmy/pull/103)
- Full Changelog: https://github.com/Farama-Foundation/Shimmy/compare/v1.2.0...v1.2.1
💥 Breaking Changes
- Python 3.7 has reached its end of life support ([link](https://endoflife.date/python)), therefore, we have dropped support for it in favor of 3.11.
- Observation spaces and action spaces in OpenSpiel wrapper are now indexed by agent name, rather than agent ID, to match PettingZoo
- This brings the wrapper to fully match PettingZoo's environment format, enabling easier usage with wrappers and external training libraries
✨ New Features and Improvements
- Python 3.11 support has been added (https://github.com/Farama-Foundation/Shimmy/pull/100)
- Update pre-commit config to match Gymnasium (https://github.com/Farama-Foundation/Shimmy/pull/99)
- CI now ensures proper formatting for toml and yml files, checks that shell scripts have shebangs and can be executed, etc.
🐛 Bug Fixes
- OpenSpiel wrapper: fix obs/action space, seeding, and reset config (https://github.com/Farama-Foundation/Shimmy/pull/96)
- OpenSpiel wrapper: fix calling reset() with no seed, make obs/act spaces fully match PettingZoo (https://github.com/Farama-Foundation/Shimmy/pull/97)
📝 Documentation Updates
- Add badges: pre-commit, black, DOI badge from Zenodo (https://github.com/Farama-Foundation/Shimmy/pull/95)
- Fix documentation for installing multiple extras to be correct syntax (https://github.com/Farama-Foundation/Shimmy/pull/93)
- Full Changelog: https://github.com/Farama-Foundation/Shimmy/compare/v1.1.0...v1.2.0
📦 **Shimmy 1.1.0 Release Notes:**
- This is a small bug fix release which fixes rendering issues in the dm-control compatibility wrapper.
💥 Breaking changes
- The dm-control compatibility environment used the `env.control_timesteps()` for the render frames per second (`render_fps`), however, this value is the interval between actions per seconds, i.e., `0.04`. This was fixed to be the actual `fps`, by multiplying by 1000. (https://github.com/Farama-Foundation/Shimmy/pull/91)
- A `dt` attribute was added to the dm-control compatibility environment that is equivalent to the mujoco environment `dt` attribute. (https://github.com/Farama-Foundation/Shimmy/pull/91)
- Modified the rendering in dm-control compatibility, removing `render_height`, `render_width`, `camera_id` and `scene_callback` in favor of `render_kwargs`. (https://github.com/Farama-Foundation/Shimmy/pull/92)
- As such users should specify kwargs in the dm-control engine render function, i.e., `height`, `width`, `camera_id` and `scene_callback`.
- Additionally, this will use the default dm-control arguments unless overridden by the user `render_kwargs`.
- Full Changelog: https://github.com/Farama-Foundation/Shimmy/compare/v1.0.1...v1.1.0
🐛 **Bug Fixes**
- Update DM control multi agent and melting pot to PettingZoo 1.23.0 API, fix seeding (https://github.com/Farama-Foundation/Shimmy/pull/87)
- Update OpenSpiel to PettingZoo 1.23.0 API, fix API test & seeding (https://github.com/Farama-Foundation/Shimmy/pull/80)
- Fix setup.py for gym v21 (https://github.com/Farama-Foundation/Shimmy/pull/88)
📝 **Documentation Updates**
- Allow users to view source code of referenced objects on the website (https://github.com/Farama-Foundation/Shimmy/pull/78)
- Add text logo to homepage, matching other Farama sites (https://github.com/Farama-Foundation/Shimmy/pull/79)
- Fix homepage mobile images being squished (https://github.com/Farama-Foundation/Shimmy/pull/81)
- Fix typo on homepage image grid (https://github.com/Farama-Foundation/Shimmy/pull/86)
- Create CITATION.cff to allow easier citation of the repository (https://github.com/Farama-Foundation/Shimmy/pull/83)
- Full Changelog: https://github.com/Farama-Foundation/Shimmy/compare/v1.0.0...v1.0.1
📦 Single-agent (Gymnasium wrappers):
- [Arcade Learning Environments](https://github.com/mgbellemare/Arcade-Learning-Environment)
- [DeepMind Behavior Suite](https://shimmy.farama.org/contents/bsuite/)
- [DeepMind Control](https://github.com/deepmind/dm_control/)
- [DeepMind Lab](https://github.com/deepmind/lab)
- [OpenAI Gym](https://github.com/openai/gym) - [V21](https://github.com/openai/gym/releases/tag/v0.21.0)
- [OpenAI Gym](https://github.com/openai/gym) - [V26](https://github.com/openai/gym/releases/tag/0.26.0) (breaking API change)
📦 Multi-agent (PettingZoo wrappers):
- [DeepMind OpenSpiel](https://github.com/deepmind/open_spiel)
- [DeepMind Control: Soccer](https://github.com/deepmind/dm_control/blob/main/dm_control/locomotion/soccer/README.md)
- [DeepMind Melting Pot](https://github.com/deepmind/meltingpot)
- Single-agent environments can be easily loaded using Gymnasium’s [registry ](https://gymnasium.farama.org/api/registry/)and `make()` function as follows:
- ```python
- import gymnasium as gym
- env = gym.make("dm_control/acrobot-swingup_sparse-v0", render_mode="human")
- ```
- + 5 more
💥 Breaking Changes
- `OpenspielCompatibilityV0` has been renamed to `OpenSpielCompatibilityV0` (correct spelling of [OpenSpiel](https://github.com/deepmind/open_spiel))
- Since the v0.21.0 release, the `setup.py` has been updated to include separate install options for gym V21 and V26:
- Instead of `pip install shimmy[gym]`, you must select either: `pip install shimmy[gym-v21]` or `pip install shimmy[gym-v26]`
✨ New Features and Improvements
- This release adds support for three additional environments:
- [DeepMind Lab](https://github.com/deepmind/lab) (single-agent)
- [DeepMind Behavior Suite](https://shimmy.farama.org/contents/bsuite/) (single-agent)
- [DeepMind Melting Pot](https://github.com/deepmind/meltingpot) (multi-agent)
- [/scripts/install_dm_lab.sh](https://github.com/Farama-Foundation/Shimmy/blob/main/scripts/install_dm_lab.sh)
- [/scripts/install_melting_pot.sh](https://github.com/Farama-Foundation/Shimmy/blob/main/scripts/install_melting_pot.sh)
🐛 Bug Fixes and Documentation Updates
- Full example usage scripts are now provided for each environment, allowing users to easily load and interact with an environment without prior knowledge.
- Example: run a `dm-control` environment:
- ```python
- observation, info = env.reset(seed=42)
- for _ in range(1000):
- action = env.action_space.sample() # this is where you would insert your policy
- observation, reward, terminated, truncated, info = env.step(action)
- if terminated or truncated:
- + 4 more
🐛 Bug Fixes
- Fixed dm-control step termination and truncation, previously this was the opposite of the specification by @pseudo-rnd-thoughts and @ottofabianin in https://github.com/Farama-Foundation/Shimmy/pull/30
- Check if the default wrappers exist before stripping for compatibility with Gym `v0.21` by @nuance1979 in https://github.com/Farama-Foundation/Shimmy/pull/34
- Update the list of dm-control environments for 1.0.10 to include humanoid-cmu talk by @pseudo-rnd-thoughts in https://github.com/Farama-Foundation/Shimmy/pull/36
- Remove warning that `GymV22Environment` and `GymV26Environment` are overwritten and change `V22` to `V21` in the `GymV22Environment` by @pseudo-rnd-thoughts in https://github.com/Farama-Foundation/Shimmy/pull/29
- Bump ale-py to `v0.8.1` which includes a number of bug fixes by @pseudo-rnd-thoughts in https://github.com/Farama-Foundation/Shimmy/pull/37/. For all the changes, read the [release notes](https://github.com/mgbellemare/Arcade-Learning-Environment/releases/tag/v0.8.1).
- Finally, @jjshoots and @SiddarGu updated the documentation in https://github.com/Farama-Foundation/Shimmy/pull/28 and https://github.com/Farama-Foundation/Shimmy/pull/25 respectively.
- Full Changelog: https://github.com/Farama-Foundation/Shimmy/compare/v0.2.0...v0.2.1
📋 Changes
- Add some friendly docs on how to get started by @vwxyzjn in https://github.com/Farama-Foundation/Shimmy/pull/20
- Update gym compatibility environment names by @pseudo-rnd-thoughts in https://github.com/Farama-Foundation/Shimmy/pull/16
- Add dm-lab (no tests yet) and dm-control-multiagent by @jjshoots in https://github.com/Farama-Foundation/Shimmy/pull/7
- Add `__getattr__` to Gym compatibility env to fix atari preprocessing issue, add registration of dm-lab compatibility environment. by @pseudo-rnd-thoughts in https://github.com/Farama-Foundation/Shimmy/pull/22
✨ New Contributors
- @vwxyzjn made their first contribution in https://github.com/Farama-Foundation/Shimmy/pull/20
- Full Changelog: https://github.com/Farama-Foundation/Shimmy/compare/v0.1.0...v0.2.0
📋 Changes
- OpenAI Gym: We provide compatibility environments for V22 and V26 environments, `GymV22Environment-v0` and `GymV26Environment-v0`
- dm-control: suite, manipulation and locomotion (currently the soccer environments are not supported)
- atari: As ale-py had not added gymnasium support yet, shimmy adds the `AtariEnv` with a couple of very minor changes that are backward compatible with the gym environments.
- openspiel: We support a large number of the environments, however not all of them
