js 2.6.0 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81f4c9b970a32b1074724040b7cf50b1eb5b92c997ecc85195f6d3cc294da8fb
4
- data.tar.gz: 765a9b39f1a77485834a71f6f5cb420d01225a0a8057316a8ec6b622d58578b1
3
+ metadata.gz: 153c572884d06b66e29644640877fa1b35d8d08725d44cafb0895e0269f40d8d
4
+ data.tar.gz: 67351a2724d1c4f74aba3506d14334bef7055918e564429ac9eaf73b277dbcac
5
5
  SHA512:
6
- metadata.gz: 73305608f6fcc88d01fa044ff2eda293165721e8317a93f811aca35bae0b755e2dd0db595487d5f297f4c58bdc9b7e8c61931a77e920323d585f2ee3446f21d6
7
- data.tar.gz: bae658a9d87eb2bb1f233dd54c5351b93f2f937253d0c6476006ae184dc80ef6b91ff35488aec1c4e66d26f8fe81515b767b9520fcef316577e2e6a5d7ef24f2
6
+ metadata.gz: 7f5cfd35ce5a3242d83553dc3fe8e71664fcad0198535d85ee06adbad272cae7d3eddc2ade6e9852b4f81c559056f4f0904474f83ad6d0a000536a9b0d93a10b
7
+ data.tar.gz: bd603fe5fe568ec47898d1356a1e46f0bde720313c56b24e36b4f1f70d46f3995c87728621463d332ba37fd347f7ae7f78d218c99adf0d594f50954e21515a49
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # js
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/js.svg)](https://badge.fury.io/rb/js)
4
+
5
+ JavaScript bindings for ruby.wasm. This gem provides a way to use JavaScript functionalities from Ruby through WebAssembly.
6
+
7
+ ## Versioning and Compatibility
8
+
9
+ This gem follows the versioning of ruby.wasm. The version of this gem is the same as the version of ruby.wasm it is compatible with.
data/ext/js/bindgen/ext.c CHANGED
@@ -150,7 +150,7 @@ void ruby_js_js_runtime_list_borrow_js_abi_value_free(ruby_js_js_runtime_list_bo
150
150
  }
151
151
  }
152
152
 
153
- __attribute__((__import_module__("ruby:js/ruby-runtime"), __import_name__("[resource-drop]rb-iseq")))
153
+ __attribute__((__import_module__("[export]ruby:js/ruby-runtime"), __import_name__("[resource-drop]rb-iseq")))
154
154
  extern void __wasm_import_exports_ruby_js_ruby_runtime_rb_iseq_drop(int32_t handle);
155
155
 
