diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ec529ff4fa90ebce830bf3d78f664730b4ba92f..741921f0499c384e88ff1fda9b3ef6ee73a12e06 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,7 +6,24 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
 
 
 ## [Unreleased]
-[Unreleased]: https://github.com/althonos/pyrodigal/compare/v0.2.1...HEAD
+[Unreleased]: https://github.com/althonos/pyrodigal/compare/v0.3.0...HEAD
+
+
+## [v0.3.0] - 2022-06-17
+[v0.3.0]: https://github.com/althonos/pyrodigal/compare/v0.2.1...v0.3.0
+
+### Added
+- `pickle` protocol implementation to `Mapper` and `Sketch` via `__getstate__` and `__setstate__`.
+- `Minimizers` class to access the minimizers of a `Sketch` or `Mapper` object.
+
+### Changed
+- Make `Sketcher` and `Mapper` final.
+- Prevent direct instantiation of `Mapper` objects.
+- Update `Mapper._query_draft` to recycle memory between fragments.
+- Vendor `Boost::math` headers (`v1.79`) to allow compiling without depdendencies.
+
+### Fixed
+- Broken compilation of `_fastani` extension module as `universal2` binaries on MacOS.
 
 
 ## [v0.2.1] - 2021-06-20
diff --git a/pyfastani/__init__.py b/pyfastani/__init__.py
index e6c2a492d905a0dd303ce3dcc6a2883223644126..3b45d5e45efa0f13f7dd7752a59738bfd9cea786 100644
--- a/pyfastani/__init__.py
+++ b/pyfastani/__init__.py
@@ -3,7 +3,7 @@ from ._fastani import Sketch, Mapper, Hit, MAX_KMER_SIZE
 
 __author__ = "Martin Larralde <martin.larralde@embl.de>"
 __license__ = "MIT"
-__version__ = "0.2.1"
+__version__ = "0.3.0"
 
 __all__ = ["Sketch", "Mapper", "Hit", "MAX_KMER_SIZE"]
 __doc__ = _fastani.__doc__