isorun 0.1.11 → 0.1.12
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.
- 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"
|