Peter Zhu
a5b6598192
[Feature #18239 ] Implement VWA for strings
...
This commit adds support for embedded strings with variable capacity and
uses Variable Width Allocation to allocate strings.
2021-10-25 13:26:23 -04:00
Takashi Kokubun
6469038ae2
Fix TestRubyOptions#test_enable for -DMJIT_FORCE_ENABLE
...
--enable=all didn't work when cppflags=-DMJIT_FORCE_ENABLE was given.
2021-10-21 20:41:14 -07:00
Jeremy Evans
119626da94
Force disable yjit on OpenBSD
...
TestRubyOptions#test_enable was broken on OpenBSD after the yjit
merge. --yjit (and --enable-all, which enables --yjit) fails on
OpenBSD because yjit uses an insecure mmap call (both writable
and executable), in alloc_exec_mem, which OpenBSD does not allow.
This can probably be reverted if yjit switches to a more secure
mmap design (writable xor executable). This would involve
initially calling mmap with PROT_READ | PROT_WRITE, and after writing
of executable code has finished, using mprotect to switch to
PROT_READ | PROT_EXEC. I believe Firefox uses this approach for
their Javascript engine since Firefox 46.
2021-10-21 08:26:02 -07:00
Alan Wu
40608d0b7b
Fix indentation in ruby.c
2021-10-20 18:19:43 -04:00
Alan Wu
95e337f815
Warn when trying to use YJIT in --disable-jit-support builds
2021-10-20 18:19:43 -04:00
Alan Wu
ff863f3818
Show --yjit in help message
2021-10-20 18:19:43 -04:00
Alan Wu
11096da6cc
Improve YJIT command line option parsing
...
Previously, options such as "--yjit123" would enable YJIT. Additionally,
the error message for argument parsing mentioned "--jit-..." instead of
"--yjit-...".
2021-10-20 18:19:43 -04:00
Alan Wu
1f25bba7b7
YJIT_STATS instead of RUBY_DEBUG for --yjit-stats in help printout
2021-10-20 18:19:42 -04:00
Alan Wu
d4fae3e390
Say YJIT is disabled by default in ruby --help
2021-10-20 18:19:42 -04:00
Alan Wu
d355bf17ba
Style fix in ruby.c
2021-10-20 18:19:42 -04:00
Noah Gibbs
21e58acef3
Don't enable YJIT by default. More tests on both Ubuntu and MacOS.
...
Add RUBY_YJIT_ENABLE env var and YJIT_FORCE_ENABLE compile-time constant.
Rename YJIT_STATS to RUBY_YJIT_STATS.
2021-10-20 18:19:42 -04:00
Noah Gibbs
f021b35273
Reduce line length for YJIT option descriptions
2021-10-20 18:19:42 -04:00
Noah Gibbs
fab469b678
Document YJIT options in --help
2021-10-20 18:19:42 -04:00
Aaron Patterson
afc5db43ca
is this right?
2021-10-20 18:19:40 -04:00
Aaron Patterson
b78c50d800
Don't check MJIT if it's not enabled
2021-10-20 18:19:40 -04:00
Aaron Patterson
9d5beb6fde
Disable YJIT by default if MJIT_FORCE_ENABLE is on
...
Compile time flag seems pretty forceful, so let MJIT turn on by default
if it is used.
2021-10-20 18:19:40 -04:00
Aaron Patterson
ea453acf59
disable MJIT when --enable-all is set
2021-10-20 18:19:40 -04:00
Maxime Chevalier-Boisvert
a1d42c37f4
Update ruby.c
2021-10-20 18:19:40 -04:00
Aaron Patterson
234ab816ba
Exit if YJIT and MJIT are both enabled
...
YJIT and MJIT can't be running in the same process otherwise they'll
clobber each other. We should show an error and exit if they're both
enabled.
2021-10-20 18:19:40 -04:00
Maxime Chevalier-Boisvert
7030cae969
Try running with more YJIT options in CI to surface more bugs
2021-10-20 18:19:36 -04:00
Maxime Chevalier-Boisvert
b415ceb92e
Increase default YJIT call threshold to 10. Add exec mem size arg. ( #52 )
2021-10-20 18:19:35 -04:00
Maxime Chevalier-Boisvert
96f4f918b0
Implement greedy versioning. Refactor versioning logic. ( #10 )
...
* Implement eager versioning. Refactor versioning logic.
* Add --version-limit and --greedy-versioning command-line args
2021-10-20 18:19:34 -04:00
Jose Narvaez
4e2eb7695e
Yet Another Ruby JIT!
...
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
2021-10-20 18:19:31 -04:00
Maxime Chevalier-Boisvert
0710bec01e
Implement --ujit-call-threshold
2021-10-20 18:19:30 -04:00
Maxime Chevalier-Boisvert
a14015e9b5
Report unknown --ujit-* options
2021-10-20 18:19:28 -04:00
Alan Wu
b7f93e81df
Implement --ujit-stats and instructoin counting
...
VM and ujit instruction counting in debug builds.
shopify/ruby#19
2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
e4c65ec49c
Refactor uJIT code into more files for readability
2021-10-20 18:19:26 -04:00
Alan Wu
726bdd4d35
Show whether MicroJIT is enabled in the version string
2021-10-20 18:19:24 -04:00
Alan Wu
a8d784888d
Fix mistake in ujit command line parsing
2021-10-20 18:19:24 -04:00
Alan Wu
e8c914c250
Implement the --disable-ujit command line option
2021-10-20 18:19:24 -04:00
Nobuyoshi Nakada
842b0008c1
Skip broken strings as the locale encoding
2021-10-01 20:28:44 +09:00
Nobuyoshi Nakada
409dbc951b
Replace expanded load path only when modified
2021-10-01 20:28:44 +09:00
Nobuyoshi Nakada
b6534691a1
Copy path strings as interned strings
2021-10-01 20:28:44 +09:00
Nobuyoshi Nakada
60d0421ca8
Fix the encoding of loaded feature names [Bug #18191 ]
...
The feature names loaded from the default load paths should also
be in the file system encoding.
2021-10-01 20:28:44 +09:00
卜部昌平
f83b14af24
include/ruby/internal/interpreter.h: add doxygen
...
Must not be a bad idea to improve documents. [ci skip]
In fact many functions declared in the header file are already
documented more or less. They were just copy & pasted, with applying
some style updates.
2021-09-10 20:00:06 +09:00
S-H-GAMELINKS
bdd6d8746f
Replace RBOOL macro
2021-09-05 23:01:27 +09:00
Nobuyoshi Nakada
3db7f6353f
Suppress unused-but-set-variable warning
2021-07-06 00:09:27 +09:00
Yusuke Endoh
9438c99590
Rename error_squiggle to error_highlight
2021-06-29 23:45:49 +09:00
Yusuke Endoh
e946049665
[WIP] add error_squiggle gem
...
```
$ ./local/bin/ruby -e '1.time {}'
-e:1:in `<main>': undefined method `time' for 1:Integer (NoMethodError)
1.time {}
^^^^^
Did you mean? times
```
https://bugs.ruby-lang.org/issues/17930
2021-06-29 23:45:49 +09:00
Samuel Williams
45e65f302b
Deprecate and rework old (fd) centric functions.
2021-06-22 22:48:57 +12:00
Nobuyoshi Nakada
791d7d4947
Freeze command line script
2021-06-10 15:15:35 +09:00
Benoit Daloze
68d6bd0873
Fix trivial -Wundef warnings
...
* See [Feature #17752 ]
Co-authored-by: xtkoba (Tee KOBAYASHI) <xtkoba+ruby@gmail.com>
2021-05-04 14:56:55 +02:00
Nobuyoshi Nakada
1f08b0d18d
Removed dln_a_out
...
a.out format is considered extinct nowadays.
2021-03-24 20:13:55 +09:00
NARUSE, Yui
d58daad37b
[Feature #17684 ] Declare --disable-gems is for debugging
2021-03-17 15:36:05 +09:00
Nobuyoshi Nakada
90c12defb3
Constified variables for getenv
2021-03-12 17:13:53 +09:00
Yusuke Endoh
8ccc12118e
Keep libpath length non-negative [Bug #16784 ]
...
When runtime_libruby_path does not include '/', it attempts to call
rb_str_resize with negative length. This change makes sure that the
length non-negative.
Co-Authored-By: xtkoba (Tee KOBAYASHI) <xtkoba+ruby@gmail.com>
2021-03-06 00:50:09 +09:00
YO4 (Yoshinao Muramatsu)
b94b7965c4
Fixed fallback ENABLE_VIRTUAL_TERMINAL_PROCESSING value [Bug #17639 ]
2021-02-20 00:50:57 +09:00
Nobuyoshi Nakada
d6e43e4723
Moved --verbose, --verbose and --help options to last [ci skip]
2021-01-24 14:59:41 +09:00
Nobuyoshi Nakada
6f6dfdcc68
Make warning values consistent [Bug #17523 ]
...
They should be affected, as well as `$VERBOSE`, by `-w`/`-W`
options, not only in the main script but in scripts loaded by `-r`
option too.
2021-01-13 18:12:49 +09:00
Nobuyoshi Nakada
dc13bd22bb
Ignore failure on unsupported fcntl to drop non-blocking mode
...
Fixes https://github.com/ruby/ruby/pull/3723
2020-12-26 09:45:06 +09:00