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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 724881750024f3660d4f7219113d5fe5a13bdb53c5e31edf8cad5bb4ef5bb5ff
4
- data.tar.gz: 156a1e08ccf8613c5652c7414c305d2d55c3080de11a6414f07e72817dc48240
3
+ metadata.gz: 9e2341a17cf7d54ef94287db152e38b7de35c45ca5822d3d6d384a0f3ce167f9
4
+ data.tar.gz: 030fddff91def684221eda73d6ebfa2c2359ef94604c8ffc6611de9f4b3a9370
5
5
  SHA512:
6
- metadata.gz: '09398ad2ec130ec4a559a3bf78d063c0b6a5c15cc0cf7ad6b745048598c6eb4b8f3add11e3c2e58f841d78f802ff13ebfd13b4017a50c8f14a8cd396a84161b9'
7
- data.tar.gz: cc650db902d6c942ec49743f76543a1812b5ef3772f953796902a27919a4ffd4a375ab0d5fc7c48c2d0bdc06ec44a96ff47993a9ca7a5e321eb10432208deced
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: nil) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
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: nil)
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
@@ -1,26 +1,26 @@
1
1
  [package]
2
2
  name = "isorun"
3
- version = "0.1.11"
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.86.0"
11
- deno_core = "0.168.0"
12
- deno_fetch = "0.110.0"
13
- deno_runtime = "0.94.0"
14
- deno_url = "0.86.0"
15
- deno_web = "0.117.0"
16
- deno_webidl = "0.86.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 = "75e2ba89d12af8c51d2bbbb137da2eac3fc966e3" }
18
+ magnus = { git = "https://github.com/eliias/magnus", rev = "fdfc70bdb52ea614f6823e55a7fda3122e83d1d4" }
19
19
  tokio = { version = "1.21.1", features = ["full"] }
20
- v8 = "0.60.1"
20
+ v8 = "0.68.0"
21
21
 
22
22
  [dev-dependencies]
23
- magnus = { git = "https://github.com/eliias/magnus", rev = "75e2ba89d12af8c51d2bbbb137da2eac3fc966e3", features = ["embed"] }
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
+ }
@@ -0,0 +1,3 @@
1
+ pub(crate) mod isorun;
2
+
3
+ pub use crate::*;
@@ -35,7 +35,6 @@ impl Context {
35
35
  path: String,
36
36
  ) -> Result<isorun::module::Module, Error> {
37
37
  let realm = self.0.clone();
38
-
39
38
  WORKER
40
39
  .with(|worker| {
41
40
  worker
@@ -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(magnus::Value::from(Function(RefCell::from(f))))
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(Value::from(QNIL));
15
+ return Ok(qnil().as_value());
19
16
  }
20
17
 
21
18
  if value.is_int32() {
22
- return Ok(Value::from(Integer::from_i64(
23
- value.int32_value(scope).unwrap() as i64,
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(Value::from(
29
- RFloat::from_f64(value.number_value(scope).unwrap()).unwrap(),
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(Value::from(QTRUE));
30
+ return Ok(qtrue().as_value());
35
31
  }
36
32
 
37
33
  if value.is_false() {
38
- return Ok(Value::from(QFALSE));
34
+ return Ok(qfalse().as_value());
39
35
  }
40
36
 
41
37
  if value.is_string() {
42
- return Ok(Value::from(value.to_rust_string_lossy(scope)));
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(Value::from(r_arr));
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(Value::from(r_hash));
71
+ return Ok(r_hash.as_value());
75
72
  }
76
73
 
77
- Ok(Value::from(QNIL))
74
+ Ok(qnil().as_value())
78
75
  }
79
76
 
80
77
  pub fn convert_ruby_to_v8<'s>(
@@ -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::{op, serde_v8, Extension, FsModuleLoader, JsRealm, ModuleId};
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
- deno_core::resolve_url_or_path(path).unwrap();
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 let None = self.ruby_receiver.borrow_mut().as_mut() {
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(&mut scope, value);
166
- let value = convert_v8_to_ruby(&value, &mut scope).unwrap();
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, &mut scope))
172
- .map(|value| from_v8(&mut scope, value).unwrap());
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(&mut scope, value);
183
- let value = convert_v8_to_ruby(&value, &mut scope)?;
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, &mut scope))
193
- .map(|value| from_v8(&mut scope, value).unwrap())
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 extension_send = Extension::builder("isorun")
211
- .ops(vec![op_send_to_ruby::decl()])
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
- deno_core::resolve_path(&js_path.to_string_lossy()).unwrap();
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
- }
@@ -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::{define_module, function, method, Error, Module as M, Object};
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", Default::default())
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", Default::default())
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", Default::default())
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))
@@ -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) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Isorun
4
- VERSION = "0.1.11"
4
+ VERSION = "0.1.12"
5
5
  end
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.11
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-02-03 00:00:00.000000000 Z
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
@@ -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"