156
156
  void exports_ruby_js_ruby_runtime_rb_iseq_drop_own(exports_ruby_js_ruby_runtime_own_rb_iseq_t handle) {
@@ -176,7 +176,7 @@ void __wasm_export_exports_ruby_js_ruby_runtime_rb_iseq_dtor(exports_ruby_js_rub
176
176
  exports_ruby_js_ruby_runtime_rb_iseq_destructor(arg);
177
177
  }
178
178
 
179
- __attribute__((__import_module__("ruby:js/ruby-runtime"), __import_name__("[resource-drop]rb-abi-value")))
179
+ __attribute__((__import_module__("[export]ruby:js/ruby-runtime"), __import_name__("[resource-drop]rb-abi-value")))
180
180
  extern void __wasm_import_exports_ruby_js_ruby_runtime_rb_abi_value_drop(int32_t handle);
181
181
 
182
182
  void exports_ruby_js_ruby_runtime_rb_abi_value_drop_own(exports_ruby_js_ruby_runtime_own_rb_abi_value_t handle) {
Binary file
data/ext/js/extconf.rb CHANGED
@@ -3,6 +3,8 @@ require "mkmf"
3
3
  MakeMakefile::RbConfig ||= RbConfig
4
4
  unless MakeMakefile::RbConfig::CONFIG["platform"] =~ /wasm/
5
5
  $stderr.puts "This extension is only for WebAssembly. Creating a dummy Makefile."
6
+ # Explicitly set $srcs to avoid the default '*.c' globbing.
7
+ $srcs = []
6
8
  create_makefile("js")
7
9
  return
8
10
  end
data/ext/js/js-core.c CHANGED
@@ -438,7 +438,7 @@ static VALUE _rb_js_import_from_js(VALUE obj) {
438
438
  * Returns +obj+ wrapped by JS class RbValue.
439
439
  */
440
440
  static VALUE _rb_js_obj_wrap(VALUE obj, VALUE wrapping) {
441
- #if JS_ENABLE_COMPONENT_MODEL
441
+ #ifdef JS_ENABLE_COMPONENT_MODEL
442
442
  rb_abi_stage_rb_value_to_js(wrapping);
443
443
  return jsvalue_s_new(rb_js_abi_host_rb_object_to_js_rb_value());
444
444
  #else
@@ -511,7 +511,7 @@ static VALUE _rb_js_false_to_js(VALUE obj) {
511
511
  * Returns +self+ as a JS::Object.
512
512
  */
513
513
  static VALUE _rb_js_proc_to_js(VALUE obj) {
514
- #if JS_ENABLE_COMPONENT_MODEL
514
+ #ifdef JS_ENABLE_COMPONENT_MODEL
515
515
  rb_abi_stage_rb_value_to_js(obj);
516
516
  return jsvalue_s_new(ruby_js_js_runtime_proc_to_js_function());
517
517
  #else
data/ext/js/witapi-core.c CHANGED
@@ -3,7 +3,11 @@
3
3
  #include "ruby.h"
4
4
  #include "ruby/version.h"
5
5
 
6
- static VALUE rb_eval_string_value_protect_thunk(VALUE str) {
6
+ #include "types.h"
7
+
8
+ static VALUE rb_eval_string_value_protect_thunk(VALUE ctx) {
9
+ const rb_abi_guest_string_t *cabi_str = (const rb_abi_guest_string_t *)ctx;
10
+ VALUE str = rb_utf8_str_new((const char *)cabi_str->ptr, cabi_str->len);
7
11
  const ID id_eval = rb_intern("eval");
8
12
  VALUE binding = rb_const_get(rb_cObject, rb_intern("TOPLEVEL_BINDING"));
9
13
  const VALUE file = rb_utf8_str_new("eval", 4);
@@ -11,14 +15,13 @@ static VALUE rb_eval_string_value_protect_thunk(VALUE str) {
11
15
  return rb_funcallv(rb_mKernel, id_eval, 3, args);
12
16
  }
13
17
 
14
- static VALUE rb_eval_string_value_protect(VALUE str, int *pstate) {
15
- return rb_protect(rb_eval_string_value_protect_thunk, str, pstate);
18
+ static VALUE rb_eval_string_value_protect(const rb_abi_guest_string_t *str,
19
+ int *pstate) {
20
+ return rb_protect(rb_eval_string_value_protect_thunk, (VALUE)str, pstate);
16
21
  }
17
22
 
18
23
  #define TAG_NONE 0
19
24
 
20
- #include "types.h"
21
-
22
25
  __attribute__((import_module("asyncify"), import_name("start_unwind"))) void
23
26
  asyncify_start_unwind(void *buf);
24
27
  #define asyncify_start_unwind(buf) \
@@ -200,15 +203,17 @@ void exports_ruby_js_ruby_runtime_rb_abi_value_destructor(
200
203
 
201
204
  void rb_abi_guest_ruby_show_version(void) { ruby_show_version(); }
202
205
 
203
- void rb_abi_guest_ruby_init(void) {
204
- RB_WASM_LIB_RT(ruby_init())
205
-
206
+ __attribute__((noinline)) static void rb_abi_guest_ruby_init_thunk(void) {
207
+ ruby_init();
206
208
  rb_abi_guest_arena_hash = rb_hash_new();
207
209
  rb_abi_guest_refcount_hash = rb_hash_new();
208
210
 
209
211
  rb_gc_register_mark_object(rb_abi_guest_arena_hash);
210
212
  rb_gc_register_mark_object(rb_abi_guest_refcount_hash);
211
213
  }
214
+ void rb_abi_guest_ruby_init(void) {
215
+ RB_WASM_LIB_RT(rb_abi_guest_ruby_init_thunk())
216
+ }
212
217
 
213
218
  void rb_abi_guest_ruby_sysinit(rb_abi_guest_list_string_t *args) {
214
219
  char **c_args;
@@ -234,12 +239,11 @@ void rb_abi_guest_ruby_init_loadpath(void) {
234
239
  RB_WASM_LIB_RT(ruby_init_loadpath())
235
240
  }
236
241
 
237
- void rb_abi_guest_rb_eval_string_protect(
242
+ __attribute__((noinline)) static void rb_abi_guest_rb_eval_string_protect_thunk(
238
243
  rb_abi_guest_string_t *str, rb_abi_guest_tuple2_rb_abi_value_s32_t *ret0) {
239
244
  VALUE retval;
240
245
  RB_WASM_DEBUG_LOG("rb_eval_string_protect: str = %s\n", str->ptr);
241
- VALUE utf8_str = rb_utf8_str_new((const char *)str->ptr, str->len);
242
- RB_WASM_LIB_RT(retval = rb_eval_string_value_protect(utf8_str, &ret0->f1));
246
+ retval = rb_eval_string_value_protect(str, &ret0->f1);
243
247
  RB_WASM_DEBUG_LOG("rb_eval_string_protect: retval = %p, state = %d\n",
244
248
  (void *)retval, ret0->f1);
245
249
 
@@ -248,6 +252,10 @@ void rb_abi_guest_rb_eval_string_protect(
248
252
  }
249
253
  ret0->f0 = rb_abi_guest_rb_abi_value_new((void *)retval);
250
254
  }
255
+ void rb_abi_guest_rb_eval_string_protect(
256
+ rb_abi_guest_string_t *str, rb_abi_guest_tuple2_rb_abi_value_s32_t *ret0) {
257
+ RB_WASM_LIB_RT(rb_abi_guest_rb_eval_string_protect_thunk(str, ret0));
258
+ }
251
259
 
252
260
  struct rb_funcallv_thunk_ctx {
253
261
  VALUE recv;
@@ -284,7 +292,9 @@ void rb_abi_guest_rb_funcallv_protect(
284
292
  }
285
293
 
286
294
  rb_abi_guest_rb_id_t rb_abi_guest_rb_intern(rb_abi_guest_string_t *name) {
287
- return rb_intern((const char *)name->ptr);
295
+ VALUE retval;
296
+ RB_WASM_LIB_RT(retval = rb_intern((const char *)name->ptr));
297
+ return (rb_abi_guest_rb_id_t)retval;
288
298
  }
289
299
 
290
300
  rb_abi_guest_own_rb_abi_value_t rb_abi_guest_rb_errinfo(void) {
@@ -294,16 +304,24 @@ rb_abi_guest_own_rb_abi_value_t rb_abi_guest_rb_errinfo(void) {
294
304
  return rb_abi_guest_rb_abi_value_new((void *)retval);
295
305
  }
296
306
 
297
- void rb_abi_guest_rb_clear_errinfo(void) { rb_set_errinfo(Qnil); }
307
+ void rb_abi_guest_rb_clear_errinfo(void) {
308
+ RB_WASM_LIB_RT(rb_set_errinfo(Qnil));
309
+ }
298
310
 
299
- void rb_abi_guest_rstring_ptr(rb_abi_guest_rb_abi_value_t value,
300
- rb_abi_guest_string_t *ret0) {
311
+ __attribute__((noinline)) static void
312
+ rb_abi_guest_rstring_ptr_thunk(rb_abi_guest_rb_abi_value_t value,
313
+ rb_abi_guest_string_t *ret0) {
301
314
  VALUE r_str = (VALUE)rb_abi_guest_rb_abi_value_get(&value);
302
315
  ret0->len = RSTRING_LEN(r_str);
303
316
  ret0->ptr = xmalloc(ret0->len);
304
317
  memcpy(ret0->ptr, RSTRING_PTR(r_str), ret0->len);
305
318
  }
306
319
 
320
+ void rb_abi_guest_rstring_ptr(rb_abi_guest_rb_abi_value_t value,
321
+ rb_abi_guest_string_t *ret0) {
322
+ RB_WASM_LIB_RT(rb_abi_guest_rstring_ptr_thunk(value, ret0));
323
+ }
324
+
307
325
  uint32_t rb_abi_guest_rb_abi_value_data_ptr(rb_abi_guest_rb_abi_value_t self) {
308
326
  VALUE obj = (VALUE)rb_abi_guest_rb_abi_value_get(&self);
309
327
  return (uint32_t)DATA_PTR(obj);
@@ -340,6 +358,8 @@ bool rb_abi_guest_rb_set_should_prohibit_rewind(bool value) {
340
358
  return old;
341
359
  }
342
360
 
361
+ #ifdef JS_ENABLE_COMPONENT_MODEL
362
+
343
363
  static VALUE rb_abi_export_stage = Qnil;
344
364
  static rb_abi_guest_own_rb_abi_value_t rb_abi_export_rb_value_to_js(void) {
345
365
  VALUE staged = rb_abi_export_stage;
@@ -354,8 +374,6 @@ void rb_abi_stage_rb_value_to_js(VALUE value) {
354
374
  rb_abi_export_stage = value;
355
375
  }
356
376
 
357
- #ifdef JS_ENABLE_COMPONENT_MODEL
358
-
359
377
  extern void __wasm_call_ctors(void);
360
378
  static inline void __wasm_call_ctors_if_needed(void) {
361
379
  static bool __wasm_call_ctors_done = false;
data/lib/js/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module JS
2
- VERSION = "2.6.0"
2
+ VERSION = "2.6.2"
3
3
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: js
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuta Saito
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 2024-05-05 00:00:00.000000000 Z
11
+ date: 2024-06-29 00:00:00.000000000 Z
11
12
  dependencies: []
12
13
  description: JavaScript bindings for ruby.wasm. This gem provides a way to use JavaScript
13
14
  functionalities from Ruby through WebAssembly.
@@ -18,6 +19,7 @@ extensions:
18
19
  - ext/js/extconf.rb
19
20
  extra_rdoc_files: []
20
21
  files:
22
+ - README.md
21
23
  - ext/js/bindgen/.clang-format
22
24
  - ext/js/bindgen/ext.c
23
25
  - ext/js/bindgen/ext.h
@@ -50,6 +52,7 @@ licenses:
50
52
  - MIT
51
53
  metadata:
52
54
  source_code_uri: https://github.com/ruby/ruby.wasm/tree/main/packages/gems/js
55
+ post_install_message:
53
56
  rdoc_options: []
54
57
  require_paths:
55
58
  - lib
@@ -64,7 +67,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
67
  - !ruby/object:Gem::Version
65
68
  version: '0'
66
69
  requirements: []
67
- rubygems_version: 3.6.0.dev
70
+ rubygems_version: 3.5.9
71
+ signing_key:
68
72
  specification_version: 4
69
73
  summary: JavaScript bindings for ruby.wasm
70
74
  test_files: []