ruby_wasm 2.6.2-x86_64-darwin → 2.7.0-x86_64-darwin

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: 0ad512348229dc13bdf141d3306953eef52b4768ea706cbc74039246b29bdabf
4
- data.tar.gz: 026e5f2ba3ee35be55da17625fc1b078935c42df693e0665ad1326ea08cd451b
3
+ metadata.gz: 0a009971fbdd7e7ba5fecf2fa83833b570fc15d0c471db7ae6e84248a0386857
4
+ data.tar.gz: d66968df89e5fb5062cd42ad9fa71a45c1397e64e768ba86dafe916ca13ed5f3
5
5
  SHA512:
6
- metadata.gz: 6cacf0bc221839107d08aebdf9e7bcb5cc3de39ee1e3a03d5d749730611154e31c8ab0b928711079cba9165af08ede6ca3d02076515366a2ef8fb41f15ab0249
7
- data.tar.gz: b6ecfce5fdfaea72a2a92c8f08491f0440e9e3c471676ce472904066f51e433aa70adb9d2d51b3881777735e8532679b866996110aec6fe91b8cefaf80398d53
6
+ metadata.gz: 29c2274ba5b0e7eca9ebf3b0b7450aa31209dd407f118f4e61b96b19f8d7e22aa990da6f65d51828bf565de9a2a2c8ddccafd21689303deb09678232192efef5
7
+ data.tar.gz: 2df93b6d257a4fe72e83037d6b1ec7679c338f12abf215dd426be6e8925caffadabb5d4320d5deb2e9e1cb68d0fc012e87aa153a7868fdad296835042b424efd
data/CONTRIBUTING.md CHANGED
@@ -9,8 +9,6 @@ This document describes development setup and pointers for diving into this proj
9
9
  $ git clone https://github.com/ruby/ruby.wasm --recursive
10
10
  $ cd ruby.wasm
11
11
  $ ./bin/setup
12
- # Just for building vendor/jco (will be removed soon)
13
- $ rustup target add wasm32-wasi
14
12
  # Compile extension library
15
13
  $ bundle exec rake compile
16
14
  $ rake --tasks
@@ -26,9 +24,9 @@ $ rake build:download_prebuilt
26
24
  $ rake build:head-wasm32-unknown-wasip1-full
27
25
 
28
26
  # Build npm package
29
- $ rake npm:ruby-head-wasm-wasi
27
+ $ rake npm:ruby-head-wasm-wasip2:build
30
28
  # Test npm package
31
- $ rake npm:ruby-head-wasm-wasi:check
29
+ $ rake npm:ruby-head-wasm-wasip2:check
32
30
  ```
33
31
 
34
32
  If you need to re-build Ruby, please clean `./rubies` directory, and run `rake npm:ruby-head-wasm-wasi` again.
@@ -111,9 +109,13 @@ $ rake 'bump_version[0.6.0]'
111
109
  $ git commit -m"Bump version to 0.6.0"
112
110
  $ git tag 0.6.0
113
111
  $ git push origin 0.6.0
114
- $ for pkg in pkg/ruby_wasm-*; do gem push $pkg; done
112
+ # After GitHub Actions "Build gems" is done
113
+ # https://github.com/ruby/ruby.wasm/actions/workflows/build-gems.yml
114
+ $ gh run download <run-id>
115
+ $ for pkg in cross-gem/pkg/ruby_wasm-*; do gem push $pkg; done
115
116
  $ gem build && gem push ruby_wasm-*.gem && rm ruby_wasm-*.gem
116
117
  $ (cd packages/gems/js/ && gem build && gem push js-*.gem && rm js-*.gem)
118
+ $ rake bump_dev_version
117
119
  ```
118
120
 
119
121
  ## Release Channels
@@ -127,5 +129,5 @@ $ npm install --save @ruby/wasm-wasi@latest
127
129
  # or if you want the nightly snapshot
128
130
  $ npm install --save @ruby/wasm-wasi@next
129
131
  # or you can specify the exact snapshot version
