Commit graph

10389 commits

Author SHA1 Message Date
nobu
7d085cca4b parse.y: fix line in rescue
* parse.y (set_line_body, primary): fix line number of bodystmt as
  the beginning of the block.  [ruby-core:79388] [Bug #13181]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-28 08:06:33 +00:00
eregon
acde55201b Send the backtrace of the circular require warning as a single String to Warning.warn
* load.c: send as a single string.
* error.c: expose the string formatted by rb_warning as rb_warning_string().
* test/ruby/test_exception.rb: update tests.
  [ruby-core:80850] [Bug #13505]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-27 12:07:43 +00:00
shyouhei
29ca20de2d refactor newhash (revision 58463 another try) [fix GH-1600]
* st.c (rb_hash_bulk_insert): new API to bulk insert entries
	  into a hash. Given arguments are first inserted into the
	  table at once, then reindexed. This is faster than inserting
	  things using rb_hash_aset() one by one.

	  This arrangement (rb_ prefixed function placed in st.c) is
	  unavoidable because it both touches table internal and write
	  barrier at once.

	* internal.h: delcare the new function.

	* hash.c (rb_hash_s_create): use the new function.

	* vm.c (core_hash_merge): ditto.

	* insns.def (newhash): ditto.

	* test/ruby/test_hash.rb: more coverage on hash creation.

	* test/ruby/test_literal.rb: ditto.

-----------------------------------------------------------
benchmark results:
minimum results in each 7 measurements.
Execution time (sec)
name    before  after
loop_whileloop2  0.136  0.137
vm2_bighash*     1.249  0.623

Speedup ratio: compare with the result of `before' (greater is better)
name    after
loop_whileloop2 0.996
vm2_bighash*    2.004



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-27 04:21:04 +00:00
nobu
d249b047c2 error.c: send as a single string
* error.c (rb_warn_m): send the arguments as a single string
  concatenated with a newline, so it can be filtered easily.
  [ruby-core:80875] [Feature #12944]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-26 20:13:07 +00:00
naruse
8a66d13535 suppress_warning
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-25 19:13:26 +00:00
ko1
301d669a31 add timeout.
* test/ruby/test_trace.rb (test_trace_stackoverflow): sometimes this test
  was stopped forever and killed by test process forcibly. However, this
  test only checks if this code cause some critical failure such as SEGV.
  So that we can add timeout for this code.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-25 17:50:34 +00:00
eregon
ead61f4ac8 no longer rescue exceptions of #<=> when initializing a Range
* range.c (range_init): no longer hide the user exception
  with a ArgumentError, just let the user exception go through.
* test/ruby/test_range.rb (test_new): add tests.
  [Feature #7688]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-25 11:42:43 +00:00
eregon
413cece5c9 no longer rescue exceptions of #coerce in Integer#step
* numeric.c (num_step_negative_p): no more error hiding.
* test/ruby/test_float.rb, test/ruby/test_numeric.rb:
  follow the change. [Feature #7688]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-25 11:42:31 +00:00
eregon
bc1827e882 no longer rescue exceptions in numeric comparison operations
* numeric.c (do_coerce): no more error hiding.
* test/ruby/test_numeric.rb: follow the change.
  [Feature #7688]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-25 11:42:20 +00:00
hsbt
33f66084d5 Import gemspec
Import gemspec and test file from ruby/webrick.

  * webrick.gemspec: Update files and dependency for standalone gem.
  * test/webrick/utils.rb: Added explicitly loading of EnvUtil for
    test suite without ruby core test suite.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-25 09:23:04 +00:00
nobu
5ad56e7c0b load.c: backtrace of circular require
* load.c (load_lock): print backtrace of circular require via
  `Warning.warn` [ruby-core:80850] [Bug #13505]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-25 08:17:24 +00:00
hsbt
0adeb1c8ab Import gemspec and test file changes from ruby/gdbm.
* gdbm.gemspec: Update basic configuraiton for standalone gdbm gem.
  * test/gdbm/test_gdbm.rb: In standalone environment, It needs to
    explicit loading of EnvUtil module for test suite.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-25 07:55:56 +00:00
nobu
80f5067478 parse.y: args tail at error
* parse.y (new_args_tail_gen): abandon parsing arguments after
  error.  reported by ilsani Martino Sani (ilsani) at
  https://hackerone.com/reports/221201

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-24 06:17:55 +00:00
naruse
c7ec1b1f59 Allow Net::HTTP to fetch user/pass from http_proxy
Note that this feature is enabled only on environment variables are
multi-user safe. In this time the list includes Linux, FreeBSD, or
Darwin. [Bug #12921]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-23 16:19:23 +00:00
nobu
93955c7560 Add diagnostic reports section header [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-23 14:51:08 +00:00
nobu
8284de591f assert_syntax_error returns the exception [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-23 14:47:31 +00:00
nobu
6f8f950cc3 Fix space flag when Inf/NaN and width==3
* sprintf.c (rb_str_format): while `"% 2f"` and `"% 4f"` result in
  `" Inf"` and `" Inf"` respectively, `"% 3f"` results in
  `"Inf"` (no space).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-23 01:04:39 +00:00
stomar
fe378f03f7 test/test_prime.rb: update method name in comment
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-22 16:19:12 +00:00
nobu
9c5c31c8b7 test_file_exhaustive.rb: check case-sensitive fs
* test/ruby/test_file_exhaustive.rb (test_expand_path): dump
  expanded file name, not only appended char, for case-sensitive
  filesystem.  [ruby-dev:50093] [Bug #13489]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-22 08:19:34 +00:00
normal
7e5462b36f define PACKED_STRUCT_UNALIGNED correctly
Defining PACKED_STRUCT_UNALIGNED to a noop in ruby/config.h (via
`configure') prevents the definition in include/ruby/defines.h
from working

This should have been fixed in r46914, so there's a size
regression for some objects since Ruby 2.2+.  I do not believe
we can backport to existing releases, either, since it can
affect ABI.

Add a test for Time objects on common x86-based platforms to
check for future regressions.

* configure.in: remove PACKED_STRUCT_UNALIGNED definition
* test/ruby/test_time.rb (test_memsize): new test for x86

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58442 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-22 01:08:15 +00:00
normal
e79ecc540f test/socket/test_basicsocket: handle :wait_readable on read_nonblock
On some systems with slower local sockets, :wait_readable may
happen and we should wait on it to drain the socket.
This is a possible fix for https://bugs.ruby-lang.org/issues/13491

* test/socket/test_basicsocket.rb (test_read_write_nonblock):
  handle :wait_readable on read_nonblock

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-21 20:38:58 +00:00
hsbt
7a856b11c8 Removed mathn.rb from stdlib. It's deprecated from Ruby 2.2.
[Feature #10169][[ruby-core:64553]]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-21 06:16:11 +00:00
nobu
20d81b4287 test_framework.rb: for case-sensitive filesystem
* test/mkmf/test_framework.rb (test_single_framework): fix header
  file name for case-sensitive filesystem.  it may not be same as
  the framework name, but should be the actual file name.
  [ruby-dev:50093] [Bug #13489]

* test/mkmf/test_framework.rb (test_multi_frameworks): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-21 06:12:27 +00:00
ko1
8b31febd15 use correct synchronization.
* test/ruby/test_thread.rb (make_handle_interrupt_test_thread1): use Queue
  to use correct synchronization.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-20 22:52:57 +00:00
nobu
f14f0d3464 ruby-lex.rb: fix continued line conditions
* lib/irb/ruby-lex.rb (RubyLex#lex): fix conditions for continued
  line; empty lines, a semicolon, first line in `begin` block,
  just after `else` are not continued.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-20 11:07:02 +00:00
hsbt
7b3ac07781 Removed deprecated extensions of mathn.
* ext/mathn/{complex,rational}: Removed from ruby core.
    [fix GH-1542][Feature #13334][ruby-core:80247]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-20 08:21:24 +00:00
usa
abbabbf8c8 Move test_extlibs.rb because it's not the test of ruby itself
* test/test_extlibs.rb: moved from test/ruby.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-20 01:36:11 +00:00
normal
c32fc82d0e socket: avoid fcntl for read/write_nonblock on Linux
On platforms where MSG_DONTWAIT works reliably on all sockets
(so far, I know of Linux), we can avoid fcntl syscalls and
implement IO#write_nonblock and IO#read_nonblock in terms of the
socket-specific send and recv family of syscalls.

This avoids side effects on the socket, and also encourages
generic code to be written in cases where IO wrappers like
OpenSSL::SSL::SSLSocket are used.

Perhaps in the future, side-effect-free non-blocking I/O can
be standard on all files and OSes: https://cr.yp.to/unix/nonblock.html

* ext/socket/lib/socket.rb (read_nonblock, write_nonblock):
  Linux-specific wrapper without side effects
  [ruby-core:80780] [Feature #13362]
* test/socket/test_basicsocket.rb (test_read_write_nonblock):
  new test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-19 01:08:16 +00:00
nobu
5cc56f0d9b compile.c: wrong optimization
* compile.c (compile_branch_condition): expression which has side
  effects should not be eliminated.
  [ruby-core:80740] [Bug #13444]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-18 13:14:06 +00:00
nobu
89b13fd364 test_optimization.rb: heredoc code style
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-18 13:02:56 +00:00
ko1
c29e8a0271 should not return.
* test/ruby/test_settracefunc.rb (test_throwing_return_with_finish_frame):
  should not use `return`, but should use `next`.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-17 23:47:12 +00:00
nobu
61ea519dc0 eval.c: copy before cause setup
* eval.c (setup_exception): copy frozen exception before setting
  up a cause not only a backtrace.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-17 02:41:00 +00:00
stomar
4027f4159e test_integer.rb: simplify test
* test/ruby/test_integer.rb: simplify test for Integer.sqrt.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-16 15:54:57 +00:00
nobu
04b618e53e test/ruby/test_io.rb: use Thread.stop? to wait
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-16 04:16:11 +00:00
usa
d8ea05c126 * test/ruby/test_io.rb (test_race_closed_stream): separate because it stops
entire test process on Windows.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-16 02:00:24 +00:00
nobu
df76f366a7 bignum.c: fix inexact estimation
* bignum.c (estimate_initial_sqrt): estimated square root is
  inexact if it is not equal to its ceil, needs Newton's method.
  [ruby-core:80696] [Bug #13440]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58366 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-15 15:29:09 +00:00
normal
8e64799c96 fix RSTRUCT_LEN macro in public C API
rb_struct_size returns an Integer VALUE, so it must be converted
to a `long` for compatibility with previous Ruby C API versions.

* ext/-test-/struct/len.c: new
* test/-ext-/struct/test_len.rb: new
* include/ruby/ruby.h (RSTRUCT_LEN): use NUM2LONG
  [ruby-core:80692] [Bug #13439]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-15 00:46:00 +00:00
ko1
db2822a5bc sync certainly.
* test/ruby/test_io.rb (test_race_closed_stream): awit for 'sleep' state.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-14 18:19:37 +00:00
ko1
2ad7a741c0 more explicit synchronization.
* test/ruby/test_io.rb (test_race_closed_stream): wait for blocking by r.gets.
  On some systems (for example, high load average systems) can't start Thread
  correctly and can't wait r.gets in invoked Thread.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-14 18:14:25 +00:00
nobu
8c84803d80 IPSocket#inspect
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-14 10:03:43 +00:00
ko1
3c547e1129 increase timeout seconds.
* test/ruby/test_trace.rb (test_trace_stackoverflow): on some platforms
  this test fails because of timeout.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-14 02:19:39 +00:00
ko1
4032f45dc2 Terminate created threads.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-13 16:19:46 +00:00
nobu
38174633e2 thread.c: disable VM events when stack overflow
* thread.c (ruby_thread_stack_overflow): disable VM events when
  stack overflow occurred; it causes another stack overflow again
  in making backtrace object, and crashes.
  [ruby-core:80662] [Bug #13425]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-13 07:38:23 +00:00
hsbt
d9df358ea8 Use assert_raise instead of assert_raises.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-12 00:21:20 +00:00
hsbt
83735ba29a Merge json-2.0.4.
* https://github.com/flori/json/releases/tag/v2.0.4
  * 09fabeb03e/CHANGES.md (2017-03-23-204)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-12 00:21:18 +00:00
nobu
f9ca643683 thread.c: refine stream closed message
* thread.c (Init_Thread): [EXPERIMENTAL] refine the "stream
  closed" special exception message, by explicating that it is
  caused by threading.  [ruby-core:80583] [Bug #13405]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-09 05:09:44 +00:00
nobu
1ec8873818 test/unit.rb: no jobserver in workers
* test/lib/test/unit.rb (Test::Unit::Parallel#process_args):
  worker processes do not access job server.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-09 01:23:01 +00:00
nobu
08e74bfa2c use dedicated assertions
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58272 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-07 13:26:12 +00:00
nobu
5c79f6dbb7 fix condition of assert_not_respond_to
* test/lib/test/unit/assertions.rb (assert_not_respond_to): fix
  condition to assert.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-07 04:00:56 +00:00
nobu
495b2a246f assert_not_respond_to private method
* test/lib/test/unit/assertions.rb (assert_not_respond_to): allow
  private flag as well as assert_respond_to.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-07 03:56:16 +00:00