# OpenZeppelin Contracts v2.5

**URL:** <https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155>\
**Category:** Announcements\
**Tags:** release\
**Created:** [January 24, 2020, 7:12pm UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155 "2020-01-24T19:12:19Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![nventuro](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/nventuro/32/8_2.png) [@nventuro](https://forum.openzeppelin.com/u/nventuro)\
**Post date:** [January 24, 2020, 7:12pm UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/1 "2020-01-24T19:12:19Z")

</div>

![cover_forum_contracts2.5](https://us1.discourse-cdn.com/flex022/uploads/zeppelin/original/2X/e/ee8904357a853c92def512f2e6dd7d30eb689480.png)

We’re very happy the announce the release of **OpenZeppelin Contracts v2.5**!

This new release features:

- **`EnumerableSet`** : similar to Solidity’s `mapping`, but that lets you retrieve all the keys! Useful for dapps that need to display a set of accounts with some property, and cannot rely on events alone.
- **`Create2`** : a simple library for using the [CREATE2 opcode](https://eips.ethereum.org/EIPS/eip-1014), allowing for deployment and pre-computation of addresses when using it.  
_To learn more about all the cool things you can do with it, head to [Getting the Most out of CREATE2](https://blog.openzeppelin.com/getting-the-most-out-of-create2/)_
- **`ERC721Metadata.baseURI`** : a neat extension for _massive_ gas savings when the token URIs share a prefix, like `https://my.cool.app/token/<id>`

There are also some minor improvements, such as gas optimizations for `ReentrancyGuard` and additional extensibility of `ERC777`, among others.

_For the complete list of changes, head to our [changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md)._

To install the new release, run:

```bash
$ npm install @openzeppelin/contracts@latest

```

## New Documentation 📚

We’ve also recently done some some improvements to our [documentation website](https://forum.openzeppelin.com/t/revamped-documentation-site/2056), including [new detailed guides](https://docs.openzeppelin.com/learn/) and documentation for our other tools, such as the [**Test Helpers**](https://docs.openzeppelin.com/test-helpers/0.5/), our blazing-fast [**Test Environment**](https://docs.openzeppelin.com/test-environment/0.1/) and the [**OpenZeppelin Command Line Interface**](https://docs.openzeppelin.com/cli/2.6/). Check them out for a radically better development experience!

## Saying Goodbye to Solidity v0.5 👋

December 2019 saw the [release of Solidity v0.6](https://github.com/ethereum/solidity/releases/tag/v0.6.0). This new version of the language has major improvements, and we’re already underway to **release the next version of OpenZeppelin Contracts with support for Solidity v0.6**.

However, it also includes _a lot_ of breaking changes, making it difficult to support both v0.5 and v0.6 code at the same time. For this reason, we’ve decided OpenZeppelin Contracts v2.5 will be the **last version supporting Solidity v0.5**.

The exciting good news it that the next OpenZeppelin Contracts release will be v3.0, where we’ll get to redesign some quirky bits of the library, improving ease of use and flexibility. Stay tuned!

---

<div class="post-metadata">

**Author:** ![ylv-io](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ylv-io/32/331_2.png) [@ylv-io](https://forum.openzeppelin.com/u/ylv-io)\
**Post date:** [January 26, 2020, 8:13am UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/2 "2020-01-26T08:13:37Z")

</div>

`EnumerableSet ` – this is so nice. I was missing this data structure so much.

---

<div class="post-metadata">

**Author:** ![nventuro](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/nventuro/32/8_2.png) [@nventuro](https://forum.openzeppelin.com/u/nventuro)\
**Post date:** [February 5, 2020, 3:51pm UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/3 "2020-02-05T15:51:55Z")

</div>

Updated the title and content reflecting the end of the release candidate period and the final 2.5 release.

---

<div class="post-metadata">

**Author:** ![cthacker](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/cthacker/32/1476_2.png) [@cthacker](https://forum.openzeppelin.com/u/cthacker)\
**Post date:** [February 7, 2020, 5:07am UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/4 "2020-02-07T05:07:30Z")

</div>

Awesome work! Will these changes be making their way to the upgrade-able contracts a la: [https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package](https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package)?

---

<div class="post-metadata">

**Author:** ![abcoathup](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/abcoathup/32/415_2.png) [@abcoathup](https://forum.openzeppelin.com/u/abcoathup)\
**Post date:** [February 7, 2020, 8:42am UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/5 "2020-02-07T08:42:28Z")

</div>

Hi @cthacker,

A version 2.5 of OpenZeppelin Contracts Ethereum Package equivalent to OpenZeppelin Contracts 2.5 is planned soon.

---

<div class="post-metadata">

**Author:** ![ccolorado](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ccolorado/32/670_2.png) [@ccolorado](https://forum.openzeppelin.com/u/ccolorado)\
**Post date:** [February 7, 2020, 4:52pm UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/6 "2020-02-07T16:52:03Z")

</div>

I just created a IterableMapping contract for my own use as I was sick of reimplementing it everywhere.

Guess I should have done that a long time ago.

---

<div class="post-metadata">

**Author:** ![ccolorado](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ccolorado/32/670_2.png) [@ccolorado](https://forum.openzeppelin.com/u/ccolorado)\
**Post date:** [February 7, 2020, 4:54pm UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/7 "2020-02-07T16:54:50Z")

</div>

Considering only the ERC721 would need this I assume it would be ready pretty soon 🤞

---

<div class="post-metadata">

**Author:** ![cthacker](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/cthacker/32/1476_2.png) [@cthacker](https://forum.openzeppelin.com/u/cthacker)\
**Post date:** [February 7, 2020, 7:30pm UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/8 "2020-02-07T19:30:44Z")

</div>

Yeah the contracts ethereum package is also behind on solidity .6 so I think it needs that merged in as well.

---

<div class="post-metadata">

**Author:** ![Amxx](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/amxx/32/668_2.png) [@Amxx](https://forum.openzeppelin.com/u/Amxx)\
**Post date:** [February 9, 2020, 1:09pm UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/9 "2020-02-09T13:09:49Z")

</div>

For anyone wanting something like `EnumerableSet` but with support for more types, as well as enumerable mappings:

> **[Amxx/SolStruct](https://github.com/Amxx/SolStruct)**
>
> A library of templated solidity structures. Contribute to Amxx/SolStruct development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![abcoathup](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/abcoathup/32/415_2.png) [@abcoathup](https://forum.openzeppelin.com/u/abcoathup)\
**Post date:** [February 28, 2020, 6:36am UTC](https://forum.openzeppelin.com/t/openzeppelin-contracts-v2-5/2155/10 "2020-02-28T06:36:24Z")

</div>

A post was split to a new topic: [Can a Proxy written in Solidity 0.5 upgrade a Solidity 0.5 contract to a Solidity 0.6 contract?](https://forum.openzeppelin.com/t/can-a-proxy-written-in-solidity-0-5-upgrade-a-solidity-0-5-contract-to-a-solidity-0-6-contract/2394)
