51040 Commits

Author SHA1 Message Date
nobu
87ccf7e50a string.c: doc for [Feature #13712]
* string.c (rb_str_start_with): [DOC] start_with? example with
  regexp.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-01 06:37:14 +00:00
nobu
fef8339f58 vm_args.c: refined warning splat to var
* vm_args.c (setup_parameters_complex): refine the warning message
  for a splat hash which was passed to a single variable instead
  of keyword arguments.  this behavior will be changed when the
  "real" keyword argument is introduced in the future.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-31 09:30:49 +00:00
nobu
a6273888a3 fix the condition
* test/ruby/test_rubyoptions.rb: Process.wait with WNOHANG returns
  nil while the target process is alive.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-31 07:10:39 +00:00
nobu
83b14c26aa test_rubyoptions.rb: relax timeout
* test/ruby/test_rubyoptions.rb: wait for setting process title
  until the child process dies, in the case of extra heavy loads.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-31 06:57:47 +00:00
yui-knk
9e82c4f1c1 NEWS: Add RubyVM::AST
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-31 06:25:58 +00:00
yui-knk
d4a6aaa1e0 Undef RubyVM::AST::Node.new
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-31 06:24:19 +00:00
yui-knk
46463af983 Define AST module under RubyVM [experimental]
* ext/-test-/ast/ast.c: Rename to ast.c
  and define AST module under RubyVM.
* common.mk: compile ast.c.
* ext/-test-/ast/extconf.rb: Don't need this file anymore.
* inits.c (rb_call_inits): Call Init_ast to setup AST module.
* test/-ext-/ast/test_ast.rb: Follow up the namespace change.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-31 06:13:06 +00:00
svn
c7c9635360 * 2018-05-31
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-31 05:49:57 +00:00
yui-knk
a97d22a004 ast.c: Do not taint TOPLEVEL_BINDING
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-31 05:49:56 +00:00
hsbt
b9212a7771 Ignore bundler assertions on ruby core test suite.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-30 13:03:47 +00:00
svn
af9b1c958f * properties.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-30 13:01:37 +00:00
svn
5018141974 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-30 13:01:37 +00:00
hsbt
8da8d4b043 Merge RubyGems 3.0.0.beta1.
* It drop to support < Ruby 2.2
  * Cleanup deprecated methods and classes.
  * Mark obsoleted methods to deprecate.
  * and other enhancements.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-30 13:01:35 +00:00
normal
c5cb386eba NEWS: clarify item about built-in thread cache
[Feature #14757]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-30 11:49:06 +00:00
nobu
162adb82d1 Workaround for old LibreSSL
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-30 09:13:21 +00:00
matz
d53ee00891 object.c: Add a new alias then to Kernel#yield_self; [Feature #14594]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-30 08:24:52 +00:00
svn
47f9dd8419 * 2018-05-30
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 23:28:51 +00:00
nobu
9fd0858c3b fake.rb: fix RUBY_DESCRIPTION for MJIT
* template/fake.rb.in: switch RUBY_DESCRIPTION at runtime
  depending on the MJIT status.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 23:28:50 +00:00
nobu
0342fcbd51 fake.rb: fix RUBY_DESCRIPTION for MJIT
* template/fake.rb.in: reflect MJIT to RUBY_DESCRIPTION.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 08:47:07 +00:00
nobu
2df80d30fe spec/ruby: revert r63503 and r63508
When RUBY_DESCRIPTION has `+JIT` already, it will be doubled.
Just fake.rb.in always has copied `RUBY_DESCRIPTION`, regardless
MJIT is enabled or not.  `BOOTSTRAPRUBY` is not involved.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 08:46:36 +00:00
k0kubun
d2c6ed6b07 mjit_compile.c: drop catch table handling
The loop for `vm_exce_handle_exception` doesn't trigger `mjit_exec`, so
I don't think this code is no longer needed.

This was needed in development of original version of this JIT, but it
seems not needed from the beginning (r62189) at Ruby repository.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 02:48:38 +00:00
yui-knk
8b9e877b1f Unused macro and field
* node.h (nd_cnt, struct RNode): nd_cnt has been unused
  since r60239, and also cnt field.
* .gdbinit (nd_cnt): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 01:58:57 +00:00
yui-knk
7db2db67fa Unused macro
* node.h (nd_noex): nd_noex has been unused since r24128.
* .gdbinit (nd_noex): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 01:40:01 +00:00
yui-knk
3d1a523d4c Unused macro
* node.h (nd_frml): nd_frml has been unused since r34134.
* .gdbinit (nd_frml): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 01:19:06 +00:00
normal
9e5354eb52 NEWS: add item about built-in thread cache
This change may impact design of future programs and obviate
thread pools in many cases, so it's worth a mention.
Anyways, this seems stable since r63499 [Feature #14757]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63516 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 01:18:06 +00:00
yui-knk
d6d130c18a Unused macro
* node.h (nd_argc): nd_argc has been unused since r24128.
* .gdbinit (nd_argc): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-29 01:00:54 +00:00
nobu
dc2a979b7f time.rb: fix parsing time zone in iso8601
* lib/time.rb (Time.xmlschema): the minute in time zone designator
  can be omitted together with the preceding colon.
  [ruby-core:87277] [Bug #14790]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-28 15:35:08 +00:00
svn
7b4671f030 * 2018-05-29
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-28 15:19:39 +00:00
nobu
71fed537ac time.rb: fix parsing time zone in iso8601
* lib/time.rb (Time.xmlschema): a colon in time zone designator
  can be omitted.  [ruby-core:87277] [Bug #14790]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-28 15:19:38 +00:00
yui-knk
3e2ff59f10 Unused macro and field
* node.h (nd_cfnc, struct RNode): nd_cfnc has been unused
  since r49938, and also cfunc field.
* .gdbinit (nd_cfnc): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-28 14:24:14 +00:00
svn
dceecfb66f * 2018-05-28
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-28 00:42:33 +00:00
hsbt
1f4796a182 Merge etc gemspec from github repository.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-28 00:42:32 +00:00
eregon
96e6eb380d Specs must keep working on older versions and other implementations
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-27 09:52:04 +00:00
k0kubun
f13b0fd8f3 jit_support.rb: debug check_support stderr
rubyci freebsd11zfs doesn't pass this check. I want to know the stderr.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-27 07:33:18 +00:00
k0kubun
783e2b579c st.c: remove redundant export declaration
rb_hash_bulk_insert is added to official C API in r63488. It's no longer
exported only for MJIT.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-27 05:52:43 +00:00
svn
9aefa90cb3 * 2018-05-27
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-27 05:47:44 +00:00
k0kubun
6d38935605 jit_support.rb: cahce JIT support check
* Before
make test-all -C .ruby-svn TESTS="../test/ruby/test_jit.rb"  22.40s user 5.38s system 91% cpu 30.196 total

* After
make test-all -C .ruby-svn TESTS="../test/ruby/test_jit.rb"  12.91s user 3.33s system 91% cpu 17.648 total

Also, this makes it easier to check if JIT is actually tested, by
showing warning on stderr.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-27 05:47:43 +00:00
k0kubun
506512c028 spec/ruby: fix RUBY_DESCRIPTION check with JIT enabled
`make test-spec` adds `-r./$(arch)-fake` to pass header options.
But the $(arch)-fake.rb unexpectedly modifies RUBY_DESCRIPTION and it
always drops +JIT from it since the fake.rb is built with BOOTSTRAPRUBY,
which can be miniruby. miniruby can't find MJIT header and thus
mjit_init_p is always FALSE.

So, to pass `make test-spec` with JIT enabled, we can't use
RUBY_DESCRIPTION.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-24 14:32:05 +00:00
k0kubun
34d5625500 test_rubyoptions.rb: RbConfig::CONFIG['cppflags'] can be nil
not '' at least on AppVeyor

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-24 13:25:40 +00:00
k0kubun
8d988784c3 test_rubyoptions.rb: allow passing test_verbose
with -DMJIT_FORCE_ENABLE. With -DMJIT_FORCE_ENABLE, absence of --jit
doesn't mean JIT disabled.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-24 12:57:40 +00:00
nobu
9fa4766e14 mjit.c: use remove_file in clean_so_file too
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-24 06:15:43 +00:00
normal
72ad081145 thread_pthread.c: avoid reading th pointer for thread cache
I suspect GC may free the rb_thread_t (th) pointer by the time
we call register_cached_thread_and_wait.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-24 02:52:46 +00:00
normal
fa31e1a418 thread_pthread.c: enable thread cache by default
Since r62466 ("thread_pthread.c: shorten and fix thread cache implementation"),
our thread cache is no longer buggy with programs using fork.
This makes significant improvements in vm_thread_alive_check1
and vm_thread_create_join benchmarks and does not introduce
regressions.

Unlike old thread cache, I've changed the cache to only last 3
seconds since per-thread setup in most programs rarely takes
more than a few milliseconds to re-establish things like network
connections.  This is configurable by changing the THREAD_CACHE_TIME
variable.

I hope this allows users to simplify their code by removing the
need for thread pools in many cases.

vm_thread_alive_check1 10.872   0.150
vm_thread_close         1.988   2.027
vm_thread_condvar1      0.751   0.767
vm_thread_condvar2      0.744   0.752
vm_thread_create_join   5.296   2.343
vm_thread_mutex1        1.911   1.892
vm_thread_mutex2        1.902   1.896
vm_thread_mutex3        2.389   2.313
vm_thread_pass          0.271   0.272
vm_thread_pass_flood    0.175   0.179
vm_thread_pipe          0.460   0.436
vm_thread_queue         0.453   0.446
vm_thread_sized_queue   0.547   0.547
vm_thread_sized_queue2  1.417   1.413
vm_thread_sized_queue3  1.410   1.426
vm_thread_sized_queue4  0.787   0.791

Speedup ratio: compare with the result of `trunk' (greater is better)
name    built
vm_thread_alive_check1 72.456
vm_thread_close         0.981
vm_thread_condvar1      0.979
vm_thread_condvar2      0.990
vm_thread_create_join   2.260
vm_thread_mutex1        1.010
vm_thread_mutex2        1.003
vm_thread_mutex3        1.033
vm_thread_pass          0.994
vm_thread_pass_flood    0.980
vm_thread_pipe          1.055
vm_thread_queue         1.016
vm_thread_sized_queue   0.999
vm_thread_sized_queue2  1.003
vm_thread_sized_queue3  0.989
vm_thread_sized_queue4  0.995

[ruby-core:87030] [Feature #14757]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-23 21:16:56 +00:00
normal
8a2aa4eddc benchmark/bm_*erb*: fix for --measure=size/peak in driver.rb
benchmark/memory_wrapper.rb will Kernel#load these
scripts, preventing DATA from being initialized, so
use heredoc instead.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-23 20:58:46 +00:00
svn
5ce3f8c973 * 2018-05-24
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-23 15:58:54 +00:00
ngoto
26cbe46e68 ext/pty/pty.c: I_FIND before I_PUSH if possible
* ext/pty/pty.c: Check whether each STREAMS module is already pushed
  or not by using I_FIND ioctl call, before pushing it by using I_PUSH.
  Solved test failure on Solaris. On a Solaris 10 machine, ioctl I_PUSH
  "ldterm" twice was the cause of duplicated "\r".
  [Bug #14786] [ruby-dev:50552]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-23 15:58:53 +00:00
ko1
e6ad53beaa remove VM_ENV_DATA_INDEX_ENV_PROC.
* vm_core.h (VM_ENV_DATA_INDEX_ENV_PROC): ep[VM_ENV_DATA_INDEX_ENV_PROC] is
  allocated to mark a Proc which is created from iseq block.
  However, `lep[0]` keeps Proc object itself as a block handler (Proc).
  So we don't need to keep it.

* vm_core.h (VM_ENV_PROCVAL): ditto.

* vm.c (vm_make_env_each): do not need to keep blockprocval as special value.

* vm.c (vm_block_handler_escape): simply return Proc value.

* proc.c (proc_new):  we don't need to check Env because a Proc type block
  handler is a Proc object itself.
  [Bug #14782]

* test/ruby/test_proc.rb: add a test for [Bug #14782]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-23 06:56:08 +00:00
normal
b32b2a6106 internal.h: export ruby_sized_* for systems w/o malloc_usable_size
[ruby-core:87232]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-23 05:51:43 +00:00
k0kubun
3d90e2aead test_jit.rb: propagate suspicious stderr
of child ruby process to parent stderr using `Kernel#warn`.

This fixes a warning in {set,get}classvariable as well.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-22 15:48:58 +00:00
svn
e42b4ae53a * 2018-05-23
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-22 15:39:35 +00:00