diff --git a/CHANGELOG.md b/CHANGELOG.md
index 630577d..51a3e29 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,60 +1,141 @@
-# [1.5.4](https://github.com/tonytonyjan/jaro_winkler/compare/v1.5.3...v1.5.4) (2019-11-05)
+## 1.6.0 (2024-08-28)
-* Add license file to gem package.
+* chore: chore: bump version to v1.6.0 ([483e7ca](https://github.com/tonytonyjan/jaro_winkler/commit/483e7ca))
+* fix: add "similarity" methods and deprecate "distance" methods ([1682f94](https://github.com/tonytonyjan/jaro_winkler/commit/1682f94))
+* fix: use `rb_warn` over `rb_category_warn` for Ruby 2.7 ([0fd7b5d](https://github.com/tonytonyjan/jaro_winkler/commit/0fd7b5d))
+* test: reduce deprecation warnings ([9ada77e](https://github.com/tonytonyjan/jaro_winkler/commit/9ada77e))
+* docs: use "similarity" over "distance" in README ([97c9cbc](https://github.com/tonytonyjan/jaro_winkler/commit/97c9cbc))
-## [1.5.3](https://github.com/tonytonyjan/jaro_winkler/compare/v1.5.2...v1.5.3) (2019-06-18)
-* Fall back to pure ruby implementation on LoadError ([49f811e](https://github.com/tonytonyjan/jaro_winkler/commit/49f811e))
-* Rename Rake tasks for test ([42e0a36](https://github.com/tonytonyjan/jaro_winkler/commit/42e0a36))
-
-
-## [1.5.2](https://github.com/tonytonyjan/jaro_winkler/compare/v1.5.1...v1.5.2) (2019-01-04)
-
-
-### Bug Fixes
-
-* raises TypeError when input type is not string ([c146491](https://github.com/tonytonyjan/jaro_winkler/commit/c146491)), closes [#24](https://github.com/tonytonyjan/jaro_winkler/issues/24)
-* **memory:** make sure codepoints will be allocated/freed after rb_raise to prevent memory leak ([fe9d784](https://github.com/tonytonyjan/jaro_winkler/commit/fe9d784)), closes [#20](https://github.com/tonytonyjan/jaro_winkler/issues/20)
-
+## 1.5.6 (2023-05-29)
+* chore: bump version to v1.5.6 ([1327330](https://github.com/tonytonyjan/jaro_winkler/commit/1327330))
+* ractor safe ([240d42d](https://github.com/tonytonyjan/jaro_winkler/commit/240d42d))
-## [1.5.1](https://github.com/tonytonyjan/jaro_winkler/compare/v1.5.0...v1.5.1) (2018-06-06)
+## 1.5.5 (2023-05-22)
-# [1.5.0](https://github.com/tonytonyjan/jaro_winkler/compare/v1.4.0...v1.5.0) (2017-10-02)
+* chore: update changelog ([ecf1b26](https://github.com/tonytonyjan/jaro_winkler/commit/ecf1b26))
+* chore(release): bump version to v1.5.5 ([4abbfc5](https://github.com/tonytonyjan/jaro_winkler/commit/4abbfc5))
+* ci: add ruby 3 to ci ([886be74](https://github.com/tonytonyjan/jaro_winkler/commit/886be74))
+* ci: replace travis with github action ([5701ef7](https://github.com/tonytonyjan/jaro_winkler/commit/5701ef7))
+* ci: support windows and refine matrix ([84f3a42](https://github.com/tonytonyjan/jaro_winkler/commit/84f3a42))
+* fix: Update argc type from size_t to int ([4c6ed4f](https://github.com/tonytonyjan/jaro_winkler/commit/4c6ed4f))
+* Add project metadata to the gemspec ([6591989](https://github.com/tonytonyjan/jaro_winkler/commit/6591989))
+* Create GitHub Actions workflow, remove dups from Travis ([7821e9d](https://github.com/tonytonyjan/jaro_winkler/commit/7821e9d))
-### Bug Fixes
-* free codepoints before returning to prevent memory leak ([8babd4f](https://github.com/tonytonyjan/jaro_winkler/commit/8babd4f))
-* remove module functions from JaroWinkler ([af249d5](https://github.com/tonytonyjan/jaro_winkler/commit/af249d5))
+## 1.5.4 (2019-10-30)
+* chore: package license file ([dd98482](https://github.com/tonytonyjan/jaro_winkler/commit/dd98482))
+* chore(release): bump version to 1.5.4 ([50990da](https://github.com/tonytonyjan/jaro_winkler/commit/50990da)), closes [#33](https://github.com/tonytonyjan/jaro_winkler/issues/33)
+* Add the license to the gem for packaging. ([46b9359](https://github.com/tonytonyjan/jaro_winkler/commit/46b9359))
-### Features
-* support encodings other than utf-8 ([fe72ab4](https://github.com/tonytonyjan/jaro_winkler/commit/fe72ab4)), closes [#7](https://github.com/tonytonyjan/jaro_winkler/issues/7)
-* support rubinius ([27090ff](https://github.com/tonytonyjan/jaro_winkler/commit/27090ff))
+## 1.5.3 (2019-06-25)
-### Performance Improvements
-
-The C implementation is 25% faster than that of v1.4.0.
-
-* optimize single byte codepoints computation ([e0cdd51](https://github.com/tonytonyjan/jaro_winkler/commit/e0cdd51))
-
-
-### BREAKING CHANGES
+* chore(release): bump version to v1.5.3 ([cb9b69e](https://github.com/tonytonyjan/jaro_winkler/commit/cb9b69e))
+* Fall back to pure ruby implementation on LoadError ([49f811e](https://github.com/tonytonyjan/jaro_winkler/commit/49f811e))
+* Rename Rake tasks for test ([42e0a36](https://github.com/tonytonyjan/jaro_winkler/commit/42e0a36))
+* Update Rakefile ([1c05793](https://github.com/tonytonyjan/jaro_winkler/commit/1c05793))
+
+
+
+## 1.5.2 (2019-01-04)
+
+* chore: fix benchmark ([4508599](https://github.com/tonytonyjan/jaro_winkler/commit/4508599))
+* chore(release): bump version to v1.5.2 ([aa4be61](https://github.com/tonytonyjan/jaro_winkler/commit/aa4be61))
+* fix: raises TypeError when input type is not string ([c146491](https://github.com/tonytonyjan/jaro_winkler/commit/c146491)), closes [#24](https://github.com/tonytonyjan/jaro_winkler/issues/24)
+* fix(memory): make sure codepoints will be allocated/freed after rb_raise to prevent memory leak ([fe9d784](https://github.com/tonytonyjan/jaro_winkler/commit/fe9d784)), closes [#20](https://github.com/tonytonyjan/jaro_winkler/issues/20)
+* ci: fix travis ci ([e1b9add](https://github.com/tonytonyjan/jaro_winkler/commit/e1b9add))
+* build: build cross platform gems ([eb091bf](https://github.com/tonytonyjan/jaro_winkler/commit/eb091bf))
+* test: test both native and pure ruby implementation ([2ecb24b](https://github.com/tonytonyjan/jaro_winkler/commit/2ecb24b))
+
+
+
+## 1.5.1 (2018-06-06)
+
+* chore: add a rake task to measure performance of each version ([6368e2d](https://github.com/tonytonyjan/jaro_winkler/commit/6368e2d))
+* chore: remove outdated benchmark output files ([7d590dc](https://github.com/tonytonyjan/jaro_winkler/commit/7d590dc))
+* chore(benchmark): dry up benchmark codes ([5ebd36d](https://github.com/tonytonyjan/jaro_winkler/commit/5ebd36d))
+* chore(benchmark): enhance the codes for measuring performance between each version ([4b05c43](https://github.com/tonytonyjan/jaro_winkler/commit/4b05c43))
+* chore(release): bump version to 1.5.1 ([5d38f8e](https://github.com/tonytonyjan/jaro_winkler/commit/5d38f8e))
+* build: build c extension only on MRI platform, and make a dummy Makefile for other platforms ([7e66cbf](https://github.com/tonytonyjan/jaro_winkler/commit/7e66cbf)), closes [#19](https://github.com/tonytonyjan/jaro_winkler/issues/19)
+* build: update ci ([868609a](https://github.com/tonytonyjan/jaro_winkler/commit/868609a))
+* build: update gems ([536e667](https://github.com/tonytonyjan/jaro_winkler/commit/536e667))
+* refactor: convert types explicitly ([2db63d9](https://github.com/tonytonyjan/jaro_winkler/commit/2db63d9))
+* style: remote unused variables ([64dd5cc](https://github.com/tonytonyjan/jaro_winkler/commit/64dd5cc))
+
+
+
+## 1.5.0 (2017-10-02)
+
+* chore: add a rake task to generate changelog automatically ([a8069f9](https://github.com/tonytonyjan/jaro_winkler/commit/a8069f9))
+* chore: ignore tag file ([0ac7fce](https://github.com/tonytonyjan/jaro_winkler/commit/0ac7fce))
+* chore: refine benchmark ([e6b93fb](https://github.com/tonytonyjan/jaro_winkler/commit/e6b93fb))
+* chore: remove print_time task ([01e1cea](https://github.com/tonytonyjan/jaro_winkler/commit/01e1cea))
+* chore(release): bump version to v1.5.0 ([f0e27a4](https://github.com/tonytonyjan/jaro_winkler/commit/f0e27a4))
+* docs: fix table format ([fba1b2e](https://github.com/tonytonyjan/jaro_winkler/commit/fba1b2e))
+* docs: update benchmark table ([f6f09d2](https://github.com/tonytonyjan/jaro_winkler/commit/f6f09d2))
+* docs: update gemspec description ([3054a3e](https://github.com/tonytonyjan/jaro_winkler/commit/3054a3e))
+* docs: update README.md ([a6ef904](https://github.com/tonytonyjan/jaro_winkler/commit/a6ef904))
+* perf: optimize single byte codepoints computation ([e0cdd51](https://github.com/tonytonyjan/jaro_winkler/commit/e0cdd51))
+* feat: support encodings other than utf-8 ([fe72ab4](https://github.com/tonytonyjan/jaro_winkler/commit/fe72ab4)), closes [#7](https://github.com/tonytonyjan/jaro_winkler/issues/7)
+* feat: support rubinius ([27090ff](https://github.com/tonytonyjan/jaro_winkler/commit/27090ff))
+* ci: add linux and osx to travis ci ([814418e](https://github.com/tonytonyjan/jaro_winkler/commit/814418e))
+* ci: refine .travis.yml, update ruby versions ([330e368](https://github.com/tonytonyjan/jaro_winkler/commit/330e368))
+* style: normalize codeing style with clang-format ([20865f4](https://github.com/tonytonyjan/jaro_winkler/commit/20865f4))
+* style: normalize coding styles with rubocop ([3864897](https://github.com/tonytonyjan/jaro_winkler/commit/3864897))
+* fix: free codepoints before returning to prevent memory leak ([8babd4f](https://github.com/tonytonyjan/jaro_winkler/commit/8babd4f))
+* fix: remove module functions from JaroWinkler ([af249d5](https://github.com/tonytonyjan/jaro_winkler/commit/af249d5))
+* refactor: declare DEFAULT_OPT as a global variable ([554f4cf](https://github.com/tonytonyjan/jaro_winkler/commit/554f4cf))
+* refactor: prefer sizeof(variable) over sizeof(type) ([1a37c7e](https://github.com/tonytonyjan/jaro_winkler/commit/1a37c7e))
+* refactor: rename code.h to codepoints.h ([106da9c](https://github.com/tonytonyjan/jaro_winkler/commit/106da9c))
+* refactor: rename functions, variables and arguments to make them more sense ([71f9e95](https://github.com/tonytonyjan/jaro_winkler/commit/71f9e95))
+* refactor: stop using char or int or short or long or unsigned, use int8_t, int16_t, int32_t, int64_t ([ba2b936](https://github.com/tonytonyjan/jaro_winkler/commit/ba2b936))
+* refactor: use ruby's built-in hash function ([16883ce](https://github.com/tonytonyjan/jaro_winkler/commit/16883ce)), closes [#14](https://github.com/tonytonyjan/jaro_winkler/issues/14)
+* test: use assert_in_delta for comparing floats ([feca1a5](https://github.com/tonytonyjan/jaro_winkler/commit/feca1a5))
+* add changelog [ci skip] ([de15eba](https://github.com/tonytonyjan/jaro_winkler/commit/de15eba))
+* Add JRuby 9.0.4.0 to the Travis CLI tests ([29fe873](https://github.com/tonytonyjan/jaro_winkler/commit/29fe873))
+* add ruby 2.3 test ([bb3fed8](https://github.com/tonytonyjan/jaro_winkler/commit/bb3fed8))
+* Add ruby 2.4.0 to .travis.yml ([b49f202](https://github.com/tonytonyjan/jaro_winkler/commit/b49f202))
+* fix ci ([f2b959f](https://github.com/tonytonyjan/jaro_winkler/commit/f2b959f))
+* fix ci ([71bbdc9](https://github.com/tonytonyjan/jaro_winkler/commit/71bbdc9))
+* fix rakefile ([f5cd294](https://github.com/tonytonyjan/jaro_winkler/commit/f5cd294))
+* refine adj table ([104c1af](https://github.com/tonytonyjan/jaro_winkler/commit/104c1af))
+* support jruby19 ([84c85a9](https://github.com/tonytonyjan/jaro_winkler/commit/84c85a9))
+* there has been gem for java platform since 1.4.0 [ci skip] ([093bd09](https://github.com/tonytonyjan/jaro_winkler/commit/093bd09))
+* typo ([6b8be41](https://github.com/tonytonyjan/jaro_winkler/commit/6b8be41))
+* update benchmark ([ce27575](https://github.com/tonytonyjan/jaro_winkler/commit/ce27575))
+* update README ([46e3137](https://github.com/tonytonyjan/jaro_winkler/commit/46e3137))
+* update README [ci skip] ([d88d73e](https://github.com/tonytonyjan/jaro_winkler/commit/d88d73e))
+* Update ruby version in .travis.yml to 2.3.3/2.2.6/2.1.10 ([6d11b55](https://github.com/tonytonyjan/jaro_winkler/commit/6d11b55))
+* use `pragma once` instead of `include guard`, it's been ([2d7f43e](https://github.com/tonytonyjan/jaro_winkler/commit/2d7f43e))
+
+
+### BREAKING CHANGE
* JaroWinkler no longer supports mixin, use class methods instead, ex.
`JaroWinkler.distance`
+## 1.4.0 (2015-12-12)
+
+* add JaroWinkler.jaro_distance ([7347807](https://github.com/tonytonyjan/jaro_winkler/commit/7347807))
+* add jruby to ci ([c46d208](https://github.com/tonytonyjan/jaro_winkler/commit/c46d208))
+* correct wording ([ead6367](https://github.com/tonytonyjan/jaro_winkler/commit/ead6367))
+* fix benchmark ([72e64ca](https://github.com/tonytonyjan/jaro_winkler/commit/72e64ca))
+* gems that are used in benchmark should not be defined in gemspec. ([8fd870e](https://github.com/tonytonyjan/jaro_winkler/commit/8fd870e))
+* indent ([609a56d](https://github.com/tonytonyjan/jaro_winkler/commit/609a56d))
+* more test ([5c9f8b6](https://github.com/tonytonyjan/jaro_winkler/commit/5c9f8b6))
+* prevent warning from rspec ([0a94fcb](https://github.com/tonytonyjan/jaro_winkler/commit/0a94fcb))
+* reimplement pure ruby version ([8c63b8a](https://github.com/tonytonyjan/jaro_winkler/commit/8c63b8a))
+* replace rspec with minitest ([accc6eb](https://github.com/tonytonyjan/jaro_winkler/commit/accc6eb))
+* use rake gem packaging tasks instead of bundler ([871c0d7](https://github.com/tonytonyjan/jaro_winkler/commit/871c0d7))
+
-
-# [1.4.0](https://github.com/tonytonyjan/jaro_winkler/compare/v1.3.7...v1.4.0) (2015-12-12)
-* The pure Ruby version is about 2.5 times faster compared to 1.3.7
-* Add `JaroWinkler.jaro_distance` for anyone who want to use jaro distance instead of jaro-winkler distance.
-* Unify algorithms between C extensions and pure Ruby, especially, rewrote the pure Ruby version.