130
- $ npm install --save @ruby/wasm-wasi@2.6.2-2024-06-29-a
132
+ $ npm install --save @ruby/wasm-wasi@2.7.0-2024-11-11-a
131
133
  ```
data/Gemfile CHANGED
@@ -11,7 +11,8 @@ group :development do
11
11
  end
12
12
 
13
13
  group :check do
14
- gem "webrick"
14
+ # Use the latest version of webrick for URI change in Ruby 3.4
15
+ gem "webrick", "~> 1.8.2"
15
16
  gem "syntax_tree", "~> 3.5"
16
17
  gem "steep"
17
18
  end
data/NOTICE CHANGED
@@ -1264,8 +1264,7 @@ Licensed under the Apache License 2.0 https://www.openssl.org/source/license.htm
1264
1264
  https://github.com/kateinoigakukun/wasi-vfs
1265
1265
 
1266
1266
  ```
1267
- Copyright (c) 2022 Yuta Saito. All rights reserved.
1268
- Licensed under the MIT License
1267
+ Licensed under the Apache License v2.0 with LLVM Exceptions
1269
1268
  ```
1270
1269
 
1271
1270
  ---
data/README.md CHANGED
@@ -23,7 +23,7 @@ Create and save `index.html` page with the following contents:
23
23
 
24
24
  ```html
25
25
  <html>
26
- <script src="https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.6.2/dist/browser.script.iife.js"></script>
26
+ <script src="https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.7.0/dist/browser.script.iife.js"></script>
27
27
  <script type="text/ruby">
28
28
  require "js"
29
29
 
