Commit graph

8869 commits

Author SHA1 Message Date
nobu
0ba2ccc51d proc.c: inadvertent ID
* proc.c (rb_mod_define_method): get rid of inadvertent ID
  creations at error.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-19 04:55:01 +00:00
hsbt
5d6ca9e950 * include/ruby/ruby.h: $SAFE=2 is now obsolete.
* dir.c, ext/fiddle/handle.c, ext/socket/basicsocket.c, file.c
  gc.c, io.c, process.c, safe.c, signal.c, win32/file.c:
  removed code for $SAFE=2
* test/erb/test_erb.rb, test/fiddle/test_handle.rb
  test/ruby/test_env.rb: removed tests for $SAFE=2.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-18 14:21:03 +00:00
normal
072b3c8624 test/socket/test_unix.rb: replace sleep with select
Not sure what drugs I was on, but blindly sleeping instead of
using IO#wait or IO.select to wait for data on a socket is
completely wrong.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-18 09:25:37 +00:00
nobu
51de63dfb9 error.c: NameError#receiver
* error.c (name_err_receiver): add NameError#receiver method.
  [Feature #10881]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-18 04:32:50 +00:00
hsbt
bbf440c90b * include/ruby/ruby.h: $SAFE=3 is now obsolete.
* ext/socket/init.c, ext/socket/socket.c, ext/socket/tcpsocket.c
  ext/socket/udpsocket.c, gc.c, object.c, re.c, safe.c: removed code
  for $SAFE=3
* bootstraptest/test_method.rb, test/erb/test_erb.rb, test/ruby/test_dir.rb
  test/ruby/test_file.rb, test/ruby/test_method.rb, test/ruby/test_regexp.rb
  test/ruby/test_thread.rb: remove tests for $SAFE=3

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50932 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-17 05:29:51 +00:00
hsbt
96fb819676 * lib/csv.rb: accept to use Range object for row selection.
[Feature #11267][ruby-dev:49091]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-17 01:58:34 +00:00
nobu
e5471cbe63 servlet.rb: requires json
* lib/rdoc/servlet.rb (documentation_search, root_search):
  requires json for JSON.dump and fix sporadic failures due to
  the loading order.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50928 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-17 00:50:15 +00:00
nobu
c2c81723a4 test_nonblock.rb: use assert_predicate
* test/socket/test_nonblock.rb (test_recv_nonblock_no_exception),
  (test_recvfrom_nonblock_no_exception): use assert_predicate for
  failure messages.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-16 09:29:17 +00:00
nobu
85d5df5528 test_nonblock.rb: fix failure on OSX
* test/socket/test_nonblock.rb (test_recvfrom_nonblock_no_exception):
  no destination to already connected socket.  fix failure on OSX.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-16 09:26:26 +00:00
ko1
5a17488189 * test/objspace/test_objspace.rb: relax pattern because uncollectible
flag and marked flag can be false at major GC.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-16 08:38:55 +00:00
normal
a02a3f4649 socket: allow explicit buffer for recv and recv_nonblock
This reduces GC overhead and makes the API more consistent
with IO#read and IO#read_nonblock.

* ext/socket/basicsocket.c (bsock_recv): document outbuf
* ext/socket/unixsocket.c (unix_recvfrom): ditto
* ext/socket/init.c (rsock_strbuf, recvfrom_locktmp): new functions
  (rsock_s_recvfrom): support destination buffer as 3rd arg
  (rsock_s_recvfrom_nonblock): ditto
* string.c (rb_str_locktmp_ensure): export for internal ext
* test/socket/test_nonblock.rb: test recv_nonblock
* test/socket/test_unix.rb: test recv
  [ruby-core:69543] [Feature #11242]

Benchmark results:

             user     system      total        real
alloc    0.130000   0.280000   0.410000 (  0.420656)
extbuf   0.100000   0.220000   0.320000 (  0.318708)

-------------------8<--------------------
require 'socket'
require 'benchmark'
nr = 100000
msg = ' ' * 16384
size = msg.bytesize
buf = ' ' * size
UNIXSocket.pair(:DGRAM) do |a, b|
  Benchmark.bmbm do |x|
    x.report('alloc') do
      nr.times do
        b.send(msg, 0)
        a.recv(size, 0)
      end
    end

    x.report('extbuf') do
      nr.times do
        b.send(msg, 0)
        a.recv(size, 0, buf)
      end
    end
  end
end

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-15 20:02:43 +00:00
normal
b9a91334c5 socket: allow exception-free nonblocking sendmsg/recvmsg
As documented before, exceptions are expensive and IO::Wait*able are too
common in socket applications to be the exceptional case.  Datagram
sockets deserve the same API which stream sockets are allowed with
read_nonblock and write_nonblock.

Note: this does not offer a performance advantage under optimal
conditions when both ends are equally matched in speed, but it it
does make debug output cleaner by avoiding exceptions whenever
the receiver slows down.

* ext/socket/ancdata.c (bsock_sendmsg_internal, bsock_recvmsg_internal):
  support "exception: false" kwarg
* ext/socket/init.c (rsock_s_recvfrom_nonblock):
  ditto
* ext/socket/init.c (rsock_s_recvfrom_nonblock): use rsock_opt_false_p
* ext/socket/socket.c (sock_connect_nonblock): ditto
* ext/socket/rubysocket.h (rsock_opt_false_p): new function
* ext/socket/basicsocket.c (bsock_recv_nonblock): update rdoc
* ext/socket/udpsocket.c (udp_recvfrom_nonblock): ditto
* test/socket/test_nonblock.rb: new tests

[ruby-core:69542] [Feature #11229]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-15 19:38:49 +00:00
knu
9f2e41b7e0 * lib/set.rb: Make Set#each and SortedSet#each generate a sized
enumerator. [GH-931] by kachick (Kenichi Kamiya)

* test/test_set.rb: Import tests from Set into SortedSet. [GH-931]
  by kachick (Kenichi Kamiya)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-15 05:37:38 +00:00
nobu
23f371fd19 envutil.rb: show failure description
* test/lib/envutil.rb (assert_separately): always show failure
  description.  signals are not available on Windows.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-15 01:52:00 +00:00
nobu
5c5b2505a1 envutil.rb: no signal description iff possible
* test/lib/envutil.rb (FailDesc): show signal description only if
  it is available, or nothing if not killed by a signal.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-15 01:51:49 +00:00
nobu
03ced98dfe test_require.rb: wait loadig
* test/ruby/test_require.rb (test_loading_fifo_threading): wait
  until the main thread blocks by loading.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 23:05:52 +00:00
kosaki
8ecd3b7114 * thread.c (thread_start_func_2): don't interrupt when last thread exit
unless main thread is already exited. Otherwise main thread could be
  wrongly interrupted when it uses rb_thread_call_without_gvl(). Patch
  by Takehiro Kubo. [Bug #11237][ruby-dev:49044][GH-898]
* test/-ext-/gvl/test_last_thread.rb: new test for the above fix.
* ext/-test-/gvl/call_without_gvl/call_without_gvl.c: new ext for the
  above test.
* ext/-test-/gvl/call_without_gvl/extconf.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 22:52:01 +00:00
akr
8bb581f8dd * ext/pathname/lib/pathname.rb (descend): Blockless form supported.
(ascend): Ditto.
  [ruby-core:68820] [Feature #11052] Patch by Piotr Szotkowski.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 15:14:46 +00:00
usa
16917fa698 * test/ruby/test_require.rb (TestRequire#test_loading_fifo_threading): omit on
Windows.  the platform does not support fifo.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50896 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 13:48:17 +00:00
nobu
0b2f4ab07e test_prime.rb: descriptive assertions
* test/test_prime.rb: use more descriptive assertions for better
  failure meessages, instead of simple assert.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 12:13:04 +00:00
akr
11aa7c9604 * enum.c (enum_chunk_while): New method Enumerable#chunk_while.
[ruby-core:67738] [Feature #10769] proposed by Tsuyoshi Sawada.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 08:54:19 +00:00
nobu
0b3ef899f2 file.c: open without gvl
* file.c (rb_file_load_ok): try opening file without gvl not to
  lock entire process.  [Bug #11060]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50887 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 08:20:43 +00:00
usa
cda0d56296 * test/test_unicode_normalize.rb: get rid of a warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 00:59:23 +00:00
eregon
7151598d5b * test/ruby/test_io.rb: add test for IO.binread fd leak.
See r50881.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 21:26:32 +00:00
eregon
b1e064fc05 * test/lib/leakchecker.rb (check): refactor.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 19:42:03 +00:00
eregon
c4dba39028 * test/lib/leakchecker.rb: Return false for no leaks.
Otherwise the GC could run for nothing.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 19:41:25 +00:00
gogotanaka
4770fedf7a * test/test_cmath.rb: Adding parens to suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 18:34:13 +00:00
naruse
4ff07119e9 * file.c (rb_stat_ino): get inode from the interval of struct st.
* win32/win32.c (stati64_set_inode): get nFilIndexHigh/Low, and set it
  to the interval of struct st as inode.

* win32/win32.c (stati64_set_inode_handle): call stati64_set_inode.

* win32/win32.c (rb_w32_fstati64): call stati64_set_inode_handle.

* win32/win32.c (stati64_handle): call stati64_set_inode.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 11:46:38 +00:00
naruse
29513dbc47 sleep thread until assertions
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 08:56:11 +00:00
naruse
a34ca0c98d suppress warning: ambiguous first argument; put parentheses or a space even after `/' operator
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 08:42:02 +00:00
naruse
712a570f56 * vm_core.h (rb_thread_t): add th->name.
* vm.c (th_init): initialize th->name.

* thread.c (Init_Thread): add Thread.name and Thread.name=.

* thread.c (rb_thread_inspect): show thread's name if set.

* thread.c (rb_thread_getname): defined.

* thread.c (rb_thread_setname): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 08:39:30 +00:00
nobu
37055f9da0 envutil.rb: failure description
* test/lib/envutil.rb (assert_no_memory_leak): show detail failure
  description.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 00:19:10 +00:00
marcandre
b28f3e5c4f * lib/prime.rb: Return sized enumerators.
Patch by Kenichi Kamiya [GH-931]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 15:45:59 +00:00
marcandre
5b78e48c31 * lib/prime.rb: Fix with_object with no block given
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 15:45:44 +00:00
marcandre
dd8f914d3b * lib/prime.rb: Have with_index accept an offset parameter.
Based on patch by T Yamada. [#11007]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 15:45:22 +00:00
kazu
e738b62df1 fix error
* test/ruby/test_extlibs.rb (TestExtLibs::check_existence): fix
  error. [Bug #11255] [ruby-dev:49079]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 13:22:55 +00:00
nobu
3d980e1643 vm.c: break from orphan block
* vm.c (rb_vm_search_cf_from_ep): break from orphan block is
  possible condition, but not [BUG].
  [ruby-core:69548] [Bug #11254]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 13:01:40 +00:00
usa
dc0d502b71 * pack.c (pack_{un,}pack): new template character j and J, pointer
with signed and unsigned integers.

* NEWS: mention bout this featre.
  [Feature #11215] [ruby-dev:49015]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 12:22:36 +00:00
usa
2bc2802096 * file.c (File::SHARE_DELETE): new flag to be able to delete opened file
on Windows.

* include/win32/win32.c (O_SHARE_DELETE): new pseudo file mode flag.

* win32/win32.c (rb_w32_{w,}open): support above flag.  [EXPERIMENTAL]

* NEWS: mention about this feature.
  [Feature #11218] [ruby-dev:49022]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 12:14:06 +00:00
nobu
86eaa24570 hash.c: fetch_values
* hash.c (rb_hash_fetch_values): add `Hash#fetch_values`.
  [Feature #10017] [Fix GH-776]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 08:34:17 +00:00
nobu
3b3bc21b53 test_nofree.rb: fix commit miss
* test/-ext-/string/test_nofree.rb (test_no_memory_leak): remove
  limit and make the interation longer.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50843 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 08:04:39 +00:00
nobu
d5a78c89e5 test_nofree.rb: rehearsal
* test/-ext-/string/test_nofree.rb (test_no_memory_leak): add a
  rehearsal.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 08:02:49 +00:00
nobu
c64d283f9a array.c: bsearch_index
* array.c (rb_ary_bsearch_index): Implement Array#bsearch_index
  method, which is similar to bsearch and returns the index or
  nil.  [Feature #10730]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 07:28:21 +00:00
hsbt
038213351b * lib/rubygems.rb: bump version to 2.4.7 and 2.4.8. these versions fixed
CVE-2015-3900.
* lib/rubygems/remote_fetcher.rb: ditto.
* test/rubygems/test_gem_remote_fetcher.rb: added testcase for CVE-2015-3900

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50829 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-11 05:34:52 +00:00
nobu
37e3fec4bb array.c: fix array size overflow
* array.c (ary_ensure_room_for_push): check if array size will
  exceed maxmum size to get rid of buffer overflow.
  [ruby-dev:49043] [Bug #11235]
* array.c (ary_ensure_room_for_unshift, rb_ary_splice): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-11 04:50:22 +00:00
usa
b12540e1eb * test/test_cmath.rb (TestCMath#test_trigonometric_functions): should
not compare float values (in complex values) by `==`.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-11 04:19:15 +00:00
gogotanaka
4ddbc83c91 * test/test_cmath.rb: Add assertions for trigonometric functions.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-10 20:04:37 +00:00
gogotanaka
fcf7d234fb * test/test_cmath.rb: Add assertions for error handling.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-10 19:39:59 +00:00
gogotanaka
3eb63250ab * Move test cases from test/ruby/test_complex.rb to test/test_cmath.rb
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-06 22:11:00 +00:00
normal
5d983e4fb2 test/socket/test_nonblock.rb: try to avoid EMSGSIZE
We want to test the IO::WaitWritable behavior, so silently
discarding Errno::EMSGSIZE prevents the test from being
effective.
[ruby-core:69466]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50788 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-05 23:55:23 +00:00