js 2.5.2 → 2.6.1

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: ab2a18bea019f59904c71b83f4ef3ff3b5f3401a4ac855da7922eeae08268f0b
4
- data.tar.gz: 6abf47657bcc65f0c4f7f50c476e2995d40b965b7ffd42fb92bc101d137b0f92
3
+ metadata.gz: 2886bbeac0af159a2c25b2cceb53b967f4ef7928f2e8518648f0517f4b5a8a3b
4
+ data.tar.gz: 598e83d78b499fabeb223f98b980f5716650246d42a24cd0cb327fd27ac95e10
5
5
  SHA512:
6
- metadata.gz: d468bafd32f8c1015b4c112e22b94ebe4a23abc08d6c0449e437ee650494efec2f0ae15aa906260167d98f18b327f85504fd4a126bb09e51325739a4676e16e2
7
- data.tar.gz: d60702d46ca45c76e5249cc9a5889672804ddf21f0a833835339d25c8249b32c74544e9fed1f5a420be577888fd1af077b92ae58bb766e1be74039cddffb602e
6
+ metadata.gz: 56a2c02d0f6d42e27ff3d45385e1bcc1e7464d18ea0ed07e92cf08a8d7469cbb27cdc38f8ee69eb67ca3052455d1cd2a5a10016e338f03f3aa8bb3127a806ae0
7
+ data.tar.gz: cffe906a9cfa1710d75f9df827bdc9b406009ddc90291fef4b036aa7c6e70a495de130883114762f83456dd69243134683bb7c4bef038069229385c97b89cd5d
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/depend CHANGED
@@ -14,4 +14,5 @@ bindgen/legacy/%.o: $(srcdir)/bindgen/legacy/%.c
14
14
 
15
15
  bindgen/ext.o: $(srcdir)/bindgen/ext.c
16
16
  @mkdir -p "$(@D)"
17
- $(CC) -c -o $@ $<
17
+ $(ECHO) compiling $(<)
18
+ $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
data/ext/js/extconf.rb CHANGED
@@ -1,4 +1,14 @@
1
1
  require "mkmf"
2
+
3
+ MakeMakefile::RbConfig ||= RbConfig
4
+ unless MakeMakefile::RbConfig::CONFIG["platform"] =~ /wasm/
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 = []
8
+ create_makefile("js")
9
+ return
10
+ end
11
+
2
12
  $objs = %w[js-core.o witapi-core.o]
3
13
 
4
14
  use_component_model = enable_config("component-model", false)
@@ -11,7 +21,16 @@ else
11
21
  $objs << "bindgen/legacy/rb-js-abi-host.o"
12
22
  $objs << "bindgen/legacy/rb-abi-guest.o"
13
23
  end
24
+
25
+ component_type_obj = "$(srcdir)/bindgen/ext_component_type.o"
26
+
27
+ unless $static
28
+ # When building shared library, we need to link the component type object
29
+ # to the shared library instead of the main ruby executable.
30
+ $libs << component_type_obj
31
+ end
32
+
14
33
  create_makefile("js") do |mk|
15
- mk << "EXTRA_OBJS = $(srcdir)/bindgen/ext_component_type.o\n" if use_component_model
34
+ mk << "EXTRA_OBJS = #{component_type_obj}\n" if use_component_model
16
35
  mk
17
36
  end
data/ext/js/witapi-core.c CHANGED
@@ -363,10 +363,15 @@ static inline void __wasm_call_ctors_if_needed(void) {
363
363
  __wasm_call_ctors_done = true;
364
364
  __wasm_call_ctors();
365
365
 
366
+ // Initialize VFS runtime if it's used
367
+ // NOTE: We don't use wasi-vfs for PIC build. Instead, we use
368
+ // Component Model-native wasi-virt.
369
+ # ifndef __PIC__
366
370
  __attribute__((weak)) extern void __wasi_vfs_rt_init(void);
367
371
  if (__wasi_vfs_rt_init) {
368
372
  __wasi_vfs_rt_init();
369
373
  }
374
+ # endif
370
375
  }
371
376
  }
372
377
 
data/lib/js/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module JS
2
- VERSION = "2.5.2"
2
+ VERSION = "2.6.1"
3
3
  end
data/lib/js.rb CHANGED
@@ -173,7 +173,11 @@ class JS::Object
173
173
  if sym_str.end_with?("?")
174
174
  # When a JS method is called with a ? suffix, it is treated as a predicate method,
175
175
  # and the return value is converted to a Ruby boolean value automatically.
176
- self.call(sym_str[0..-2].to_sym, *args, &block) == JS::True
176
+ result = self.call(sym_str[0..-2].to_sym, *args, &block)
177
+
178
+ # Type coerce the result to boolean type
179
+ # to match the true/false determination in JavaScript's if statement.
180
+ JS.global.Boolean(result) == JS::True
177
181
  elsif self[sym].typeof == "function"
178
182
  self.call(sym, *args, &block)
179
183
  else
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.5.2
4
+ version: 2.6.1
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-04 00:00:00.000000000 Z
11
+ date: 2024-05-22 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.3
71
+ signing_key:
68
72
  specification_version: 4
69
73
  summary: JavaScript bindings for ruby.wasm
70
74
  test_files: []