8386 Commits

Author SHA1 Message Date
Alan Wu
f90549cd38 Rust YJIT
In December 2021, we opened an [issue] to solicit feedback regarding the
porting of the YJIT codebase from C99 to Rust. There were some
reservations, but this project was given the go ahead by Ruby core
developers and Matz. Since then, we have successfully completed the port
of YJIT to Rust.

The new Rust version of YJIT has reached parity with the C version, in
that it passes all the CRuby tests, is able to run all of the YJIT
benchmarks, and performs similarly to the C version (because it works
the same way and largely generates the same machine code). We've even
incorporated some design improvements, such as a more fine-grained
constant invalidation mechanism which we expect will make a big
difference in Ruby on Rails applications.

Because we want to be careful, YJIT is guarded behind a configure
option:

```shell
./configure --enable-yjit # Build YJIT in release mode
./configure --enable-yjit=dev # Build YJIT in dev/debug mode
```

By default, YJIT does not get compiled and cargo/rustc is not required.
If YJIT is built in dev mode, then `cargo` is used to fetch development
dependencies, but when building in release, `cargo` is not required,
only `rustc`. At the moment YJIT requires Rust 1.60.0 or newer.

The YJIT command-line options remain mostly unchanged, and more details
about the build process are documented in `doc/yjit/yjit.md`.

The CI tests have been updated and do not take any more resources than
before.

The development history of the Rust port is available at the following
commit for interested parties:
1fd9573d8b

Our hope is that Rust YJIT will be compiled and included as a part of
system packages and compiled binaries of the Ruby 3.2 release. We do not
anticipate any major problems as Rust is well supported on every
platform which YJIT supports, but to make sure that this process works
smoothly, we would like to reach out to those who take care of building
systems packages before the 3.2 release is shipped and resolve any
issues that may come up.

[issue]: https://bugs.ruby-lang.org/issues/18481

Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
Co-authored-by: Noah Gibbs <the.codefolio.guy@gmail.com>
Co-authored-by: Kevin Newton <kddnewton@gmail.com>
2022-04-27 11:00:22 -04:00
Kazuhiro NISHIYAMA
f4093c5c3b
io.nonblock returns the block's value [ci skip] 2022-04-26 00:17:32 +09:00
Tanaka Akira
671d90eca3 add description for IO.nonblock=. 2022-04-24 23:16:55 +09:00
Akinori MUSHA
cb02324c4e [ruby/pathname] Implement Pathname#lutime
https://github.com/ruby/pathname/commit/268cb5acff
2022-04-21 17:10:19 +09:00
Peter Zhu
c69bdcf80c [ruby/bigdecimal] Fix docs
rdoc parses f[i] as a link, which results in a broken link.

https://github.com/ruby/bigdecimal/commit/a18522e9ca
2022-04-18 10:29:25 +09:00
Nobuyoshi Nakada
92361ad9c6 [ruby/bigdecimal] Adjust a local variable type to exponent
https://github.com/ruby/bigdecimal/commit/70146fb6ad
2022-04-18 10:29:23 +09:00
Nobuyoshi Nakada
be52c72889
Get rid of doubly caching 2022-04-17 18:57:26 +09:00
Nobuyoshi Nakada
2c6876f811
Get rid of magic numbers 2022-04-17 18:53:29 +09:00
Sutou Kouhei
2aca566a10 [ruby/stringio] bump up to 3.0.2.pre1
https://github.com/ruby/stringio/commit/14ec9bc193
2022-04-16 06:34:31 +09:00
Peter Zhu
a0eb4b14d6 [ruby/nkf] Fix docs
rdoc parses "Z[0-3]" as a link to "0-3", this commit escapes these so
that they don't become links.

