@grain/binaryen.ml
Version:
OCaml bindings for Binaryen.
663 lines (365 loc) • 37.7 kB
Markdown
# Changelog
## [0.34.0](https://github.com/grain-lang/binaryen.ml/compare/v0.33.0...v0.34.0) (2025-11-12)
### ⚠ BREAKING CHANGES
* Update Passes api for Binaryen v124
* Upgrade to Binaryen v124 ([#241](https://github.com/grain-lang/binaryen.ml/issues/241))
### Features
* Update Passes api for Binaryen v124 ([305137a](https://github.com/grain-lang/binaryen.ml/commit/305137a264049f3f38bf8828c57aad190195ca49))
* Upgrade to Binaryen v124 ([#241](https://github.com/grain-lang/binaryen.ml/issues/241)) ([02829f8](https://github.com/grain-lang/binaryen.ml/commit/02829f805cd3133bb4b04c83abac8380996bd0ec))
## [0.33.0](https://github.com/grain-lang/binaryen.ml/compare/v0.32.0...v0.33.0) (2025-11-12)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v123 ([#256](https://github.com/grain-lang/binaryen.ml/issues/256))
### Features
* Implement optimization settings api ([#243](https://github.com/grain-lang/binaryen.ml/issues/243)) ([1f25caf](https://github.com/grain-lang/binaryen.ml/commit/1f25cafc96a1f6969a1ecca8ea778aeefae893a8))
* Upgrade to Binaryen v123 ([#256](https://github.com/grain-lang/binaryen.ml/issues/256)) ([dd6bfa7](https://github.com/grain-lang/binaryen.ml/commit/dd6bfa7bd1c072b33bbc1731a046d169ceb9ea39))
## [0.32.0](https://github.com/grain-lang/binaryen.ml/compare/v0.31.0...v0.32.0) (2025-11-12)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v122 ([#208](https://github.com/grain-lang/binaryen.ml/issues/208))
* Correct signature of `get_pass_argument` ([#247](https://github.com/grain-lang/binaryen.ml/issues/247))
### Features
* Upgrade to Binaryen v122 ([#208](https://github.com/grain-lang/binaryen.ml/issues/208)) ([434417d](https://github.com/grain-lang/binaryen.ml/commit/434417df5720205824b3fdfa3ce82fa72465c444))
### Bug Fixes
* Correct signature of `get_pass_argument` ([#247](https://github.com/grain-lang/binaryen.ml/issues/247)) ([986ecec](https://github.com/grain-lang/binaryen.ml/commit/986ecec07af320813f4137cfed4d454ae6c13f82))
## [0.31.0](https://github.com/grain-lang/binaryen.ml/compare/v0.30.0...v0.31.0) (2025-11-02)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v121 ([#207](https://github.com/grain-lang/binaryen.ml/issues/207))
### Features
* Upgrade to Binaryen v121 ([#207](https://github.com/grain-lang/binaryen.ml/issues/207)) ([7e51d5d](https://github.com/grain-lang/binaryen.ml/commit/7e51d5da5bd2336dd0122468bcc1e3030e13f86c))
## [0.30.0](https://github.com/grain-lang/binaryen.ml/compare/v0.29.0...v0.30.0) (2025-11-02)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v120 ([#206](https://github.com/grain-lang/binaryen.ml/issues/206))
### Features
* Upgrade to Binaryen v120 ([#206](https://github.com/grain-lang/binaryen.ml/issues/206)) ([4d69831](https://github.com/grain-lang/binaryen.ml/commit/4d6983154c19140af2ab2ac4451c5b69f0f2a736))
## [0.29.0](https://github.com/grain-lang/binaryen.ml/compare/v0.28.0...v0.29.0) (2025-11-01)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v119 ([#205](https://github.com/grain-lang/binaryen.ml/issues/205))
### Features
* Upgrade to Binaryen v119 ([#205](https://github.com/grain-lang/binaryen.ml/issues/205)) ([3a6b775](https://github.com/grain-lang/binaryen.ml/commit/3a6b77594908b1585864160a1895c9ba25319b8f))
## [0.28.0](https://github.com/grain-lang/binaryen.ml/compare/v0.27.0...v0.28.0) (2025-11-01)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v118 ([#204](https://github.com/grain-lang/binaryen.ml/issues/204))
### Features
* Upgrade to Binaryen v118 ([#204](https://github.com/grain-lang/binaryen.ml/issues/204)) ([6a5d0e8](https://github.com/grain-lang/binaryen.ml/commit/6a5d0e8ca24e306bc6d634bebc9f70efdf0896e0))
## [0.27.0](https://github.com/grain-lang/binaryen.ml/compare/v0.26.0...v0.27.0) (2025-10-29)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v117 ([#225](https://github.com/grain-lang/binaryen.ml/issues/225))
* Require jsoo >= 6.0 ([#211](https://github.com/grain-lang/binaryen.ml/issues/211))
* Require node `22` or above ([#219](https://github.com/grain-lang/binaryen.ml/issues/219))
### Features
* Upgrade to Binaryen v117 ([#225](https://github.com/grain-lang/binaryen.ml/issues/225)) ([246d9fc](https://github.com/grain-lang/binaryen.ml/commit/246d9fc365bdfd40d8631e3a3b6ddd92efbb8fad))
### Miscellaneous Chores
* Require jsoo >= 6.0 ([#211](https://github.com/grain-lang/binaryen.ml/issues/211)) ([cf53ffc](https://github.com/grain-lang/binaryen.ml/commit/cf53ffc132caed040ee9e7eca179cfd697bb5868))
* Require node `22` or above ([#219](https://github.com/grain-lang/binaryen.ml/issues/219)) ([3e1261e](https://github.com/grain-lang/binaryen.ml/commit/3e1261eabd76d8e5d546e104219c05201440053a))
## [0.26.0](https://github.com/grain-lang/binaryen.ml/compare/v0.25.0...v0.26.0) (2025-05-17)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v116 ([#202](https://github.com/grain-lang/binaryen.ml/issues/202))
### Features
* Upgrade to Binaryen v116 ([#202](https://github.com/grain-lang/binaryen.ml/issues/202)) ([44bdd2a](https://github.com/grain-lang/binaryen.ml/commit/44bdd2a276b1478e0d5eb74cbd5135fdf504abcc))
## [0.25.0](https://github.com/grain-lang/binaryen.ml/compare/v0.24.0...v0.25.0) (2025-05-15)
### ⚠ BREAKING CHANGES
* Upgrade to Binaryen v115 ([#200](https://github.com/grain-lang/binaryen.ml/issues/200))
* Drop support for OCaml 4.12
* Pin CI dependencies and require Node 22 ([#214](https://github.com/grain-lang/binaryen.ml/issues/214))
### Features
* Upgrade to Binaryen v115 ([#200](https://github.com/grain-lang/binaryen.ml/issues/200)) ([e35c596](https://github.com/grain-lang/binaryen.ml/commit/e35c596aae01935b88aa3bbda5078517b1fae36a))
### Miscellaneous Chores
* Drop support for OCaml 4.12 ([971b06e](https://github.com/grain-lang/binaryen.ml/commit/971b06ee542b37b56a6041bbbd16017fa6510d45))
* Pin CI dependencies and require Node 22 ([#214](https://github.com/grain-lang/binaryen.ml/issues/214)) ([971b06e](https://github.com/grain-lang/binaryen.ml/commit/971b06ee542b37b56a6041bbbd16017fa6510d45))
## [0.24.0](https://github.com/grain-lang/binaryen.ml/compare/v0.23.0...v0.24.0) (2023-10-30)
### ⚠ BREAKING CHANGES
* Update to libbinaryen v114 ([#198](https://github.com/grain-lang/binaryen.ml/issues/198))
### Features
* Update to libbinaryen v114 ([#198](https://github.com/grain-lang/binaryen.ml/issues/198)) ([d11b8e1](https://github.com/grain-lang/binaryen.ml/commit/d11b8e1fae530fe36439805576f8103aafc34583))
## [0.23.0](https://github.com/grain-lang/binaryen.ml/compare/v0.22.0...v0.23.0) (2023-09-27)
### ⚠ BREAKING CHANGES
* Remove `type_system`
* Remove `string_new_replace` operation
* Remove `string_new_replace_array` operation
* Upgrade to libbinaryen v113 ([#194](https://github.com/grain-lang/binaryen.ml/issues/194))
### Features
* Add `string_encode_lossy_utf8_array` operation ([7d222e0](https://github.com/grain-lang/binaryen.ml/commit/7d222e0f8ebc0cfb45e7c07304a59e9559accedc))
* Add `string_encode_lossy_utf8` operation ([7d222e0](https://github.com/grain-lang/binaryen.ml/commit/7d222e0f8ebc0cfb45e7c07304a59e9559accedc))
* Add `string_new_lossy_utf8_array` operation ([7d222e0](https://github.com/grain-lang/binaryen.ml/commit/7d222e0f8ebc0cfb45e7c07304a59e9559accedc))
* Add `string_new_lossy_utf8` operation ([7d222e0](https://github.com/grain-lang/binaryen.ml/commit/7d222e0f8ebc0cfb45e7c07304a59e9559accedc))
* Upgrade to libbinaryen v113 ([#194](https://github.com/grain-lang/binaryen.ml/issues/194)) ([7d222e0](https://github.com/grain-lang/binaryen.ml/commit/7d222e0f8ebc0cfb45e7c07304a59e9559accedc))
### Miscellaneous Chores
* Remove `string_new_replace_array` operation ([7d222e0](https://github.com/grain-lang/binaryen.ml/commit/7d222e0f8ebc0cfb45e7c07304a59e9559accedc))
* Remove `string_new_replace` operation ([7d222e0](https://github.com/grain-lang/binaryen.ml/commit/7d222e0f8ebc0cfb45e7c07304a59e9559accedc))
* Remove `type_system` ([7d222e0](https://github.com/grain-lang/binaryen.ml/commit/7d222e0f8ebc0cfb45e7c07304a59e9559accedc))
## [0.22.0](https://github.com/grain-lang/binaryen.ml/compare/v0.21.0...v0.22.0) (2023-09-14)
### ⚠ BREAKING CHANGES
* Rename `dataref` to `structref`
* Rename `data` to `struct_` in `Heap_type`
* Remove `equirecursive` in `Type_system`
* Properly resolve ops externals to their type
* Replace `Expression.Ref.is` with `Expression.Ref.is_null`
* Remove Ops that no longer exist in Binaryen
* Upgrade to libbinaryen v112 ([#188](https://github.com/grain-lang/binaryen.ml/issues/188))
### Features
* Add i31 expressions ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
* Add new Binaryen ops ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
* Add new optimization passes ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
* Replace `Expression.Ref.is` with `Expression.Ref.is_null` ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
* Upgrade to libbinaryen v112 ([#188](https://github.com/grain-lang/binaryen.ml/issues/188)) ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
### Bug Fixes
* Properly resolve ops externals to their type ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
### Miscellaneous Chores
* Remove `equirecursive` in `Type_system` ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
* Remove Ops that no longer exist in Binaryen ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
* Rename `data` to `struct_` in `Heap_type` ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
* Rename `dataref` to `structref` ([46c97c2](https://github.com/grain-lang/binaryen.ml/commit/46c97c2e92d95ffbe880c084ce3c13c503240e58))
## [0.21.0](https://github.com/grain-lang/binaryen.ml/compare/v0.20.1...v0.21.0) (2023-07-04)
### ⚠ BREAKING CHANGES
* Remove typed_function_reference feature which was removed in Binaryen
* Add memory64 flag to `Memory.set_memory`
* Upgrade to libbinaryen v111 ([#184](https://github.com/grain-lang/binaryen.ml/issues/184))
### Features
* Add array, none, noext, and nofunc heap types ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add arrayref, nullref, null_externref, and null_funcref types ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add is_64 check for memory ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add memory64 flag to `Memory.set_memory` ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add multi_memories module feature ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add new BinaryenOps ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add new optimization passes ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add operations on array types ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add operations on heap types ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add operations on signature types ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Add operations on struct types ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Upgrade to libbinaryen v111 ([#184](https://github.com/grain-lang/binaryen.ml/issues/184)) ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
* Widen version range for js_of_ocaml ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
### Miscellaneous Chores
* Remove typed_function_reference feature which was removed in Binaryen ([f1c9fd7](https://github.com/grain-lang/binaryen.ml/commit/f1c9fd7a9aab97bd5f4e72d9c2b41bff88969128))
## [0.20.1](https://github.com/grain-lang/binaryen.ml/compare/v0.20.0...v0.20.1) (2023-01-19)
### Features
* Add gufa & gufa_optimizing passes ([#180](https://github.com/grain-lang/binaryen.ml/issues/180)) ([7395a1f](https://github.com/grain-lang/binaryen.ml/commit/7395a1fe0591a835eeeeb6e6e58c28c32b69342d))
### Bug Fixes
* Properly handle load & store instructions in JS ([#178](https://github.com/grain-lang/binaryen.ml/issues/178)) ([becd3b8](https://github.com/grain-lang/binaryen.ml/commit/becd3b82ac31c7f2ba1055b320c7ff537b58d971))
## [0.20.0](https://github.com/grain-lang/binaryen.ml/compare/v0.19.0...v0.20.0) (2023-01-13)
### ⚠ BREAKING CHANGES
* Require dune 3.0 to better support js_of_ocaml
* Update memory operations to require memory name
* Remove RttCanon and RttSub expression kinds
* Add optimize argument to StackIR emitting functions
* Require js_of_ocaml 4.1 to ensure optimization fix
* Upgrade to libbinaryen v110 ([#173](https://github.com/grain-lang/binaryen.ml/issues/173))
* Properly accept the size argument to Memory_init.make ([#171](https://github.com/grain-lang/binaryen.ml/issues/171))
### Features
* Add functions for converting between Types and Heap Types ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Add operations on Heap Types ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Add operations on Packed Types ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Add operations on the Type System ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Add optimize argument to StackIR emitting functions ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Add Stringref and Stringview Types ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Add strings feature ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Support querying data segments ([#176](https://github.com/grain-lang/binaryen.ml/issues/176)) ([5a6141c](https://github.com/grain-lang/binaryen.ml/commit/5a6141cd585e5030f74ebdaaee1e664b4339c17e))
* Update memory operations to require memory name ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Upgrade to libbinaryen v110 ([#173](https://github.com/grain-lang/binaryen.ml/issues/173)) ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
### Bug Fixes
* Properly accept the size argument to Memory_init.make ([#171](https://github.com/grain-lang/binaryen.ml/issues/171)) ([9ea20fe](https://github.com/grain-lang/binaryen.ml/commit/9ea20fe141f4f39697382c786c8d7f13290ff26d))
### Miscellaneous Chores
* Remove RttCanon and RttSub expression kinds ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Require dune 3.0 to better support js_of_ocaml ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
* Require js_of_ocaml 4.1 to ensure optimization fix ([474e5cd](https://github.com/grain-lang/binaryen.ml/commit/474e5cd49b276b5becc54e6f1bf4d9c044ef5b76))
## [0.19.0](https://github.com/grain-lang/binaryen.ml/compare/v0.18.0...v0.19.0) (2022-11-19)
### ⚠ BREAKING CHANGES
* Upgrade to libbinaryen v109 (#165)
### Features
* Add `Import.memory_import_get_module` and `Import.memory_import_get_base` functions ([b584500](https://github.com/grain-lang/binaryen.ml/commit/b5845005bd20c3813db11bebb9b47ad616c01c5d))
* Add function to print StackIR ([b584500](https://github.com/grain-lang/binaryen.ml/commit/b5845005bd20c3813db11bebb9b47ad616c01c5d))
* Add function to write StackIR ([b584500](https://github.com/grain-lang/binaryen.ml/commit/b5845005bd20c3813db11bebb9b47ad616c01c5d))
* Add gsi & spill_pointers passes ([b584500](https://github.com/grain-lang/binaryen.ml/commit/b5845005bd20c3813db11bebb9b47ad616c01c5d))
* Add operations on memory ([b584500](https://github.com/grain-lang/binaryen.ml/commit/b5845005bd20c3813db11bebb9b47ad616c01c5d))
* Upgrade to libbinaryen v109 ([#165](https://github.com/grain-lang/binaryen.ml/issues/165)) ([b584500](https://github.com/grain-lang/binaryen.ml/commit/b5845005bd20c3813db11bebb9b47ad616c01c5d))
## [0.18.0](https://github.com/grain-lang/binaryen.ml/compare/v0.17.1...v0.18.0) (2022-07-05)
### ⚠ BREAKING CHANGES
* Remove externref type
* Update to libbinaryen v108 ([#163](https://github.com/grain-lang/binaryen.ml/issues/163))
* Support passive memory segments ([#158](https://github.com/grain-lang/binaryen.ml/issues/158)) ([21857f7](https://github.com/grain-lang/binaryen.ml/commit/21857f7cf653a52e558fb7ffaa5a1e6042e895a0))
### Features
* Add anyref type as replacement for externref type ([f0c7d7e](https://github.com/grain-lang/binaryen.ml/commit/f0c7d7e5aaad93eb75ad850387730a245db3a545))
* Add eqref, i31ref, and dataref types ([#162](https://github.com/grain-lang/binaryen.ml/issues/162)) ([b6808ee](https://github.com/grain-lang/binaryen.ml/commit/b6808ee4422a68aa27114573e642b2467df9cc3c))
* Remove externref type ([f0c7d7e](https://github.com/grain-lang/binaryen.ml/commit/f0c7d7e5aaad93eb75ad850387730a245db3a545))
* Support passive memory segments ([#158](https://github.com/grain-lang/binaryen.ml/issues/158)) ([21857f7](https://github.com/grain-lang/binaryen.ml/commit/21857f7cf653a52e558fb7ffaa5a1e6042e895a0))
* Update to libbinaryen v108 ([#163](https://github.com/grain-lang/binaryen.ml/issues/163)) ([f0c7d7e](https://github.com/grain-lang/binaryen.ml/commit/f0c7d7e5aaad93eb75ad850387730a245db3a545))
### Bug Fixes
* Convert JSOO lists to JS arrays before working with them ([#161](https://github.com/grain-lang/binaryen.ml/issues/161)) ([e4931f0](https://github.com/grain-lang/binaryen.ml/commit/e4931f00cffccefd5918b94b17b18883e120e444))
### [0.17.1](https://github.com/grain-lang/binaryen.ml/compare/v0.17.0...v0.17.1) (2022-06-11)
### Bug Fixes
* Remove upper bounds on dependencies ([#156](https://github.com/grain-lang/binaryen.ml/issues/156)) ([9ae4015](https://github.com/grain-lang/binaryen.ml/commit/9ae4015a4af6233e38d96a6f2ebabe55313fb8ea))
## [0.17.0](https://github.com/grain-lang/binaryen.ml/compare/v0.16.0...v0.17.0) (2022-05-11)
### ⚠ BREAKING CHANGES
* Update libbinaryen to 107 ([#152](https://github.com/grain-lang/binaryen.ml/issues/152))
### Features
* Add merge_similar_functions pass ([#154](https://github.com/grain-lang/binaryen.ml/issues/154)) ([54b03fd](https://github.com/grain-lang/binaryen.ml/commit/54b03fd854311f49aa1821868a8265116be922c2))
* Add signature_pruning pass ([#155](https://github.com/grain-lang/binaryen.ml/issues/155)) ([206b6cf](https://github.com/grain-lang/binaryen.ml/commit/206b6cf0ade48a778f4e991cf5d2ab0daf559bf8))
* Add support for extended_const feature ([260c2a1](https://github.com/grain-lang/binaryen.ml/commit/260c2a131a08720eac0f21abf68689fd201eb753))
* Update libbinaryen to 107 ([#152](https://github.com/grain-lang/binaryen.ml/issues/152)) ([260c2a1](https://github.com/grain-lang/binaryen.ml/commit/260c2a131a08720eac0f21abf68689fd201eb753))
## [0.16.0](https://github.com/grain-lang/binaryen.ml/compare/v0.15.0...v0.16.0) (2022-05-11)
### ⚠ BREAKING CHANGES
* Restrict OCaml < 4.14 temporarily
* Update libbinaryen to 106 ([#151](https://github.com/grain-lang/binaryen.ml/issues/151))
* Expression.Return.get_value can be null ([#149](https://github.com/grain-lang/binaryen.ml/issues/149))
### Features
* Update libbinaryen to 106 ([#151](https://github.com/grain-lang/binaryen.ml/issues/151)) ([453b9de](https://github.com/grain-lang/binaryen.ml/commit/453b9dea8f0bda026b70f67d7c99311f9f6601e3))
### Bug Fixes
* Expression.Return.get_value can be null ([#149](https://github.com/grain-lang/binaryen.ml/issues/149)) ([559341d](https://github.com/grain-lang/binaryen.ml/commit/559341d13a7ba5abb8521f6d0d982d4f25b86ce0))
### Miscellaneous Chores
* Restrict OCaml < 4.14 temporarily ([453b9de](https://github.com/grain-lang/binaryen.ml/commit/453b9dea8f0bda026b70f67d7c99311f9f6601e3))
## [0.15.0](https://github.com/grain-lang/binaryen.ml/compare/v0.14.1...v0.15.0) (2022-03-16)
### ⚠ BREAKING CHANGES
* Rename segment name to data (#146)
* Add Passes module & require `Passes.t` in `Module.run_passes` (#145)
* Remove virtual modules
* Remove the "jsoo hack" API
* Update libbinaryen to v105 (#142)
### Features
* Add Passes module & require `Passes.t` in `Module.run_passes` ([#145](https://github.com/grain-lang/binaryen.ml/issues/145)) ([c3e751c](https://github.com/grain-lang/binaryen.ml/commit/c3e751c4f869b9481e18c85a525100fbdcfa9072))
* Remove the "jsoo hack" API ([3c81209](https://github.com/grain-lang/binaryen.ml/commit/3c81209763e3d09d51a5ab68ebd705582fe02c54))
* Remove unneeded js_of_ocaml & js_of_ocaml-ppx deps ([3c81209](https://github.com/grain-lang/binaryen.ml/commit/3c81209763e3d09d51a5ab68ebd705582fe02c54))
* Remove virtual modules ([3c81209](https://github.com/grain-lang/binaryen.ml/commit/3c81209763e3d09d51a5ab68ebd705582fe02c54))
* Rename segment name to data ([#146](https://github.com/grain-lang/binaryen.ml/issues/146)) ([d55e577](https://github.com/grain-lang/binaryen.ml/commit/d55e5773d39fd5f21f556e0f5493d6c60bbc2198))
* Rewrite JS bindings as js_of_ocaml externals ([3c81209](https://github.com/grain-lang/binaryen.ml/commit/3c81209763e3d09d51a5ab68ebd705582fe02c54))
* Update libbinaryen to v105 ([#142](https://github.com/grain-lang/binaryen.ml/issues/142)) ([3c81209](https://github.com/grain-lang/binaryen.ml/commit/3c81209763e3d09d51a5ab68ebd705582fe02c54))
### Bug Fixes
* Make memory segments work with js_of_ocaml ([3c81209](https://github.com/grain-lang/binaryen.ml/commit/3c81209763e3d09d51a5ab68ebd705582fe02c54))
### [0.14.1](https://github.com/grain-lang/binaryen.ml/compare/v0.14.0...v0.14.1) (2022-03-08)
### Bug Fixes
* Update binaryen JS to v104 ([#140](https://github.com/grain-lang/binaryen.ml/issues/140)) ([eb9049e](https://github.com/grain-lang/binaryen.ml/commit/eb9049e4ec0ec2406e72c5bb9190b993a187f2d0))
## [0.14.0](https://github.com/grain-lang/binaryen.ml/compare/v0.13.0...v0.14.0) (2022-03-04)
### ⚠ BREAKING CHANGES
* Update libbinaryen to v104 (#138)
### Features
* Update libbinaryen to v104 ([#138](https://github.com/grain-lang/binaryen.ml/issues/138)) ([81addf7](https://github.com/grain-lang/binaryen.ml/commit/81addf76dcc21dc1681b5a29b80ba31522911047))
## [0.13.0](https://github.com/grain-lang/binaryen.ml/compare/v0.12.1...v0.13.0) (2022-02-07)
### Features
* Add all `Module.Features` that were missing ([09c5d30](https://github.com/grain-lang/binaryen.ml/commit/09c5d3064e9fd80ea6adac8b2f40cf2b708ebb8c))
* Add functions for ref & table expressions ([09c5d30](https://github.com/grain-lang/binaryen.ml/commit/09c5d3064e9fd80ea6adac8b2f40cf2b708ebb8c))
* Upgrade to libbinaryen v103 ([#134](https://github.com/grain-lang/binaryen.ml/issues/134)) ([09c5d30](https://github.com/grain-lang/binaryen.ml/commit/09c5d3064e9fd80ea6adac8b2f40cf2b708ebb8c))
### Miscellaneous Chores
* Use a upload-release-action that works ([97dbcdc](https://github.com/grain-lang/binaryen.ml/commit/97dbcdc53e69ccdb6e88ef03ce0766443a024cf1))
### [0.12.1](https://github.com/grain-lang/binaryen.ml/compare/v0.12.0...v0.12.1) (2022-02-03)
### Features
* **ci:** Upgrade release-please ([#131](https://github.com/grain-lang/binaryen.ml/issues/131)) ([ca3bdb7](https://github.com/grain-lang/binaryen.ml/commit/ca3bdb7aa324a013205a80759bcc733fea64ae4a))
### Bug Fixes
* Restrict js_of_ocaml to version 3 ([fa39480](https://github.com/grain-lang/binaryen.ml/commit/fa39480fc74b19cf7052ec5c0764ee58b5783549))
### Miscellaneous Chores
* Fix release version ([5d1bd42](https://github.com/grain-lang/binaryen.ml/commit/5d1bd42a7132298a902060c46dae72507e702eb0))
## [0.12.0](https://www.github.com/grain-lang/binaryen.ml/compare/v0.11.2...v0.12.0) (2022-01-26)
### ⚠ BREAKING CHANGES
* Add table type to add_table signature
* Rename Event to Tag to match Binaryen
### Features
* Add table type to add_table signature ([5c50272](https://www.github.com/grain-lang/binaryen.ml/commit/5c502720943a8bf6e649891051db00336eec9451))
* Add update_maps function that Binaryen added ([5c50272](https://www.github.com/grain-lang/binaryen.ml/commit/5c502720943a8bf6e649891051db00336eec9451))
* Rename Event to Tag to match Binaryen ([5c50272](https://www.github.com/grain-lang/binaryen.ml/commit/5c502720943a8bf6e649891051db00336eec9451))
* Upgrade to libbinaryen v102 ([#120](https://www.github.com/grain-lang/binaryen.ml/issues/120)) ([5c50272](https://www.github.com/grain-lang/binaryen.ml/commit/5c502720943a8bf6e649891051db00336eec9451))
### [0.11.2](https://www.github.com/grain-lang/binaryen.ml/compare/v0.11.1...v0.11.2) (2022-01-24)
### Bug Fixes
* Handle JS global in non-node environments ([#125](https://www.github.com/grain-lang/binaryen.ml/issues/125)) ([74e94fe](https://www.github.com/grain-lang/binaryen.ml/commit/74e94fe8ac7b2c2a66b8118b5eaa3a81e5f9296a))
### [0.11.1](https://www.github.com/grain-lang/binaryen.ml/compare/v0.11.0...v0.11.1) (2022-01-16)
### Bug Fixes
* Make features work in 32-bit mode ([#123](https://www.github.com/grain-lang/binaryen.ml/issues/123)) ([e435c8b](https://www.github.com/grain-lang/binaryen.ml/commit/e435c8bd9f6619c42b82e53e5d1caa929b5d4ebf))
## [0.11.0](https://www.github.com/grain-lang/binaryen.ml/compare/v0.10.0...v0.11.0) (2022-01-13)
### ⚠ BREAKING CHANGES
* Mention implicit python dependency in the docs
* Switch to libbinaryen dependency (#113)
* Remove MacOS-specific library flags (#111)
* Require OCaml 4.12 (#108)
### Features
* Depend on libbinaryen ([59874ce](https://www.github.com/grain-lang/binaryen.ml/commit/59874ce785288d4a33ed5408ac4a0a33e16ff4c1))
* Remove MacOS-specific library flags ([#111](https://www.github.com/grain-lang/binaryen.ml/issues/111)) ([5a67f9f](https://www.github.com/grain-lang/binaryen.ml/commit/5a67f9f330332f8957976841819707d09124dc94))
* Require OCaml 4.12 ([#108](https://www.github.com/grain-lang/binaryen.ml/issues/108)) ([36eedea](https://www.github.com/grain-lang/binaryen.ml/commit/36eedea279fb19ee6131b72b21c24ba0a9d7f993))
* Switch to libbinaryen dependency ([#113](https://www.github.com/grain-lang/binaryen.ml/issues/113)) ([59874ce](https://www.github.com/grain-lang/binaryen.ml/commit/59874ce785288d4a33ed5408ac4a0a33e16ff4c1))
### Miscellaneous Chores
* Mention implicit python dependency in the docs ([59874ce](https://www.github.com/grain-lang/binaryen.ml/commit/59874ce785288d4a33ed5408ac4a0a33e16ff4c1))
## [0.10.0](https://www.github.com/grain-lang/binaryen.ml/compare/v0.9.1...v0.10.0) (2021-05-09)
### ⚠ BREAKING CHANGES
* Move expressions into namespaces
* Move element segment into own module
* Move `Features` into `Module.Feature`
* Create Settings modules & move global functions
* Convert some Settings from ints to bools
* Remove SIMD methods that Binaryen replaced
* Upgrade Binaryen to v101 (#99)
### Features
* Add `Module.get_features` ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Add `Type.expandType` ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Add operations on element segments ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Add operations on exports ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Add operations on expressions ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Add operations on functions ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Add operations on globals ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Add operations on imports ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Add support for reference types ([#101](https://www.github.com/grain-lang/binaryen.ml/issues/101)) ([5058492](https://www.github.com/grain-lang/binaryen.ml/commit/50584929466b7aae5f7c9b48b8b9bab5676ed53e))
* Build vendored Binaryen with GCC 7 instead of 9 ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Convert some Settings from ints to bools ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Create Settings modules & move global functions ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Move `Features` into `Module.Feature` ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Move element segment into own module ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Move expressions into namespaces ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
* Upgrade Binaryen to v101 ([#99](https://www.github.com/grain-lang/binaryen.ml/issues/99)) ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
### Miscellaneous Chores
* Remove SIMD methods that Binaryen replaced ([3de1b28](https://www.github.com/grain-lang/binaryen.ml/commit/3de1b289ed4673f701801f3087e48ac9746d89d1))
### [0.9.1](https://www.github.com/grain-lang/binaryen.ml/compare/v0.9.0...v0.9.1) (2021-04-02)
### Bug Fixes
* Correct JS conversion of i64 & float64_bits literals ([#96](https://www.github.com/grain-lang/binaryen.ml/issues/96)) ([00b7093](https://www.github.com/grain-lang/binaryen.ml/commit/00b7093ad57c7698ff7f6e69f59fd426ee341fbf))
## [0.9.0](https://www.github.com/grain-lang/binaryen.ml/compare/v0.8.1...v0.9.0) (2021-03-17)
### Features
* add Function_table.unlimited constant ([#87](https://www.github.com/grain-lang/binaryen.ml/issues/87)) ([0d2fcde](https://www.github.com/grain-lang/binaryen.ml/commit/0d2fcde007b77e6edd5c66975fd7a611ae9a8ef8))
* write bindings for add_table ([6dc0fa8](https://www.github.com/grain-lang/binaryen.ml/commit/6dc0fa83d5873630cf7a0a6f2895600c68ad4f30))
### Bug Fixes
* **js:** cast the call_indirect string arguments to JS strings ([7b4136a](https://www.github.com/grain-lang/binaryen.ml/commit/7b4136a2e2fdae3efd85351dc40aad2ad4c3ed3e))
* **js:** utilize JSOO externals to convert between uint8array & bytes ([#85](https://www.github.com/grain-lang/binaryen.ml/issues/85)) ([61d28c5](https://www.github.com/grain-lang/binaryen.ml/commit/61d28c5e7e6ca6217759a75e2c96e7cb5c1b3d45))
* return JS null value from Expression.null ([#83](https://www.github.com/grain-lang/binaryen.ml/issues/83)) ([61861e2](https://www.github.com/grain-lang/binaryen.ml/commit/61861e2590816bccc5c6c17a2a5b77f3a3db3779))
### Miscellaneous Chores
* fix formatter & format the code ([#80](https://www.github.com/grain-lang/binaryen.ml/issues/80)) ([b9c485a](https://www.github.com/grain-lang/binaryen.ml/commit/b9c485a69cfb6ffbcc8a7a7611c2ea09386486e2))
* set dune language to the version of dune we use ([e9eb5c9](https://www.github.com/grain-lang/binaryen.ml/commit/e9eb5c927dbee84f9ab783a2bfb7f2e16c94e7f6))
* use test file directly in one rule so ocaml-lsp works ([34b7a13](https://www.github.com/grain-lang/binaryen.ml/commit/34b7a13864f81d5d2b8781f1b172d72f28354209))
### Documentation
* cleanup Binaryen submodule & building language (closes [#65](https://www.github.com/grain-lang/binaryen.ml/issues/65)) ([3bdb23d](https://www.github.com/grain-lang/binaryen.ml/commit/3bdb23dbca2734d58ee0802b796593016ac80c6e))
### [0.8.1](https://www.github.com/grain-lang/binaryen.ml/compare/v0.8.0...v0.8.1) (2021-03-09)
### Bug Fixes
* Module.optimize on macOS ([#77](https://www.github.com/grain-lang/binaryen.ml/issues/77)) ([0b92043](https://www.github.com/grain-lang/binaryen.ml/commit/0b920431372119d92b0077f51b91ca745fbfde87))
### Continuous Integration
* write opam CHANGES from environment var ([#78](https://www.github.com/grain-lang/binaryen.ml/issues/78)) ([4f25e0e](https://www.github.com/grain-lang/binaryen.ml/commit/4f25e0e96c3b1d2ad22d3b037695960cd6b2722a))
## [0.8.0](https://www.github.com/grain-lang/binaryen.ml/compare/v0.7.0...v0.8.0) (2021-03-05)
### ⚠ BREAKING CHANGES
* Table name must now be provided to the `Expression.call_indirect` and `Expression.return_call_indirect` instructions.
### Features
* Upgrade to Binaryen 100 ([#75](https://www.github.com/grain-lang/binaryen.ml/issues/75)) ([d59f5f9](https://www.github.com/grain-lang/binaryen.ml/commit/d59f5f9fb5356f4ccd7f4a7fefe15d5d4b721412))
### Continuous Integration
* fix markdown escaping for opam release ([#72](https://www.github.com/grain-lang/binaryen.ml/issues/72)) ([a2e6052](https://www.github.com/grain-lang/binaryen.ml/commit/a2e605241376ffdfcbba7ecd2e7a7ac52b53019f))
### Miscellaneous Chores
* fix dune misdocumentation ([#73](https://www.github.com/grain-lang/binaryen.ml/issues/73)) ([341e718](https://www.github.com/grain-lang/binaryen.ml/commit/341e71805078dae312171d5985dec7ebc689bdbe))
## [0.7.0](https://www.github.com/grain-lang/binaryen.ml/compare/v0.6.0...v0.7.0) (2021-02-24)
### ⚠ BREAKING CHANGES
* memory_size and memory_grow are now toplevel functions in `Expression`.
* removed `Type.nullref`, `Type.exnref`
* removed `Op.any_true_vec_i64x2` and `Op.all_true_vec_i64x2`
* Bump to Binaryen 98
### Features
* Bump to Binaryen 98 ([9a52a07](https://www.github.com/grain-lang/binaryen.ml/commit/9a52a077051441f8b0999bad1d77a8d3a6357460))
### Continuous Integration
* add opam & npm releases to workflow ([#69](https://www.github.com/grain-lang/binaryen.ml/issues/69)) ([d339608](https://www.github.com/grain-lang/binaryen.ml/commit/d3396085565e478b31a5819628be08bae1e2be16))
* run opam build on ubuntu 18 instead of 20 ([#67](https://www.github.com/grain-lang/binaryen.ml/issues/67)) ([7ee2009](https://www.github.com/grain-lang/binaryen.ml/commit/7ee20092da341f927acf552abcbcf8bfcca90c0b))
### Miscellaneous Chores
* memory_size and memory_grow are now toplevel functions in `Expression`. ([9a52a07](https://www.github.com/grain-lang/binaryen.ml/commit/9a52a077051441f8b0999bad1d77a8d3a6357460))
* removed `Op.any_true_vec_i64x2` and `Op.all_true_vec_i64x2` ([9a52a07](https://www.github.com/grain-lang/binaryen.ml/commit/9a52a077051441f8b0999bad1d77a8d3a6357460))
* removed `Type.nullref`, `Type.exnref` ([9a52a07](https://www.github.com/grain-lang/binaryen.ml/commit/9a52a077051441f8b0999bad1d77a8d3a6357460))
## [0.6.0](https://www.github.com/grain-lang/binaryen.ml/compare/v0.5.0...v0.6.0) (2021-01-24)
### Features
* Allow signed narrow-width loads ([#62](https://www.github.com/grain-lang/binaryen.ml/issues/62)) ([6448aeb](https://www.github.com/grain-lang/binaryen.ml/commit/6448aeb4ae00a07c98b0386fc1a82f6b653ac2c0))
## [0.5.0](https://www.github.com/grain-lang/binaryen.ml/compare/v0.4.0...v0.5.0) (2021-01-12)
### Features
* Allow optional return_type parameter when creating blocks ([ab737bd](https://www.github.com/grain-lang/binaryen.ml/commit/ab737bd4940a4534a84d1dcff2d0a42cd49cdd38))
### Bug Fixes
* add arch & os restrictions for opam ([#41](https://www.github.com/grain-lang/binaryen.ml/issues/41)) ([421b45d](https://www.github.com/grain-lang/binaryen.ml/commit/421b45d152bf8c5e15ba55e60357ab6c2d7a25f4))
* provide type to select instruction ([#46](https://www.github.com/grain-lang/binaryen.ml/issues/46)) ([2096a3c](https://www.github.com/grain-lang/binaryen.ml/commit/2096a3c2a219212519be3498c831d2e9d234a0ee))
### Documentation
* add section about static linking ([#37](https://www.github.com/grain-lang/binaryen.ml/issues/37)) ([f9afda1](https://www.github.com/grain-lang/binaryen.ml/commit/f9afda1bf80fbf06173cc1d6767164d4d93e12a5))
### Miscellaneous Chores
* Add --no-browser flag to opam-publish ([#43](https://www.github.com/grain-lang/binaryen.ml/issues/43)) ([f47f2bb](https://www.github.com/grain-lang/binaryen.ml/commit/f47f2bb1ed2016ab9f82e25e67dcc727958581c2))
* Switch back to official setup-opam action ([#44](https://www.github.com/grain-lang/binaryen.ml/issues/44)) ([f4338bd](https://www.github.com/grain-lang/binaryen.ml/commit/f4338bd110bf5c116a8a99f9b868a83a3da82d11))
### Continuous Integration
* Add release workflow ([#21](https://www.github.com/grain-lang/binaryen.ml/issues/21)) ([bd9d210](https://www.github.com/grain-lang/binaryen.ml/commit/bd9d210f26e7dc42ba452ee6283696d538e5bbc1))
* Add release-please-action to release process ([#55](https://www.github.com/grain-lang/binaryen.ml/issues/55)) ([5909560](https://www.github.com/grain-lang/binaryen.ml/commit/590956017550fb884c22c2681b924856a82c87b0))