wasmer 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/documentation.yml +50 -0
  3. data/.github/workflows/test.yml +34 -61
  4. data/CHANGELOG.md +89 -29
  5. data/Cargo.lock +812 -380
  6. data/Cargo.toml +7 -20
  7. data/Gemfile +2 -3
  8. data/README.md +1 -0
  9. data/Rakefile +4 -3
  10. data/crates/rutie-derive-macros/Cargo.toml +19 -0
  11. data/crates/rutie-derive-macros/README.md +4 -0
  12. data/crates/rutie-derive-macros/src/class.rs +156 -0
  13. data/crates/rutie-derive-macros/src/function.rs +178 -0
  14. data/crates/rutie-derive-macros/src/lib.rs +27 -0
  15. data/crates/rutie-derive-macros/src/methods.rs +282 -0
  16. data/crates/rutie-derive/Cargo.toml +14 -0
  17. data/crates/rutie-derive/README.md +97 -0
  18. data/crates/rutie-derive/src/lib.rs +4 -0
  19. data/crates/rutie-derive/src/upcast.rs +47 -0
  20. data/crates/rutie-test/Cargo.toml +10 -0
  21. data/crates/rutie-test/src/lib.rs +38 -0
  22. data/crates/wasmer/Cargo.toml +27 -0
  23. data/crates/wasmer/README.md +228 -0
  24. data/crates/wasmer/src/doc.rs +1512 -0
  25. data/crates/wasmer/src/error.rs +55 -0
  26. data/crates/wasmer/src/exports.rs +107 -0
  27. data/crates/wasmer/src/externals/function.rs +159 -0
  28. data/crates/wasmer/src/externals/global.rs +62 -0
  29. data/crates/wasmer/src/externals/memory.rs +117 -0
  30. data/crates/wasmer/src/externals/mod.rs +9 -0
  31. data/crates/wasmer/src/externals/table.rs +41 -0
  32. data/crates/wasmer/src/import_object.rs +78 -0
  33. data/crates/wasmer/src/instance.rs +45 -0
  34. data/crates/wasmer/src/lib.rs +307 -0
  35. data/crates/wasmer/src/memory/mod.rs +1 -0
  36. data/crates/wasmer/src/memory/views.rs +112 -0
  37. data/crates/wasmer/src/module.rs +106 -0
  38. data/crates/wasmer/src/prelude.rs +3 -0
  39. data/crates/wasmer/src/store.rs +22 -0
  40. data/crates/wasmer/src/types.rs +390 -0
  41. data/crates/wasmer/src/values.rs +84 -0
  42. data/crates/wasmer/src/wasi.rs +226 -0
  43. data/crates/wasmer/src/wat.rs +20 -0
  44. data/justfile +7 -1
  45. data/lib/wasmer.rb +29 -3
  46. data/wasmer.gemspec +6 -10
  47. metadata +45 -47
  48. data/README.md +0 -332
  49. data/lib/wasmer/version.rb +0 -3
  50. data/src/error.rs +0 -16
  51. data/src/instance/exports.rs +0 -215
  52. data/src/instance/globals.rs +0 -234
  53. data/src/instance/mod.rs +0 -141
  54. data/src/lib.rs +0 -162
  55. data/src/memory/mod.rs +0 -158
  56. data/src/memory/view.rs +0 -145
  57. data/src/module.rs +0 -28