https://github.com/ruby/nkf/commit/269c10061b
2022-04-15 16:07:11 +09:00
Stan Lo
629bad4aba Update PTY.spawn's document
Passing the optional env hash to PTY.spawn has been supported for years, but it's never documented.
More info: https://bugs.ruby-lang.org/issues/12312
2022-04-13 15:43:28 -04:00
Nobuyoshi Nakada
697eed63e8 [ruby/psych] Update autoconf files bundled with yaml-2.5
https://github.com/ruby/psych/commit/e28f17ac18
2022-04-07 22:38:39 +09:00
Nobuyoshi Nakada
d7afaf21f2 Move the target directory of bundled gems like as rubygems 2022-04-07 09:47:10 +09:00
Nobuyoshi Nakada
db3d111c1d Bundled gems are expanded under .bundle/gems now 2022-04-07 09:47:10 +09:00
Hiroshi SHIBATA
5e7ebc7e6e
Ignore yaml source 2022-04-05 14:31:54 +09:00
Hiroshi SHIBATA
839577d833
Removed mswin patch for zlib-1.2.11 2022-04-05 14:30:47 +09:00
Alan Wu
18044f4fbb [ruby/psych] Improve libyaml source downloading error messages
People trying to build CRuby by following the instructions in its
[README] have been running into [errors] due to missing `libyaml`
on their system. Let's try to present a better error message when
it happens.

[README]: fb5aa31e2d (how-to-compile-and-install)
[errors]: https://github.com/ruby/psych/issues/552

https://github.com/ruby/psych/commit/20a633028e
2022-04-05 08:56:21 +09:00
Nobuyoshi Nakada
57377e5d53 [ruby/psych] Propagate CC to libyaml
It is needed for cross-compiling to set properly.  Just
`--target`/`--host`/`--build` seems insufficient on some
platforms.

https://github.com/ruby/psych/commit/2d00c0c203
2022-04-04 16:06:16 +09:00
Nobuyoshi Nakada
07acd6006c [ruby/zlib] Use z_size_t version functions
https://github.com/ruby/zlib/commit/1ce6625fff
2022-04-02 19:34:05 +09:00
Nobuyoshi Nakada
4ee71097a0 [ruby/zlib] Mask checksums to lower 32bits on also IL32 platforms
https://github.com/ruby/zlib/commit/e1ead85113
2022-04-02 19:23:59 +09:00
Nobuyoshi Nakada
1cbdedec89 [ruby/zlib] Mask checksums to lower 32bits
Upper bits affect the result of `crc32` in zlib 1.2.12.

https://github.com/ruby/zlib/commit/9ab6d04af1
2022-04-02 17:01:33 +09:00
Nobuyoshi Nakada
e680e63e7e [ruby/psych] Output libyaml configure log
https://github.com/ruby/psych/commit/c2e3c8579c
2022-04-01 11:48:50 +09:00
Nobuyoshi Nakada
af2ab0dd1c [ruby/psych] Make a static library from PIC object files
On some platforms, PIC and non-PIC code are incompatible and the
latter cannot be used for shared objects.

https://github.com/ruby/psych/commit/5652e32733
2022-03-31 21:34:48 +09:00
Nobuyoshi Nakada
217cea7812 [ruby/psych] Remove unknown vendor for cross-compiling tool prefix
https://github.com/ruby/psych/commit/a4ffa06646
2022-03-31 12:18:28 +09:00
Nobuyoshi Nakada
75efbb98af [ruby/psych] Propagate the host configuration to libyaml
https://github.com/ruby/psych/commit/0e37e19707
2022-03-30 23:08:13 +09:00
Nobuyoshi Nakada
71aa43c725 [ruby/psych] Configure libyaml from the original source
https://github.com/ruby/psych/commit/54a9ba9d10
2022-03-30 11:31:04 +09:00
Nobuyoshi Nakada
c67088dbae [ruby/psych] Try bundled libyaml source if pre-installed is unavailable
https://github.com/ruby/psych/commit/f78e1dba89
2022-03-29 20:57:58 +09:00
Hiroshi SHIBATA
8e2a2ba0f9 Merge psych master
c386ecb0c2
2022-03-29 19:07:12 +09:00
Yusuke Endoh
ca85f16a7d ext/psych/extconf.rb: Fail when libyaml is unavailable
WHen libyaml is not installed, make fails with the following cryptic
message:

```
gmake[2]: Entering directory '/home/chkbuild/chkbuild-crossruby/tmp/build/20220325T045825Z/ruby/ext/psych'
gmake[2]: *** No rule to make target 'yaml/yaml.h', needed by 'psych.o'.  Stop.
gmake[2]: Leaving directory '/home/chkbuild/chkbuild-crossruby/tmp/build/20220325T045825Z/ruby/ext/psych'
```

