wasmer 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/documentation.yml +50 -0
- data/.github/workflows/test.yml +34 -61
- data/CHANGELOG.md +89 -29
- data/Cargo.lock +812 -380
- data/Cargo.toml +7 -20
- data/Gemfile +2 -3
- data/README.md +1 -0
- data/Rakefile +4 -3
- data/crates/rutie-derive-macros/Cargo.toml +19 -0
- data/crates/rutie-derive-macros/README.md +4 -0
- data/crates/rutie-derive-macros/src/class.rs +156 -0
- data/crates/rutie-derive-macros/src/function.rs +178 -0
- data/crates/rutie-derive-macros/src/lib.rs +27 -0
- data/crates/rutie-derive-macros/src/methods.rs +282 -0
- data/crates/rutie-derive/Cargo.toml +14 -0
- data/crates/rutie-derive/README.md +97 -0
- data/crates/rutie-derive/src/lib.rs +4 -0
- data/crates/rutie-derive/src/upcast.rs +47 -0
- data/crates/rutie-test/Cargo.toml +10 -0
- data/crates/rutie-test/src/lib.rs +38 -0
- data/crates/wasmer/Cargo.toml +27 -0
- data/crates/wasmer/README.md +228 -0
- data/crates/wasmer/src/doc.rs +1512 -0
- data/crates/wasmer/src/error.rs +55 -0
- data/crates/wasmer/src/exports.rs +107 -0
- data/crates/wasmer/src/externals/function.rs +159 -0
- data/crates/wasmer/src/externals/global.rs +62 -0
- data/crates/wasmer/src/externals/memory.rs +117 -0
- data/crates/wasmer/src/externals/mod.rs +9 -0
- data/crates/wasmer/src/externals/table.rs +41 -0
- data/crates/wasmer/src/import_object.rs +78 -0
- data/crates/wasmer/src/instance.rs +45 -0
- data/crates/wasmer/src/lib.rs +307 -0
- data/crates/wasmer/src/memory/mod.rs +1 -0
- data/crates/wasmer/src/memory/views.rs +112 -0
- data/crates/wasmer/src/module.rs +106 -0
- data/crates/wasmer/src/prelude.rs +3 -0
- data/crates/wasmer/src/store.rs +22 -0
- data/crates/wasmer/src/types.rs +390 -0
- data/crates/wasmer/src/values.rs +84 -0
- data/crates/wasmer/src/wasi.rs +226 -0
- data/crates/wasmer/src/wat.rs +20 -0
- data/justfile +7 -1
- data/lib/wasmer.rb +29 -3
- data/wasmer.gemspec +6 -10
- metadata +45 -47
- data/README.md +0 -332
- data/lib/wasmer/version.rb +0 -3
- data/src/error.rs +0 -16
- data/src/instance/exports.rs +0 -215
- data/src/instance/globals.rs +0 -234
- data/src/instance/mod.rs +0 -141
- data/src/lib.rs +0 -162
- data/src/memory/mod.rs +0 -158
- data/src/memory/view.rs +0 -145
- 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
|
2
|
-
require 'rutie'
|
1
|
+
require "fiddle"
|
3
2
|
|
4
3
|
module Wasmer
|
5
|
-
|
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 =
|
9
|
-
spec.authors = ["
|
10
|
-
spec.email = ["
|
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
|
15
|
-
spec.license = "
|
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
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- Wasmer Engineering Team
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
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
|
-
-
|
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
|
101
|
+
homepage: https://github.com/wasmerio/wasmer-ruby
|
104
102
|
licenses:
|
105
|
-
-
|
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.
|
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: []
|