@@ -0,0 +1,84 @@
1
+ use crate::{
2
+ error::{to_ruby_err, RubyResult, TypeError},
3
+ prelude::*,
4
+ };
5
+ use rutie::{AnyObject, Fixnum, Float, Object};
6
+ use std::convert::TryInto;
7
+
8
+ pub(crate) fn to_wasm_value((any, ty): (&AnyObject, wasmer::Type)) -> RubyResult<wasmer::Value> {
9
+ Ok(match ty {
10
+ wasmer::Type::I32 => wasmer::Value::I32(
11
+ any.try_convert_to::<Fixnum>()?
12
+ .to_u64()
13
+ .try_into()
14
+ .map_err(to_ruby_err::<TypeError, _>)?,
15
+ ),
16
+ wasmer::Type::I64 => wasmer::Value::I64(
17
+ any.try_convert_to::<Fixnum>()?
18
+ .to_u64()
19
+ .try_into()
20
+ .map_err(to_ruby_err::<TypeError, _>)?,
21
+ ),
22
+ wasmer::Type::F32 => wasmer::Value::F32(any.try_convert_to::<Float>()?.to_f64() as _),
23
+ wasmer::Type::F64 => wasmer::Value::F64(any.try_convert_to::<Float>()?.to_f64()),
24
+ _ => unimplemented!(),
25
+ })
26
+ }
27
+
28
+ pub(crate) fn to_ruby_object(value: &wasmer::Value) -> AnyObject {
29
+ match value {
30
+ wasmer::Value::I32(value) => Fixnum::new((*value).into()).to_any_object(),
31
+ wasmer::Value::I64(value) => Fixnum::new(*value).to_any_object(),
32
+ wasmer::Value::F32(value) => Float::new((*value).into()).to_any_object(),
33
+ wasmer::Value::F64(value) => Float::new(*value).to_any_object(),
34
+ _ => unimplemented!(),
35
+ }
36
+ }
37
+
38
+ #[rubyclass(module = "Wasmer")]
39
+ pub struct Value {
40
+ inner: wasmer::Value,
41
+ }
42
+
43
+ impl Value {
44
+ pub(crate) fn inner(&self) -> &wasmer::Value {
45
+ &self.inner
46
+ }
47
+ }
48
+
49
+ #[rubymethods]
50
+ impl Value {
51
+ pub fn i32(value: &Fixnum) -> RubyResult<AnyObject> {
52
+ Ok(Value::ruby_new(Value {
53
+ inner: wasmer::Value::I32(
54
+ value
55
+ .to_u64()
56
+ .try_into()
57
+ .map_err(to_ruby_err::<TypeError, _>)?,
58
+ ),
59
+ }))
60
+ }
61
+
62
+ pub fn i64(value: &Fixnum) -> RubyResult<AnyObject> {
63
+ Ok(Value::ruby_new(Value {
64
+ inner: wasmer::Value::I64(
65
+ value
66
+ .to_u64()
67
+ .try_into()
68
+ .map_err(to_ruby_err::<TypeError, _>)?,
69
+ ),
70
+ }))
71
+ }
72
+
73
+ pub fn f32(value: &Float) -> RubyResult<AnyObject> {
74
+ Ok(Value::ruby_new(Value {
75
+ inner: wasmer::Value::F32(value.to_f64() as _),
76
+ }))
77
+ }
78
+
79
+ pub fn f64(value: &Float) -> RubyResult<AnyObject> {
80
+ Ok(Value::ruby_new(Value {
81
+ inner: wasmer::Value::F64(value.to_f64()),
82
+ }))
83
+ }
84
+ }
@@ -0,0 +1,226 @@
1
+ use crate::{
2
+ error::{to_ruby_err, unwrap_or_raise, RuntimeError, TypeError},
3
+ import_object::ImportObject,
4
+ module::Module,
5
+ prelude::*,
6
+ store::Store,
7
+ };
8
+ use rutie::{AnyObject, Array, Boolean, Hash, Integer, NilClass, Object, RString};
9
+ use std::{convert::TryFrom, path::PathBuf};
10
+
11
+ #[derive(Debug, Copy, Clone)]
12
+ #[repr(u8)]
13
+ pub enum Version {
14
+ Latest = 1,
15
+ Snapshot0 = 2,
16
+ Snapshot1 = 3,
17
+ }
18
+
19
+ impl Version {
20
+ fn to_integer(&self) -> Integer {
21
+ match self {
22
+ Self::Latest => Integer::new(1),
23
+ Self::Snapshot0 => Integer::new(2),
24
+ Self::Snapshot1 => Integer::new(3),
25
+ }
26
+ }
27
+ }
28
+
29
+ impl From<&wasmer_wasi::WasiVersion> for Version {
30
+ fn from(value: &wasmer_wasi::WasiVersion) -> Self {
31
+ match value {
32
+ wasmer_wasi::WasiVersion::Latest => Self::Latest,
33
+ wasmer_wasi::WasiVersion::Snapshot0 => Self::Snapshot0,
34
+ wasmer_wasi::WasiVersion::Snapshot1 => Self::Snapshot1,
35
+ }
36
+ }
37
+ }
38
+
39
+ impl Into<wasmer_wasi::WasiVersion> for Version {
40
+ fn into(self) -> wasmer_wasi::WasiVersion {
41
+ match self {
42
+ Self::Latest => wasmer_wasi::WasiVersion::Latest,
43
+ Self::Snapshot0 => wasmer_wasi::WasiVersion::Snapshot0,
44
+ Self::Snapshot1 => wasmer_wasi::WasiVersion::Snapshot1,
45
+ }
46
+ }
47
+ }
48
+
49
+ impl TryFrom<&Integer> for Version {
50
+ type Error = &'static str;
51
+
52
+ fn try_from(value: &Integer) -> Result<Self, Self::Error> {
53
+ Ok(match value.to_i32() {
54
+ 1 => Version::Latest,
55
+ 2 => Version::Snapshot0,
56
+ 3 => Version::Snapshot1,
57
+ _ => return Err("Unrecognized WASI version"),
58
+ })
59
+ }
60
+ }
61
+
62
+ #[rubyclass(module = "Wasmer::Wasi")]
63
+ pub struct StateBuilder {
64
+ inner: wasmer_wasi::WasiStateBuilder,
65
+ }
66
+
67
+ #[rubymethods]
68
+ impl StateBuilder {
69
+ pub fn new(program_name: &RString) -> RubyResult<AnyObject> {
70
+ Ok(StateBuilder::ruby_new(StateBuilder {
71
+ inner: wasmer_wasi::WasiState::new(program_name.to_str()),
72
+ }))
73
+ }
74
+
75
+ pub fn arguments(&mut self, arguments: &Array) -> RubyResult<RubyStateBuilder> {
76
+ self.inner.args(
77
+ unsafe { arguments.to_any_object().to::<Array>() }
78
+ .into_iter()
79
+ .map(|argument| {
80
+ argument
81
+ .try_convert_to::<RString>()
82
+ .map(|argument| argument.to_string())
83
+ })
84
+ .collect::<RubyResult<Vec<_>>>()?,
85
+ );
86
+
87
+ Ok(_ruby_self)
88
+ }
89
+
90
+ pub fn argument(&mut self, argument: &RString) -> RubyResult<RubyStateBuilder> {
91
+ self.inner.arg(argument.to_str());
92
+
93
+ Ok(_ruby_self)
94
+ }
95
+
96
+ pub fn environments(&mut self, environments: &Hash) -> RubyResult<RubyStateBuilder> {
97
+ let mut environment_pairs = Vec::with_capacity(environments.length());
98
+
99
+ environments.each(|key, value| {
100
+ unwrap_or_raise(|| {
101
+ environment_pairs.push((
102
+ key.try_convert_to::<RString>()?.to_string(),
103
+ value.try_convert_to::<RString>()?.to_string(),
104
+ ));
105
+
106
+ Ok(())
107
+ });
108
+ });
109
+
110
+ self.inner.envs(environment_pairs);
111
+
112
+ Ok(_ruby_self)
113
+ }
114
+
115
+ pub fn environment(&mut self, key: &RString, value: &RString) -> RubyResult<RubyStateBuilder> {
116
+ self.inner.env(key.to_str(), value.to_str());
117
+
118
+ Ok(_ruby_self)
119
+ }
120
+
121
+ pub fn preopen_directories(
122
+ &mut self,
123
+ preopen_directories: &Array,
124
+ ) -> RubyResult<RubyStateBuilder> {
125
+ self.inner
126
+ .preopen_dirs(
127
+ unsafe { preopen_directories.to_any_object().to::<Array>() }
128
+ .into_iter()
129
+ .map(|directory| {
130
+ Ok(PathBuf::from(
131
+ directory.try_convert_to::<RString>()?.to_string(),
132
+ ))
133
+ })
134
+ .collect::<RubyResult<Vec<_>>>()?,
135
+ )
136
+ .map_err(to_ruby_err::<RuntimeError, _>)?;
137
+
138
+ Ok(_ruby_self)
139
+ }
140
+
141
+ pub fn preopen_directory(
142
+ &mut self,
143
+ preopen_directory: &RString,
144
+ ) -> RubyResult<RubyStateBuilder> {
145
+ self.inner
146
+ .preopen_dir(preopen_directory.to_str())
147
+ .map_err(to_ruby_err::<RuntimeError, _>)?;
148
+
149
+ Ok(_ruby_self)
150
+ }
151
+
152
+ pub fn map_directories(&mut self, map_directories: &Hash) -> RubyResult<RubyStateBuilder> {
153
+ let mut map_directory_pairs = Vec::with_capacity(map_directories.length());
154
+
155
+ map_directories.each(|key, value| {
156
+ unwrap_or_raise(|| {
157
+ map_directory_pairs.push((
158
+ key.try_convert_to::<RString>()?.to_string(),
159
+ PathBuf::from(value.try_convert_to::<RString>()?.to_str()),
160
+ ));
161
+
162
+ Ok(())
163
+ });
164
+ });
165
+
166
+ self.inner
167
+ .map_dirs(map_directory_pairs)
168
+ .map_err(to_ruby_err::<RuntimeError, _>)?;
169
+
170
+ Ok(_ruby_self)
171
+ }
172
+
173
+ pub fn map_directory(
174
+ &mut self,
175
+ alias: &RString,
176
+ directory: &RString,
177
+ ) -> RubyResult<RubyStateBuilder> {
178
+ self.inner
179
+ .map_dir(alias.to_str(), PathBuf::from(directory.to_str()))
180
+ .map_err(to_ruby_err::<RuntimeError, _>)?;
181
+
182
+ Ok(_ruby_self)
183
+ }
184
+
185
+ pub fn finalize(&mut self) -> RubyResult<AnyObject> {
186
+ Ok(Environment::ruby_new(Environment {
187
+ inner: self
188
+ .inner
189
+ .finalize()
190
+ .map_err(to_ruby_err::<RuntimeError, _>)?,
191
+ }))
192
+ }
193
+ }
194
+
195
+ #[rubyclass(module = "Wasmer::Wasi")]
196
+ pub struct Environment {
197
+ inner: wasmer_wasi::WasiEnv,
198
+ }
199
+
200
+ #[rubymethods]
201
+ impl Environment {
202
+ pub fn generate_import_object(
203
+ &self,
204
+ store: &Store,
205
+ wasi_version: &Integer,
206
+ ) -> RubyResult<AnyObject> {
207
+ let import_object = wasmer_wasi::generate_import_object_from_env(
208
+ store.inner(),
209
+ self.inner.clone(),
210
+ Version::try_from(wasi_version)
211
+ .map_err(to_ruby_err::<TypeError, _>)?
212
+ .into(),
213
+ );
214
+
215
+ Ok(ImportObject::ruby_new(ImportObject::raw_new(import_object)))
216
+ }
217
+ }
218
+
219
+ #[rubyfunction]
220
+ pub fn get_version(module: &Module, strict: &Boolean) -> RubyResult<AnyObject> {
221
+ Ok(
222
+ wasmer_wasi::get_wasi_version(&module.inner(), strict.to_bool())
223
+ .map(|version| Version::from(&version).to_integer().to_any_object())
224
+ .unwrap_or_else(|| NilClass::new().to_any_object()),
225
+ )
226
+ }
@@ -0,0 +1,20 @@
1
+ use crate::{
2
+ error::{to_ruby_err, RuntimeError},
3
+ prelude::*,
4
+ };
5
+ use rutie::{Encoding, RString};
6
+
7
+ #[rubyfunction]
8
+ pub fn wat2wasm(wat: &RString) -> RubyResult<RString> {
9
+ wat::parse_str(wat.to_str())
10
+ .map(|bytes| RString::from_bytes(bytes.as_slice(), &Encoding::us_ascii()))
11
+ .map_err(to_ruby_err::<RuntimeError, _>)
12
+ }
13
+
14
+ #[rubyfunction]
15
+ pub fn wasm2wat(bytes: &RString) -> RubyResult<RString> {
16
+ Ok(RString::new_utf8(
17
+ &wasmprinter::print_bytes(bytes.to_bytes_unchecked())
18
+ .map_err(to_ruby_err::<RuntimeError, _>)?,
19
+ ))
20
+ }
data/justfile CHANGED
@@ -1,15 +1,21 @@
1
1
  # Compile and install the Ruby extension.
