rbs 4.0.0.dev.4 → 4.1.0.pre.2
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/.clang-format +1 -0
- data/.github/dependabot.yml +16 -14
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +21 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +63 -24
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +5 -2
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +8 -2
- data/.gitignore +11 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +357 -0
- data/README.md +4 -4
- data/Rakefile +365 -33
- data/Steepfile +8 -0
- data/config.yml +450 -24
- data/core/array.rbs +443 -363
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +9 -8
- data/core/class.rbs +11 -8
- data/core/comparable.rbs +55 -34
- data/core/complex.rbs +104 -78
- data/core/dir.rbs +61 -49
- data/core/encoding.rbs +12 -15
- data/core/enumerable.rbs +288 -196
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +5 -5
- data/core/enumerator.rbs +91 -28
- data/core/errno.rbs +11 -2
- data/core/errors.rbs +58 -29
- data/core/exception.rbs +13 -13
- data/core/fiber.rbs +74 -54
- data/core/file.rbs +260 -1151
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1151 -829
- data/core/integer.rbs +156 -195
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +216 -150
- data/core/kernel.rbs +239 -163
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +15 -13
- data/core/math.rbs +107 -66
- data/core/method.rbs +69 -33
- data/core/module.rbs +302 -150
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +77 -63
- data/core/object.rbs +9 -11
- data/core/object_space/weak_key_map.rbs +7 -7
- data/core/object_space.rbs +30 -23
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +371 -515
- data/core/random.rbs +21 -3
- data/core/range.rbs +181 -79
- data/core/rational.rbs +60 -89
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +63 -56
- data/core/rbs/unnamed/env_class.rbs +19 -14
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +11 -118
- data/core/regexp.rbs +258 -214
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +78 -34
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +4 -71
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +16 -82
- data/core/rubygems/version.rbs +2 -3
- data/core/set.rbs +493 -363
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +43 -42
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +141 -73
- data/core/time.rbs +81 -50
- data/core/trace_point.rbs +41 -35
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +24 -16
- data/core/warning.rbs +7 -7
- data/docs/CONTRIBUTING.md +2 -1
- data/docs/aliases.md +79 -0
- data/docs/collection.md +3 -3
- data/docs/config.md +171 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +634 -0
- data/docs/rbs_by_example.md +20 -20
- data/docs/rust.md +96 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +48 -18
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +1441 -671
- data/ext/rbs_extension/ast_translation.h +7 -0
- data/ext/rbs_extension/class_constants.c +18 -2
- data/ext/rbs_extension/class_constants.h +9 -0
- data/ext/rbs_extension/extconf.rb +6 -1
- data/ext/rbs_extension/legacy_location.c +33 -56
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +183 -39
- data/include/rbs/ast.h +597 -297
- data/include/rbs/defines.h +40 -0
- data/include/rbs/lexer.h +31 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +0 -2
- data/include/rbs/util/rbs_allocator.h +34 -13
- data/include/rbs/util/rbs_assert.h +12 -1
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs/util/rbs_encoding.h +2 -0
- data/include/rbs/util/rbs_unescape.h +2 -1
- data/include/rbs.h +8 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +27 -31
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +335 -3
- data/lib/rbs/ast/ruby/comment_block.rb +30 -4
- data/lib/rbs/ast/ruby/declarations.rb +209 -4
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
- data/lib/rbs/ast/ruby/members.rb +571 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +66 -24
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +55 -24
- data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
- data/lib/rbs/collection/sources/git.rb +7 -0
- data/lib/rbs/definition.rb +1 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
- data/lib/rbs/definition_builder/method_builder.rb +32 -6
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +235 -75
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +377 -15
- data/lib/rbs/location_aux.rb +1 -1
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +47 -11
- data/lib/rbs/parser_aux.rb +20 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +3 -20
- data/lib/rbs/prototype/runtime.rb +10 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +120 -44
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +25 -3
- data/lib/rbs/type_name.rb +34 -14
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/type_assertions.rb +44 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/runtime.rb +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs.rb +13 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +24 -6
- data/schema/typeParam.json +17 -1
- data/sig/annotate/rdoc_annotater.rbs +12 -9
- data/sig/ast/ruby/annotations.rbs +364 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +128 -2
- data/sig/buffer.rbs +19 -1
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/collection/config/lockfile_generator.rbs +2 -0
- data/sig/definition.rbs +6 -1
- data/sig/definition_builder.rbs +2 -0
- data/sig/environment.rbs +70 -12
- data/sig/errors.rbs +13 -14
- data/sig/inline_parser.rbs +41 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -2
- data/sig/method_builder.rbs +3 -1
- data/sig/namespace.rbs +20 -0
- data/sig/parser.rbs +41 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +36 -10
- data/sig/rewriter.rbs +45 -0
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +15 -0
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +15 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/src/ast.c +443 -162
- data/src/lexer.c +1415 -1313
- data/src/lexer.re +4 -0
- data/src/lexstate.c +63 -37
- data/src/location.c +7 -47
- data/src/parser.c +1032 -521
- data/src/serialize.c +958 -0
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -74
- data/src/util/rbs_assert.c +1 -1
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +10 -14
- data/src/util/rbs_encoding.c +4 -8
- data/src/util/rbs_unescape.c +56 -20
- data/stdlib/abbrev/0/array.rbs +1 -1
- data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +7 -4
- data/stdlib/csv/0/csv.rbs +5 -5
- data/stdlib/date/0/date.rbs +92 -79
- data/stdlib/date/0/date_time.rbs +25 -24
- data/stdlib/delegate/0/delegator.rbs +10 -7
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +111 -1
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +73 -54
- data/stdlib/fileutils/0/fileutils.rbs +179 -160
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +223 -142
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +162 -134
- data/stdlib/objspace/0/objspace.rbs +17 -34
- data/stdlib/open-uri/0/open-uri.rbs +48 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +482 -364
- data/stdlib/optparse/0/optparse.rbs +26 -17
- data/stdlib/pathname/0/pathname.rbs +11 -1381
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +65 -12
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +26 -69
- data/stdlib/ripper/0/ripper.rbs +22 -19
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +3 -3
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +7 -7
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +23 -10
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +11 -3
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +1209 -95
- data/stdlib/strscan/0/string_scanner.rbs +101 -80
- data/stdlib/tempfile/0/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +63 -7
- data/stdlib/tsort/0/cyclic.rbs +4 -1
- data/stdlib/tsort/0/interfaces.rbs +8 -8
- data/stdlib/tsort/0/tsort.rbs +16 -15
- data/stdlib/uri/0/common.rbs +42 -20
- data/stdlib/uri/0/file.rbs +3 -3
- data/stdlib/uri/0/generic.rbs +26 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +8 -8
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- data/stdlib/zlib/0/zstream.rbs +1 -0
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +56 -8
- data/.vscode/extensions.json +0 -5
- data/.vscode/settings.json +0 -19
|
@@ -17,14 +17,14 @@ module URI
|
|
|
17
17
|
# <!-- rdoc-file=lib/uri/rfc2396_parser.rb -->
|
|
18
18
|
# The Hash of patterns.
|
|
19
19
|
#
|
|
20
|
-
# See also
|
|
20
|
+
# See also #initialize_pattern.
|
|
21
21
|
#
|
|
22
22
|
attr_reader pattern: Hash[Symbol, String]
|
|
23
23
|
|
|
24
24
|
# <!-- rdoc-file=lib/uri/rfc2396_parser.rb -->
|
|
25
25
|
# The Hash of Regexp.
|
|
26
26
|
#
|
|
27
|
-
# See also
|
|
27
|
+
# See also #initialize_regexp.
|
|
28
28
|
#
|
|
29
29
|
attr_reader regexp: Hash[Symbol, Regexp]
|
|
30
30
|
|
|
@@ -34,7 +34,7 @@ module URI
|
|
|
34
34
|
# -->
|
|
35
35
|
# ## Synopsis
|
|
36
36
|
#
|
|
37
|
-
# URI::
|
|
37
|
+
# URI::RFC2396_Parser.new([opts])
|
|
38
38
|
#
|
|
39
39
|
# ## Args
|
|
40
40
|
#
|
|
@@ -52,7 +52,7 @@ module URI
|
|
|
52
52
|
#
|
|
53
53
|
# ## Examples
|
|
54
54
|
#
|
|
55
|
-
# p = URI::
|
|
55
|
+
# p = URI::RFC2396_Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})")
|
|
56
56
|
# u = p.parse("http://example.jp/%uABCD") #=> #<URI::HTTP http://example.jp/%uABCD>
|
|
57
57
|
# URI.parse(u.to_s) #=> raises URI::InvalidURIError
|
|
58
58
|
#
|
|
@@ -75,7 +75,7 @@ module URI
|
|
|
75
75
|
# : String to make safe
|
|
76
76
|
#
|
|
77
77
|
# `unsafe`
|
|
78
|
-
# : Regexp to apply. Defaults to
|
|
78
|
+
# : Regexp to apply. Defaults to <code>self.regexp[:UNSAFE]</code>
|
|
79
79
|
#
|
|
80
80
|
#
|
|
81
81
|
# ## Description
|
|
@@ -105,7 +105,7 @@ module URI
|
|
|
105
105
|
# Attempts to parse and merge a set of URIs. If no `block` given, then returns
|
|
106
106
|
# the result, else it calls `block` for each element in result.
|
|
107
107
|
#
|
|
108
|
-
# See also
|
|
108
|
+
# See also #make_regexp.
|
|
109
109
|
#
|
|
110
110
|
def extract: (String str, ?Array[String] schemes) -> Array[String]
|
|
111
111
|
| (String str, ?Array[String] schemes) { (String) -> untyped } -> nil
|
|
@@ -130,8 +130,9 @@ module URI
|
|
|
130
130
|
# rdoc-file=lib/uri/rfc2396_parser.rb
|
|
131
131
|
# - make_regexp(schemes = nil)
|
|
132
132
|
# -->
|
|
133
|
-
# Returns Regexp that is default
|
|
134
|
-
# is provided. Then it is a Regexp.union with
|
|
133
|
+
# Returns Regexp that is default <code>self.regexp[:ABS_URI_REF]</code>, unless
|
|
134
|
+
# `schemes` is provided. Then it is a Regexp.union with
|
|
135
|
+
# <code>self.pattern[:X_ABS_URI]</code>.
|
|
135
136
|
#
|
|
136
137
|
def make_regexp: (?Array[String] schemes) -> Regexp
|
|
137
138
|
|
|
@@ -152,8 +153,7 @@ module URI
|
|
|
152
153
|
#
|
|
153
154
|
# ## Usage
|
|
154
155
|
#
|
|
155
|
-
#
|
|
156
|
-
# p.parse("ldap://ldap.example.com/dc=example?user=john")
|
|
156
|
+
# URI::RFC2396_PARSER.parse("ldap://ldap.example.com/dc=example?user=john")
|
|
157
157
|
# #=> #<URI::LDAP ldap://ldap.example.com/dc=example?user=john>
|
|
158
158
|
#
|
|
159
159
|
def parse: (String uri) -> URI::Generic
|
|
@@ -162,7 +162,7 @@ module URI
|
|
|
162
162
|
# rdoc-file=lib/uri/rfc2396_parser.rb
|
|
163
163
|
# - split(uri)
|
|
164
164
|
# -->
|
|
165
|
-
# Returns a split URI against
|
|
165
|
+
# Returns a split URI against <code>regexp[:ABS_URI]</code>.
|
|
166
166
|
#
|
|
167
167
|
def split: (String uri) -> [ String?, String?, String?, String?, String?, String?, String?, String?, String? ]
|
|
168
168
|
|
|
@@ -177,7 +177,7 @@ module URI
|
|
|
177
177
|
# : String to remove escapes from
|
|
178
178
|
#
|
|
179
179
|
# `escaped`
|
|
180
|
-
# : Regexp to apply. Defaults to
|
|
180
|
+
# : Regexp to apply. Defaults to <code>self.regexp[:ESCAPED]</code>
|
|
181
181
|
#
|
|
182
182
|
#
|
|
183
183
|
# ## Description
|
data/stdlib/zlib/0/deflate.rbs
CHANGED
|
@@ -78,9 +78,10 @@ module Zlib
|
|
|
78
78
|
# - flush(flush = Zlib::SYNC_FLUSH) -> String
|
|
79
79
|
# - flush(flush = Zlib::SYNC_FLUSH) { |chunk| ... } -> nil
|
|
80
80
|
# -->
|
|
81
|
-
# This method is equivalent to
|
|
82
|
-
# provided to improve the readability of your Ruby program. If a block is
|
|
83
|
-
# chunks of deflate output are yielded to the block until the buffer is
|
|
81
|
+
# This method is equivalent to <code>deflate('', flush)</code>. This method is
|
|
82
|
+
# just provided to improve the readability of your Ruby program. If a block is
|
|
83
|
+
# given chunks of deflate output are yielded to the block until the buffer is
|
|
84
|
+
# flushed.
|
|
84
85
|
#
|
|
85
86
|
# See Zlib::Deflate#deflate for detail on the `flush` constants NO_FLUSH,
|
|
86
87
|
# SYNC_FLUSH, FULL_FLUSH and FINISH.
|
|
@@ -35,8 +35,8 @@ module Zlib
|
|
|
35
35
|
# Be careful of the footer of the gzip file. A gzip file has the checksum of
|
|
36
36
|
# pre-compressed data in its footer. GzipReader checks all uncompressed data
|
|
37
37
|
# against that checksum at the following cases, and if it fails, raises
|
|
38
|
-
#
|
|
39
|
-
#
|
|
38
|
+
# <code>Zlib::GzipFile::NoFooter</code>, <code>Zlib::GzipFile::CRCError</code>,
|
|
39
|
+
# or <code>Zlib::GzipFile::LengthError</code> exception.
|
|
40
40
|
#
|
|
41
41
|
# * When an reading request is received beyond the end of file (the end of
|
|
42
42
|
# compressed data). That is, when Zlib::GzipReader#read,
|
|
@@ -62,8 +62,8 @@ module Zlib
|
|
|
62
62
|
# GzipReader object associated with that file. Further details of this method
|
|
63
63
|
# are in Zlib::GzipReader.new and ZLib::GzipFile.wrap.
|
|
64
64
|
#
|
|
65
|
-
def self.open: (
|
|
66
|
-
| (
|
|
65
|
+
def self.open: (path filename) -> instance
|
|
66
|
+
| (path filename) { (instance gz) -> void } -> void
|
|
67
67
|
|
|
68
68
|
# <!--
|
|
69
69
|
# rdoc-file=ext/zlib/zlib.c
|
|
@@ -187,7 +187,7 @@ module Zlib
|
|
|
187
187
|
# -->
|
|
188
188
|
# See Zlib::GzipReader documentation for a description.
|
|
189
189
|
#
|
|
190
|
-
def read: (?int? length, ?string outbuf) -> String?
|
|
190
|
+
def read: (?int? length, ?string? outbuf) -> String?
|
|
191
191
|
|
|
192
192
|
# <!--
|
|
193
193
|
# rdoc-file=ext/zlib/zlib.c
|
|
@@ -230,7 +230,7 @@ module Zlib
|
|
|
230
230
|
# argument is present, it must reference a String, which will receive the data.
|
|
231
231
|
# It raises `EOFError` on end of file.
|
|
232
232
|
#
|
|
233
|
-
def readpartial: (int maxlen, ?string outbuf) -> String
|
|
233
|
+
def readpartial: (int maxlen, ?string? outbuf) -> String
|
|
234
234
|
|
|
235
235
|
# <!--
|
|
236
236
|
# rdoc-file=ext/zlib/zlib.c
|
|
@@ -282,8 +282,8 @@ module Zlib
|
|
|
282
282
|
# `read` method that behaves same as the IO#read.
|
|
283
283
|
#
|
|
284
284
|
# The `options` hash may be used to set the encoding of the data.
|
|
285
|
-
#
|
|
286
|
-
# IO::new.
|
|
285
|
+
# <code>:external_encoding</code>, <code>:internal_encoding</code> and
|
|
286
|
+
# <code>:encoding</code> may be set as in IO::new.
|
|
287
287
|
#
|
|
288
288
|
# If the gzip file header is incorrect, raises an Zlib::GzipFile::Error
|
|
289
289
|
# exception.
|
|
@@ -38,7 +38,8 @@ module Zlib
|
|
|
38
38
|
# returns a GzipWriter object associated with that file. Further details of
|
|
39
39
|
# this method are found in Zlib::GzipWriter.new and Zlib::GzipFile.wrap.
|
|
40
40
|
#
|
|
41
|
-
def self.open: (String filename
|
|
41
|
+
def self.open: (String filename, ?Integer level, ?Integer strategy, **untyped opts) -> instance
|
|
42
|
+
| (String filename, ?Integer level, ?Integer strategy, **untyped opts) { (instance gz) -> void } -> nil
|
|
42
43
|
|
|
43
44
|
# <!--
|
|
44
45
|
# rdoc-file=ext/zlib/zlib.c
|
|
@@ -61,10 +62,11 @@ module Zlib
|
|
|
61
62
|
# - flush(flush=nil)
|
|
62
63
|
# -->
|
|
63
64
|
# Flushes all the internal buffers of the GzipWriter object. The meaning of
|
|
64
|
-
# `flush` is same as in Zlib::Deflate#deflate.
|
|
65
|
-
# `flush` is omitted. It is no use giving flush
|
|
65
|
+
# `flush` is same as in Zlib::Deflate#deflate. <code>Zlib::SYNC_FLUSH</code> is
|
|
66
|
+
# used if `flush` is omitted. It is no use giving flush
|
|
67
|
+
# <code>Zlib::NO_FLUSH</code>.
|
|
66
68
|
#
|
|
67
|
-
def flush: (?Integer flush) ->
|
|
69
|
+
def flush: (?Integer flush) -> self
|
|
68
70
|
|
|
69
71
|
# <!--
|
|
70
72
|
# rdoc-file=ext/zlib/zlib.c
|
|
@@ -74,16 +76,16 @@ module Zlib
|
|
|
74
76
|
#
|
|
75
77
|
# Setting the mtime in the gzip header does not effect the mtime of the file
|
|
76
78
|
# generated. Different utilities that expand the gzipped files may use the mtime
|
|
77
|
-
# header. For example the gunzip utility can use the
|
|
78
|
-
# the resultant file's mtime to the value in the header. By default
|
|
79
|
-
# will set the mtime of the expanded file to the mtime of the gzipped
|
|
80
|
-
# the mtime in the header.
|
|
79
|
+
# header. For example the gunzip utility can use the <code>-N</code> flag which
|
|
80
|
+
# will set the resultant file's mtime to the value in the header. By default
|
|
81
|
+
# many tools will set the mtime of the expanded file to the mtime of the gzipped
|
|
82
|
+
# file, not the mtime in the header.
|
|
81
83
|
#
|
|
82
84
|
# If you do not set an mtime, the default value will be the time when
|
|
83
85
|
# compression started. Setting a value of 0 indicates no time stamp is
|
|
84
86
|
# available.
|
|
85
87
|
#
|
|
86
|
-
def mtime=: (
|
|
88
|
+
def mtime=: (Time | Integer) -> void
|
|
87
89
|
|
|
88
90
|
# <!--
|
|
89
91
|
# rdoc-file=ext/zlib/zlib.c
|
|
@@ -158,9 +160,9 @@ module Zlib
|
|
|
158
160
|
# that behaves the same as IO#write.
|
|
159
161
|
#
|
|
160
162
|
# The `options` hash may be used to set the encoding of the data.
|
|
161
|
-
#
|
|
162
|
-
# IO::new.
|
|
163
|
+
# <code>:external_encoding</code>, <code>:internal_encoding</code> and
|
|
164
|
+
# <code>:encoding</code> may be set as in IO::new.
|
|
163
165
|
#
|
|
164
|
-
def initialize: (_Writer io, Integer level, Integer strategy, **untyped opts) -> void
|
|
166
|
+
def initialize: (_Writer io, ?Integer? level, ?Integer? strategy, **untyped opts) -> void
|
|
165
167
|
end
|
|
166
168
|
end
|
data/stdlib/zlib/0/inflate.rbs
CHANGED
data/stdlib/zlib/0/need_dict.rbs
CHANGED
data/stdlib/zlib/0/zstream.rbs
CHANGED
data/wasm/README.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# RBS parser as WebAssembly
|
|
2
|
+
|
|
3
|
+
The parser under [`src/`](../src) is plain, self-contained C with no dependency
|
|
4
|
+
on the Ruby C API, so it can be compiled to WebAssembly as-is. This directory
|
|
5
|
+
holds the small entry-point shim ([`rbs_wasm.c`](rbs_wasm.c)) that exposes a
|
|
6
|
+
stable ABI to a WebAssembly host.
|
|
7
|
+
|
|
8
|
+
This is how RBS runs on Ruby implementations that cannot load the MRI C
|
|
9
|
+
extension (notably JRuby): the host loads `rbs_parser.wasm`, runs the parser over
|
|
10
|
+
a source buffer, and reads the serialized AST back out. The Ruby side then
|
|
11
|
+
rebuilds `RBS::AST` objects with `RBS::WASM::Deserializer` — no native build per
|
|
12
|
+
platform required. See [`lib/rbs/wasm`](../lib/rbs/wasm) and
|
|
13
|
+
[`docs/wasm_serialization.md`](../docs/wasm_serialization.md).
|
|
14
|
+
|
|
15
|
+
## Building
|
|
16
|
+
|
|
17
|
+
The build needs the [WASI SDK](https://github.com/WebAssembly/wasi-sdk/releases)
|
|
18
|
+
(for `clang`, the wasi-libc sysroot, and the wasm32 compiler-rt builtins):
|
|
19
|
+
|
|
20
|
+
```console
|
|
21
|
+
$ export WASI_SDK_PATH=/path/to/wasi-sdk
|
|
22
|
+
$ rake wasm:build # compile rbs_parser.wasm
|
|
23
|
+
$ rake wasm:check # also smoke-test it (needs wasmtime)
|
|
24
|
+
$ rake wasm:jruby_setup # assemble lib/rbs/wasm/ for JRuby (wasm + Chicory jars)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The compiled `rbs_parser.wasm` is a build artifact and is not checked in.
|
|
28
|
+
|
|
29
|
+
## Exported functions
|
|
30
|
+
|
|
31
|
+
The module is built as a "reactor": it has no `main`, and the host calls
|
|
32
|
+
`_initialize` once before invoking any export.
|
|
33
|
+
|
|
34
|
+
Memory management and results:
|
|
35
|
+
|
|
36
|
+
| Export | Signature | Description |
|
|
37
|
+
| --- | --- | --- |
|
|
38
|
+
| `rbs_wasm_alloc` | `(i32) -> i32` | Allocate N bytes in linear memory, return the offset. |
|
|
39
|
+
| `rbs_wasm_free` | `(i32) -> ()` | Free a region from `rbs_wasm_alloc`. |
|
|
40
|
+
| `rbs_wasm_result_ptr` | `() -> i32` | Offset of the most recent result. |
|
|
41
|
+
| `rbs_wasm_result_len` | `() -> i32` | Length of the most recent result. |
|
|
42
|
+
|
|
43
|
+
Parsing — each takes the whole buffer (`ptr`/`len`), its Ruby encoding name
|
|
44
|
+
(`enc`/`enc_len`, e.g. `"UTF-8"` or `"EUC-JP"`; falls back to UTF-8 when empty or
|
|
45
|
+
unknown), and the character range to parse (`start`/`end`). Each returns `1` on
|
|
46
|
+
success or `0` on a parse error. On success the result is the serialized AST; on
|
|
47
|
+
error it is an error blob (start/end positions, syntax flag, token type,
|
|
48
|
+
message). Type/method-type parsing also takes a buffer of newline-separated
|
|
49
|
+
type-variable names (`vars`/`vars_len`, with `vars_len < 0` meaning "none"):
|
|
50
|
+
|
|
51
|
+
| Export | Signature |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| `rbs_wasm_parse_signature` | `(ptr, len, enc, enc_len, start, end) -> i32` |
|
|
54
|
+
| `rbs_wasm_parse_type` | `(ptr, len, enc, enc_len, start, end, vars, vars_len, require_eof, void_allowed, self_allowed, classish_allowed) -> i32` |
|
|
55
|
+
| `rbs_wasm_parse_method_type` | `(ptr, len, enc, enc_len, start, end, vars, vars_len, require_eof) -> i32` |
|
|
56
|
+
| `rbs_wasm_selftest` | `() -> i32` (parses a fixed sample; `1` on success) |
|
|
57
|
+
|
|
58
|
+
For type and method-type parsing, a successful result of length 0 means the input
|
|
59
|
+
was empty (`nil`).
|