Commit graph

5239 commits

Author SHA1 Message Date
nobu
6bca9dc372 thread.c: invert
* ext/thread/thread.c (queue_pop_should_block): the first argument of
  Queue#pop is non_block and inverted for should_block.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-07 19:04:39 +00:00
nobu
398c3cab6d thread.c: function cast
* ext/thread/thread.c (queue_sleep): get rid of casting function
  pointer.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42878 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-07 19:04:37 +00:00
akr
dd946739dd * ext/socket/mkconstants.rb (TCP_FASTOPEN): Defined for TCP fast open.
[ruby-core:57048] [Feature #8871] patch by Masaki Matsushita.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-07 01:41:47 +00:00
glass
e334bb2ce5 * common.mk: use RUNRUBY instead of MINIRUBY because MINIRUBY can't
require extension libraries. The patch is from nobu
  (Nobuyoshi Nakada).

* ext/thread/extconf.rb: for build ext/thread/thread.c.

* include/ruby/intern.h: ditto.

* thread.c: ditto.

* lib/thread.rb: removed and replaced by ext/thread/thread.c.

* ext/thread/thread.c: Queue, SizedQueue and ConditionVariable
  implementations in C. This patch is based on patches from panaggio
  (Ricardo Panaggio) and funny_falcon (Yura Sokolov) and  ko1
  (Koichi Sasada). [ruby-core:31513] [Feature #3620]

* test/thread/test_queue.rb (test_queue_thread_raise): add a test for
  ensuring that killed thread should be removed from waiting threads.
  It is based on a code by ko1 (Koichi Sasada). [ruby-core:45950]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-06 15:15:07 +00:00
akr
42a3e0dc55 * rational.c: Include gmp.h if GMP is used.
(GMP_GCD_DIGITS): New macro.
  (rb_gcd_gmp): New function.
  (f_gcd_normal): Renamed from f_gcd.
  (rb_gcd_normal): New function.
  (f_gcd): Invoke rb_gcd_gmp or f_gcd_normal.

* internal.h (rb_gcd_normal): Declared.
  (rb_gcd_gmp): Ditto.

* ext/-test-/rational: New directory.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-06 12:07:08 +00:00
tenderlove
8579a33966 * ext/psych/lib/psych/visitors/yaml_tree.rb: use double quotes when
strings start with special characters.
  [Fixes GH-157] https://github.com/tenderlove/psych/issues/157

* test/psych/test_string.rb: test for change.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-05 17:39:53 +00:00
akr
b1b395911c * bignum.c (GMP_DIV_DIGITS): New macro.
(bary_divmod_gmp): New function.
  (rb_big_divrem_gmp): Ditto.
  (bary_divmod_branch): Ditto.
  (bary_divmod): Use bary_divmod_branch.
  (bigdivrem): Ditto.

* internal.h (rb_big_divrem_gmp): Declared.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 23:22:27 +00:00
akr
8f8bf8243d * bignum.c (rb_big_divrem_normal): New function.
* internal.h (rb_big_divrem_normal): Declared.

* ext/-test-/bignum/div.c: New file.

* test/-ext-/bignum/test_div.rb: New file.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 16:10:06 +00:00
akr
2583689340 * bignum.c (GMP_STR2BIG_DIGITS): New macro.
(str2big_gmp): New function.
  (rb_cstr_to_inum): Use str2big_gmp for big bignums.
  (rb_str2big_gmp): New function.

* internal.h (rb_str2big_gmp): Declared.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-03 11:20:02 +00:00
usa
1b126277ed * ext/win32/lib/win32/registry.rb (Win32::Registry#values): added.
[Feature #7763] [ruby-core:51783]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42805 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-03 10:46:58 +00:00
akr
0b2413b471 * bignum.c (rb_str2big_poweroftwo): New function.
(rb_str2big_normal): Ditto.
  (rb_str2big_karatsuba): Ditto.

* internal.h (rb_str2big_poweroftwo): Declared.
  (rb_str2big_normal): Ditto.
  (rb_str2big_karatsuba): Ditto.

* ext/-test-/bignum/str2big.c: New file.

* test/-ext-/bignum/test_str2big.rb: New file.

* ext/-test-/bignum/depend: Add the dependency for str2big.c.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42797 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-03 03:50:15 +00:00
akr
1df73dd9ad Reduce NUM2INT invocations.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-03 03:36:18 +00:00
charliesome
a056098cb7 * NEWS: Add note about frozen string literals
* compile.c (case_when_optimizable_literal): optimize NODE_LIT strings
  in when clauses of case statements

* ext/ripper/eventids2.c: add tSTRING_SUFFIX

* parse.y: add 'f' suffix on string literals for frozen strings

* test/ripper/test_scanner_events.rb: add scanner tests

* test/ruby/test_string.rb: add frozen string tests

[Feature #8579] [ruby-core:55699]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-02 07:11:41 +00:00
akr
a3e3cce183 Fix funciton name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42765 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 16:06:20 +00:00
akr
b64c2c348f * bignum.c (GMP_BIG2STR_DIGITS): New constant.
(big2str_gmp): New function.
  (rb_big2str1): Use big2str_gmp for big bignums.

* internal.h (rb_big2str_gmp): Declared.

* ext/-test-/bignum/big2str.c (big2str_gmp): New method.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 14:34:53 +00:00
akr
7dd1604603 * bignum.c (big2str_base_poweroftwo): Renamed from
big2str_base_powerof2.
  (rb_big2str_poweroftwo): New function for test.
  (big2str_generic): Extracted from rb_big2str1.
  (rb_big2str_generic): New function for test.

* internal.h (rb_big2str_poweroftwo): Declared.
  (rb_big2str_generic): Ditto.

* ext/-test-/bignum/big2str.c: New file.

* test/-ext-/bignum/test_big2str.rb: New file.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 11:35:57 +00:00
akr
83a0709174 * bignum.c: Use GMP to accelerate big Bignum multiplication.
(bary_mul_gmp): New function.
  (bary_mul): Use bary_mul_gmp.
  (bigsq): Use different threshold with GMP.

* configure.in: Detect GMP.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-31 12:17:18 +00:00
drbrain
9f2f1fcbc8 * ext/zlib/zlib.c (zstream_run): Fix handling of deflate streams that
need a dictionary but are being decompressed by Zlib::Inflate.inflate
  (which has no option to set a dictionary).  Now Zlib::NeedDict is
  raised instead of crashing.  [ruby-trunk - Bug #8829]
* test/zlib/test_zlib.rb (TestZlibInflate):  Test for the above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-28 20:36:21 +00:00
tenderlove
48602d1dbf * ext/psych/lib/psych/scalar_scanner.rb: invalid floats should be
treated as strings.
  [Fixes GH-156] https://github.com/tenderlove/psych/issues/156

* test/psych/test_string.rb: test for change

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-28 17:42:38 +00:00
drbrain
00aff4d8bc * ext/openssl/ossl_ssl.c (ossl_ssl_read): Replace duplicate
wait_writable with wait_readable.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42711 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-27 19:54:53 +00:00
ko1
69c8ab256d * ext/stringio/stringio.c (strio_read_nonblock): declare local
variables at the first of function.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-27 04:04:33 +00:00
tenderlove
988ca60565 * io.c (io_read_nonblock): support non-blocking reads without raising
exceptions. As in: `io.read_nonblock(size, exception: false)`
  [ruby-core:38666] [Feature #5138]
* ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): ditto
* ext/stringio/stringio.c (strio_sysread): ditto
* io.c (rb_io_write_nonblock): support non-blocking writes without
  raising an exception.
* ext/openssl/ossl_ssl.c (ossl_ssl_write_internal): ditto
* test/openssl/test_pair.rb (class OpenSSL): tests
* test/ruby/test_io.rb (class TestIO): ditto
* test/socket/test_nonblock.rb (class TestSocketNonblock): ditto
* test/stringio/test_stringio.rb (class TestStringIO): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-26 22:41:44 +00:00
ko1
ad0ef29da7 * array.c (rb_ary_splice): use RARRAY_PTR_USE() without WB because
there are not new relations.
* enum.c (enum_sort_by): ditto.
* struct.c (setup_struct): use RARRAY_RAWPTR().
* vm_eval.c (yield_under): ditto.
* ext/pathname/pathname.c (path_entries): use RARRAY_AREF().
* ext/pathname/pathname.c (path_s_glob): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-26 05:47:27 +00:00
nobu
fb9b9b1862 win32ole.c: ID overflow
* ext/win32ole/win32ole.c (GetIDsOfNames): check ID overflow against
  DISPID, aka LONG, which is always 4 bytes.

* ext/win32ole/win32ole.c (Invoke): use ID for method name to get rid
  of losing upper bits.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 14:09:49 +00:00
nobu
f539e9cbf3 win32ole.c: store directly
* ext/win32ole/win32ole.c (ole_wc2vstr): store converted multibyte
  string to string value directly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 08:17:59 +00:00
nobu
dcdde335a6 win32ole.c: suppress a warning
* ext/win32ole/win32ole.c (ole_vstr2wc): downcast to suppress a
  warning.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 08:17:56 +00:00
nobu
df3c472ac3 win32ole.c: check method name length
* ext/win32ole/win32ole.c (fole_missing): reject too long method name,
  as Ruby string length is limited to long.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 08:17:53 +00:00
nobu
91218a0e9f win32ole.c: suppress warnings
* ext/win32ole/win32ole.c (ole_excepinfo2msg, ole_wc2vstr): get rid of
  size_t with rb_enc_str_new() to suppress warnings on x64-mswin32.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 08:17:50 +00:00
nobu
3134c5eb62 win32ole.c: no copy string
* ext/win32ole/win32ole.c (foletypelib_name, foletypelib_path):
  WC2VSTR() returns a string in cWIN32OLE_enc, no need to copy another
  string.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 08:17:47 +00:00
nobu
e2b08f40b3 win32ole.c: fix type
* ext/win32ole/win32ole.c (ole_method_docinfo_from_type): fix return type.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 08:17:43 +00:00
zzak
77ca81e465 * ext/socket/unixserver.c: [DOC] Document #accept
* ext/socket/tcpserver.c: ditto
* ext/socket/udpsocket.c: [DOC] Fix indentation of documentation
* ext/socket/socket.c: ditto
  Patches by David Rodríguez [ruby-core:56734] [Bug #8802]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-19 16:54:59 +00:00
ktsj
00b8bd5c87 * error.c, object.c, ext/readline/README.ja: [DOC] $SAFE=4 is obsolete.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-18 10:36:54 +00:00
zzak
d075c430cb * ext/dbm/extconf.rb: [DOC] Hide from RDoc
Some libraries might want to document extconf.rb so RDoc treats it
  like any other ruby program. However, DBM users shouldn't care about
  these methods.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-12 03:59:50 +00:00
zzak
eadb8b5897 * ext/dbm/dbm.c: [DOC] Reformat headings of DBM class
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-12 03:54:32 +00:00
naruse
4852e7e673 fix r42527 again; [Bug #8760] [ruby-dev:47608] [ruby-dev:47609]
Remove check rl_instream != ifp->stdio_file.
rl_instream is made from duped fd and we cannnot compare.
This fix seems still buggy when rl_instream is manually changed from
other extension libraries.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-12 02:25:49 +00:00
naruse
0e2a3cccf6 refix r42525 set stdio_file only if stdio
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-12 01:04:01 +00:00
naruse
874dc2562d * ext/readline/readline.c (readline_s_set_input): on OS X with editline,
Readline.readline doesn't work because readline_get doesn't use
  rl_getc. The difference is introduced by r42402 [ruby-dev:47509]
  [Bug #8644]. Before it rb_io_stdio_file set ifp->stdio_file.
  Therefore add manually setting the value.

* ext/readline/readline.c (readline_s_set_onput): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-11 17:58:07 +00:00
nobu
e315aa0c41 Revert r42502 "ext/-test-/*/depend: TEST_INIT_FUNCS"
Makefiles should be re-configured by extract_makefile.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-11 07:53:32 +00:00
nobu
3a589c6979 ext/-test-/*/depend: TEST_INIT_FUNCS
* ext/-test-/{bignum,debug,exception,string}/depend: TEST_INIT_FUNCS
  is created by globbing in extconf.rb

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-10 23:55:09 +00:00
naruse
9962aad7b0 * file.c (rb_str_normalize_ospath):
HFS Plus (Mac OS Extended) uses a variant of Normal Form D in which
  U+2000 through U+2FFF, U+F900 through U+FAFF, and U+2F800 through
  U+2FAFF are not decomposed (this avoids problems with round trip
  conversions from old Mac text encodings).
  http://developer.apple.com/library/mac/qa/qa1173/_index.html
  Therefore fix r42457 to exclude the range.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-10 20:44:10 +00:00
ktsj
eca115c34b * ext/readline/readline.c (insert_ignore_escape): suppress
logical-op-parentheses warning.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-09 15:27:41 +00:00
nobu
c59ba9ce81 io-console.gemspec: drop 1.9
* ext/io/console/io-console.gemspec: drop 1.9 support since
  rb_cloexec_open() is mandatory now.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-09 13:56:04 +00:00
charliesome
ecab690862 * ext/io/console/console.c: delete redefinition of rb_cloexec_open.
This function is always defined by io.c and is declared as non-static
  in a header file, so this declaration causes a compilation error.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-09 10:18:56 +00:00
zzak
aecd5b67d5 * ext/openssl/ossl_hmac.c: [DOC] Documentation for OpenSSL::HMAC
based on a patch by @repah documenting-ruby/ruby#14
  https://github.com/documenting-ruby/ruby/pull/14


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-06 23:32:42 +00:00
kouji
ead6b6e721 * ext/readline/readline.c (readline_s_delete_text): remove
checking "$SAFE == 4".

* ext/readline/readline.c: fix rdoc, remove "Raises SecurityError"
  and add "Raises NotImplementedError".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-06 13:19:19 +00:00
kouji
19efdcee1e * ext/readline/readline.c, test/readline/test_readline.rb: fix
indent.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42408 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-06 13:07:25 +00:00
kouji
a78713ce45 * ext/readline/readline.c (readline_s_set_point, Init_readline):
add Readline.point=(pos). Patched by naruse.  [ruby-dev:47535]
  [Feature #8675]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-06 12:52:22 +00:00
nobu
b4e9b0d19c json/add/range.rb: use Range#end
* ext/json/lib/json/add/range.rb (Range#as_json): use Range#end
  instead of Range#last which can be affected by Range#exclusive?.
  ref [Bug #8739]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-06 12:38:53 +00:00
kouji
d2fa5dff12 * ext/readline/readline.c (Init_readline, readline_s_set_output)
(clear_rl_outstream, readline_s_set_input, clear_rl_instream)
(readline_readline): fix causing SEGV if closed IO object that is
  set Readline.input or Readline.output. Patched by akr
  [ruby-dev:47509] [Bug #8644]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-06 12:24:40 +00:00
nagai
0d5ec8a346 * ext/tk/extconf.rb: Don't add "-ltk -ltcl" for MacOSX frameworks, because they may link improper libraries.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-04 01:31:39 +00:00