2
2
  build:
3
3
  rake build_lib
4
+ rake bundle_install
4
5
 
5
- # Run the tests.
6
+ # Run all the tests.
6
7
  test:
7
8
  rake test
9
+ cargo test --manifest-path crates/wasmer/Cargo.toml --doc
8
10
 
9
11
  # Build the `.gem` file.
10
12
  gem:
11
13
  rake build
12
14
 
15
+ # Generate the documentation.
16
+ doc:
17
+ cargo rustdoc --manifest-path crates/wasmer/Cargo.toml -- --extend-css doc/patch-rustdoc.css
18
+
13
19
  # Clean the project.
14
20
  clean:
15
21
  cargo clean
data/lib/wasmer.rb CHANGED
@@ -1,6 +1,32 @@
1
- require 'wasmer/version'
2
- require 'rutie'
1
+ require "fiddle"
3
2
 
4
3
  module Wasmer
5
- Rutie.new(:wasmer).init 'Init_wasmer', __dir__
4
+ shared_library_name = :wasmer_ruby
5
+ init_function = :init
6
+
7
+ shared_library_prefix =
8
+ case RUBY_PLATFORM
9
+ when /windows|mswin|mingw/ then ""
10
+ when /cygwin/ then "cyg"
11
+ else "lib"
12
+ end
13
+
14
+ shared_library_suffix =
15
+ case RUBY_PLATFORM
16
+ when /darwin/ then "dylib"
17
+ when /windows|mswin|mingw|cygwin/ then "dll"
18
+ else "so"
19
+ end
20
+
21
+ shared_library_directory = File.expand_path "../target/release/", __dir__
22
+ shared_library_path = File.join(
23
+ shared_library_directory,
24
+ [shared_library_prefix, shared_library_name, ".", shared_library_suffix].join()
25
+ )
26
+
27
+ Fiddle::Function.new(
28
+ Fiddle::dlopen(shared_library_path)[init_function.to_s],
29
+ [],
30
+ Fiddle::TYPE_VOIDP
31
+ ).call
6
32
  end
