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 +4 -4
- data/README.md +9 -0
- data/ext/js/bindgen/ext.c +2 -2
- data/ext/js/bindgen/ext_component_type.o +0 -0
- data/ext/js/depend +2 -1
- data/ext/js/extconf.rb +20 -1
- data/ext/js/witapi-core.c +5 -0
- data/lib/js/version.rb +1 -1
- data/lib/js.rb +5 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2886bbeac0af159a2c25b2cceb53b967f4ef7928f2e8518648f0517f4b5a8a3b
|
4
|
+
data.tar.gz: 598e83d78b499fabeb223f98b980f5716650246d42a24cd0cb327fd27ac95e10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56a2c02d0f6d42e27ff3d45385e1bcc1e7464d18ea0ed07e92cf08a8d7469cbb27cdc38f8ee69eb67ca3052455d1cd2a5a10016e338f03f3aa8bb3127a806ae0
|
7
|
+
data.tar.gz: cffe906a9cfa1710d75f9df827bdc9b406009ddc90291fef4b036aa7c6e70a495de130883114762f83456dd69243134683bb7c4bef038069229385c97b89cd5d
|
data/README.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# js
|
2
|
+
|
3
|
+
[](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
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 =
|
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
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)
|
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.
|
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-
|
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.
|
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: []
|