ruby_wasm 2.5.1-x64-mingw-ucrt → 2.5.2-x64-mingw-ucrt

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.
data/package.json CHANGED
@@ -5,8 +5,8 @@
5
5
  "packages/npm-packages/*"
6
6
  ],
7
7
  "devDependencies": {
8
- "@playwright/test": "^1.42.1",
8
+ "@playwright/test": "^1.43.1",
9
9
  "@rollup/plugin-json": "^6.1.0",
10
- "rollup": "^4.13.2"
10
+ "rollup": "^4.17.2"
11
11
  }
12
12
  }
data/rakelib/check.rake CHANGED
@@ -1,35 +1,48 @@
1
1
  namespace :check do
2
+ legacy_wit_bindgen = RubyWasm::WitBindgen.new(build_dir: "build", revision: "251e84b89121751f79ac268629e9285082b2596d")
2
3
  wit_bindgen = RubyWasm::WitBindgen.new(build_dir: "build")
3
4
  task :install_wit_bindgen do
5
+ legacy_wit_bindgen.install
4
6
  wit_bindgen.install
5
7
  end
6
- task bindgen_c: :install_wit_bindgen do
8
+ task legacy_bindgen_c: :install_wit_bindgen do
7
9
  wits = [
8
- %w[packages/gems/js/ext/witapi/bindgen/rb-abi-guest.wit --export],
9
- %w[packages/gems/js/ext/js/bindgen/rb-js-abi-host.wit --import]
10
+ %w[packages/gems/js/ext/js/bindgen/legacy/rb-abi-guest.wit --export],
11
+ %w[packages/gems/js/ext/js/bindgen/legacy/rb-js-abi-host.wit --import]
10
12
  ]
11
13
  wits.each do |wit|
12
14
  path, mode = wit
13
- sh "#{wit_bindgen.bin_path} guest c #{mode} #{path} --out-dir #{File.dirname(path)}"
15
+ sh "#{legacy_wit_bindgen.bin_path} guest c #{mode} #{path} --out-dir #{File.dirname(path)}"
14
16
  end
15
17
  end
16
18
 
17
- task bindgen_js: :install_wit_bindgen do
19
+ task legacy_bindgen_js: :install_wit_bindgen do
18
20
  sh *[
19
- wit_bindgen.bin_path,
21
+ legacy_wit_bindgen.bin_path,
20
22
  "host",
21
23
  "js",
22
24
  "--import",
23
- "packages/gems/js/ext/witapi/bindgen/rb-abi-guest.wit",
25
+ "packages/gems/js/ext/js/bindgen/legacy/rb-abi-guest.wit",
24
26
  "--export",
25
- "packages/gems/js/ext/js/bindgen/rb-js-abi-host.wit",
27
+ "packages/gems/js/ext/js/bindgen/legacy/rb-js-abi-host.wit",
26
28
  "--out-dir",
27
- "packages/npm-packages/ruby-wasm-wasi/src/bindgen"
29
+ "packages/npm-packages/ruby-wasm-wasi/src/bindgen/legacy"
28
30
  ]
29
31
  end
30
32
 
33
+ task bindgen_c: :install_wit_bindgen do
34
+ js_pkg_dir = "packages/gems/js"
35
+ sh(
36
+ wit_bindgen.bin_path,
37
+ "c",
38
+ File.join(js_pkg_dir, "wit"),
39
+ "--out-dir",
40
+ File.join(js_pkg_dir, "ext", "js", "bindgen")
41
+ )
42
+ end
43
+
31
44
  desc "Check wit-bindgen'ed sources are up-to-date"
32
- task bindgen: %i[bindgen_c bindgen_js]
45
+ task bindgen: %i[bindgen_c legacy_bindgen_c legacy_bindgen_js]
33
46
 
34
47
  task :type do
35
48
  sh "bundle exec steep check"
@@ -1,7 +1,9 @@
1
1
  wasi_vfs = RubyWasm::WasiVfsProduct.new(File.join(Dir.pwd, "build"))
2
2
  wasi_sdk = TOOLCHAINS["wasi-sdk"]