data/wasmer.gemspec CHANGED
@@ -1,29 +1,25 @@
1
1
  lib = File.expand_path("../lib", __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
- require "wasmer/version"
5
-
6
4
  Gem::Specification.new do |spec|
7
5
  spec.name = "wasmer"
8
- spec.version = Wasmer::VERSION
9
- spec.authors = ["Ivan Enderlin"]
10
- spec.email = ["ivan.enderlin@hoa-project.net"]
6
+ spec.version = "0.5.0"
7
+ spec.authors = ["Wasmer Engineering Team"]
8
+ spec.email = ["engineering@wasmer.io"]
11
9
 
12
10
  spec.summary = "Run WebAssembly binaries."
13
11
  spec.description = "Wasmer is a Ruby extension to run WebAssembly binaries."
14
- spec.homepage = "https://github.com/wasmerio/ruby-ext-wasm"
15
- spec.license = "BSD-3-Clause"
12
+ spec.homepage = "https://github.com/wasmerio/wasmer-ruby"
13
+ spec.license = "MIT"
16
14
 
17
15
  spec.extensions = %w(Rakefile)
18
16
 
19
17
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(examples|tests)/}) }
18
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(examples|tests|doc)/}) }
21
19
  end
22
20
 
23
21
  spec.require_paths = %w(lib)
