ruby_wasm 2.5.0-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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +9 -7
- data/Gemfile +1 -1
- data/README.md +12 -11
- data/Rakefile +9 -7
- data/docs/cheat_sheet.md +8 -8
- data/lib/ruby_wasm/3.1/ruby_wasm.so +0 -0
- data/lib/ruby_wasm/3.2/ruby_wasm.so +0 -0
- data/lib/ruby_wasm/3.3/ruby_wasm.so +0 -0
- data/lib/ruby_wasm/build/executor.rb +4 -0
- data/lib/ruby_wasm/build/product/crossruby.rb +59 -25
- data/lib/ruby_wasm/build/product/libyaml.rb +5 -3
- data/lib/ruby_wasm/build/product/openssl.rb +7 -2
- data/lib/ruby_wasm/build/product/product.rb +3 -3
- data/lib/ruby_wasm/build/product/ruby_source.rb +3 -3
- data/lib/ruby_wasm/build/product/wasi_vfs.rb +1 -1
- data/lib/ruby_wasm/build/product/zlib.rb +3 -1
- data/lib/ruby_wasm/build/target.rb +24 -0
- data/lib/ruby_wasm/build/toolchain/wit_bindgen.rb +2 -2
- data/lib/ruby_wasm/build/toolchain.rb +1 -1
- data/lib/ruby_wasm/build.rb +7 -3
- data/lib/ruby_wasm/cli.rb +147 -11
- data/lib/ruby_wasm/feature_set.rb +30 -0
- data/lib/ruby_wasm/packager/component_adapter/wasi_snapshot_preview1.command.wasm +0 -0
- data/lib/ruby_wasm/packager/component_adapter/wasi_snapshot_preview1.reactor.wasm +0 -0
- data/lib/ruby_wasm/packager/component_adapter.rb +14 -0
- data/lib/ruby_wasm/packager/core.rb +199 -5
- data/lib/ruby_wasm/packager/file_system.rb +5 -3
- data/lib/ruby_wasm/packager.rb +22 -82
- data/lib/ruby_wasm/rake_task.rb +1 -0
- data/lib/ruby_wasm/version.rb +1 -1
- data/lib/ruby_wasm.rb +2 -0
- data/package-lock.json +5571 -7015
- data/package.json +3 -3
- data/rakelib/check.rake +23 -10
- data/rakelib/ci.rake +3 -3
- data/rakelib/packaging.rake +44 -15
- data/sig/ruby_wasm/build.rbs +38 -28
- data/sig/ruby_wasm/cli.rbs +27 -3
- data/sig/ruby_wasm/ext.rbs +25 -2
- data/sig/ruby_wasm/feature_set.rbs +12 -0
- data/sig/ruby_wasm/packager.rbs +44 -7
- metadata +10 -7
- data/builders/wasm32-unknown-emscripten/Dockerfile +0 -43
- data/builders/wasm32-unknown-emscripten/entrypoint.sh +0 -7
- data/builders/wasm32-unknown-wasi/Dockerfile +0 -47
- data/builders/wasm32-unknown-wasi/entrypoint.sh +0 -7
data/lib/ruby_wasm/packager.rb
CHANGED
@@ -2,11 +2,19 @@
|
|
2
2
|
class RubyWasm::Packager
|
3
3
|
# Initializes a new instance of the RubyWasm::Packager class.
|
4
4
|
#
|
5
|
+
# @param root [String] The root directory of the Ruby project.
|
6
|
+
# The root directory (will) contain the following files:
|
7
|
+
# * build_manifest.json
|
8
|
+
# * rubies
|
9
|
+
# * build
|
5
10
|
# @param config [Hash] The build config used for building Ruby.
|
6
11
|
# @param definition [Bundler::Definition] The Bundler definition.
|
7
|
-
|
12
|
+
# @param features [RubyWasm::FeatureSet] The features used for packaging.
|
13
|
+
def initialize(root, config = nil, definition = nil, features: RubyWasm::FeatureSet.derive_from_env)
|
14
|
+
@root = root
|
8
15
|
@definition = definition
|
9
16
|
@config = config
|
17
|
+
@features = features
|
10
18
|
end
|
11
19
|
|
12
20
|
# Packages the Ruby code into a Wasm binary. (including extensions)
|
@@ -22,14 +30,13 @@ class RubyWasm::Packager
|
|
22
30
|
fs = RubyWasm::Packager::FileSystem.new(dest_dir, self)
|
23
31
|
fs.package_ruby_root(tarball, executor)
|
24
32
|
|
25
|
-
|
26
|
-
wasm_bytes = File.binread(ruby_wasm_bin).bytes
|
33
|
+
wasm_bytes = File.binread(File.join(fs.ruby_root, "bin", "ruby"))
|
27
34
|
|
28
35
|
fs.package_gems
|
29
36
|
fs.remove_non_runtime_files(executor)
|
30
37
|
fs.remove_stdlib(executor) unless options[:stdlib]
|
31
38
|
|
32
|
-
if full_build_options[:target] == "wasm32-unknown-
|
39
|
+
if full_build_options[:target] == "wasm32-unknown-wasip1"
|
33
40
|
# wasi-vfs supports only WASI target
|
34
41
|
wasi_vfs = RubyWasmExt::WasiVfs.new
|
35
42
|
wasi_vfs.map_dir("/bundle", fs.bundle_dir)
|
@@ -37,6 +44,7 @@ class RubyWasm::Packager
|
|
37
44
|
|
38
45
|
wasm_bytes = wasi_vfs.pack(wasm_bytes)
|
39
46
|
end
|
47
|
+
wasm_bytes = ruby_core.build_and_link_exts(executor, wasm_bytes)
|
40
48
|
|
41
49
|
wasm_bytes = RubyWasmExt.preinitialize(wasm_bytes) if options[:optimize]
|
42
50
|
wasm_bytes
|
@@ -52,79 +60,22 @@ class RubyWasm::Packager
|
|
52
60
|
# Retrieves the specs from the Bundler definition, excluding the excluded gems.
|
53
61
|
def specs
|
54
62
|
return [] unless @definition
|
55
|
-
@
|
63
|
+
@specs ||= @definition.resolve.materialize(@definition.requested_dependencies)
|
64
|
+
.reject { |spec| EXCLUDED_GEMS.include?(spec.name) }
|
65
|
+
@specs
|
56
66
|
end
|
57
67
|
|
58
|
-
|
59
|
-
|
60
|
-
@ruby_channel == "head"
|
61
|
-
end
|
62
|
-
|
63
|
-
# Retrieves the root directory of the Ruby project.
|
64
|
-
# The root directory contains the following stuff:
|
65
|
-
# * patches/*.patch
|
66
|
-
# * build_manifest.json
|
67
|
-
# * rubies
|
68
|
-
# * build
|
69
|
-
def root
|
70
|
-
__skip__ =
|
71
|
-
@root ||=
|
72
|
-
begin
|
73
|
-
if explicit = ENV["RUBY_WASM_ROOT"]
|
74
|
-
File.expand_path(explicit)
|
75
|
-
elsif defined?(Bundler)
|
76
|
-
Bundler.root
|
77
|
-
else
|
78
|
-
Dir.pwd
|
79
|
-
end
|
80
|
-
rescue Bundler::GemfileNotFound
|
81
|
-
Dir.pwd
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
# Retrieves the alias definitions for the Ruby sources.
|
86
|
-
def self.build_source_aliases(root)
|
87
|
-
patches = Dir[File.join(root, "patches", "*.patch")]
|
88
|
-
sources = {
|
89
|
-
"head" => {
|
90
|
-
type: "github",
|
91
|
-
repo: "ruby/ruby",
|
92
|
-
rev: "master",
|
93
|
-
patches: patches.map { |p| File.expand_path(p) }
|
94
|
-
},
|
95
|
-
"3.3" => {
|
96
|
-
type: "tarball",
|
97
|
-
url: "https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0.tar.gz"
|
98
|
-
},
|
99
|
-
"3.2" => {
|
100
|
-
type: "tarball",
|
101
|
-
url: "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.3.tar.gz"
|
102
|
-
}
|
103
|
-
}
|
104
|
-
sources.each { |name, source| source[:name] = name }
|
105
|
-
|
106
|
-
build_manifest = File.join(root, "build_manifest.json")
|
107
|
-
if File.exist?(build_manifest)
|
108
|
-
begin
|
109
|
-
manifest = JSON.parse(File.read(build_manifest))
|
110
|
-
manifest["ruby_revisions"].each do |name, rev|
|
111
|
-
sources[name][:rev] = rev
|
112
|
-
end
|
113
|
-
rescue StandardError => e
|
114
|
-
RubyWasm.logger.warn "Failed to load build_manifest.json: #{e}"
|
115
|
-
end
|
116
|
-
end
|
117
|
-
sources
|
68
|
+
def features
|
69
|
+
@features
|
118
70
|
end
|
119
71
|
|
120
72
|
ALL_DEFAULT_EXTS =
|
121
|
-
"
|
73
|
+
"cgi/escape,continuation,coverage,date,digest/bubblebabble,digest,digest/md5,digest/rmd160,digest/sha1,digest/sha2,etc,fcntl,json,json/generator,json/parser,objspace,pathname,psych,rbconfig/sizeof,ripper,stringio,strscan,monitor,zlib,openssl"
|
122
74
|
|
123
75
|
# Retrieves the build options used for building Ruby itself.
|
124
76
|
def build_options
|
125
77
|
default = {
|
126
|
-
target: "wasm32-unknown-
|
127
|
-
src: "3.3",
|
78
|
+
target: RubyWasm::Target.new("wasm32-unknown-wasip1"),
|
128
79
|
default_exts: ALL_DEFAULT_EXTS
|
129
80
|
}
|
130
81
|
override = @config || {}
|
@@ -135,25 +86,14 @@ class RubyWasm::Packager
|
|
135
86
|
# Retrieves the resolved build options
|
136
87
|
def full_build_options
|
137
88
|
options = build_options
|
138
|
-
build_dir = File.join(root, "build")
|
139
|
-
rubies_dir = File.join(root, "rubies")
|
89
|
+
build_dir = File.join(@root, "build")
|
90
|
+
rubies_dir = File.join(@root, "rubies")
|
140
91
|
toolchain = RubyWasm::Toolchain.get(options[:target], build_dir)
|
141
|
-
src =
|
142
|
-
if options[:src].is_a?(Hash)
|
143
|
-
options[:src]
|
144
|
-
else
|
145
|
-
src_name = options[:src]
|
146
|
-
aliases = self.class.build_source_aliases(root)
|
147
|
-
aliases[src_name] ||
|
148
|
-
raise(
|
149
|
-
"Unknown Ruby source: #{src_name} (available: #{aliases.keys.join(", ")})"
|
150
|
-
)
|
151
|
-
end
|
152
92
|
options.merge(
|
153
93
|
toolchain: toolchain,
|
154
94
|
build_dir: build_dir,
|
155
95
|
rubies_dir: rubies_dir,
|
156
|
-
src: src
|
96
|
+
src: options[:src]
|
157
97
|
)
|
158
98
|
end
|
159
99
|
end
|
data/lib/ruby_wasm/rake_task.rb
CHANGED
data/lib/ruby_wasm/version.rb
CHANGED
data/lib/ruby_wasm.rb
CHANGED
@@ -3,7 +3,9 @@ require "logger"
|
|
3
3
|
require_relative "ruby_wasm/version"
|
4
4
|
require_relative "ruby_wasm/util"
|
5
5
|
require_relative "ruby_wasm/build"
|
6
|
+
require_relative "ruby_wasm/feature_set"
|
6
7
|
require_relative "ruby_wasm/packager"
|
8
|
+
require_relative "ruby_wasm/packager/component_adapter"
|
7
9
|
require_relative "ruby_wasm/packager/file_system"
|
8
10
|
require_relative "ruby_wasm/packager/core"
|
9
11
|
|