3
+ def exe_rbwasm = File.expand_path(File.join(__dir__, "..", "exe", "rbwasm"))
4
+
3
5
  tools = {
4
- "WASI_VFS_CLI" => File.expand_path(File.join(__dir__, "..", "exe", "rbwasm")),
6
+ "WASI_VFS_CLI" => exe_rbwasm,
5
7
  "WASMOPT" => wasi_sdk.wasm_opt
6
8
  }
7
9
 
@@ -11,7 +13,7 @@ def npm_pkg_build_command(pkg)
11
13
  [
12
14
  "bundle",
13
15
  "exec",
14
- "rbwasm",
16
+ exe_rbwasm,
15
17
  "build",
16
18
  "--ruby-version",
17
19
  pkg[:ruby_version],
@@ -27,7 +29,8 @@ def npm_pkg_rubies_cache_key(pkg)
27
29
  return nil unless build_command
28
30
  require "open3"
29
31
  cmd = build_command + ["--print-ruby-cache-key"]
30
- stdout, status = Open3.capture2(*cmd)
32
+ chdir = pkg[:gemfile] ? File.dirname(pkg[:gemfile]) : Dir.pwd
33
+ stdout, status = Open3.capture2(*cmd, chdir: chdir)
31
34
  unless status.success?
32
35
  raise "Command failed with status (#{status.exitstatus}): #{cmd.join ""}"
33
36
  end
@@ -72,6 +75,18 @@ namespace :npm do
72
75
  *build_command,
73
76
  "-o",
74
77
  File.join(dist_dir, "ruby.debug+stdlib.wasm")
78
+ if pkg[:enable_component_model]
79
+ component_path = File.join(pkg_dir, "tmp", "ruby.component.wasm")
80
+ FileUtils.mkdir_p(File.dirname(component_path))
81
+
82
+ sh env.merge("RUBY_WASM_EXPERIMENTAL_COMPONENT_MODEL" => "1"),
83
+ *build_command, "-o", component_path
84
+ sh "npx", "jco", "transpile",
85
+ "--no-wasi-shim", "--instantiation", "--valid-lifting-optimization",
86
+ component_path, "-o", File.join(dist_dir, "component")
87
+ # ./component/package.json is required to be an ES module
88
+ File.write(File.join(dist_dir, "component", "package.json"), '{ "type": "module" }')
89
+ end
75
90
  end
76
91
  sh wasi_sdk.wasm_opt,
77
92
  "--strip-debug",
@@ -158,9 +158,10 @@ module RubyWasm
158
158
  @toolchain: Toolchain
159
159
  @srcdir: String
160
160
  @ext_relative_path: String
161
+ @features: RubyWasm::FeatureSet
161
162
 
162
163
  attr_reader name: String
163
- def initialize: (String srcdir, Toolchain toolchain, ?ext_relative_path: String?) -> void
164
+ def initialize: (String srcdir, Toolchain toolchain, features: RubyWasm::FeatureSet, ?ext_relative_path: String?) -> void
164
165
  def product_build_dir: (CrossRubyProduct crossruby) -> String
165
166
  def linklist: (CrossRubyProduct crossruby) -> String
166
167
  def metadata_json: (CrossRubyProduct crossruby) -> String
@@ -33,7 +33,7 @@ module RubyWasm
33
33
  private
34
34
 
35
35
  def build_config: (cli_options options) -> Packager::build_config
36
- def compute_build_source: (cli_options options) -> Packager::build_source
36
+ def compute_build_source: (cli_options options) -> [Packager::build_source, String?]
37
37
  def self.build_source_aliases: (string root) -> Hash[string, Packager::build_source]
38
38
  def self.bundled_patches_path: () -> string
39
39
  def root: () -> string
@@ -23,4 +23,14 @@ module RubyWasmExt
23
23
  def use_built_in_libdl: (bool) -> void
24
24
  def encode: () -> bytes
25
25
  end
26
+
27
+ class ComponentEncode
28
+ def initialize: () -> void
29
+ def validate: (bool) -> void
30
+ def adapter: (String name, bytes module) -> void
31
+ def module: (bytes module) -> void
32
+ def realloc_via_memory_grow: (bool) -> void
33
+ def import_name_map: (Hash[String, String] map) -> void
34
+ def encode: () -> bytes
35
+ end
26
36
  end
@@ -0,0 +1,12 @@
1
+ class RubyWasm::FeatureSet
2
+ @features: Hash[Symbol, bool]
3
+
4
+ def initialize: (Hash[Symbol, bool]) -> void
5
+
6
+ FEATURES: Hash[Symbol, String]
7
+
8
+ def self.derive_from_env: () -> RubyWasm::FeatureSet
9
+
10
+ def support_dynamic_linking?: () -> bool
11
+ def support_component_model?: () -> bool
12
+ end
@@ -18,14 +18,20 @@ class RubyWasm::Packager
18
18
  patches: Array[String],
19
19
  }
