wasmer 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.cargo/config +1 -1
  3. data/.github/workflows/documentation.yml +50 -0
  4. data/.github/workflows/test.yml +73 -0
  5. data/.gitignore +3 -1
  6. data/CHANGELOG.md +225 -0
  7. data/Cargo.lock +747 -708
  8. data/Cargo.toml +7 -21
  9. data/Gemfile +2 -3
  10. data/LICENSE +21 -0
  11. data/README.md +1 -0
  12. data/Rakefile +4 -3
  13. data/bors.toml +6 -0
  14. data/crates/rutie-derive-macros/Cargo.toml +19 -0
  15. data/crates/rutie-derive-macros/README.md +4 -0
  16. data/crates/rutie-derive-macros/src/class.rs +156 -0
  17. data/crates/rutie-derive-macros/src/function.rs +178 -0
  18. data/crates/rutie-derive-macros/src/lib.rs +27 -0
  19. data/crates/rutie-derive-macros/src/methods.rs +282 -0
  20. data/crates/rutie-derive/Cargo.toml +14 -0
  21. data/crates/rutie-derive/README.md +97 -0
  22. data/crates/rutie-derive/src/lib.rs +4 -0
  23. data/crates/rutie-derive/src/upcast.rs +47 -0
  24. data/crates/rutie-test/Cargo.toml +10 -0
  25. data/crates/rutie-test/src/lib.rs +38 -0
  26. data/crates/wasmer/Cargo.toml +27 -0
  27. data/crates/wasmer/README.md +229 -0
  28. data/crates/wasmer/src/doc.rs +1512 -0
  29. data/crates/wasmer/src/error.rs +55 -0
  30. data/crates/wasmer/src/exports.rs +107 -0
  31. data/crates/wasmer/src/externals/function.rs +159 -0
  32. data/crates/wasmer/src/externals/global.rs +62 -0
  33. data/crates/wasmer/src/externals/memory.rs +117 -0
  34. data/crates/wasmer/src/externals/mod.rs +9 -0
  35. data/crates/wasmer/src/externals/table.rs +41 -0
  36. data/crates/wasmer/src/import_object.rs +78 -0
  37. data/crates/wasmer/src/instance.rs +45 -0
  38. data/crates/wasmer/src/lib.rs +307 -0
  39. data/crates/wasmer/src/memory/mod.rs +1 -0
  40. data/crates/wasmer/src/memory/views.rs +112 -0
  41. data/crates/wasmer/src/module.rs +106 -0
  42. data/crates/wasmer/src/prelude.rs +3 -0
  43. data/crates/wasmer/src/store.rs +22 -0
  44. data/crates/wasmer/src/types.rs +396 -0
  45. data/crates/wasmer/src/values.rs +84 -0
  46. data/crates/wasmer/src/wasi.rs +226 -0
  47. data/crates/wasmer/src/wat.rs +20 -0
  48. data/justfile +20 -2
  49. data/lib/wasmer.rb +29 -3
  50. data/wasmer.gemspec +8 -12
  51. metadata +53 -49
  52. data/.circleci/config.yml +0 -70
  53. data/README.md +0 -279
  54. data/lib/wasmer/version.rb +0 -3
  55. data/src/instance.rs +0 -282
  56. data/src/lib.rs +0 -98
  57. data/src/memory/mod.rs +0 -120
  58. data/src/memory/view.rs +0 -127
  59. 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,33 @@
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
- test:
6
+ # Run all the tests.
7
+ test-all: test-lib test-doc test-example
8
+
9
+ # Run the tests of the library.
10
+ test-lib:
7
11
  rake test
8
12
 
13
+ # Run the tests of the documentation.
14
+ test-doc:
15
+ cargo test --manifest-path crates/wasmer/Cargo.toml --doc
16
+
17
+ # Run the examples as tests.
18
+ test-example:
19
+ for example in $(ls examples/*.rb); do \
20
+ ruby $example; \
21
+ done
22
+
9
23
  # Build the `.gem` file.
10
24
  gem:
11
25
  rake build
12
26
 
27
+ # Generate the documentation.
28
+ doc:
29
+ cargo rustdoc --manifest-path crates/wasmer/Cargo.toml -- --extend-css doc/patch-rustdoc.css
30
+
13
31
  # Clean the project.
14
32
  clean:
15
33
  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 = "1.0.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.3"
26
- spec.add_development_dependency "bundler", "~> 2.0"
27
- spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_development_dependency "minitest", "~> 5.0"
23
+ spec.add_development_dependency "bundler", "~> 2.1"
24
+ spec.add_development_dependency "rake", "~> 13.0"
29
25
  end
metadata CHANGED
@@ -1,104 +1,108 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wasmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.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: 2019-05-01 00:00:00.000000000 Z
11
+ date: 2021-07-01 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.3
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.3
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '2.0'
19
+ version: '2.1'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '2.0'
26
+ version: '2.1'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '10.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '10.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.0'
33
+ version: '13.0'
62
34
  type: :development
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: '5.0'
40
+ version: '13.0'
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
75
47
  extra_rdoc_files: []
76
48
  files:
77
49
  - ".cargo/config"
78
- - ".circleci/config.yml"
79
50
  - ".github/ISSUE_TEMPLATE/---bug-report.md"
80
51
  - ".github/ISSUE_TEMPLATE/---feature-request.md"
81
52
  - ".github/ISSUE_TEMPLATE/--question.md"
53
+ - ".github/workflows/documentation.yml"
54
+ - ".github/workflows/test.yml"
82
55
  - ".gitignore"
56
+ - CHANGELOG.md
83
57
  - Cargo.lock
84
58
  - Cargo.toml
85
59
  - Gemfile
60
+ - LICENSE
86
61
  - README.md
87
62
  - Rakefile
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
88
98
  - justfile
89
99
  - lib/wasmer.rb
90
- - lib/wasmer/version.rb
91
- - src/instance.rs
92
- - src/lib.rs
93
- - src/memory/mod.rs
94
- - src/memory/view.rs
95
- - src/module.rs
96
100
  - wasmer.gemspec
97
- homepage: https://github.com/wasmerio/ruby-ext-wasm
101
+ homepage: https://github.com/wasmerio/wasmer-ruby
98
102
  licenses:
99
- - BSD-3-Clause
103
+ - MIT
100
104
  metadata: {}
101
- post_install_message:
105
+ post_install_message:
102
106
  rdoc_options: []
103
107
  require_paths:
104
108
  - lib
@@ -113,8 +117,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
117
  - !ruby/object:Gem::Version
114
118
  version: '0'
115
119
  requirements: []
116
- rubygems_version: 3.0.3
117
- signing_key:
120
+ rubygems_version: 3.2.15
121
+ signing_key:
118
122
  specification_version: 4
119
123
  summary: Run WebAssembly binaries.
120
124
  test_files: []