I think it should give up building psych with a clear message.
2022-03-27 19:34:07 +09:00
Hiroshi SHIBATA
4acc757d04 [ruby/psych] Added condition for macOS homebrew
https://github.com/ruby/psych/commit/a876de5a82

Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
2022-03-26 07:49:52 +09:00
Hiroshi SHIBATA
7ee26740e4 [ruby/readline-ext] Removed the duplicated dependencies
https://github.com/ruby/readline-ext/commit/324d324427
2022-03-25 20:27:58 +09:00
Hiroshi SHIBATA
0292a34c9c Removed libyaml object files from depends 2022-03-25 09:53:07 +09:00
Hiroshi SHIBATA
bfdceab313 Try to remove yaml sources from depend 2022-03-25 09:53:07 +09:00
Hiroshi SHIBATA
8e3fbf9432 Merge psych master: Removed the bundled libyaml 2022-03-25 09:53:07 +09:00
Kazuhiro NISHIYAMA
d06f787e9f
Fix broken links of rdoc
- `www.ruby-lang.org` links to `./www.ruby-lang.org`
- `cgi['field_name']` links to `./'field_name'`
2022-03-17 10:11:38 +09:00
Nobuyoshi Nakada
6d8f396f37 Suppress warnings by OpenSSL 3 2022-03-16 20:49:00 +09:00
xtkoba
63b1633f86 [ruby/win32ole] Get rid of potential undefined behavior
See https://bugs.llvm.org/show_bug.cgi?id=50236

https://github.com/ruby/win32ole/commit/019ec2b3cb
2022-03-15 08:33:40 +09:00
Nobuyoshi Nakada
aa347cbe65 [ruby/win32ole] Rename toplevel WIN32OLE_* classes
https://github.com/ruby/win32ole/commit/bc7deb6a6a
2022-03-15 08:20:47 +09:00
Charles Oliver Nutter
bd18623307 [ruby/io-wait] Update version to 0.2.2.pre1 for testing
https://github.com/ruby/io-wait/commit/12e26f574e
2022-03-10 22:58:31 +09:00
Peter Zhu
fb724a887a Show embed status of array when len is 0 in objspace dump 2022-03-01 10:55:53 -05:00
Nobuyoshi Nakada
0db5ee5195 [ruby/date] Suppress declaration-after-statement warnings
https://github.com/ruby/date/commit/60bd16009d
2022-02-25 20:01:06 +09:00
Nobuyoshi Nakada
bb22bc76b0 [ruby/date] Deprecate the unintentional ability to parse Symbol
https://github.com/ruby/date/commit/d57818f3b3
2022-02-25 19:57:50 +09:00
Nobuyoshi Nakada
b5c2a0840f [ruby/date] Anchor at beginning of numbers
https://hackerone.com/reports/1254844

https://github.com/ruby/date/commit/2f7814cc22
2022-02-25 19:52:31 +09:00
Nobuyoshi Nakada
1758eade57 [ruby/date] Anchor at beginning of numbers
https://hackerone.com/reports/1254844

https://github.com/ruby/date/commit/7ffe25e458
2022-02-25 19:52:31 +09:00
Nobuyoshi Nakada
d54a3df2e5 [ruby/date] Separate era from preceding word
https://github.com/ruby/date/commit/017149e53e
2022-02-25 19:52:30 +09:00
Nobuyoshi Nakada
c8cddac45c [ruby/date] Use possessive match
Reduce backtracks at the same character classes arounding an
optional pattern.

https://github.com/ruby/date/commit/1fd15f7c49
2022-02-25 19:52:29 +09:00
Nobuyoshi Nakada
9f59a2bd87 [ruby/date] Extracted common leading pattern
https://github.com/ruby/date/commit/ec86dbbdc1
2022-02-25 19:52:28 +09:00
John Hawthorn
764e4fa850 Never call kind_of with klass=0 2022-02-23 19:57:42 -08:00
Peter Zhu
68847794bf Update ext/-test-/dln/empty/depend
Dependencies was not updated in
06dab12717a05bf49e4c6dff1d6f5458678d0e00.
2022-02-22 16:49:20 -05:00
Peter Zhu
06dab12717 Include ruby.h in empty.c to have ABI version
I forgot to include this as part of
638fd8774bed27b997f3b634ba8be7aa304be3c3.
2022-02-22 12:00:15 -05:00