isorun 0.1.11 → 0.1.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/helpers/isorun/app_helper.rb +1 -1
- data/app/helpers/isorun/vite_app_helper.rb +1 -1
- data/ext/isorun/Cargo.toml +11 -11
- data/ext/isorun/src/ext/isorun.rs +24 -0
- data/ext/isorun/src/ext/mod.rs +3 -0
- data/ext/isorun/src/isorun/context.rs +0 -1
- data/ext/isorun/src/isorun/module.rs +2 -2
- data/ext/isorun/src/isorun/utils.rs +15 -18
- data/ext/isorun/src/js/worker.rs +25 -32
- data/ext/isorun/src/lib.rs +7 -4
- data/lib/isorun/context.rb +2 -1
- data/lib/isorun/version.rb +1 -1
- metadata +4 -3
- data/ext/isorun/Cargo.lock +0 -327
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e2341a17cf7d54ef94287db152e38b7de35c45ca5822d3d6d384a0f3ce167f9
|
4
|
+
data.tar.gz: 030fddff91def684221eda73d6ebfa2c2359ef94604c8ffc6611de9f4b3a9370
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f9e9ad34f0af565d0e80ade1a77b2f0e7fe38bf712fa4fe7336f48008cfbdba018a68dd1951d531a6497cdacb815b4a093e0b99309db8559a317ed362d22626
|
7
|
+
data.tar.gz: d7a5412226d422e8a037d3ebf4649222d547dd9401f5f234fd52c845fc844b44644f5536a07662ec7d8684dec6c07fe1e154c1d922bb041ccd876a0ad95f807d
|
@@ -21,7 +21,7 @@ module Isorun
|
|
21
21
|
# to this method
|
22
22
|
# @param [Hash, nil] ctx Pass variables to render context
|
23
23
|
# @return [String]
|
24
|
-
def isorun_app(id, options = nil, ctx:
|
24
|
+
def isorun_app(id, options = nil, ctx: {}) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
25
25
|
ActiveSupport::Notifications.instrument "start.render.isorun", { ts: Time.current }
|
26
26
|
|
27
27
|
module_path = Isorun.config.module_resolver.call(id)
|
@@ -22,7 +22,7 @@ module Isorun
|
|
22
22
|
# to this method
|
23
23
|
# @param [Hash, nil] ctx Pass variables to render context
|
24
24
|
# @return [String]
|
25
|
-
def isorun_vite_app(id, options = nil, ctx:
|
25
|
+
def isorun_vite_app(id, options = nil, ctx: {})
|
26
26
|
ActiveSupport::Notifications.instrument "start.render.isorun", { ts: Time.current }
|
27
27
|
|
28
28
|
# if id has a file extension, we extract the extension and reduce the ID
|
data/ext/isorun/Cargo.toml
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
[package]
|
2
2
|
name = "isorun"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.12"
|
4
4
|
edition = "2021"
|
5
5
|
authors = ["Hannes Moser <box@hannesmoser.at>"]
|
6
6
|
homepage = "https://github.com/eliias/isorun"
|
7
7
|
repository = "https://github.com/eliias/isorun"
|
8
8
|
|
9
9
|
[dependencies]
|
10
|
-
deno_console = "0.
|
11
|
-
deno_core = "0.
|
12
|
-
deno_fetch = "0.
|
13
|
-
deno_runtime = "0.
|
14
|
-
deno_url = "0.
|
15
|
-
deno_web = "0.
|
16
|
-
deno_webidl = "0.
|
10
|
+
deno_console = "0.98.0"
|
11
|
+
deno_core = "0.180.0"
|
12
|
+
deno_fetch = "0.122.0"
|
13
|
+
deno_runtime = "0.106.0"
|
14
|
+
deno_url = "0.98.0"
|
15
|
+
deno_web = "0.129.0"
|
16
|
+
deno_webidl = "0.98.0"
|
17
17
|
lazy_static = "1.4.0"
|
18
|
-
magnus = { git = "https://github.com/eliias/magnus", rev = "
|
18
|
+
magnus = { git = "https://github.com/eliias/magnus", rev = "fdfc70bdb52ea614f6823e55a7fda3122e83d1d4" }
|
19
19
|
tokio = { version = "1.21.1", features = ["full"] }
|
20
|
-
v8 = "0.
|
20
|
+
v8 = "0.68.0"
|
21
21
|
|
22
22
|
[dev-dependencies]
|
23
|
-
magnus = { git = "https://github.com/eliias/magnus", rev = "
|
23
|
+
magnus = { git = "https://github.com/eliias/magnus", rev = "fdfc70bdb52ea614f6823e55a7fda3122e83d1d4", features = ["embed"] }
|
24
24
|
|
25
25
|
[lib]
|
26
26
|
name = "isorun"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
use crate::js::worker::WORKER;
|
2
|
+
use deno_core::error::AnyError;
|
3
|
+
use deno_core::serde_v8;
|
4
|
+
use deno_core::{op, ExtensionBuilder};
|
5
|
+
|
6
|
+
fn force_op_registration(ext: &mut ExtensionBuilder) {
|
7
|
+
ext.force_op_registration();
|
8
|
+
}
|
9
|
+
|
10
|
+
deno_core::extension!(
|
11
|
+
send_to_ruby,
|
12
|
+
ops = [op_send_to_ruby],
|
13
|
+
customizer = force_op_registration
|
14
|
+
);
|
15
|
+
|
16
|
+
#[allow(clippy::extra_unused_lifetimes)]
|
17
|
+
#[op(v8)]
|
18
|
+
fn op_send_to_ruby<'a>(
|
19
|
+
// do not remove the v8:: prefix, otherwise the macro complains
|
20
|
+
scope: &mut v8::HandleScope,
|
21
|
+
data: serde_v8::Value<'a>,
|
22
|
+
) -> Result<serde_v8::Value<'a>, AnyError> {
|
23
|
+
WORKER.with(|worker| worker.send(scope, data))
|
24
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
use crate::isorun::function::Function;
|
2
2
|
use crate::js;
|
3
|
-
use magnus::{exception, Error};
|
3
|
+
use magnus::{exception, Error, IntoValue};
|
4
4
|
use std::cell::RefCell;
|
5
5
|
|
6
6
|
#[magnus::wrap(class = "Isorun::Module")]
|
@@ -27,7 +27,7 @@ impl Module {
|
|
27
27
|
match module_item {
|
28
28
|
js::module_item::ModuleItem::Value(v) => Ok(v.to_ruby().unwrap()),
|
29
29
|
js::module_item::ModuleItem::Function(f) => {
|
30
|
-
Ok(
|
30
|
+
Ok(Function(RefCell::from(f)).into_value())
|
31
31
|
}
|
32
32
|
}
|
33
33
|
}
|
@@ -1,11 +1,8 @@
|
|
1
1
|
use crate::js::worker::WORKER;
|
2
2
|
use deno_core::error::AnyError;
|
3
3
|
use magnus::r_hash::ForEach;
|
4
|
-
use magnus::value::{Qfalse, Qtrue};
|
5
|
-
use magnus::{
|
6
|
-
Integer, RArray, RFloat, RHash, RString, RStruct, Symbol, Value, QFALSE,
|
7
|
-
QNIL, QTRUE,
|
8
|
-
};
|
4
|
+
use magnus::value::{qfalse, qnil, qtrue, Qfalse, Qtrue, ReprValue};
|
5
|
+
use magnus::{Integer, RArray, RFloat, RHash, RString, RStruct, Symbol, Value};
|
9
6
|
use std::collections::HashMap;
|
10
7
|
use v8::{Array, GetPropertyNamesArgs, Global, HandleScope, Local, Object};
|
11
8
|
|
@@ -15,31 +12,31 @@ pub fn convert_v8_to_ruby(
|
|
15
12
|
) -> Result<Value, AnyError> {
|
16
13
|
let value = Local::new(scope, value);
|
17
14
|
if value.is_null() {
|
18
|
-
return Ok(
|
15
|
+
return Ok(qnil().as_value());
|
19
16
|
}
|
20
17
|
|
21
18
|
if value.is_int32() {
|
22
|
-
return Ok(
|
23
|
-
|
24
|
-
)));
|
19
|
+
return Ok(Integer::from_i64(value.int32_value(scope).unwrap() as i64)
|
20
|
+
.as_value());
|
25
21
|
}
|
26
22
|
|
27
23
|
if value.is_number() {
|
28
|
-
return Ok(
|
29
|
-
|
30
|
-
|
24
|
+
return Ok(RFloat::from_f64(value.number_value(scope).unwrap())
|
25
|
+
.unwrap()
|
26
|
+
.as_value());
|
31
27
|
}
|
32
28
|
|
33
29
|
if value.is_true() {
|
34
|
-
return Ok(
|
30
|
+
return Ok(qtrue().as_value());
|
35
31
|
}
|
36
32
|
|
37
33
|
if value.is_false() {
|
38
|
-
return Ok(
|
34
|
+
return Ok(qfalse().as_value());
|
39
35
|
}
|
40
36
|
|
41
37
|
if value.is_string() {
|
42
|
-
|
38
|
+
let str = value.to_rust_string_lossy(scope);
|
39
|
+
return Ok(RString::new(str.as_str()).as_value());
|
43
40
|
}
|
44
41
|
|
45
42
|
if value.is_array() {
|
@@ -52,7 +49,7 @@ pub fn convert_v8_to_ruby(
|
|
52
49
|
let val = convert_v8_to_ruby(&global_raw, scope).unwrap();
|
53
50
|
r_arr.push(val).expect("cannot add item to array");
|
54
51
|
}
|
55
|
-
return Ok(
|
52
|
+
return Ok(r_arr.as_value());
|
56
53
|
}
|
57
54
|
|
58
55
|
if value.is_object() {
|
@@ -71,10 +68,10 @@ pub fn convert_v8_to_ruby(
|
|
71
68
|
let val = convert_v8_to_ruby(&global_raw_val, scope).unwrap();
|
72
69
|
r_hash.aset(key, val).expect("cannot set item to hash");
|
73
70
|
}
|
74
|
-
return Ok(
|
71
|
+
return Ok(r_hash.as_value());
|
75
72
|
}
|
76
73
|
|
77
|
-
Ok(
|
74
|
+
Ok(qnil().as_value())
|
78
75
|
}
|
79
76
|
|
80
77
|
pub fn convert_ruby_to_v8<'s>(
|
data/ext/isorun/src/js/worker.rs
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
use crate::ext;
|
1
2
|
use crate::isorun::utils::{convert_ruby_to_v8, convert_v8_to_ruby};
|
3
|
+
use deno_core::anyhow::Context;
|
2
4
|
use deno_core::error::AnyError;
|
3
5
|
use deno_core::serde_v8::from_v8;
|
4
|
-
use deno_core::{
|
6
|
+
use deno_core::{serde_v8, FsModuleLoader, JsRealm, ModuleId};
|
5
7
|
use deno_runtime::deno_broadcast_channel::InMemoryBroadcastChannel;
|
6
8
|
use deno_runtime::permissions::PermissionsContainer;
|
7
9
|
use deno_runtime::worker::{MainWorker, WorkerOptions};
|
@@ -50,8 +52,11 @@ impl Worker {
|
|
50
52
|
let module_id = {
|
51
53
|
let mut worker = self.worker.borrow_mut();
|
52
54
|
|
53
|
-
let module_specifier =
|
54
|
-
|
55
|
+
let module_specifier = deno_core::resolve_url_or_path(
|
56
|
+
path,
|
57
|
+
&env::current_dir().context("Unable to get CWD")?,
|
58
|
+
)
|
59
|
+
.unwrap();
|
55
60
|
let module_id = self
|
56
61
|
.runtime
|
57
62
|
.block_on(worker.preload_side_module(&module_specifier))?;
|
@@ -142,12 +147,12 @@ impl Worker {
|
|
142
147
|
Some(value)
|
143
148
|
}
|
144
149
|
|
145
|
-
fn send<'a>(
|
150
|
+
pub(crate) fn send<'a>(
|
146
151
|
&self,
|
147
152
|
scope: &mut HandleScope,
|
148
153
|
value: serde_v8::Value<'a>,
|
149
154
|
) -> Result<serde_v8::Value<'a>, AnyError> {
|
150
|
-
if
|
155
|
+
if self.ruby_receiver.borrow_mut().as_mut().is_none() {
|
151
156
|
return Err(AnyError::msg(
|
152
157
|
"Cannot send to ruby. The ruby receiver is missing, please \
|
153
158
|
initialize and set one before calling into Ruby?",
|
@@ -160,27 +165,25 @@ impl Worker {
|
|
160
165
|
self.ruby_context.borrow_mut().as_mut(),
|
161
166
|
self.ruby_receiver.borrow_mut().as_mut(),
|
162
167
|
) {
|
163
|
-
let mut scope = scope; // fixme: can't figure out how to forward the borrow
|
164
168
|
let value = value.v8_value;
|
165
|
-
let value = Global::<v8::Value>::new(
|
166
|
-
let value = convert_v8_to_ruby(&value,
|
169
|
+
let value = Global::<v8::Value>::new(scope, value);
|
170
|
+
let value = convert_v8_to_ruby(&value, scope).unwrap();
|
167
171
|
let args: (Value,) = (value,);
|
168
172
|
return rec
|
169
173
|
.call::<(Value,), Value>(args)
|
170
174
|
.map_err(|err| AnyError::msg(format!("{:?}", err)))
|
171
|
-
.and_then(|value| convert_ruby_to_v8(value,
|
172
|
-
.map(|value| from_v8(
|
175
|
+
.and_then(|value| convert_ruby_to_v8(value, scope))
|
176
|
+
.map(|value| from_v8(scope, value).unwrap());
|
173
177
|
}
|
174
178
|
|
175
179
|
// we need to deref the receiver as mut, as it is behind an Option
|
176
180
|
// TODO: make sure all operations on Ruby data happen when GVL is held
|
177
181
|
if let Some(ctx) = self.ruby_context.borrow_mut().as_mut() {
|
178
|
-
let mut scope = scope; // fixme: can't figure out how to forward the borrow
|
179
182
|
ctx.with_gvl(|| {
|
180
183
|
if let Some(rec) = self.ruby_receiver.borrow_mut().as_mut() {
|
181
184
|
let value = value.v8_value;
|
182
|
-
let value = Global::<v8::Value>::new(
|
183
|
-
let value = convert_v8_to_ruby(&value,
|
185
|
+
let value = Global::<v8::Value>::new(scope, value);
|
186
|
+
let value = convert_v8_to_ruby(&value, scope)?;
|
184
187
|
let args: (Value,) = (value,);
|
185
188
|
rec.call::<(Value,), Value>(args)
|
186
189
|
.map_err(|err| AnyError::msg(format!("{:?}", err)))
|
@@ -189,8 +192,8 @@ impl Worker {
|
|
189
192
|
}
|
190
193
|
})
|
191
194
|
.map_err(|err| AnyError::msg(format!("{:?}", err)))?
|
192
|
-
.and_then(|value| convert_ruby_to_v8(value,
|
193
|
-
.map(|value| from_v8(
|
195
|
+
.and_then(|value| convert_ruby_to_v8(value, scope))
|
196
|
+
.map(|value| from_v8(scope, value).unwrap())
|
194
197
|
} else {
|
195
198
|
Err(AnyError::msg("this should never happen"))
|
196
199
|
}
|
@@ -207,10 +210,8 @@ impl Default for Worker {
|
|
207
210
|
todo!("Web workers are not supported in the example");
|
208
211
|
});
|
209
212
|
|
210
|
-
let
|
211
|
-
|
212
|
-
.build();
|
213
|
-
let mut extensions = vec![extension_send];
|
213
|
+
let ext_isorun = ext::isorun::send_to_ruby::init_ops();
|
214
|
+
let mut extensions = vec![ext_isorun];
|
214
215
|
|
215
216
|
let options = WorkerOptions {
|
216
217
|
bootstrap: BootstrapOptions {
|
@@ -229,7 +230,6 @@ impl Default for Worker {
|
|
229
230
|
inspect: false,
|
230
231
|
},
|
231
232
|
extensions: std::mem::take(&mut extensions),
|
232
|
-
extensions_with_js: Default::default(),
|
233
233
|
startup_snapshot: None,
|
234
234
|
unsafely_ignore_certificate_errors: None,
|
235
235
|
root_cert_store: None,
|
@@ -261,8 +261,11 @@ impl Default for Worker {
|
|
261
261
|
let js_path = Path::new(isorun_native_gem_path.as_str())
|
262
262
|
.join("ext/isorun/src/call.js");
|
263
263
|
|
264
|
-
let main_module =
|
265
|
-
|
264
|
+
let main_module = deno_core::resolve_path(
|
265
|
+
&js_path.to_string_lossy(),
|
266
|
+
&env::current_dir().context("Unable to get CWD").unwrap(),
|
267
|
+
)
|
268
|
+
.unwrap();
|
266
269
|
let permissions = PermissionsContainer::allow_all();
|
267
270
|
let mut worker = MainWorker::bootstrap_from_options(
|
268
271
|
main_module.clone(),
|
@@ -298,13 +301,3 @@ thread_local! {
|
|
298
301
|
pub(crate) static WORKER: Worker = Worker::default();
|
299
302
|
pub(crate) static MODULE_MAP: HashSet<ModuleId> = HashSet::default();
|
300
303
|
}
|
301
|
-
|
302
|
-
#[allow(clippy::extra_unused_lifetimes)]
|
303
|
-
#[op(v8)]
|
304
|
-
fn op_send_to_ruby<'a>(
|
305
|
-
// do not remove the v8:: prefix, otherwise the macro complains
|
306
|
-
scope: &mut v8::HandleScope,
|
307
|
-
data: serde_v8::Value<'a>,
|
308
|
-
) -> Result<serde_v8::Value<'a>, AnyError> {
|
309
|
-
WORKER.with(|worker| worker.send(scope, data))
|
310
|
-
}
|
data/ext/isorun/src/lib.rs
CHANGED
@@ -3,8 +3,11 @@ use crate::isorun::context::Context;
|
|
3
3
|
use crate::isorun::utils::low_memory_notification;
|
4
4
|
use isorun::function::Function;
|
5
5
|
use isorun::module::Module;
|
6
|
-
use magnus::{
|
6
|
+
use magnus::{
|
7
|
+
class, define_module, function, method, Error, Module as M, Object,
|
8
|
+
};
|
7
9
|
|
10
|
+
mod ext;
|
8
11
|
mod isorun;
|
9
12
|
mod js;
|
10
13
|
|
@@ -22,7 +25,7 @@ fn init() -> Result<(), Error> {
|
|
22
25
|
.expect("cannot define module function: low_memory_notification");
|
23
26
|
|
24
27
|
let context = root
|
25
|
-
.define_class("Context",
|
28
|
+
.define_class("Context", class::object())
|
26
29
|
.expect("cannot define class: Isorun::Context");
|
27
30
|
context
|
28
31
|
.define_singleton_method("new", function!(Context::new, 0))
|
@@ -35,7 +38,7 @@ fn init() -> Result<(), Error> {
|
|
35
38
|
.expect("cannot define method: receiver=");
|
36
39
|
|
37
40
|
let module = root
|
38
|
-
.define_class("Module",
|
41
|
+
.define_class("Module", class::object())
|
39
42
|
.expect("cannot define class: Isorun::Module");
|
40
43
|
module
|
41
44
|
.define_private_method("id", method!(Module::id, 0))
|
@@ -45,7 +48,7 @@ fn init() -> Result<(), Error> {
|
|
45
48
|
.expect("cannot define method: import");
|
46
49
|
|
47
50
|
let function = root
|
48
|
-
.define_class("Function",
|
51
|
+
.define_class("Function", class::object())
|
49
52
|
.expect("cannot define class: Isorun::Function");
|
50
53
|
function
|
51
54
|
.define_method("call", method!(Function::call, -1))
|
data/lib/isorun/context.rb
CHANGED
@@ -26,7 +26,8 @@ module Isorun
|
|
26
26
|
CACHE_KEY = "isorun_module_path_mtime"
|
27
27
|
private_constant :CACHE_KEY
|
28
28
|
|
29
|
-
def load(module_path)
|
29
|
+
def load(module_path)
|
30
|
+
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
30
31
|
return context.load(module_path) if Rails.env.production?
|
31
32
|
|
32
33
|
key = module_path.parameterize
|
data/lib/isorun/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isorun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hannes Moser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -158,10 +158,11 @@ files:
|
|
158
158
|
- Rakefile
|
159
159
|
- app/helpers/isorun/app_helper.rb
|
160
160
|
- app/helpers/isorun/vite_app_helper.rb
|
161
|
-
- ext/isorun/Cargo.lock
|
162
161
|
- ext/isorun/Cargo.toml
|
163
162
|
- ext/isorun/extconf.rb
|
164
163
|
- ext/isorun/src/call.js
|
164
|
+
- ext/isorun/src/ext/isorun.rs
|
165
|
+
- ext/isorun/src/ext/mod.rs
|
165
166
|
- ext/isorun/src/isorun/context.rs
|
166
167
|
- ext/isorun/src/isorun/function.rs
|
167
168
|
- ext/isorun/src/isorun/mod.rs
|
data/ext/isorun/Cargo.lock
DELETED
@@ -1,327 +0,0 @@
|
|
1
|
-
# This file is automatically @generated by Cargo.
|
2
|
-
# It is not intended for manual editing.
|
3
|
-
version = 3
|
4
|
-
|
5
|
-
[[package]]
|
6
|
-
name = "aho-corasick"
|
7
|
-
version = "0.7.19"
|
8
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
9
|
-
checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
|
10
|
-
dependencies = [
|
11
|
-
"memchr",
|
12
|
-
]
|
13
|
-
|
14
|
-
[[package]]
|
15
|
-
name = "bindgen"
|
16
|
-
version = "0.60.1"
|
17
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
18
|
-
checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6"
|
19
|
-
dependencies = [
|
20
|
-
"bitflags",
|
21
|
-
"cexpr",
|
22
|
-
"clang-sys",
|
23
|
-
"lazy_static",
|
24
|
-
"lazycell",
|
25
|
-
"peeking_take_while",
|
26
|
-
"proc-macro2",
|
27
|
-
"quote",
|
28
|
-
"regex",
|
29
|
-
"rustc-hash",
|
30
|
-
"shlex",
|
31
|
-
]
|
32
|
-
|
33
|
-
[[package]]
|
34
|
-
name = "bitflags"
|
35
|
-
version = "1.3.2"
|
36
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
37
|
-
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
38
|
-
|
39
|
-
[[package]]
|
40
|
-
name = "cexpr"
|
41
|
-
version = "0.6.0"
|
42
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
43
|
-
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
|
44
|
-
dependencies = [
|
45
|
-
"nom",
|
46
|
-
]
|
47
|
-
|
48
|
-
[[package]]
|
49
|
-
name = "cfg-if"
|
50
|
-
version = "1.0.0"
|
51
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
52
|
-
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
53
|
-
|
54
|
-
[[package]]
|
55
|
-
name = "clang-sys"
|
56
|
-
version = "1.4.0"
|
57
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
58
|
-
checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3"
|
59
|
-
dependencies = [
|
60
|
-
"glob",
|
61
|
-
"libc",
|
62
|
-
"libloading",
|
63
|
-
]
|
64
|
-
|
65
|
-
[[package]]
|
66
|
-
name = "darling"
|
67
|
-
version = "0.13.4"
|
68
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
69
|
-
checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
|
70
|
-
dependencies = [
|
71
|
-
"darling_core",
|
72
|
-
"darling_macro",
|
73
|
-
]
|
74
|
-
|
75
|
-
[[package]]
|
76
|
-
name = "darling_core"
|
77
|
-
version = "0.13.4"
|
78
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
79
|
-
checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610"
|
80
|
-
dependencies = [
|
81
|
-
"fnv",
|
82
|
-
"ident_case",
|
83
|
-
"proc-macro2",
|
84
|
-
"quote",
|
85
|
-
"strsim",
|
86
|
-
"syn",
|
87
|
-
]
|
88
|
-
|
89
|
-
[[package]]
|
90
|
-
name = "darling_macro"
|
91
|
-
version = "0.13.4"
|
92
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
93
|
-
checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
|
94
|
-
dependencies = [
|
95
|
-
"darling_core",
|
96
|
-
"quote",
|
97
|
-
"syn",
|
98
|
-
]
|
99
|
-
|
100
|
-
[[package]]
|
101
|
-
name = "fnv"
|
102
|
-
version = "1.0.7"
|
103
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
104
|
-
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
105
|
-
|
106
|
-
[[package]]
|
107
|
-
name = "glob"
|
108
|
-
version = "0.3.0"
|
109
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
110
|
-
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
111
|
-
|
112
|
-
[[package]]
|
113
|
-
name = "ident_case"
|
114
|
-
version = "1.0.1"
|
115
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
116
|
-
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
117
|
-
|
118
|
-
[[package]]
|
119
|
-
name = "isorun"
|
120
|
-
version = "0.1.0"
|
121
|
-
dependencies = [
|
122
|
-
"magnus",
|
123
|
-
]
|
124
|
-
|
125
|
-
[[package]]
|
126
|
-
name = "lazy_static"
|
127
|
-
version = "1.4.0"
|
128
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
129
|
-
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
130
|
-
|
131
|
-
[[package]]
|
132
|
-
name = "lazycell"
|
133
|
-
version = "1.3.0"
|
134
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
135
|
-
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
136
|
-
|
137
|
-
[[package]]
|
138
|
-
name = "libc"
|
139
|
-
version = "0.2.135"
|
140
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
141
|
-
checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
|
142
|
-
|
143
|
-
[[package]]
|
144
|
-
name = "libloading"
|
145
|
-
version = "0.7.3"
|
146
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
147
|
-
checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd"
|
148
|
-
dependencies = [
|
149
|
-
"cfg-if",
|
150
|
-
"winapi",
|
151
|
-
]
|
152
|
-
|
153
|
-
[[package]]
|
154
|
-
name = "linkify"
|
155
|
-
version = "0.9.0"
|
156
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
157
|
-
checksum = "96dd5884008358112bc66093362197c7248ece00d46624e2cf71e50029f8cff5"
|
158
|
-
dependencies = [
|
159
|
-
"memchr",
|
160
|
-
]
|
161
|
-
|
162
|
-
[[package]]
|
163
|
-
name = "magnus"
|
164
|
-
version = "0.3.2"
|
165
|
-
source = "git+https://github.com/matsadler/magnus?rev=cc852bfa31992d882d42509b1165eb5f67f9dc2c#cc852bfa31992d882d42509b1165eb5f67f9dc2c"
|
166
|
-
dependencies = [
|
167
|
-
"magnus-macros",
|
168
|
-
"rb-sys",
|
169
|
-
]
|
170
|
-
|
171
|
-
[[package]]
|
172
|
-
name = "magnus-macros"
|
173
|
-
version = "0.1.0"
|
174
|
-
source = "git+https://github.com/matsadler/magnus?rev=cc852bfa31992d882d42509b1165eb5f67f9dc2c#cc852bfa31992d882d42509b1165eb5f67f9dc2c"
|
175
|
-
dependencies = [
|
176
|
-
"darling",
|
177
|
-
"proc-macro2",
|
178
|
-
"quote",
|
179
|
-
"syn",
|
180
|
-
]
|
181
|
-
|
182
|
-
[[package]]
|
183
|
-
name = "memchr"
|
184
|
-
version = "2.5.0"
|
185
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
186
|
-
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
187
|
-
|
188
|
-
[[package]]
|
189
|
-
name = "minimal-lexical"
|
190
|
-
version = "0.2.1"
|
191
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
192
|
-
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
193
|
-
|
194
|
-
[[package]]
|
195
|
-
name = "nom"
|
196
|
-
version = "7.1.1"
|
197
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
198
|
-
checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"
|
199
|
-
dependencies = [
|
200
|
-
"memchr",
|
201
|
-
"minimal-lexical",
|
202
|
-
]
|
203
|
-
|
204
|
-
[[package]]
|
205
|
-
name = "peeking_take_while"
|
206
|
-
version = "0.1.2"
|
207
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
208
|
-
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
209
|
-
|
210
|
-
[[package]]
|
211
|
-
name = "proc-macro2"
|
212
|
-
version = "1.0.47"
|
213
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
214
|
-
checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
|
215
|
-
dependencies = [
|
216
|
-
"unicode-ident",
|
217
|
-
]
|
218
|
-
|
219
|
-
[[package]]
|
220
|
-
name = "quote"
|
221
|
-
version = "1.0.21"
|
222
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
223
|
-
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
|
224
|
-
dependencies = [
|
225
|
-
"proc-macro2",
|
226
|
-
]
|
227
|
-
|
228
|
-
[[package]]
|
229
|
-
name = "rb-sys"
|
230
|
-
version = "0.9.31"
|
231
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
232
|
-
checksum = "bfc41b26ea88da6100f538d31467941e41ab0c002999d687315e67d3b371b796"
|
233
|
-
dependencies = [
|
234
|
-
"bindgen",
|
235
|
-
"linkify",
|
236
|
-
"rb-sys-build",
|
237
|
-
]
|
238
|
-
|
239
|
-
[[package]]
|
240
|
-
name = "rb-sys-build"
|
241
|
-
version = "0.9.31"
|
242
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
243
|
-
checksum = "79be4233eabd2bf9e19eb8116391aeaf4b89b87a7ab38e0ded44de9158006e46"
|
244
|
-
dependencies = [
|
245
|
-
"regex",
|
246
|
-
"shell-words",
|
247
|
-
]
|
248
|
-
|
249
|
-
[[package]]
|
250
|
-
name = "regex"
|
251
|
-
version = "1.6.0"
|
252
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
253
|
-
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
|
254
|
-
dependencies = [
|
255
|
-
"aho-corasick",
|
256
|
-
"memchr",
|
257
|
-
"regex-syntax",
|
258
|
-
]
|
259
|
-
|
260
|
-
[[package]]
|
261
|
-
name = "regex-syntax"
|
262
|
-
version = "0.6.27"
|
263
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
264
|
-
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
|
265
|
-
|
266
|
-
[[package]]
|
267
|
-
name = "rustc-hash"
|
268
|
-
version = "1.1.0"
|
269
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
270
|
-
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
271
|
-
|
272
|
-
[[package]]
|
273
|
-
name = "shell-words"
|
274
|
-
version = "1.1.0"
|
275
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
276
|
-
checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
|
277
|
-
|
278
|
-
[[package]]
|
279
|
-
name = "shlex"
|
280
|
-
version = "1.1.0"
|
281
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
282
|
-
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
|
283
|
-
|
284
|
-
[[package]]
|
285
|
-
name = "strsim"
|
286
|
-
version = "0.10.0"
|
287
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
288
|
-
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
289
|
-
|
290
|
-
[[package]]
|
291
|
-
name = "syn"
|
292
|
-
version = "1.0.102"
|
293
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
294
|
-
checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
|
295
|
-
dependencies = [
|
296
|
-
"proc-macro2",
|
297
|
-
"quote",
|
298
|
-
"unicode-ident",
|
299
|
-
]
|
300
|
-
|
301
|
-
[[package]]
|
302
|
-
name = "unicode-ident"
|
303
|
-
version = "1.0.5"
|
304
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
305
|
-
checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
|
306
|
-
|
307
|
-
[[package]]
|
308
|
-
name = "winapi"
|
309
|
-
version = "0.3.9"
|
310
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
311
|
-
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
312
|
-
dependencies = [
|
313
|
-
"winapi-i686-pc-windows-gnu",
|
314
|
-
"winapi-x86_64-pc-windows-gnu",
|
315
|
-
]
|
316
|
-
|
317
|
-
[[package]]
|
318
|
-
name = "winapi-i686-pc-windows-gnu"
|
319
|
-
version = "0.4.0"
|
320
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
321
|
-
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
322
|
-
|
323
|
-
[[package]]
|
324
|
-
name = "winapi-x86_64-pc-windows-gnu"
|
325
|
-
version = "0.4.0"
|
326
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
327
|
-
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|