24
22
 
25
- spec.add_dependency "rutie", "~> 0.0.4"
26
23
  spec.add_development_dependency "bundler", "~> 2.1"
27
24
  spec.add_development_dependency "rake", "~> 13.0"
28
- spec.add_development_dependency "minitest", "~> 5.14"
29
25
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wasmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
- - Ivan Enderlin
8
- autorequire:
7
+ - Wasmer Engineering Team
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-03 00:00:00.000000000 Z
11
+ date: 2021-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rutie
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.0.4
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.0.4
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -52,23 +38,9 @@ dependencies:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
40
  version: '13.0'
55
- - !ruby/object:Gem::Dependency
56
- name: minitest
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '5.14'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '5.14'
69
41
  description: Wasmer is a Ruby extension to run WebAssembly binaries.
70
42
  email:
71
- - ivan.enderlin@hoa-project.net
43
+ - engineering@wasmer.io
72
44
  executables: []
73
45
  extensions:
74
46
  - Rakefile
@@ -78,6 +50,7 @@ files:
78
50
  - ".github/ISSUE_TEMPLATE/---bug-report.md"
79
51
  - ".github/ISSUE_TEMPLATE/---feature-request.md"
80
52
  - ".github/ISSUE_TEMPLATE/--question.md"
53
+ - ".github/workflows/documentation.yml"
81
54
  - ".github/workflows/test.yml"
