Commit graph

9087 commits

Author SHA1 Message Date
NAITOH Jun
338eb0065b [ruby/strscan] StringScanner#captures: Return nil not "" for
unmached capture
(https://github.com/ruby/strscan/pull/72)

fix https://github.com/ruby/strscan/issues/70
If there is no substring matching the group (s[3]), the behavior is
different.

If there is no substring matching the group, the corresponding element
(s[3]) should be nil.

```
s = StringScanner.new('foobarbaz') #=> #<StringScanner 0/9 @ "fooba...">
s.scan /(foo)(bar)(BAZ)?/  #=> "foobar"
s[0]           #=> "foobar"
s[1]           #=> "foo"
s[2]           #=> "bar"
s[3]           #=> nil
s.captures #=> ["foo", "bar", ""]
s.captures.compact #=> ["foo", "bar", ""]
```

```
s = StringScanner.new('foobarbaz') #=> #<StringScanner 0/9 @ "fooba...">
s.scan /(foo)(bar)(BAZ)?/  #=> "foobar"
s[0]           #=> "foobar"
s[1]           #=> "foo"
s[2]           #=> "bar"
s[3]           #=> nil
s.captures #=> ["foo", "bar", nil]
s.captures.compact #=> ["foo", "bar"]
```

https://docs.ruby-lang.org/ja/latest/method/MatchData/i/captures.html
```
/(foo)(bar)(BAZ)?/ =~ "foobarbaz" #=> 0
$~.to_a        #=> ["foobar", "foo", "bar", nil]
$~.captures #=> ["foo", "bar", nil]
$~.captures.compact #=> ["foo", "bar"]
```

* StringScanner#captures is not yet documented.
https://docs.ruby-lang.org/ja/latest/class/StringScanner.html

1fbfdd3c6f
2024-01-14 22:27:24 +09:00
Samuel Williams
f7178045bb [ruby/openssl] Add support for gets(chomp: true).
8aa3849cff
2024-01-13 00:28:26 +00:00
Samuel Williams
08d4e5ebef [ruby/openssl] Add more methods to SocketForwarder.
39eaa9f677
2024-01-13 00:28:26 +00:00
yui-knk
52d9e55903 Statically allocate parser config 2024-01-12 21:17:41 +09:00
KJ Tsanaktsidis
688a6ff510 Revert "Mark asan fake stacks during machine stack marking"
This reverts commit d10bc3a2b8.
2024-01-12 17:58:54 +11:00
KJ Tsanaktsidis
d10bc3a2b8 Mark asan fake stacks during machine stack marking
ASAN leaves a pointer to the fake frame on the stack; we can use the
__asan_addr_is_in_fake_stack API to work out the extent of the fake
stack and thus mark any VALUEs contained therein.

[Bug #20001]
2024-01-12 17:29:48 +11:00
Yusuke Endoh
1bd98c820d Remove setaffinity of pthread for getaddrinfo
It looks like `sched_getcpu(3)` returns a strange number on some
(virtual?) environments.

I decided to remove the setaffinity mechanism because the performance
does not appear to degrade on a quick benchmark even if removed.

[Bug #20172]
2024-01-11 12:38:16 +09:00
KJ Tsanaktsidis
31371b2e24 Fix CRLF -> LF conversion on read for rb_io_fdopen & rb_file_open
When opening a file with `File.open`, and then setting the encoding with
`IO#set_encoding`, it still correctly performs CRLF -> LF conversion on
Windows when reading files with a CRLF line ending in them (in text
mode).

However, the file is opened instead with either the `rb_io_fdopen` or
`rb_file_open` APIs from C, the CRLF conversion is _NOT_ set up
correctly; it works if the encoding is not specified, but if
`IO#set_encoding` is called, the conversion stops happening. This seems
to be because the encflags never get ECONV_DEFAULT_NEWLINE_DECORATOR
set in these codepaths.

Concretely, this means that the conversion doesn't happen in the
following circumstances:
  * When loading ruby files with require (that calls rb_io_fdopen)
  * When parsing ruuby files with RubyVM::AbstractSyntaxTree (that calls
    rb_file_open).
This then causes the ErrorHighlight tests to fail on windows if git has
checked them out with CRLF line endings - the error messages it's
testing wind up with literal \r\n sequences in them because the iseq
text from the parser contains un-newline-converted strings.

This commit fixes the problem by copy-pasting the relevant snippet which
sets this up in `rb_io_extract_modeenc` (for the File.open path) into
the relevant codepaths for `rb_io_fdopen` and `rb_file_open`.

[Bug #20101]
2024-01-10 21:02:23 +11:00
S-H-GAMELINKS
1b8d01136c Introduce Numeric Node's 2024-01-07 09:24:34 +09:00
Adam Hess
6aacbd690c Free pthread_attr after setting up the thread
[bug #20149]
2024-01-05 08:56:44 +09:00
Takashi Kokubun
d20c609465 [ruby/erb] Skip building a native extension for JRuby
f0f68baf6b
2024-01-04 22:33:16 +00:00
Nobuyoshi Nakada
73fb9c35ef [ruby/io-console] IO_CONSOLE_VERSION is no longer a macro
14b35217dc
2024-01-03 02:12:30 +00:00
ima1zumi
8916b81bf4 [ruby/io-console] Define IO::ConsoleMode::VERSION from console.c
6302a2082c
2024-01-02 22:17:05 +00:00
Nobuyoshi Nakada
b4adc1bbab [ruby/win32ole] [DOC] Fix indent
76acc979bf
2023-12-31 11:52:19 +00:00
Nobuyoshi Nakada
375d1c993d [ruby/win32ole] [DOC] Remove useless comment that is mixed into RDoc
afceb6814f
2023-12-31 09:33:39 +00:00
Nobuyoshi Nakada
55a81863cd [ruby/win32ole] [DOC] Add .document files
eba2934177
2023-12-31 01:58:22 +00:00
Nobuyoshi Nakada
7016ab873e
Verify that events2table.c was generated successfully 2023-12-28 18:07:49 +09:00
KJ Tsanaktsidis
051a874325 Fix memory overread in registry.rb
The terminator is not actually getting filled in; we're simply passing
(two) bytes of empty memory as the NUL terminator. This can lead to
garbage characters getting written to registry values.

Fix this by explicitly putting a WCHAR_NUL character into the string to
be sent to the registry API, like we do in the MULTI_SZ case.

[Bug #20096]
2023-12-28 18:03:58 +11:00
Ivan Kuchin
1f1edeef3f [ruby/pathname] require fileutils in both methods using it
rmtree is already requiring fileutils, but mkpath apparently relies on
autoload of FileUtils. Switch to require for both methods

07ad1fb41a
2023-12-28 00:07:56 +00:00
Nobuyoshi Nakada
c027dcfde2 [ruby/etc] [DOC] Add minimal documents for constants
97a4f798d4
2023-12-27 10:09:24 +00:00
Nobuyoshi Nakada
862cfcaf75 [ruby/etc] [DOC] Improve Etc documents
fae932ff61
2023-12-27 05:30:20 +00:00
John Hawthorn
ea5776e7e4 [flori/json] Use rb_sym2str instead of SYM2ID
This avoids pinning an id to the symbol used if a dynamic symbol is
passed in as a hash key.

rb_sym2str is available in Ruby 2.2+ and json depends on >= 2.3.

5cbafb8dbe
2023-12-25 21:12:49 +09:00
Mark Young
65ec74a8dd [ruby/io-console] Provide a 'Changelog' link on rubygems.org/gems/io-console
By providing a 'changelog_uri' in the metadata of the gemspec
a 'Changelog' link will be shown on https://rubygems.org/gems/io-console
which makes it quick and easy for someone to check on the changes
introduced with a new version.

Details of this functionality can be found on https://guides.rubygems.org/specification-reference/

6bacdbf0e1
2023-12-25 21:12:49 +09:00
Nobuyoshi Nakada
a01c1e821c [ruby/io-console] bump up to 0.7.2.dev.1
08e41a3e4d
2023-12-25 21:12:49 +09:00
Nobuyoshi Nakada
e7f91fd74c [ruby/io-console] [DOC] Add missing documents
44dce34569
2023-12-25 21:12:49 +09:00
Nobuyoshi Nakada
4173c4bcfb [ruby/io-console] Extract CSI sequence
63dbeeecf4
2023-12-25 21:12:49 +09:00
Alexander Momchilov
bb1625858f [ruby/psych] Remove now-unreachable rescue block
6905a2123c
2023-12-25 21:12:49 +09:00
Alexander Momchilov
95e7af0c59 [ruby/psych] Remove unused array
b9e7b4a4a4
2023-12-25 21:12:49 +09:00
Sutou Kouhei
b4cb7ead30 [ruby/fiddle] Bump version
fd4bb4ea8a
2023-12-25 21:12:49 +09:00
Mark Young
cb6a556927 [ruby/date] Provide a 'Changelog' link on rubygems.org/gems/date
By providing a 'changelog_uri' in the metadata of the gemspec
a 'Changelog' link will be shown on https://rubygems.org/gems/date
which makes it quick and easy for someone to check on the changes
introduced with a new version.

Details of this functionality can be found on https://guides.rubygems.org/specification-reference/

2dea4c011d
2023-12-25 21:12:49 +09:00
Nobuyoshi Nakada
4d344dc194 [ruby/etc] [DOC] Move rdoc files to .documnet
44425427ab
2023-12-25 21:12:49 +09:00
Nobuyoshi Nakada
12e78fbfcd [ruby/etc] [DOC] Missing constant
a39e982129
2023-12-25 21:12:49 +09:00
Hiroshi SHIBATA
f54369830f Revert "Rollback to released version numbers of stringio and strscan"
This reverts commit 6a79e53823.
2023-12-25 21:12:49 +09:00
Hiroshi SHIBATA
5ea862f26e [ruby/psych] Bump up 5.1.2
a9ab74d132
2023-12-19 11:07:47 +09:00
Alexander Momchilov
e6fa1d62fa [ruby/psych] Use compare_by_identity instead of object_id
Object IDs became more expensive in Ruby 2.7. Using `Hash#compare_by_identity` let's us get the same effect, without needing to force all these objects to have object_ids assigned to them.

df69e4a12e
2023-12-19 11:07:45 +09:00
Jean Boussier
b2fc1b054e Update BasicSocket#recv documentation on return value
Ref: https://github.com/ruby/ruby/pull/6407

[Bug #19012]

`0` is now interpreted as closed connection an not an
empty packet, as these are very rare and pretty much
useless.
2023-12-18 12:58:08 +01:00
Nobuyoshi Nakada
baf1403fba
[DOC] Show PTY.getpty as an alias of PTY.spawn
`:nodoc:` directive does not work at method definition in C, and must
be at the implementation function.  That is, there is no way to make
one method visible and another method sharing the implementation
invisible at the same time.
2023-12-18 20:17:45 +09:00
Nobuyoshi Nakada
0601bce6fc
[DOC] Add Socket::ResolutionError documentation 2023-12-18 08:49:06 +09:00
Nobuyoshi Nakada
71c4a9c38f
[DOC] Correct the location of Addrinfo document
The document must be placed immediately before the class definition.
No other statements can be placed in between.
2023-12-18 08:47:59 +09:00
Nobuyoshi Nakada
e316128e3d
[DOC] Stop unintentional references to builtin or standard names 2023-12-18 08:38:59 +09:00
Nobuyoshi Nakada
7bfa1c3dc9
Revert "[DOC] Make undocumented socket constans nodoc"
This reverts commit cbda94edd8, because
`:nodoc:` does not work for constants.

In the case of `rb_define_const`, RDoc parses the preceeding comment
as in `"/* definition: comment */"` form.
2023-12-17 22:37:15 +09:00
Nobuyoshi Nakada
cbda94edd8
[DOC] Make undocumented socket constans nodoc 2023-12-17 20:17:45 +09:00
Nobuyoshi Nakada
557d929ba6
[DOC] Utilize COMMENTS.default_proc to add fallback documents 2023-12-17 20:17:05 +09:00
Hiroshi SHIBATA
582862754f [ruby/io-console] Bump up v0.7.1
8ac766d870
2023-12-16 13:51:34 +08:00
Hiroshi SHIBATA
3b6828f967 [ruby/syslog] Bump up v0.1.2
f7b29e2199
2023-12-16 13:06:37 +08:00
Hiroshi SHIBATA
6a79e53823
Rollback to released version numbers of stringio and strscan 2023-12-16 12:00:59 +08:00
Satoshi Tagomori
b98bd10f25 stop warnings from running the test case requiring .so twice 2023-12-15 11:09:31 +09:00
Satoshi Tagomori
e51f9e9f75 rb_ext_resolve_symbol: C API to resolve and return externed symbols [Feature #20005]
This is a C API for extensions to resolve and get function symbols of other extensions.
Extensions can check the expected symbol is correctly loaded and accessible, and
use it if it is available.
Otherwise, extensions can raise their own error to guide users to setup their
environments correctly and what's missing.
2023-12-14 17:39:42 +09:00
Hiroshi SHIBATA
39023792db [ruby/io-console] Bump up 0.7.0
3e5586e632
2023-12-13 05:58:25 +00:00
Hiroshi SHIBATA
06edde22f4 [ruby/io-nonblock] Bump up 0.3.0
501e2ffea3
2023-12-13 05:42:58 +00:00