wasmtime 0.2.0-x86_64-linux → 0.4.0-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44ec05581887e298d02a58e3d13d262da3e655dc50f5f1b4a5486bdced0a0af1
4
- data.tar.gz: d2078f7320a1c76eb9531cf5f2ade8bc3e05d5b116b8c9c232d56e8417faa68e
3
+ metadata.gz: 9d4bbd6fe60e446c784f194aee2d1aa36473000237a06c1d87e7a06656ef591c
4
+ data.tar.gz: 472059120cc3f6959caebc4bca061fcd766c61ccfda4fcfbb1aa315818770b38
5
5
  SHA512:
6
- metadata.gz: 3e91df734e78123c034475d066de2e0d366dd141ebe31f35f7ea5827dcd6aa7eefa392efe1053e257640ef123dcae191f8dd7fd5eb9be2f8466c215be8b2a7d9
7
- data.tar.gz: b7ca4635c48d30042f907f8e1ea4a326ce63d3ea9198288425d0bd12e39461ede97e7f3742384b3265e44169acb20d225cadb74932c8bd6ee5da9ad971f0d84d
6
+ metadata.gz: 5e781487208571c1c5fcb490db087953b597c20194abfa8a7653e7a108c0d1407971db1940ec5162a81ec29b24cb2d7fdd0da1eb48ae8ef55aee5613e7e82172
7
+ data.tar.gz: d8e07914fc9c09f2532a292406819bced2e356e7cb66893f028dde87536211fd92d9e97d344db24ea2282de4b14ab59076d984ada1faf4e5056018b49f740a2d
data/LICENSE CHANGED
@@ -1,10 +1,11 @@
1
+
1
2
  Apache License
2
3
  Version 2.0, January 2004
3
4
  http://www.apache.org/licenses/
4
5
 
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
7
 
7
- 1. Definitions.
8
+ 1. Definitions.
8
9
 
9
10
  "License" shall mean the terms and conditions for use, reproduction,
10
11
  and distribution as defined by Sections 1 through 9 of this document.
@@ -63,14 +64,14 @@
63
64
  on behalf of whom a Contribution has been received by Licensor and
64
65
  subsequently incorporated within the Work.
65
66
 
66
- 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
68
  this License, each Contributor hereby grants to You a perpetual,
68
69
  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
70
  copyright license to reproduce, prepare Derivative Works of,
70
71
  publicly display, publicly perform, sublicense, and distribute the
71
72
  Work and such Derivative Works in Source or Object form.
72
73
 
73
- 3. Grant of Patent License. Subject to the terms and conditions of
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
75
  this License, each Contributor hereby grants to You a perpetual,
75
76
  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
77
  (except as stated in this section) patent license to make, have made,
@@ -86,7 +87,7 @@
86
87
  granted to You under this License for that Work shall terminate
87
88
  as of the date such litigation is filed.
88
89
 
89
- 4. Redistribution. You may reproduce and distribute copies of the
90
+ 4. Redistribution. You may reproduce and distribute copies of the
90
91
  Work or Derivative Works thereof in any medium, with or without
91
92
  modifications, and in Source or Object form, provided that You
92
93
  meet the following conditions:
@@ -127,7 +128,7 @@
127
128
  reproduction, and distribution of the Work otherwise complies with
128
129
  the conditions stated in this License.
129
130
 
130
- 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
132
  any Contribution intentionally submitted for inclusion in the Work
132
133
  by You to the Licensor shall be under the terms and conditions of
133
134
  this License, without any additional terms or conditions.
@@ -135,12 +136,12 @@
135
136
  the terms of any separate license agreement you may have executed
136
137
  with Licensor regarding such Contributions.
137
138
 
138
- 6. Trademarks. This License does not grant permission to use the trade
139
+ 6. Trademarks. This License does not grant permission to use the trade
139
140
  names, trademarks, service marks, or product names of the Licensor,
140
141
  except as required for reasonable and customary use in describing the