20
20
 
21
- type build_config = Hash[untyped, untyped]
21
+ type build_config = {
22
+ target: String,
23
+ src: RubyWasm::Packager::build_source,
24
+ default_exts: String,
25
+ suffix: String,
26
+ }
22
27
 
23
28
  type bytes = String
24
29
 
25
30
  @definition: untyped
26
31
  @config: build_config
32
+ @features: RubyWasm::FeatureSet
27
33
 
28
- def initialize: (string root, build_config?, untyped? definition) -> void
34
+ def initialize: (string root, build_config?, untyped? definition, features: RubyWasm::FeatureSet) -> void
29
35
 
30
36
  def package: (RubyWasm::BuildExecutor, string dest_dir, untyped options) -> bytes
31
37
 
@@ -35,7 +41,7 @@ class RubyWasm::Packager
35
41
  EXCLUDED_GEMS: Array[string]
36
42
 
37
43
  def specs: () -> Array[untyped]
38
- def support_dynamic_linking?: () -> bool
44
+ def features: () -> RubyWasm::FeatureSet
39
45
 
40
46
  def root: () -> string
41
47
 
@@ -50,7 +56,7 @@ class RubyWasm::Packager
50
56
  @packager: RubyWasm::Packager
51
57
  def initialize: (RubyWasm::Packager) -> void
52
58
  def build: (RubyWasm::BuildExecutor, untyped options) -> String
53
- def build_and_link_exts: (RubyWasm::BuildExecutor) -> bytes
59
+ def build_and_link_exts: (RubyWasm::BuildExecutor, bytes module_bytes) -> bytes
54
60
 
55
61
  extend Forwardable
56
62
 
@@ -66,7 +72,7 @@ class RubyWasm::Packager
66
72
  def initialize: (RubyWasm::Packager) -> void
67
73
  def build: (RubyWasm::BuildExecutor, untyped options) -> String
68
74
  def specs_with_extensions: () -> Array[[untyped, Array[string]]]
69
- def build_and_link_exts: (RubyWasm::BuildExecutor) -> bytes
75
+ def build_and_link_exts: (RubyWasm::BuildExecutor, bytes module_bytes) -> bytes
70
76
  end
71
77
 
72
78
  class DynamicLinking < RubyWasm::Packager::Core::BuildStrategy
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_wasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 2.5.2
5
5
  platform: x64-mingw-ucrt
6
6
  authors:
7
7
  - Yuta Saito
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-21 00:00:00.000000000 Z
11
+ date: 2024-05-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby to WebAssembly toolkit. This gem takes Ruby code and Gemfile, and
14
14
  packages them with Ruby runtime into a WebAssembly binary.
@@ -56,6 +56,7 @@ files:
56
56
  - lib/ruby_wasm/build/toolchain.rb
57
57
  - lib/ruby_wasm/build/toolchain/wit_bindgen.rb
58
58
  - lib/ruby_wasm/cli.rb
59
+ - lib/ruby_wasm/feature_set.rb
59
60
  - lib/ruby_wasm/packager.rb
60
61
  - lib/ruby_wasm/packager/component_adapter.rb
61
62
  - lib/ruby_wasm/packager/component_adapter/wasi_snapshot_preview1.command.wasm
@@ -78,6 +79,7 @@ files:
78
79
  - sig/ruby_wasm/build.rbs
79
80
  - sig/ruby_wasm/cli.rbs
80
81
  - sig/ruby_wasm/ext.rbs
82
+ - sig/ruby_wasm/feature_set.rbs
81
83
  - sig/ruby_wasm/packager.rbs
82
84
  - sig/ruby_wasm/util.rbs
83
85
  - tools/clang-format-diff.sh