data/Rakefile CHANGED
@@ -28,20 +28,26 @@ NPM_PACKAGES = [
28
28
  {
29
29
  name: "ruby-head-wasm-wasi",
30
30
  ruby_version: "head",
31
- gemfile: "packages/npm-packages/ruby-wasm-wasi/Gemfile",
31
+ gemfile: "packages/npm-packages/ruby-head-wasm-wasi/Gemfile",
32
32
  target: "wasm32-unknown-wasip1",
33
+ },
34
+ {
35
+ name: "ruby-head-wasm-wasip2",
36
+ ruby_version: "head",
37
+ gemfile: "packages/npm-packages/ruby-head-wasm-wasip2/Gemfile",
38
+ target: "wasm32-unknown-wasip2",
33
39
  enable_component_model: true,
34
40
  },
35
41
  {
36
42
  name: "ruby-3.3-wasm-wasi",
37
43
  ruby_version: "3.3",
38
- gemfile: "packages/npm-packages/ruby-wasm-wasi/Gemfile",
44
+ gemfile: "packages/npm-packages/ruby-3.3-wasm-wasi/Gemfile",
39
45
  target: "wasm32-unknown-wasip1"
40
46
  },
41
47
  {
42
48
  name: "ruby-3.2-wasm-wasi",
43
49
  ruby_version: "3.2",
44
- gemfile: "packages/npm-packages/ruby-wasm-wasi/Gemfile",
50
+ gemfile: "packages/npm-packages/ruby-3.2-wasm-wasi/Gemfile",
45
51
  target: "wasm32-unknown-wasip1"
46
52
  },
47
53
  { name: "ruby-wasm-wasi", target: "wasm32-unknown-wasip1" }
data/docs/api.md CHANGED
@@ -1,2 +1,2 @@
1
1
  - [Ruby API](https://ruby.github.io/ruby.wasm/JS.html)
2
- - [JavaScript API](https://github.com/ruby/ruby.wasm/blob/main/packages/npm-packages/ruby-wasm-wasi/README.md#API)
2
+ - [JavaScript API](https://ruby.github.io/ruby.wasm/npm/@ruby/wasm-wasi/)
data/docs/cheat_sheet.md CHANGED
@@ -38,7 +38,7 @@ The easiest way to run Ruby on browser is to use `browser.script.iife.js` script
38
38
 
39
39
  ```html
40
40
  <html>
41
- <script src="https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.6.2/dist/browser.script.iife.js"></script>
41
+ <script src="https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.7.0/dist/browser.script.iife.js"></script>
42
42
  <script type="text/ruby">
43
43
  require "js"
44
44
  JS.global[:document].write "Hello, world!"
@@ -51,8 +51,8 @@ If you want to control Ruby VM from JavaScript, you can use `@ruby/wasm-wasi` pa
51
51
  ```html
52
52
  <html>
53
53
  <script type="module">
54
- import { DefaultRubyVM } from "https://cdn.jsdelivr.net/npm/@ruby/wasm-wasi@2.6.2/dist/browser/+esm";
55
- const response = await fetch("https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.6.2/dist/ruby+stdlib.wasm");
54
+ import { DefaultRubyVM } from "https://cdn.jsdelivr.net/npm/@ruby/wasm-wasi@2.7.0/dist/browser/+esm";
55
+ const response = await fetch("https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.7.0/dist/ruby+stdlib.wasm");
56
56
  const module = await WebAssembly.compileStreaming(response);
57
57
  const { vm } = await DefaultRubyVM(module);
58
58
 
@@ -69,11 +69,11 @@ If you want to control Ruby VM from JavaScript, you can use `@ruby/wasm-wasi` pa
69
69
 
70
70
  ```html
71
71
  <html>
72
- <script src="https://cdn.jsdelivr.net/npm/@ruby/wasm-wasi@2.6.2/dist/browser.umd.js"></script>
72
+ <script src="https://cdn.jsdelivr.net/npm/@ruby/wasm-wasi@2.7.0/dist/browser.umd.js"></script>
73
73
  <script>
74
74
  const main = async () => {
75
75
  const { DefaultRubyVM } = window["ruby-wasm-wasi"];
76
- const response = await fetch("https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.6.2/dist/ruby+stdlib.wasm");
76
+ const response = await fetch("https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.7.0/dist/ruby+stdlib.wasm");
77
77
  const module = await WebAssembly.compileStreaming(response);
78
78
  const { vm } = await DefaultRubyVM(module);
79
79
 
@@ -128,7 +128,7 @@ end
128
128
 
129
129
  ```html
130
130
  <html>
131
- <script src="https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.6.2/dist/browser.script.iife.js"></script>
131
+ <script src="https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.7.0/dist/browser.script.iife.js"></script>
132
132
  <script type="text/ruby" data-eval="async">
133
133
  require "js"
134
134
 
@@ -143,8 +143,8 @@ Or using `@ruby/wasm-wasi` package API `RubyVM#evalAsync`:
143
143
  ```html
144
144
  <html>
145
145
  <script type="module">
146
- import { DefaultRubyVM } from "https://cdn.jsdelivr.net/npm/@ruby/wasm-wasi@2.6.2/dist/browser/+esm";
147
- const response = await fetch("https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.6.2/dist/ruby+stdlib.wasm");
146
+ import { DefaultRubyVM } from "https://cdn.jsdelivr.net/npm/@ruby/wasm-wasi@2.7.0/dist/browser/+esm";
147
+ const response = await fetch("https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.7.0/dist/ruby+stdlib.wasm");
148
148
  const module = await WebAssembly.compileStreaming(response);
149
149
  const { vm } = await DefaultRubyVM(module);
150
150
 
Binary file
Binary file
Binary file
@@ -71,14 +71,14 @@ module RubyWasm
71
71
  return
72
72
  end
73
73
  objdir = product_build_dir crossruby
74
- rbconfig_rb = Dir.glob(File.join(crossruby.dest_dir, "usr/local/lib/ruby/*/wasm32-wasi/rbconfig.rb")).first
74
+ rbconfig_rb = crossruby.rbconfig_rb
75
75
  raise "rbconfig.rb not found" unless rbconfig_rb
76
76
  extconf_args = [
77
77
  "-C", objdir,
78
78
  "#{@srcdir}/extconf.rb",
79
79
  "--target-rbconfig=#{rbconfig_rb}",
80
80
  ]
81
- extconf_args << "--enable-component-model" if @features.support_component_model?
81
+ extconf_args << "--disable-component-model" unless @features.support_component_model?
82
82
  executor.system crossruby.baseruby_path, *extconf_args
83
83
  end
84
84
 
@@ -111,7 +111,7 @@ module RubyWasm
111
111
  "-I#{crossruby.build_dir}",
112
112
  "--",
113
113
  ]
114
- extconf_args << "--enable-component-model" if @features.support_component_model?
114
+ extconf_args << "--disable-component-model" unless @features.support_component_model?
115
115
  # Clear RUBYOPT to avoid loading unrelated bundle setup
116
116
  executor.system crossruby.baseruby_path,
117
117
  *extconf_args,
@@ -222,6 +222,10 @@ module RubyWasm
222
222
  end
223
223
  install_dir = File.join(build_dir, "install")
224
224
  if !File.exist?(install_dir) || remake || reconfigure
225
+ unless target.pic?
226
+ # HACK: force static linking for non-pic target
227
+ executor.rm_f File.join(build_dir, "ruby")
228
+ end
225
229
  executor.system "make",
226
230
  "-j#{executor.process_count}",
227
231
  "install",
@@ -301,6 +305,10 @@ module RubyWasm
301
305
  File.expand_path("../crossruby/extinit.c.erb", __FILE__)
302
306
  end
303
307
 
308
+ def rbconfig_rb
309
+ Dir.glob(File.join(dest_dir, "usr/local/lib/ruby/*/wasm32-wasi/rbconfig.rb")).first
310
+ end
311
+
304
312
  def baseruby_path
305
313
  File.join(@baseruby.install_dir, "bin/ruby")
306
314
  end
data/lib/ruby_wasm/cli.rb CHANGED
@@ -310,7 +310,10 @@ module RubyWasm
310
310
 
311
311
  def derive_packager(options)
312
312
  __skip__ = definition = nil
313
- __skip__ = if defined?(Bundler) && !options[:disable_gems]
313
+ features = RubyWasm::FeatureSet.derive_from_env
314
+ # The head ruby & dynamic linking uses "bundle" command to build gems instead of in-process integration.
315
+ use_in_process_gem_building = !(options[:ruby_version] == "head" && features.support_dynamic_linking?)
316
+ __skip__ = if defined?(Bundler) && !options[:disable_gems] && use_in_process_gem_building
314
317
  begin
315
318
  # Silence Bundler UI if --print-ruby-cache-key is specified not to bother the JSON output.
316
319
  level = options[:print_ruby_cache_key] ? :silent : Bundler.ui.level
@@ -321,10 +324,10 @@ module RubyWasm
321
324
  Bundler.ui.level = old_level
322
325
  end
323
326
  end
324
- RubyWasm.logger.info "Using Gemfile: #{definition.gemfiles}" if definition
327
+ RubyWasm.logger.info "Using Gemfile: #{definition.gemfiles.map(&:to_s).join(", ")}" if definition
325
328
  RubyWasm::Packager.new(
326
329
  root, build_config(options), definition,
327
- features: RubyWasm::FeatureSet.derive_from_env
330
+ features: features,
328
331
  )
329
332
  end
330
333
 
@@ -332,6 +335,9 @@ module RubyWasm
332
335
  ruby_core_build = packager.ruby_core_build
333
336
  require "digest"
334
337
  digest = Digest::SHA256.new
338
+ # The build system key is used to invalidate the cache when the build system is updated.
339
+ build_system_key = 1
340
+ digest.update(build_system_key.to_s)
335
341
  ruby_core_build.cache_key(digest)
336
342
  hexdigest = digest.hexdigest
337
343
  require "json"
@@ -1,4 +1,5 @@
1
1
  require "forwardable"
2
+ require "pathname"
2
3
 
3
4
  class RubyWasm::Packager::Core
4
5
  def initialize(packager)
@@ -19,7 +20,6 @@ class RubyWasm::Packager::Core
19
20
  def build_strategy
20
21
  @build_strategy ||=
21
22
  begin
22
- has_exts = @packager.specs.any? { |spec| spec.extensions.any? }
23
23
  if @packager.features.support_dynamic_linking?
24
24
  DynamicLinking.new(@packager)
25
25
  else
@@ -59,14 +59,6 @@ class RubyWasm::Packager::Core
59
59
  end
60
60
  end
61
61
 
62
- def wasi_exec_model
63
- # TODO: Detect WASI exec-model from binary exports (_start or _initialize)
64
- use_js_gem = @packager.specs.any? do |spec|
65
- spec.name == "js"
66
- end
67
- use_js_gem ? "reactor" : "command"
68
- end
69
-
70
62
  def with_unbundled_env(&block)
71
63
  __skip__ = if defined?(Bundler)
72
64
  Bundler.with_unbundled_env(&block)
@@ -138,12 +130,16 @@ class RubyWasm::Packager::Core
138
130
  wasi_sdk_path = toolchain.wasi_sdk_path
139
131
  libraries << File.join(wasi_sdk_path, "share/wasi-sysroot/lib/wasm32-wasi", lib)
140
132
  end
141
- wasi_adapter = RubyWasm::Packager::ComponentAdapter.wasi_snapshot_preview1(wasi_exec_model)
142
- adapters = [wasi_adapter]
143
133
  dl_openable_libs = []
144
134
  dl_openable_libs << [File.dirname(ruby_root), Dir.glob(File.join(ruby_root, "lib", "ruby", "**", "*.so"))]
145
135
  dl_openable_libs << [gem_home, Dir.glob(File.join(gem_home, "**", "*.so"))]
146
136
 
137
+ has_js_so = dl_openable_libs.any? do |root, libs|
138
+ libs.any? { |lib| lib.end_with?("/js.so") }
139
+ end
140
+ wasi_adapter = RubyWasm::Packager::ComponentAdapter.wasi_snapshot_preview1(has_js_so ? "reactor" : "command")
141
+ adapters = [wasi_adapter]
142
+
147
143
  linker = RubyWasmExt::ComponentLink.new
148
144
  linker.use_built_in_libdl(true)
149
145
  linker.stub_missing_functions(false)
@@ -151,11 +147,13 @@ class RubyWasm::Packager::Core
151
147
 
152
148
  linker.library("ruby", module_bytes, false)
153
149
 
150
+ RubyWasm.logger.info "Linking Ruby with extensions"
151
+
154
152
  libraries.each do |lib|
155
153
  # Non-DL openable libraries should be referenced as base name
156
154
  lib_name = File.basename(lib)
157
155
  module_bytes = File.binread(lib)
158
- RubyWasm.logger.info "Linking #{lib_name} (#{module_bytes.size} bytes)"
156
+ RubyWasm.logger.debug "Linking #{lib_name} (#{module_bytes.size} bytes)"
159
157
  linker.library(lib_name, module_bytes, false)
160
158
  end
161
159
 
@@ -164,7 +162,7 @@ class RubyWasm::Packager::Core
164
162
  # DL openable lib_name should be a relative path from ruby_root
165
163
  lib_name = "/" + Pathname.new(lib).relative_path_from(Pathname.new(File.dirname(root))).to_s
166
164
  module_bytes = File.binread(lib)
167
- RubyWasm.logger.info "Linking #{lib_name} (#{module_bytes.size} bytes)"
165
+ RubyWasm.logger.debug "Linking #{lib_name} (#{module_bytes.size} bytes)"
168
166
  linker.library(lib_name, module_bytes, true)
169
167
  end
170
168
  end
@@ -174,7 +172,7 @@ class RubyWasm::Packager::Core
174
172
  # e.g. wasi_snapshot_preview1.command.wasm -> wasi_snapshot_preview1
175
173
  adapter_name = adapter_name.split(".")[0]
176
174
  module_bytes = File.binread(adapter)
177
- RubyWasm.logger.info "Linking adapter #{adapter_name}=#{adapter} (#{module_bytes.size} bytes)"
175
+ RubyWasm.logger.debug "Linking adapter #{adapter_name}=#{adapter} (#{module_bytes.size} bytes)"
178
176
  linker.adapter(adapter_name, module_bytes)
179
177
  end
180
178
  return linker.encode()
@@ -187,31 +185,43 @@ class RubyWasm::Packager::Core
187
185
  baseruby.build(executor)
188
186
  end
189
187
 
190
- exts = specs_with_extensions.flat_map do |spec, exts|
191
- exts.map do |ext|
192
- ext_feature = File.dirname(ext) # e.g. "ext/cgi/escape"
193
- ext_srcdir = File.join(spec.full_gem_path, ext_feature)
194
- ext_relative_path = File.join(spec.full_name, ext_feature)
195
- prod = RubyWasm::CrossRubyExtProduct.new(
196
- ext_srcdir,
197
- build.toolchain,
198
- features: @packager.features,
199
- ext_relative_path: ext_relative_path
200
- )
201
- [prod, spec]
202
- end
203
- end
188
+ crossruby = build.crossruby
189
+ rbconfig_rb = crossruby.rbconfig_rb
204
190
 
205
- exts.each do |prod, spec|
206
- libdir = File.join(gem_home, "gems", spec.full_name, spec.raw_require_paths.first)
207
- extra_mkargs = [
208
- "sitearchdir=#{libdir}",
209
- "sitelibdir=#{libdir}",
210
- ]
211
- executor.begin_section prod.class, prod.name, "Building"
212
- prod.build(executor, build.crossruby, extra_mkargs)
213
- executor.end_section prod.class, prod.name
214
- end
191
+ options = @packager.full_build_options
192
+ target_triplet = options[:target]
193
+
194
+ local_path = File.join("bundle", target_triplet)
195
+ env = {
196
+ "BUNDLE_APP_CONFIG" => File.join(".bundle", target_triplet),
197
+ "BUNDLE_PATH" => local_path,
198
+ "BUNDLE_WITHOUT" => "build",
199
+ # Do not auto-switch bundler version by Gemfile.lock
200
+ "BUNDLE_VERSION" => "system",
201
+ # FIXME: BUNDLE_PATH is set as a installation destination here, but
202
+ # it is also used as a source of gems to be loaded by RubyGems itself.
203
+ # RubyGems loads "psych" gem and if Gemfile includes "psych" gem,
204
+ # RubyGems tries to load "psych" gem from BUNDLE_PATH at the second
205
+ # time of "bundle install" command. But the extension of "psych" gem
206
+ # under BUNDLE_PATH is built for Wasm target, not for host platform,
207
+ # so it fails to load the extension.
208
+ #
209
+ # Thus we preload psych from the default LOAD_PATH here to avoid
210
+ # loading Wasm version of psych.so via `Kernel#require` patched by
211
+ # RubyGems.
212
+ "RUBYOPT" => "-rpsych",
213
+ }
214
+
215
+ args = [
216
+ File.join(baseruby.install_dir, "bin", "bundle"),
217
+ "install",
218
+ "--standalone",
219
+ "--target-rbconfig",
220
+ rbconfig_rb,
221
+ ]
222
+
223
+ executor.system(*args, env: env)
224
+ executor.cp_r(local_path, gem_home)
215
225
  end
216
226
 
217
227
  def cache_key(digest)
@@ -337,6 +347,14 @@ class RubyWasm::Packager::Core
337
347
  # No-op because we already built extensions as part of the Ruby build
338
348
  end
339
349
 
350
+ def wasi_exec_model
351
+ # TODO: Detect WASI exec-model from binary exports (_start or _initialize)
352
+ use_js_gem = @packager.specs.any? do |spec|
353
+ spec.name == "js"
354
+ end
355
+ use_js_gem ? "reactor" : "command"
356
+ end
357
+
340
358
  def link_gem_exts(executor, ruby_root, gem_home, module_bytes)
341
359
  return module_bytes unless @packager.features.support_component_model?
342
360
 
@@ -44,7 +44,6 @@ class RubyWasm::Packager::FileSystem
44
44
  when "enc"
45
45
  # Remove all encodings except for encdb.so and transdb.so
46
46
  enc_dir = File.join(@ruby_root, "lib", "ruby", ruby_version, "wasm32-wasi", "enc")
47
- puts File.join(enc_dir, "**/*.so")
48
47
  Dir.glob(File.join(enc_dir, "**/*.so")).each do |entry|
49
48
  next if entry.end_with?("encdb.so", "transdb.so")
50
49
  RubyWasm.logger.debug "Removing stdlib encoding: #{entry}"
@@ -34,7 +34,7 @@ class RubyWasm::Packager
34
34
 
35
35
  ruby_core.build_gem_exts(executor, fs.bundle_dir)
36
36
 
37
- fs.package_gems
37
+ fs.package_gems unless features.support_component_model?
38
38
  fs.remove_non_runtime_files(executor)
39
39
  if options[:stdlib]
40
40
  options[:without_stdlib_components].each do |component|
@@ -1,3 +1,3 @@
1
1
  module RubyWasm
2
- VERSION = "2.6.2"
2
+ VERSION = "2.7.0"
3
3
  end