141
142
  origin of the Work and reproducing the content of the NOTICE file.
142
143
 
143
- 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
145
  agreed to in writing, Licensor provides the Work (and each
145
146
  Contributor provides its Contributions) on an "AS IS" BASIS,
146
147
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
@@ -150,7 +151,7 @@
150
151
  appropriateness of using or redistributing the Work and assume any
151
152
  risks associated with Your exercise of permissions under this License.
152
153
 
153
- 8. Limitation of Liability. In no event and under no legal theory,
154
+ 8. Limitation of Liability. In no event and under no legal theory,
154
155
  whether in tort (including negligence), contract, or otherwise,
155
156
  unless required by applicable law (such as deliberate and grossly
156
157
  negligent acts) or agreed to in writing, shall any Contributor be
@@ -162,7 +163,7 @@
162
163
  other commercial damages or losses), even if such Contributor
163
164
  has been advised of the possibility of such damages.
164
165
 
165
- 9. Accepting Warranty or Additional Liability. While redistributing
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
167
  the Work or Derivative Works thereof, You may choose to offer,
167
168
  and charge a fee for, acceptance of support, warranty, indemnity,
168
169
  or other liability obligations and/or rights consistent with this
@@ -173,9 +174,9 @@
173
174
  incurred by, or claims asserted against, such Contributor by reason
174
175
  of your accepting any such warranty or additional liability.
175
176
 
176
- END OF TERMS AND CONDITIONS
177
+ END OF TERMS AND CONDITIONS
177
178
 
178
- APPENDIX: How to apply the Apache License to your work.
179
+ APPENDIX: How to apply the Apache License to your work.
179
180
 
180
181
  To apply the Apache License to your work, attach the following
181
182
  boilerplate notice, with the fields enclosed by brackets "[]"
@@ -186,19 +187,19 @@
186
187
  same "printed page" as the copyright notice for easier
187
188
  identification within third-party archives.
188
189
 
189
- Copyright [yyyy] [name of copyright owner]
190
+ Copyright [yyyy] [name of copyright owner]
190
191
 
191
- Licensed under the Apache License, Version 2.0 (the "License");
192
- you may not use this file except in compliance with the License.
193
- You may obtain a copy of the License at
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
194
195
 
195
196
  http://www.apache.org/licenses/LICENSE-2.0
196
197
 
197
- Unless required by applicable law or agreed to in writing, software
198
- distributed under the License is distributed on an "AS IS" BASIS,
199
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
- See the License for the specific language governing permissions and
201
- limitations under the License.
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
202
203
 
203
204
 
204
205
  --- LLVM Exceptions to the Apache 2.0 License ----
@@ -216,3 +217,4 @@ conflicts with the conditions of the GPLv2, you may retroactively and
216
217
  prospectively choose to deem waived or otherwise exclude such Section(s) of
217
218
  the License, but only in their entirety and only with respect to the Combined
218
219
  Software.
220
+
data/README.md CHANGED
@@ -1,147 +1,94 @@
1
1
  <div align="center">
2
- <h1>wasmtime-ruby</h1>
2
+ <h1><code>wasmtime-rb</code></h1>
3
+
3
4
  <p>
4
- <strong>
5
- Ruby bindings for <a href="https://github.com/bytecodealliance/wasmtime">Wasmtime</a>, a WebAssembly runtime
6
- </strong>
5
+ <strong>Ruby embedding of
6
+ <a href="https://github.com/bytecodealliance/wasmtime">Wasmtime</a></strong>
7
7
  </p>
8
+
9
+ <strong>A <a href="https://bytecodealliance.org/">Bytecode Alliance</a> project</strong>
10
+
8
11
  <p>