82
55
  - ".gitignore"
83
56
  - CHANGELOG.md
@@ -88,23 +61,48 @@ files:
88
61
  - README.md
89
62
  - Rakefile
90
63
  - bors.toml
64
+ - crates/rutie-derive-macros/Cargo.toml
65
+ - crates/rutie-derive-macros/README.md
66
+ - crates/rutie-derive-macros/src/class.rs
67
+ - crates/rutie-derive-macros/src/function.rs
68
+ - crates/rutie-derive-macros/src/lib.rs
69
+ - crates/rutie-derive-macros/src/methods.rs
70
+ - crates/rutie-derive/Cargo.toml
71
+ - crates/rutie-derive/README.md
72
+ - crates/rutie-derive/src/lib.rs
73
+ - crates/rutie-derive/src/upcast.rs
74
+ - crates/rutie-test/Cargo.toml
75
+ - crates/rutie-test/src/lib.rs
76
+ - crates/wasmer/Cargo.toml
77
+ - crates/wasmer/README.md
78
+ - crates/wasmer/src/doc.rs
79
+ - crates/wasmer/src/error.rs
80
+ - crates/wasmer/src/exports.rs
81
+ - crates/wasmer/src/externals/function.rs
82
+ - crates/wasmer/src/externals/global.rs
83
+ - crates/wasmer/src/externals/memory.rs
84
+ - crates/wasmer/src/externals/mod.rs
85
+ - crates/wasmer/src/externals/table.rs
86
+ - crates/wasmer/src/import_object.rs
87
+ - crates/wasmer/src/instance.rs
88
+ - crates/wasmer/src/lib.rs
89
+ - crates/wasmer/src/memory/mod.rs
90
+ - crates/wasmer/src/memory/views.rs
91
+ - crates/wasmer/src/module.rs
92
+ - crates/wasmer/src/prelude.rs
93
+ - crates/wasmer/src/store.rs
94
+ - crates/wasmer/src/types.rs
95
+ - crates/wasmer/src/values.rs
96
+ - crates/wasmer/src/wasi.rs
97
+ - crates/wasmer/src/wat.rs
91
98
  - justfile
92
99
  - lib/wasmer.rb
93
- - lib/wasmer/version.rb
94
- - src/error.rs
95
- - src/instance/exports.rs
96
- - src/instance/globals.rs
97
- - src/instance/mod.rs
98
- - src/lib.rs
99
- - src/memory/mod.rs
100
- - src/memory/view.rs
101
- - src/module.rs
102
100
  - wasmer.gemspec
103
- homepage: https://github.com/wasmerio/ruby-ext-wasm
101
+ homepage: https://github.com/wasmerio/wasmer-ruby
104
102
  licenses:
105
- - BSD-3-Clause
103
+ - MIT
106
104
  metadata: {}
107
- post_install_message:
105
+ post_install_message:
108
106
  rdoc_options: []
109
107
  require_paths:
110
108
  - lib
@@ -119,8 +117,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
117
  - !ruby/object:Gem::Version
120
118
  version: '0'
121
119
  requirements: []
122
- rubygems_version: 3.0.3
123
- signing_key:
120
+ rubygems_version: 3.2.15
121
+ signing_key:
124
122
  specification_version: 4
125
123
  summary: Run WebAssembly binaries.
126
124
  test_files: []