9
- <a href="https://rubygems.org/gems/wasmtime">
10
- <img src="https://img.shields.io/gem/v/wasmtime" alt="RubyGems version badge" />
11
- </a>
12
- <a href="https://github.com/dtcristo/wasmtime-ruby/actions?query=workflow%3ACI">
13
- <img src="https://img.shields.io/github/workflow/status/dtcristo/wasmtime-ruby/CI" alt="CI status badge" />
12
+ <a href="https://github.com/bytecodealliance/wasmtime-rb/actions?query=workflow%3ACI">
13
+ <img src="https://github.com/bytecodealliance/wasmtime-rb/workflows/CI/badge.svg" alt="CI status"/>
14
14
  </a>
15
15
  </p>
16
16
  </div>
17
17
 
18
- ## Introduction
18
+ ## Goal
19
19
 
20
- This project provides Ruby bindings for [Wasmtime](https://github.com/bytecodealliance/wasmtime),
21
- a [WebAssembly](https://webassembly.org/) runtime. This allows you to execute
22
- WASM modules from within Ruby executing at near-native speeds in a safe
23
- sandboxed environment.
20
+ `wasmtime-rb`'s goal is to expose the full power of Wasmtime in Ruby with
21
+ minimal overhead, serving as a foundation layer for other projects or gems.
24
22
 
25
- This is pretty experimental and not production ready right now. There are quite
26
- a few things that aren't built yet, see [TODO](#todo) section below.
23
+ ## Installation
27
24
 
28
- **Note:** [WebAssembly Interface Types](https://github.com/WebAssembly/interface-types/blob/master/proposals/interface-types/Explainer.md)
29
- support has been [temporarily removed](https://github.com/bytecodealliance/wasmtime/pull/1292)
30
- from Wasmtime. Only 32 and 64-bit integers and floats are currently supported.
25
+ Add the `wasmtime` gem to your Gemfile and run `bundle install`:
31
26
 
32
- ## Usage
27
+ ```ruby
28
+ gem "wasmtime"
29
+ ```
33
30
 
34
- Install the `wasmtime` gem. Pre-compiled binaries are available for
35
- `x86_64-linux` and `x86_64-darwin-19`. Compiling the native extension requires
36
- [Rust with rustup](https://rustup.rs/).
31
+ Alternatively, you can install the gem manually:
37
32
 
38
33
  ```sh
39
34
  gem install wasmtime
40
35
  ```
41
36
 
42
- WASM has two formats `.wasm` (binary) and `.wat` (human-readable text). Both
43
- formats are supported. With the following `fibonacci.wat` file in your current
44
- directory.
45
-
46
- ```wat
47
- ;; fibonacci.wat
48
- (module
49
- (export "fib" (func $fib))
50
- (func $fib (param $n i32) (result i32)
51
- (if (i32.lt_s (get_local $n) (i32.const 2))
52
- (return (i32.const 1))
53
- )
54
- (return
55
- (i32.add
56
- (call $fib (i32.sub (get_local $n) (i32.const 2)))
57
- (call $fib (i32.sub (get_local $n) (i32.const 1)))
58
- )
59
- )
60
- )
61
- )
62
- ```
63
-
64
- In a ruby file, `require 'wasmtime/require'` to activate the Wasmtime require
65
- patch, allowing you to require any `.wasm` or `.wat` module as if it were a
66
- Ruby file. Doing so will internally create a `Wasmtime::Instance` and define a
67
- Ruby module with functions for each export.
68
-
69
- Finally, invoke the `fib` export like so.
70
-
71
- ```rb
72
- require 'wasmtime/require'
73
- require_relative 'fibonacci'
74
-
75
- puts Fibonacci.fib(11) #=> 89
76
- ```
77
-
78
- If you don't like all the magic in the example above, you can do the same
79
- without the require patch. If your project is going to be a dependency of others
80
- use this approach too.
81
-
82
- ```rb
83
- require 'wasmtime'
84
-
85
- instance = Wasmtime::Instance.new('fibonacci.wat')
86
- puts instance.exports['fib'].call(11) #=> 89
87
- ```
88
-
89
- ## Benchmarks
90
-
91
- None yet. But they will be impressive.
92
-
93
- ## Examples
37
+ ### Precompiled gems
94
38
 
95
- More usage examples are provided in `examples/`. To run some of these, you first
96
- need to compile the test WASM modules.
39
+ We recommend installing the `wasmtime` precompiled gems available for Linux, macOS, and Windows. Installing a precompiled gem avoids the need to compile from source code, which is generally slower and less reliable.
97
40
 
98
- Install some Rust tools.
41
+ When installing the `wasmtime` gem for the first time using `bundle install`, Bundler will automatically download the precompiled gem for your current platform. However, you will need to inform Bundler of any additional platforms you plan to use.
99
42
 
100
- - [rustup](https://rustup.rs/) - Rust toolchain manager
101
- - [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/) - WASM module bundler
102
-
103
- Install Ruby dependencies.
43
+ To do this, lock your Bundle to the required platforms you will need from the list of supported platforms below:
104
44
 
105
45
  ```sh
106
- bundle install
46
+ bundle lock --add-platform x86_64-linux # Standard Linux (e.g. Heroku, GitHub Actions, etc.)
47
+ bundle lock --add-platform x86_64-linux-musl # MUSL Linux deployments (i.e. Alpine Linux)
48
+ bundle lock --add-platform aarch64-linux # ARM64 Linux deployments (i.e. AWS Graviton2)
49
+ bundle lock --add-platform x86_64-darwin # Intel MacOS (i.e. pre-M1)
50
+ bundle lock --add-platform arm64-darwin # Apple Silicon MacOS (i.e. M1)
107
51
  ```
108
52
 
109
- Build the WASM modules.
53
+ ## Usage
110
54
 
111
- ```sh
112
- bundle exec rake wasm
113
- ```
55
+ Example usage:
114
56
 
115
- Run an example.
57
+ ```ruby
58
+ require "wasmtime"
116
59
 
117
- ```sh
118
- ruby examples/fibonacci.rb
119
- ```
60
+ # Create an engine. Generally, you only need a single engine and can
61
+ # re-use it throughout your program.
62
+ engine = Wasmtime::Engine.new
120
63
 
121
- ## Development
122
-
123
- Compile Rust native extension.
64
+ # Compile a Wasm module from either Wasm or WAT. The compiled module is
65
+ # specific to the Engine's configuration.
66
+ mod = Wasmtime::Module.new(engine, <<~WAT)
67
+ (module
68
+ (func $hello (import "" "hello"))
69
+ (func (export "run") (call $hello))
70
+ )
71
+ WAT
124
72
 
125
- ```sh
126
- bundle exec rake compile
127
- ```
73
+ # Create a store. Store can keep state to be re-used in Funcs.
74
+ store = Wasmtime::Store.new(engine, {count: 0})
128
75
 
129
- Run test suite.
76
+ # Define a Wasm function from Ruby code.
77
+ func = Wasmtime::Func.new(store, [], []) do |caller|
78
+ puts "Hello from Func!"
79
+ caller.store_data[:count] += 1
80
+ puts "Ran #{caller.store_data[:count]} time(s)"
81
+ end
130
82
 
131
- ```sh
132
- bundle exec rake spec
133
- ```
83
+ # Build the Wasm instance by providing its imports.
84
+ instance = Wasmtime::Instance.new(store, mod, [func])
134
85
 
135
- Format source code.
86
+ # Run the `run` export.
87
+ instance.invoke("run")
136
88
 
137
- ```sh
138
- bundle exec rake format
89
+ # Or: get the `run` export and call it.
90
+ instance.export("run").to_func.call
139
91
  ```
140
92
 
141
- ## TODO
142
-
143
- - Add support for raw memory access and other types of exports
144
- - Add support for imports
145
- - Implement more of the Wasmtime API
146
- - Add benchmarks for WASM program against ones in pure Ruby and true native
147
- - Add support for WASM Interface Types when they are supported in Wasmtime
93
+ For more, see [examples](https://github.com/bytecodealliance/wasmtime-rb/tree/main/examples)
94
+ or the [API documentation](https://bytecodealliance.github.io/wasmtime-rb/latest/).
data/ext/build.rs ADDED
@@ -0,0 +1,8 @@
1
+ use std::error::Error;
2
+
3
+ // Propogate linking from rb-sys for usage in the wasmtime-rb Rust crate
4
+ fn main() -> Result<(), Box<dyn Error>> {
5
+ let _ = rb_sys_env::activate()?;
6
+
7
+ Ok(())
8
+ }
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wasmtime
4
- VERSION = '0.2.0'
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/wasmtime.rb CHANGED
@@ -1,7 +1,55 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Wasmtime; end
3
+ require_relative "wasmtime/version"
4
4
 
5
- require 'wasmtime/version'
6
- require 'wasmtime/refinements'
7
- require 'wasmtime/native'
5
+ # Tries to require the extension for the given Ruby version first
6
+ begin
7
+ RUBY_VERSION =~ /(\d+\.\d+)/
8
+ require "wasmtime/#{Regexp.last_match(1)}/wasmtime_rb"
9
+ rescue LoadError
10
+ require "wasmtime/wasmtime_rb"
11
+ end
12
+
13
+ module Wasmtime
14
+ class Error < StandardError; end
15
+
16
+ # Raised when failing to convert the return value of a Ruby-backed Func to
17
+ # Wasm types.
18
+ class ResultError < Error; end
19
+
20
+ # Raised when converting an {Extern} to its concrete type fails.
21
+ class ConversionError < Error; end
22
+
23
+ # Raised on Wasm trap.
24
+ class Trap < Error
25
+ STACK_OVERFLOW = :stack_overflow
26
+ MEMORY_OUT_OF_BOUNDS = :memory_out_of_bounds
27
+ HEAP_MISALIGNED = :heap_misaligned
28
+ TABLE_OUT_OF_BOUNDS = :table_out_of_bounds
29
+ INDIRECT_CALL_TO_NULL = :indirect_call_to_null
30
+ BAD_SIGNATURE = :bad_signature
31
+ INTEGER_OVERFLOW = :integer_overflow
32
+ INTEGER_DIVISION_BY_ZERO = :integer_division_by_zero
33
+ BAD_CONVERSION_TO_INTEGER = :bad_conversion_to_integer
34
+ UNREACHABLE_CODE_REACHED = :unreachable_code_reached
35
+ INTERRUPT = :interrupt
36
+ ALWAYS_TRAP_ADAPTER = :always_trap_adapter
37
+ OUT_OF_FUEL = :out_of_fuel
38
+ UNKNOWN = :unknown
39
+ end
40
+
41
+ # Raised when a WASI program terminates early by calling +exit+.
42
+ class WasiExit < Error
43
+ # @return [Integer] The system exit code.
44
+ attr_reader(:code)
45
+
46
+ def initialize(code)
47
+ @code = code
48
+ end
49
+
50
+ # @return [String]
51
+ def message
52
+ "WASI exit with code #{code}"
53
+ end
54
+ end
55
+ end
metadata CHANGED
@@ -1,67 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wasmtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: x86_64-linux
6
6
  authors:
7
- - David Cristofaro
8
- autorequire:
9
- bindir: bin
7
+ - The Wasmtime Project Developers
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-19 00:00:00.000000000 Z
11
+ date: 2022-12-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
13
+ description: A Ruby binding for Wasmtime, a WebAssembly runtime.
14
14
  email:
15
- - david@dtcristo.com
15
+ - hello@bytecodealliance.org
16
16
  executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - ".cargo/config"
21
- - CHANGELOG.md
22
- - Cargo.lock
23
- - Cargo.toml
24
20
  - LICENSE
25
21
  - README.md
26
- - ext/wasmtime/Makefile
27
- - ext/wasmtime/Rakefile
28
- - ext/wasmtime/extconf.rb
29
- - lib/tasks/compile.rake
22
+ - ext/build.rs
30
23
  - lib/wasmtime.rb
31
- - lib/wasmtime/native.so
32
- - lib/wasmtime/refinements.rb
33
- - lib/wasmtime/require.rb
24
+ - lib/wasmtime/2.7/wasmtime_rb.so
25
+ - lib/wasmtime/3.0/wasmtime_rb.so
26
+ - lib/wasmtime/3.1/wasmtime_rb.so
34
27
  - lib/wasmtime/version.rb
35
- - src/export.rs
36
- - src/func.rs
37
- - src/instance.rs
38
- - src/lib.rs
39
- - src/memory.rs
40
- - src/ruby_type.rs
41
- - src/vm.rs
42
- homepage: https://github.com/dtcristo/wasmtime-ruby
28
+ homepage: https://github.com/BytecodeAlliance/wasmtime-rb
43
29
  licenses:
44
- - Apache-2.0 WITH LLVM-exception
30
+ - Apache-2.0
45
31
  metadata:
46
- source_code_uri: https://github.com/dtcristo/wasmtime-ruby
47
- changelog_uri: https://github.com/dtcristo/wasmtime-ruby/blob/master/CHANGELOG.md
48
- post_install_message:
49
- rdoc_options: []
32
+ homepage_uri: https://github.com/BytecodeAlliance/wasmtime-rb
33
+ source_code_uri: https://github.com/BytecodeAlliance/wasmtime-rb
34
+ cargo_crate_name: ext
35
+ changelog_uri: https://github.com/bytecodealliance/wasmtime-rb/blob/main/CHANGELOG.md
36
+ post_install_message:
37
+ rdoc_options:
38
+ - "--exclude"
39
+ - vendor
50
40
  require_paths:
51
41
  - lib
52
42
  required_ruby_version: !ruby/object:Gem::Requirement
53
43
  requirements:
54
44
  - - ">="
55
45
  - !ruby/object:Gem::Version
56
- version: 2.5.0
46
+ version: '2.7'
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: 3.2.dev
57
50
  required_rubygems_version: !ruby/object:Gem::Requirement
58
51
  requirements:
59
52
  - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  requirements: []
63
- rubygems_version: 3.1.2
64
- signing_key:
56
+ rubygems_version: 3.3.22
57
+ signing_key:
65
58
  specification_version: 4
66
- summary: Ruby bindings for Wasmtime, a WebAssembly runtime
59
+ summary: Wasmtime bindings for Ruby
67
60
  test_files: []
data/.cargo/config DELETED
@@ -1,4 +0,0 @@
1
- [target.x86_64-apple-darwin]
2
- rustflags = [
3
- "-C", "link-args=-undefined dynamic_lookup"
4
- ]
data/CHANGELOG.md DELETED
@@ -1,27 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [Unreleased]
9
-
10
- ## [0.2.0] - 2020-05-19
11
-
12
- - Exported functions now live on `Wasmtime::Instance#exports` instead of `#funcs`.
13
- - Exports hash is now keyed by strings instead of symbols.
14
- - Added support for `Wasmtime::Memory` exports with `#data_size`, `#size` and `#grow` methods.
15
-
16
- ## [0.1.0] - 2020-05-07
17
-
18
- ### Added
19
-
20
- - Initial release.
21
- - Support for calling exported functions on a module.
22
- - Support for 32 and 64-bit integers and floats in arguments and as return values.
23
- - Require patch for defining a Ruby module with functions for each export.
24
-
25
- [unreleased]: https://github.com/dtcristo/wasmtime-ruby/compare/v0.2.0...HEAD
26
- [0.2.0]: https://github.com/dtcristo/wasmtime-ruby/releases/tag/v0.2.0
27
- [0.1.0]: https://github.com/dtcristo/wasmtime-ruby/releases/tag/v0.1.0