PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/alt/ruby25/share/doc/alt-ruby25/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/alt/ruby25/share/doc/alt-ruby25/ChangeLog |
------------------------------------------------------------------------ r67939 | usa | 2021-04-05 20:46:35 +0900 (Mon, 05 Apr 2021) | 1 line add tag v2_5_9 ------------------------------------------------------------------------ r67938 | usa | 2021-04-05 20:46:23 +0900 (Mon, 05 Apr 2021) | 2 lines Oops, forgotten to add ------------------------------------------------------------------------ r67937 | usa | 2021-04-05 20:45:31 +0900 (Mon, 05 Apr 2021) | 2 lines REXML 3.1.7.4 ------------------------------------------------------------------------ r67893 | usa | 2021-02-16 22:35:19 +0900 (Tue, 16 Feb 2021) | 4 lines Backport webrick patch for CVE-2020-25613 [Backport #17201] ------------------------------------------------------------------------ r67889 | usa | 2020-12-09 22:55:29 +0900 (Wed, 09 Dec 2020) | 2 lines [Backport #17381] repalce the old certs in RubyGems ------------------------------------------------------------------------ r67887 | usa | 2020-10-28 22:12:06 +0900 (Wed, 28 Oct 2020) | 21 lines merge revision(s): 07786ed * test/net/http/test_https.rb: Stop the error due to openssl 1.1.1h On some environments that uses OpenSSL 1.1.1h, the two tests now fail. http://rubyci.s3.amazonaws.com/android29-x86_64/ruby-master/log/20200924T062352Z.fail.html.gz https://github.com/ruby/ruby/runs/1159288773?check_suite_focus=true ``` 1) Failure: TestNetHTTPS#test_get [/data/data/com.termux/files/home/cb/tmp/build/202 00924T062352Z/ruby/test/net/http/test_https.rb:47]: <"0\x82\x03\xED0\x82\x02\xD5\xA0\x03..."> expected but was <"0\x82\x03\xE30\x82\x02\xCB\xA0\x03...">. ``` Not sure why, but verify_callback now seems to receive only SERVER_CERT but not CA_CERT. It would be good to investigate the issue furthermore, but tentatively, I want to stop the failures. ------------------------------------------------------------------------ r67885 | usa | 2020-06-14 01:03:14 +0900 (Sun, 14 Jun 2020) | 13 lines merge revision(s) 7e289cdf3fed588b2d5a6973e29f9ff95cb8d76c: [Backport #16949] [ruby/psych] Fixing compatibility with libyaml 0.2.5 The main issue is that commas aren't allowed in local tags. libyaml was updated to follow the spec, and our tests were out of date. See: https://github.com/yaml/libyaml/issues/196 https://github.com/ruby/psych/commit/3f5e520fd3 Note that this is not security fix, but need for release processs. ------------------------------------------------------------------------ r67881 | usa | 2020-03-31 21:13:31 +0900 (Tue, 31 Mar 2020) | 5 lines merge revision(s) 47a1872cd8b901b8aab6dedce7fa3807c97d290d: [Backport #16681] Use osuosl instead of GitHub releases Because the package provided by GitHub releases is different from sourceware. ------------------------------------------------------------------------ r67877 | usa | 2020-03-31 20:40:08 +0900 (Tue, 31 Mar 2020) | 8 lines merge revision(s) 61b7f86248bd121be2e83768be71ef289e8e5b90 * ext/socket/init.c: do not return uninitialized buffer Resize string buffer only if some data is received in BasicSocket#read_nonblock and some methods. Co-Authored-By: Samuel Williams <samuel.williams@oriontransfer.co.nz> ------------------------------------------------------------------------ r67872 | usa | 2020-03-31 07:47:56 +0900 (Tue, 31 Mar 2020) | 7 lines merge revision(s) 4adb2d655dcd54b28366b4d17e86b21e2b622cd1: [Backport #16738] Make RbConfig::CONFIG values mutable [Bug #16738] As `RbConfig.expand` modifies the argument and involved `CONFIG` values, its values should be mutable. ------------------------------------------------------------------------ r67871 | usa | 2020-03-31 07:44:13 +0900 (Tue, 31 Mar 2020) | 28 lines merge revision(s) 62743: [Backport #16687] Fix FrozenError on `Ripper.slice` Currently `Ripper.slice` raises a FrozenError ```ruby require 'ripper' p Ripper.slice('foo', 'ident') ``` ``` /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:193:in `concat': can't modify frozen String (FrozenError) from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:193:in `block in compile' from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:190:in `scan' from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:190:in `compile' from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:169:in `initialize' from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:151:in `new' from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:151:in `token_match' from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:144:in `slice' from /tmp/tmp.kb4cnhvum2/test.rb:2:in `<main>' ``` This patch will fix the problem. [Fix GH-1837] From: Masataka Pocke Kuwabara <kuwabara@pocke.me> ------------------------------------------------------------------------ r67870 | usa | 2020-03-31 07:33:37 +0900 (Tue, 31 Mar 2020) | 4 lines merge revision(s) 8a6ba10f9dd456cf54de800203cf04bbe42271fb: [Backport #12392] Do not make disabled directories at installation [Bug #12392] ------------------------------------------------------------------------ r67869 | usa | 2020-03-31 07:22:10 +0900 (Tue, 31 Mar 2020) | 6 lines merge revision(s) 36e9ed7fef6eb2d14becf6c52452e4ab16e4bf01: [Backport #16698] backport 80b5a0ff2a7709367178f29d4ebe1c54122b1c27 partially as a securify fix for CVE-2020-10663. The patch was provided by Jeremy Evans. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ------------------------------------------------------------------------ r67868 | usa | 2020-03-31 07:11:15 +0900 (Tue, 31 Mar 2020) | 7 lines merge revision(s) 6e6844320de989cb88a154e2ac75066ccea1bba2: [Backport #16619] Fixed duplicated warning As `command_rhs` is always a "value expression", `command_asgn` does not need the same check. ------------------------------------------------------------------------ r67867 | usa | 2020-03-31 07:05:30 +0900 (Tue, 31 Mar 2020) | 7 lines merge revision(s) 6a2d779027818eda418c9118f700b36816e833a5: [Backport #16681] Switch to download libffi source package to github releases from sourceware.org [Bug #16681] (cherry picked from commit 86022167461dc90b70164e2bb23316959bbfd6ba) ------------------------------------------------------------------------ r67866 | usa | 2020-03-31 06:51:46 +0900 (Tue, 31 Mar 2020) | 10 lines merge revision(s) 77596fb7a91cc119b25ac9e19b3c8682709765b4: [Backport #16138] Do not turn on keyword_init for Struct subclass if keyword hash is empty This was accidentally turned on because there was no checking for Qundef. Also, since only a single keyword is currently supported, simplify the rb_get_kwargs call. ------------------------------------------------------------------------ r67865 | usa | 2020-03-31 06:49:42 +0900 (Tue, 31 Mar 2020) | 8 lines merge revision(s) 4f19666e8b144600e959e4673f79d63f98bd637d: [Backport #16508] `Regexp` in `MatchData` can be `nil` `String#sub` with a string pattern defers creating a `Regexp` until `MatchData#regexp` creates a `Regexp` from the matched string. `Regexp#last_match(group_name)` accessed its content without creating the `Regexp` though. [Bug #16508] ------------------------------------------------------------------------ r67864 | usa | 2020-03-31 06:46:27 +0900 (Tue, 31 Mar 2020) | 28 lines merge revision(s) d6a2bce64a7fa1099e507e1d36b5f1533f42f60f,c687be4bc01c9ce52ea990945d9304d6fe59fe9b: [Backport #16159] time.c (find_time_t): fix round-to-zero bug `find_time_t` did not work correctly for year older than the Epoch because it used C's integer division (which rounds negative to zero). For example, `TIme.new(1933)` returned a wrong time whose year is 1922 in Asia/Kuala_Lumpur because there is no 00:00:00 1st Jan. 1933 in the time zone. ``` $ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)' 1932-12-31 00:00:00 +0700 ``` This change fixes the issue by using `DIV` macro instead of `/`. Now `Time.new(1933)` returns a time in 1933. ``` $ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)' 1933-01-01 00:20:00 +0720 ``` [Bug #16159] Added a test for [Bug #16159] ------------------------------------------------------------------------ r67863 | usa | 2020-03-31 06:37:50 +0900 (Tue, 31 Mar 2020) | 21 lines merge revision(s) 203b7fa1ae8cc40d41c38d684f70b3fea7fae813,0131fab749fb76800de09e49a6abf910201c5b58,9c0cd5c569ba22bc68d1a77ad6580a275cd99639,c144d7215b3444fa36d28d540b60170a5b30743d: [Backport #16196] Guard static variable first * ext/openssl/ossl_asn1.c (Init_ossl_asn1): register the static variable to grab an internal object, before creating the object. otherwise the just-created object could get collected during the global variable list allocation. [Bug #16196] Slimed down test runtime by stressing openssl.so only [Bug #16196] Prefer rb_gc_register_mark_object * ext/openssl/ossl_asn1.c (Init_ossl_asn1): prefer `rb_gc_register_mark_object`, which is better for constant objects, over `rb_gc_register_address` for global/static variables which can be re-assigned at runtime. [Bug #16196] Skip very time consuming test [Bug #16196] ------------------------------------------------------------------------ r67862 | usa | 2020-03-31 06:26:06 +0900 (Tue, 31 Mar 2020) | 4 lines merge revision(s) 463092b84da7933f307cc8747f948f68ef19f5fd: [Backport #16279] Update rake-12.3.3. ------------------------------------------------------------------------ r67861 | usa | 2020-03-31 06:21:53 +0900 (Tue, 31 Mar 2020) | 14 lines merge revision(s) c9423b016cfeab852bc5a829e55e0a11f80b3ab7,0b1e26398e018116180bf41cb63887f77d5d1b82,78ee2c245331e353e218b8fac9ca722a2bcd8fea: [Backport #15968] marshal.c: check instance variable count * marshal.c (w_obj_each): ensure that no instance variable was added while dumping other instance variables. [Bug #15968] Hoisted out w_ivar_each marshal.c: check instance variable count * marshal.c (w_ivar_each): ensure that no instance variable was removed while dumping other instance variables. [Bug #15968] ------------------------------------------------------------------------ r67860 | usa | 2020-03-31 06:11:41 +0900 (Tue, 31 Mar 2020) | 13 lines merge revision(s) 78ef2d0f331c3e056ee367214710b41722de2fe0: [Backport #15935] merge revision(s) 8b3774be3dd9f472bddd99e84e3c9fe2ff99d7ac: [Backport #15935] Fix memory leak * string.c (str_make_independent_expand): free independent buffer. [Bug# 15935] Co-Authored-By: luke-gru (Luke Gruber) <luke.gru@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67805 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ------------------------------------------------------------------------ r67829 | usa | 2019-12-04 15:52:01 +0900 (Wed, 04 Dec 2019) | 7 lines merge revision(s) 2a477e0e444de6344048101466fb9189b9defddc: [Backport #16353] test_ftp.rb: loosen timeout for Travis osx https://travis-ci.org/ruby/ruby/jobs/454798071 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ------------------------------------------------------------------------ r67827 | usa | 2019-11-08 17:29:32 +0900 (Fri, 08 Nov 2019) | 14 lines merge revision(s) 6333020fc924d3ae63775c032bbe8f57364cd42e: atime may not updated unless strictatime is set on macOS Catalina Cited from mount(8): ``` strictatime Always update the file access time when reading from a file. Without this option the filesystem may default to a less strict update mode, where some access time updates are skipped for performance reasons. This option could be ignored if it is not supported by the filesystem. ``` ------------------------------------------------------------------------ r67826 | usa | 2019-10-03 11:27:34 +0900 (Thu, 03 Oct 2019) | 2 lines Bump version ------------------------------------------------------------------------ r67815 | usa | 2019-10-01 20:02:16 +0900 (Tue, 01 Oct 2019) | 2 lines Forgotten to update :) ------------------------------------------------------------------------ r67814 | usa | 2019-10-01 20:01:53 +0900 (Tue, 01 Oct 2019) | 6 lines lib/shell/command-processor.rb (Shell#[]): prevent unknown command `FileTest.send(command, ...)` allows to call not only FileTest-related methods but also any method that belongs to Kernel, Object, etc. patched by <mame@ruby-lang.org> ------------------------------------------------------------------------ r67813 | usa | 2019-10-01 20:01:05 +0900 (Tue, 01 Oct 2019) | 10 lines merge revision(s) 3ce238b5f9795581eb84114dcfbdf4aa086bfecc WEBrick: prevent response splitting and header injection This is a follow up to d9d4a28. The commit prevented CRLR, but did not address an isolated CR or an isolated LF. Co-Authored-By: NARUSE, Yui <naruse@airemix.jp> ------------------------------------------------------------------------ r67811 | usa | 2019-10-01 19:59:42 +0900 (Tue, 01 Oct 2019) | 7 lines merge revision(s) 36e057e26ef2104bc2349799d6c52d22bb1c7d03 Loop with String#scan without creating substrings Create the substrings necessary parts only, instead of cutting the rest of the buffer. Also removed a useless, probable typo, regexp. ------------------------------------------------------------------------ r67809 | usa | 2019-10-01 19:58:14 +0900 (Tue, 01 Oct 2019) | 7 lines merge revision(s) a0a2640b398cffd351f87d3f6243103add66575b Fix for wrong fnmatch patttern * dir.c (file_s_fnmatch): ensure that pattern does not contain a NUL character. https://hackerone.com/reports/449617 ------------------------------------------------------------------------ r67800 | usa | 2019-09-02 05:10:27 +0900 (Mon, 02 Sep 2019) | 2 lines Bump version to 2.5.7 ------------------------------------------------------------------------ r67793 | usa | 2019-08-28 15:43:56 +0900 (Wed, 28 Aug 2019) | 3 lines merger revision(s): f308ab2131ee675000926540cbb8c13c91dc3be5 Remove jquery.js ------------------------------------------------------------------------ r67790 | usa | 2019-08-28 13:57:58 +0900 (Wed, 28 Aug 2019) | 4 lines merge revision(s) 989e8ad322afdfa3aa06e74b89fc42aef42895d0: Remove debug print [ci skip] ------------------------------------------------------------------------ r67786 | usa | 2019-08-28 00:10:35 +0900 (Wed, 28 Aug 2019) | 2 lines Bump version to 2.5.7 ------------------------------------------------------------------------ r67779 | usa | 2019-08-27 21:53:55 +0900 (Tue, 27 Aug 2019) | 2 lines Update rdoc version from 6.0.1 to 6.0.1.1. ------------------------------------------------------------------------ r67778 | usa | 2019-08-27 18:04:54 +0900 (Tue, 27 Aug 2019) | 2 lines Skip test_gc_stress_at_startup because it causes SEGV on some platforms ------------------------------------------------------------------------ r67777 | usa | 2019-08-27 14:28:30 +0900 (Tue, 27 Aug 2019) | 5 lines merge revision(s) 1613917ae64: [Backport #15784] Defer setting gc_stress instead of setting dont_gc [Bug #15784] ------------------------------------------------------------------------ r67776 | usa | 2019-08-27 14:02:29 +0900 (Tue, 27 Aug 2019) | 3 lines Revert a part of r67767 it was not necessary for ruby_2_5. ------------------------------------------------------------------------ r67775 | usa | 2019-08-27 12:08:53 +0900 (Tue, 27 Aug 2019) | 5 lines merge revision(s) f1a52d96a59c63d46cb23af60cdcaf38e30e0512 [Backport #15784] Defer setting gc_stress until inits done [Bug #15784] ------------------------------------------------------------------------ r67774 | usa | 2019-08-27 02:03:41 +0900 (Tue, 27 Aug 2019) | 11 lines merge revision(s) f91879a7b548284c93743168acfd11e3d2aeefac,9557069299ac3b96691040a541afa65761a724ad: [Backport #15992] handle_interrupt to defend monitor state [Bug #15992] If an exception is raised from another thread for example Timeout and this thread is just after `mon_exit`'s `@mon_owner = nil`, the exception breaks the state of MonitorMixin. To prevent that situation, it need to block interruption in mon_enter and mon_exit. Avoid creating Hash objects per each mon_synchronize call (#2393) ------------------------------------------------------------------------ r67773 | usa | 2019-08-27 01:49:07 +0900 (Tue, 27 Aug 2019) | 7 lines merge revision(s) d5c33364e3c0efb15e11df417c925afee2cdb9c9: [Backport #16105] Fixed heap-use-after-free * string.c (rb_str_sub_bang): retrieves a pointer to the replacement string buffer just before using it, for the case of replacement with the receiver string itself. [Bug #16105] ------------------------------------------------------------------------ r67772 | usa | 2019-08-27 01:44:03 +0900 (Tue, 27 Aug 2019) | 6 lines merge revision(s) 5b1bf8dd2d08ae7371ecf025967376bb794ed651: [Backport #16099] UTF LE is fixed at least the first 2 bytes * io.c (io_strip_bom): if the first 2 bytes are 0xFF0xFE, it should be a little-endian UTF, 16 or 32. [Bug #16099] ------------------------------------------------------------------------ r67771 | usa | 2019-08-27 01:20:36 +0900 (Tue, 27 Aug 2019) | 13 lines merge revision(s) ec8e5f5aa64e2a54cf1e303f2b012c98e8d521ba,5a187e26adc8aa32367f294c1496935c7356d386: [Backport #15952] array.c: always check frozenness in Array#unshift. Fixes [Bug #15952] Closes: https://github.com/ruby/ruby/pull/2251 array.c add back shared array optimization to ary_ensure_room_for_unshift Bug fix in commit ec8e5f5aa64e2a [Bug #15952] disabled an optimization in this function. Closes: https://github.com/ruby/ruby/pull/2252 ------------------------------------------------------------------------ r67770 | usa | 2019-08-27 01:17:49 +0900 (Tue, 27 Aug 2019) | 6 lines merge revision(s) 8f51da5d41f0642d5a971e4223d1ba14643c6398: [Backport #15946] Get rid of undefined behavior * string.c (rb_str_sub_bang): str and repl can be same. [Bug #15946] ------------------------------------------------------------------------ r67769 | usa | 2019-08-27 01:16:39 +0900 (Tue, 27 Aug 2019) | 11 lines merge revision(s) 28678997e40869f5591eae60edd9757334426ffb,8797f48373dcfa3ff8e748667732dea8aea4347e: [Backport #15937] Preserve the string content at self-copying * string.c (rb_str_init): preserve the embedded content when self-copying with a capacity. [Bug #15937] New buffer for shared string * string.c (rb_str_init): allocate new buffer if the string is shared. [Bug #15937] ------------------------------------------------------------------------ r67768 | usa | 2019-08-27 01:12:14 +0900 (Tue, 27 Aug 2019) | 21 lines merge revision(s) ae2a904ce9bffedee7d110dc60fd51c0a2879a5b,165ddfda20f6db8a3149d14c4f431fc242ddab70,fa7a768fdfe5223a29db4fa71b3e6101fb02ad51: [Backport #16051] Update the certificate files to make the test pass on Debian 10 The old certificate files (for example, test/rubygems/ca_cert.pem) were signed by SHA1. This message digest is considered too weak and rejected by OpenSSL 1.1.1 or later. Because of this, the test suite does not pass on Debian 10. https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian/ruby-master/log/20190527T123003Z.fail.html.gz#test%2Frubygems This change regenerates the files. A shell script for the regeneration (util/create_certs.sh) is also added. * remove trailing spaces. Removed inconsistency file from upstream repository of rubygems. followed up ae2a904ce9bffedee7d110dc60fd51c0a2879a5b ------------------------------------------------------------------------ r67767 | usa | 2019-08-27 01:09:14 +0900 (Tue, 27 Aug 2019) | 25 lines merge revision(s) 9dec4e8fc3a6018261834b5ac9b9877f787b97ca: [Backport #15934] String#b: Don't depend on dependent string Registering a string that depend on a dependent string as fstring can lead to use-after-free. See c06ddfe and 3f95620 for details. The following script triggers use-after-free on trunk, 2.4.6, 2.5.5 and 2.6.3. Credits to @wanabe for using eval as a cross-version way of registering a fstring. ```ruby a = ('j' * 24).b.b eval('', binding, a) p a 4.times { GC.start } p a ``` - string.c (str_replace_shared_without_enc): when given a dependent string, depend on the root of the dependent string. [Bug #15934] ------------------------------------------------------------------------ r67766 | usa | 2019-08-27 00:58:57 +0900 (Tue, 27 Aug 2019) | 80 lines merge revision(s) 3f9562015e651735bfc2fdd14e8f6963b673e22a,c06ddfee878524168e4af07443217ed2f8d0954b,3b3b4a44e5: [Backport #15792] Get rid of indirect sharing * string.c (str_duplicate): share the root shared string if the original string is already sharing, so that all shared strings refer the root shared string directly. indirect sharing can cause a dangling pointer. [Bug #15792] str_duplicate: Don't share with a frozen shared string This is a follow up for 3f9562015e651735bfc2fdd14e8f6963b673e22a. Before this commit, it was possible to create a shared string which shares with another shared string by passing a frozen shared string to `str_duplicate`. Such string looks like: ``` -------- ----------------- | root | ------ owns -----> | root's buffer | -------- ----------------- ^ ^ ^ ----------- | | | shared1 | ------ references ----- | ----------- | ^ | ----------- | | shared2 | ------ references --------- ----------- ``` This is bad news because `rb_fstring(shared2)` can make `shared1` independent, which severs the reference from `shared1` to `root`: ```c /* from fstr_update_callback() */ str = str_new_frozen(rb_cString, shared2); /* can return shared1 */ if (STR_SHARED_P(str)) { /* shared1 is also a shared string */ str_make_independent(str); /* no frozen check */ } ``` If `shared1` was the only reference to `root`, then `root` can be reclaimed by the GC, leaving `shared2` in a corrupted state: ``` ----------- -------------------- | shared1 | -------- owns --------> | shared1's buffer | ----------- -------------------- ^ | ----------- ------------------------- | shared2 | ------ references ----> | root's buffer (freed) | ----------- ------------------------- ``` Here is a reproduction script for the situation this commit fixes. ```ruby a = ('a' * 24).strip.freeze.strip -a p a 4.times { GC.start } p a ``` - string.c (str_duplicate): always share with the root string when the original is a shared string. - test_rb_str_dup.rb: specifically test `rb_str_dup` to make sure it does not try to share with a shared string. [Bug #15792] Closes: https://github.com/ruby/ruby/pull/2159 Update dependencies ------------------------------------------------------------------------ r67765 | usa | 2019-08-27 00:40:44 +0900 (Tue, 27 Aug 2019) | 5 lines merge revision(s) 5e018214e7435030727a97ac49db038d96438e74: [Backport #15720] Fix SystemStackError when calling a method in an unused refinement Fixes [Bug #15720] ------------------------------------------------------------------------ r67764 | usa | 2019-08-27 00:39:06 +0900 (Tue, 27 Aug 2019) | 5 lines merge revision(s) c1d78a7f0ece2004822193a0c1f1fd3dc38c2fdf: [Backport #15360] do_mutex_lock: release mutex before checking for interrupts (fixes issue 15360) ------------------------------------------------------------------------ r67763 | usa | 2019-08-27 00:36:38 +0900 (Tue, 27 Aug 2019) | 12 lines merge revision(s) 6375c68f8851e1e0fee8a95afba91c4555097127,c05eaa93258ddc01e685b6cc3a0da82998a2af48: [Backport #15839] parse.y: function parser_mixed_error & parser_mixed_escape Fix mixed encoding in heredoc Heredocs are parsed line-by-line, so we need to keep track of the temporary encoding of the string. Previously, a heredoc would only detect mixed encoding errors if they were on the same line, this changes things so they will be caught on different lines. Fixes [Bug #15839] ------------------------------------------------------------------------ r67762 | usa | 2019-08-27 00:13:49 +0900 (Tue, 27 Aug 2019) | 7 lines merge revision(s) 5bab1304af25a843728dbcd2f3594913740aecb0: [Backport #15847] fix visibility of SecureRandom.gen_random Aliasing a method preserves its visibility. These aliases turn formerly-public methods into private. Should make them public again. [Bug #15847] ------------------------------------------------------------------------ r67761 | usa | 2019-08-27 00:10:32 +0900 (Tue, 27 Aug 2019) | 9 lines merge revision(s) ea42423908ed055f9039b1dce6e9a232a3b2dd90: [Backport #15887] Keep vm->orig_progname alive `vm->orig_progname` can be different from `vm->progname` when user code assigns to `$0`. While `vm->progname` is kept alive by the global table, nothing marked `vm->orig_progname`. [Bug #15887] ------------------------------------------------------------------------ r67760 | svn | 2019-08-27 00:02:19 +0900 (Tue, 27 Aug 2019) | 1 line * 2019-08-27 ------------------------------------------------------------------------ r67759 | usa | 2019-08-27 00:02:19 +0900 (Tue, 27 Aug 2019) | 6 lines merge revision(s) ac00bdc8a8ac2c62a94dd36a7784d15bbcb7df19: [Backport #15821] Do not modify shared array [Bug #15821] ------------------------------------------------------------------------ r67758 | usa | 2019-08-26 23:54:04 +0900 (Mon, 26 Aug 2019) | 13 lines merge revision(s) d0ba4abf1a00339ebbb5d405db3240a8bdb7b68b,54eac83b2ad77ddea84fa6d66c09e0bb014cf61e: [Backport #15786] Add RB_ID_SERIAL_MAX Hide internal IDs * parse.y (internal_id): number the ID serial for internal use by counting down from the neary maximum value, not to accidentally match permanent IDs. [Bug #15768] ------------------------------------------------------------------------ r67757 | usa | 2019-08-26 23:45:41 +0900 (Mon, 26 Aug 2019) | 5 lines merge revision(s) a6a26e42b15c46f117f4fce07a2050e9d727355d: [Backport #15906] compile.c: Partially revert r63870 which caused wrong optimization [Bug #15906] ------------------------------------------------------------------------ r67756 | usa | 2019-08-26 23:39:01 +0900 (Mon, 26 Aug 2019) | 5 lines merge revision(s) b72623012d74abdb06210153ed48c9e2fa075bbd: [Backport #15775] Update broken URL in Float documentation. [Misc #15775][ruby-core:92332] ------------------------------------------------------------------------ r67755 | usa | 2019-08-26 23:37:29 +0900 (Mon, 26 Aug 2019) | 18 lines merge revision(s) a15f7dd1fb1148c3d586238ee6907875f2e40379: [Backport #15803] Always mark the string returned by File.realpath as tainted This string can include elements that were not in either string passed to File.realpath, even if one of the strings is an absolute path, due to symlinks: ```ruby Dir.mkdir('b') unless File.directory?('b') File.write('b/a', '') unless File.file?('b/a') File.symlink('b', 'c') unless File.symlink?('c') path = File.realpath('c/a'.untaint, Dir.pwd.untaint) path # "/home/testr/ruby/b/a" path.tainted? # should be true, as 'b' comes from file system ``` [Bug #15803] ------------------------------------------------------------------------ r67754 | usa | 2019-08-26 23:18:58 +0900 (Mon, 26 Aug 2019) | 8 lines merge revision(s) d118c84b0b9110462e479487ffaf175a75e5718e: [Backport #15199] Fix IO#scanf on pipes on Windows IO.seek on a pipe on Windows raises Errno::EINVAL instead of Errno::ESPIPE. Fixes Ruby Bug #15199 ------------------------------------------------------------------------ r67753 | usa | 2019-08-26 23:15:13 +0900 (Mon, 26 Aug 2019) | 3 lines merge revision(s) 5e23b1138f16af0defb184d7deeffadfd2ce3c04 [backport #15820] Fix potential memory leak ------------------------------------------------------------------------ r67752 | usa | 2019-08-26 23:06:52 +0900 (Mon, 26 Aug 2019) | 9 lines merge revision(s) 179045acaf5de8398c321ada86a76f1afb77a796: [Backport #14539] regparse.c: Suppress duplicated range warning by mere \X * regparse.c (node_extended_grapheme_cluster): as Unicode 10 has added Grapheme_Cluster_Break properties to some characters, remove duplicated ranges for Unicode 9. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ------------------------------------------------------------------------ r67751 | usa | 2019-08-26 22:49:50 +0900 (Mon, 26 Aug 2019) | 4 lines merge revision(s) af1e487e9bb763b939dc6704c9a343c9eafa1637: [Backport #15801] Updated marked commits for ChangeLog ------------------------------------------------------------------------ r67748 | usa | 2019-08-19 15:35:25 +0900 (Mon, 19 Aug 2019) | 124 lines merge revision(s) f4fe2a76b0564e8e572936dec3bd724ac22b7a44: [Backport #15793] merge revision(s) 7b7043e5da8589e01b94575d4ed647e909e5c875: [Backport #15793] eliminate use of freed memory rb_io_fptr_finalize_internal frees the memory region. ================================================================= ==85264==ERROR: AddressSanitizer: heap-use-after-free on address 0x610000000d8c at pc 0x5608e38077f7 bp 0x7ffee12d5440 sp 0x7ffee12d5438 READ of size 4 at 0x610000000d8c thread T0 #0 0x5608e38077f6 in rb_io_memsize io.c:4749:24 #1 0x5608e37a0481 in obj_memsize_of gc.c:3547:14 #2 0x5608e37a4f30 in check_rvalue_consistency gc.c:1107:2 #3 0x5608e37a2624 in RVALUE_OLD_P gc.c:1218:5 #4 0x5608e37a5bae in rb_gc_force_recycle gc.c:6652:18 #5 0x5608e38191f9 in rb_f_backquote io.c:9021:5 #6 0x5608e3d8aa14 in call_cfunc_1 vm_insnhelper.c:2058:12 #7 0x5608e3d6e23d in vm_call_cfunc_with_frame vm_insnhelper.c:2211:11 #8 0x5608e3d54a35 in vm_call_cfunc vm_insnhelper.c:2229:12 #9 0x5608e3d5253b in vm_call_method_each_type vm_insnhelper.c:2564:9 #10 0x5608e3d51f50 in vm_call_method vm_insnhelper.c:2701:13 #11 0x5608e3cf2de4 in vm_call_general vm_insnhelper.c:2734:12 #12 0x5608e3d79918 in vm_sendish vm_insnhelper.c:3627:11 #13 0x5608e3d06cf5 in vm_exec_core insns.def:789:11 #14 0x5608e3d43700 in rb_vm_exec vm.c:1892:22 #15 0x5608e3d47cbf in rb_iseq_eval_main vm.c:2151:11 #16 0x5608e37620ca in ruby_exec_internal eval.c:262:2 #17 0x5608e376198b in ruby_exec_node eval.c:326:12 #18 0x5608e37617d0 in ruby_run_node eval.c:318:25 #19 0x5608e35c9486 in main main.c:42:9 #20 0x7f62e9421b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 #21 0x5608e3522289 in _start (miniruby+0x15f289) 0x610000000d8c is located 76 bytes inside of 192-byte region [0x610000000d40,0x610000000e00) freed by thread T0 here: #0 0x5608e359a2ed in free (miniruby+0x1d72ed) #1 0x5608e37af421 in objspace_xfree gc.c:9591:5 #2 0x5608e37af3da in ruby_sized_xfree gc.c:9687:2 #3 0x5608e3799ac8 in ruby_xfree gc.c:9694:5 #4 0x5608e380746d in rb_io_fptr_finalize_internal io.c:4728:5 #5 0x5608e38191ed in rb_f_backquote io.c:9020:5 #6 0x5608e3d8aa14 in call_cfunc_1 vm_insnhelper.c:2058:12 #7 0x5608e3d6e23d in vm_call_cfunc_with_frame vm_insnhelper.c:2211:11 #8 0x5608e3d54a35 in vm_call_cfunc vm_insnhelper.c:2229:12 #9 0x5608e3d5253b in vm_call_method_each_type vm_insnhelper.c:2564:9 #10 0x5608e3d51f50 in vm_call_method vm_insnhelper.c:2701:13 #11 0x5608e3cf2de4 in vm_call_general vm_insnhelper.c:2734:12 #12 0x5608e3d79918 in vm_sendish vm_insnhelper.c:3627:11 #13 0x5608e3d06cf5 in vm_exec_core insns.def:789:11 #14 0x5608e3d43700 in rb_vm_exec vm.c:1892:22 #15 0x5608e3d47cbf in rb_iseq_eval_main vm.c:2151:11 #16 0x5608e37620ca in ruby_exec_internal eval.c:262:2 #17 0x5608e376198b in ruby_exec_node eval.c:326:12 #18 0x5608e37617d0 in ruby_run_node eval.c:318:25 #19 0x5608e35c9486 in main main.c:42:9 #20 0x7f62e9421b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 previously allocated by thread T0 here: #0 0x5608e359a56d in malloc (miniruby+0x1d756d) #1 0x5608e37aed12 in objspace_xmalloc0 gc.c:9416:5 #2 0x5608e37aebe7 in ruby_xmalloc0 gc.c:9600:12 #3 0x5608e37aea8b in ruby_xmalloc_body gc.c:9609:12 #4 0x5608e37a6d64 in ruby_xmalloc gc.c:11469:12 #5 0x5608e380e4b4 in rb_io_fptr_new io.c:8040:19 #6 0x5608e380e446 in rb_io_make_open_file io.c:8077:10 #7 0x5608e3850ea0 in pipe_open io.c:6707:5 #8 0x5608e384edb4 in pipe_open_s io.c:6772:12 #9 0x5608e381910b in rb_f_backquote io.c:9014:12 #10 0x5608e3d8aa14 in call_cfunc_1 vm_insnhelper.c:2058:12 #11 0x5608e3d6e23d in vm_call_cfunc_with_frame vm_insnhelper.c:2211:11 #12 0x5608e3d54a35 in vm_call_cfunc vm_insnhelper.c:2229:12 #13 0x5608e3d5253b in vm_call_method_each_type vm_insnhelper.c:2564:9 #14 0x5608e3d51f50 in vm_call_method vm_insnhelper.c:2701:13 #15 0x5608e3cf2de4 in vm_call_general vm_insnhelper.c:2734:12 #16 0x5608e3d79918 in vm_sendish vm_insnhelper.c:3627:11 #17 0x5608e3d06cf5 in vm_exec_core insns.def:789:11 #18 0x5608e3d43700 in rb_vm_exec vm.c:1892:22 #19 0x5608e3d47cbf in rb_iseq_eval_main vm.c:2151:11 #20 0x5608e37620ca in ruby_exec_internal eval.c:262:2 #21 0x5608e376198b in ruby_exec_node eval.c:326:12 #22 0x5608e37617d0 in ruby_run_node eval.c:318:25 #23 0x5608e35c9486 in main main.c:42:9 #24 0x7f62e9421b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 SUMMARY: AddressSanitizer: heap-use-after-free io.c:4749:24 in rb_io_memsize Shadow bytes around the buggy address: 0x0c207fff8160: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00 0x0c207fff8170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c207fff8180: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00 0x0c207fff8190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c207fff81a0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd =>0x0c207fff81b0: fd[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x0c207fff81c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c207fff81d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c207fff81e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c207fff81f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c207fff8200: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb Shadow gap: cc ==85264==ABORTING git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ------------------------------------------------------------------------ r67722 | usa | 2019-07-31 23:58:36 +0900 (Wed, 31 Jul 2019) | 5 lines merge revision(s) 374c8f4ebab1a740990330c732b9de965c5e8d10: [Backport #15823] Fixed about ARGF.lineno [Bug #15823] ------------------------------------------------------------------------ r67717 | usa | 2019-07-31 23:02:50 +0900 (Wed, 31 Jul 2019) | 9 lines merge revision(s) 67563: [Backport #15769] Support SNI (Reapplying r67488) This fixes connecting using TLS 1.3 to imap.gmail.com [Fix GH-2077] [Feature #15594] From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com> ------------------------------------------------------------------------ r67709 | usa | 2019-05-30 18:14:41 +0900 (Thu, 30 May 2019) | 3 lines merge revision(s) dcb6a6ae3e2b8a3e298e7f0d4a3e7f8ff102a30e:[Backport #15845] Windows simply causes an error to open invalid path ------------------------------------------------------------------------ r67708 | usa | 2019-05-03 06:16:27 +0900 (Fri, 03 May 2019) | 3 lines merge revision(s) 66324: [Backport #15385] Modify insn list only when compiling ------------------------------------------------------------------------ r67707 | usa | 2019-04-30 22:20:09 +0900 (Tue, 30 Apr 2019) | 3 lines merge revision(s) 67270: [Backport #15670] dsym should be treated as string [ruby-core:91852] [Bug #15670] ------------------------------------------------------------------------ r67706 | usa | 2019-04-30 22:04:57 +0900 (Tue, 30 Apr 2019) | 6 lines merge revision(s) 67467: [Backport #15756] range.c: force hash values fixable * range.c (method_hash): force hash values fixable on LLP64 environment. [ruby-core:92191] [Bug #15756] ------------------------------------------------------------------------ r67705 | usa | 2019-04-30 22:02:42 +0900 (Tue, 30 Apr 2019) | 6 lines merge revision(s) 67468: [Backport #15757] range.c: force hash values fixable * range.c (range_hash): force hash values fixable on LLP64 environment. [ruby-core:92194] [Bug #15757] ------------------------------------------------------------------------ r67704 | usa | 2019-04-30 22:00:04 +0900 (Tue, 30 Apr 2019) | 3 lines merge revision(s) 67247: [Backport #15666] Guard out the test when it is run under root permission ------------------------------------------------------------------------ r67703 | usa | 2019-04-30 21:55:24 +0900 (Tue, 30 Apr 2019) | 7 lines merge revision(s) 64057: [Backport #14952] Remove obsolete comment from Module#define_method documentation Since 2.5, Module#define_method is public. (feature #14133) Co-Authored-By: Miguel Landaeta <miguel@miguel.cc> ------------------------------------------------------------------------ r67702 | usa | 2019-04-30 21:40:20 +0900 (Tue, 30 Apr 2019) | 11 lines merge revision(s) 66326,66649: [Backport #15385] Fix infinite loop by ensure * compile.c (iseq_insert_nop_between_end_and_cont): insert nop so that the end of rescue and continuing points are not same, to get rid of infinite loop. [Bug #15385] test_optimization.rb: increase timeout for RubyCI https://rubyci.org/logs/rubyci.s3.amazonaws.com/opensuseleap/ruby-trunk/log/20181230T040002Z.fail.html.gz ------------------------------------------------------------------------ r67268 | nagachika | 2019-03-15 20:32:41 +0900 (Fri, 15 Mar 2019) | 1 line bump up teeny version to 2.5.6 ------------------------------------------------------------------------ r67263 | nagachika | 2019-03-15 07:51:25 +0900 (Fri, 15 Mar 2019) | 4 lines merge revision(s) 67261: tool/make-snapshot: Use 6-spaces indent for SIZE and digests to align with release note markdown. ------------------------------------------------------------------------ r67259 | nagachika | 2019-03-15 07:21:30 +0900 (Fri, 15 Mar 2019) | 8 lines merge revision(s) 63309: thread_sync.c (condvar_ptr): reset fork_gen after forking Otherwise the condition variable waiter list will always be empty, which is wrong :x [Bug #14725] [Bug #14634] ------------------------------------------------------------------------ r67258 | nagachika | 2019-03-15 07:16:48 +0900 (Fri, 15 Mar 2019) | 1 line bump up teeny version to 2.5.5 ------------------------------------------------------------------------ r67242 | nagachika | 2019-03-13 09:32:12 +0900 (Wed, 13 Mar 2019) | 7 lines merge revision(s) 67200: [Backport #15648] Add ignored_sp event * ext/ripper/lib/ripper/lexer.rb (Ripper::Lexer): add ignored_sp event which will be fired from Ripper::Lexer#on_heredoc_dedent method. [ruby-core:91727] [Bug #15648] ------------------------------------------------------------------------ r67241 | nagachika | 2019-03-13 09:21:46 +0900 (Wed, 13 Mar 2019) | 9 lines merge revision(s) 66909: [Backport #15555] tmpdir.rb: permission of user given directory * lib/tmpdir.rb (Dir.mktmpdir): check if the permission of the parent directory only when using the default temporary directory, and no check against user given directory. the security is the user's responsibility in that case. [ruby-core:91216] [Bug #15555] ------------------------------------------------------------------------ r67240 | nagachika | 2019-03-13 09:06:19 +0900 (Wed, 13 Mar 2019) | 7 lines merge revision(s) 66779: [Backport #15520] configure: refuse to build with jemalloc when header is missing [ruby-core:90964] [Bug #15520] Freom: Misty De Meo <mistydemeo@github.com> ------------------------------------------------------------------------ r67239 | nagachika | 2019-03-13 08:36:51 +0900 (Wed, 13 Mar 2019) | 7 lines merge revision(s) 66618: [Backport #15660] test_io.rb: increase timeout for RubyCI to stabilize AIX powerpc CI https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20181227T113302Z.fail.html.gz ------------------------------------------------------------------------ r67238 | nagachika | 2019-03-13 08:35:29 +0900 (Wed, 13 Mar 2019) | 8 lines merge revision(s) 66436: [Backport #15427] should use defined_class. * vm_insnhelper.c (vm_call_method_each_type): we should use me->defined_class instead of me->owner because me->owner doesn't has correct ancestors list. [Bug #15427] ------------------------------------------------------------------------ r67237 | nagachika | 2019-03-13 08:23:17 +0900 (Wed, 13 Mar 2019) | 26 lines merge revision(s) 64234,64252: [Backport #15219] net/http, net/ftp: fix session resumption with TLS 1.3 When TLS 1.3 is in use, the session ticket may not have been sent yet even though a handshake has finished. Also, the ticket could change if multiple session ticket messages are sent by the server. Use SSLContext#session_new_cb instead of calling SSLSocket#session immediately after a handshake. This way also works with earlier protocol versions. net/http, net/ftp: skip SSL/TLS session resumption tests Due to a bug in OpenSSL 1.1.0h[1] (it's only in this specific version; it was introduced just before the release and is already fixed in their stable branch), the callback set by SSLContext#session_new_cb= does not get called for clients, making net/http and net/ftp not attempt session resumption. Let's disable the affected test cases for now. Another option would be to fallback to using SSLSocket#session as we did before r64234. But since only a single version is affected and hopefully a new stable version containing the fix will be released in near future, I chose not to add such workaround code to lib/. [1] https://github.com/openssl/openssl/pull/5967 ------------------------------------------------------------------------ r67236 | nagachika | 2019-03-13 07:01:32 +0900 (Wed, 13 Mar 2019) | 13 lines merge revision(s) 66832: [Backport #15536] st.c (rb_hash_bulk_insert_into_st_table): avoid out-of-bounds write "hash_bulk_insert" first expands the table, but the target size was wrong: it was calculated by "num_entries + (size to buld insert)", but it was wrong when "num_entries < entries_bound", i.e., it has a deleted entry. "hash_bulk_insert" adds the given entries from entries_bound, which led to out-of-bounds write access. [Bug #15536] As a simple fix, this commit changes the calculation to "entries_bound + size". I'm afraid if this might be inefficient, but I think it is safe anyway. ------------------------------------------------------------------------ r67235 | nagachika | 2019-03-13 06:44:56 +0900 (Wed, 13 Mar 2019) | 1 line Merge RubyGems 2.7.6.2 patch [Bug #15643] ------------------------------------------------------------------------ r67234 | nagachika | 2019-03-13 06:32:03 +0900 (Wed, 13 Mar 2019) | 1 line Merge RubyGems 2.7.6.1 patch [Bug #15637] ------------------------------------------------------------------------ r67233 | nagachika | 2019-03-13 06:05:56 +0900 (Wed, 13 Mar 2019) | 6 lines merge revision(s) 67201: [Backport #15650] eval.c: clear internal errinfo * eval.c (ruby_cleanup): clear internal error info when invoking end procs. [ruby-core:91731] [Bug #15650] ------------------------------------------------------------------------ r67228 | nagachika | 2019-03-12 21:59:25 +0900 (Tue, 12 Mar 2019) | 8 lines merge revision(s) 64636,64637: [Backport #15659] AIX doesn't set OptionLength for boolean options https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20180904T103302Z.fail.html.gz https://www.ibm.com/support/knowledgecenter/ja/ssw_aix_72/com.ibm.aix.commtrf2/getsockopt.htm fix typo ------------------------------------------------------------------------ r67219 | nagachika | 2019-03-11 21:51:59 +0900 (Mon, 11 Mar 2019) | 7 lines merge revision(s) 67203: [Backport #15651] numeric.c: fix infinite loop * numeric.c (int_pow): fix infinite loop in the case of y equal 1 and power of x does not overflow. [ruby-core:91734] [Bug #15651] ------------------------------------------------------------------------ r67192 | nagachika | 2019-03-08 00:31:42 +0900 (Fri, 08 Mar 2019) | 7 lines merge revision(s) 67167: [Backport #15635] string.c: respect the actual encoding * string.c (rb_enc_str_coderange): respect the actual encoding of if a BOM presents, and scan for the actual code range. [ruby-core:91662] [Bug #15635] ------------------------------------------------------------------------ r67191 | nagachika | 2019-03-08 00:19:34 +0900 (Fri, 08 Mar 2019) | 6 lines merge revision(s) 67188: [Backport #15642] io.c: chomp CR at the end of read buffer * io.c (rb_io_getline_fast): chomp CR followed by LF but separated by the read buffer boundary. [ruby-core:91707] [Bug #15642] ------------------------------------------------------------------------ r67186 | nagachika | 2019-03-06 20:32:02 +0900 (Wed, 06 Mar 2019) | 5 lines merge revision(s) 67183: [Backport #15607] Fix PTY.open on OpenBSD [Bug #15607] From: Jeremy Evans <code@jeremyevans.net> ------------------------------------------------------------------------ r67050 | nagachika | 2019-02-11 20:04:41 +0900 (Mon, 11 Feb 2019) | 12 lines merge revision(s) 62872,62873: [Backport #14621] parse.y: unindent continued line * parse.y (tokadd_string): stop at continued line in dedented here documents, to dedent for each lines before removing escaped newlines. [ruby-core:86236] [Bug #14621] parse.y: terminator at continued line * parse.y (here_document): a continuing line is not the terminator. [ruby-core:86283] [Bug #14621] ------------------------------------------------------------------------ r67013 | nagachika | 2019-02-05 21:15:47 +0900 (Tue, 05 Feb 2019) | 13 lines merge revision(s) 66867: [Backport #15500] Revert r58345 and r58371. These changes break the behavior of default gems. Bug #13428 says r58345 is reasonable because gemspec file is installed by `to_ruby_for_cache` method. But I revert `to_ruby_for_cache` in rbinstall.rb at r58403. There is no reason that we apply r58345 now. But I'm not sure about gemspec of default gems affects standalone gems. I'm going to investigate it on rubygems/rubygems. [Bug #15500][ruby-core:90867] ------------------------------------------------------------------------ r66912 | nagachika | 2019-01-23 23:14:25 +0900 (Wed, 23 Jan 2019) | 70 lines merge revision(s) 62934,63210,63215,63309: [Backport #14634] thread_sync.c: avoid reaching across stacks of dead threads rb_ensure is insufficient cleanup for fork and we must reinitialize all waitqueues in the child process. Unfortunately this increases the footprint of ConditionVariable, Queue and SizedQueue by 8 bytes on 32-bit (16 bytes on 64-bit). [ruby-core:86316] [Bug #14634] variable.c: fix thread + fork errors in autoload This is fairly non-intrusive bugfix to prevent children from trying to reach into thread stacks of the parent. I will probably reuse this idea and redo r62934, too (same bug). * vm_core.h (typedef struct rb_vm_struct): add fork_gen counter * thread.c (rb_thread_atfork_internal): increment fork_gen * variable.c (struct autoload_data_i): store fork_gen * variable.c (check_autoload_data): remove (replaced with get_...) * variable.c (get_autoload_data): check fork_gen when retrieving * variable.c (check_autoload_required): use get_autoload_data * variable.c (rb_autoloading_value): ditto * variable.c (rb_autoload_p): ditto * variable.c (current_autoload_data): ditto * variable.c (autoload_reset): reset fork_gen, adjust indent * variable.c (rb_autoload_load): set fork_gen when setting state * test/ruby/test_autoload.rb (test_autoload_fork): new test [ruby-core:86410] [Bug #14634] thread_sync: redo r62934 to use fork_gen Instead of maintaining linked-lists to store all rb_queue/rb_szqueue/rb_condvar structs; store only a fork_gen serial number to simplify management of these items. This reduces initialization costs and avoids the up-front cost of resetting all Queue/SizedQueue/ConditionVariable objects at fork while saving 8 bytes per-structure on 64-bit. There are no savings on 32-bit. * thread.c (rb_thread_atfork_internal): remove rb_thread_sync_reset_all call * thread_sync.c (rb_thread_sync_reset_all): remove * thread_sync.c (queue_live): remove * thread_sync.c (queue_free): remove * thread_sync.c (struct rb_queue): s/live/fork_gen/ * thread_sync.c (queue_data_type): use default free * thread_sync.c (queue_alloc): remove list_add * thread_sync.c (queue_fork_check): new function * thread_sync.c (queue_ptr): call queue_fork_check * thread_sync.c (szqueue_free): remove * thread_sync.c (szqueue_data_type): use default free * thread_sync.c (szqueue_alloc): remove list_add * thread_sync.c (szqueue_ptr): check fork_gen via queue_fork_check * thread_sync.c (struct rb_condvar): s/live/fork_gen/ * thread_sync.c (condvar_free): remove * thread_sync.c (cv_data_type): use default free * thread_sync.c (condvar_ptr): check fork_gen * thread_sync.c (condvar_alloc): remove list_add [ruby-core:86316] [Bug #14634] thread_sync.c (condvar_ptr): reset fork_gen after forking Otherwise the condition variable waiter list will always be empty, which is wrong :x [Bug #14725] [Bug #14634] ------------------------------------------------------------------------ r66881 | nagachika | 2019-01-20 19:48:26 +0900 (Sun, 20 Jan 2019) | 7 lines merge revision(s) 64879: [Backport #15162] transcode.c: add GC guard on raise * transcode.c (econv_s_search_convpath): add GC guard to fix SEGV on raise. [Bug #15162] [ruby-core:89172] ------------------------------------------------------------------------ r66880 | nagachika | 2019-01-20 18:17:59 +0900 (Sun, 20 Jan 2019) | 7 lines merge revision(s) 63334: [Backport #14729] object.c: raise on long invalid float string * object.c (rb_cstr_to_dbl_raise): check long invalid float string more precisely when truncating insignificant part. [ruby-core:86800] [Bug #14729] ------------------------------------------------------------------------ r66879 | nagachika | 2019-01-20 14:13:27 +0900 (Sun, 20 Jan 2019) | 7 lines merge revision(s) 63322: [Backport #14731] object.c: fix exponent with underscore * object.c (rb_cstr_to_dbl_raise): do not ignore exponent part when the input string longer than internal buffer contains underscore(s). [ruby-core:86836] [Bug #14731] ------------------------------------------------------------------------ r66878 | nagachika | 2019-01-20 13:51:41 +0900 (Sun, 20 Jan 2019) | 9 lines merge revision(s) 63720: [Backport #14864] dir.c: define O_CLOEXEC for older systems SuSE 10 has openat(), but not O_CLOEXEC Reported-by: wangpeiwen [ruby-core:87591] [Bug #14864] ------------------------------------------------------------------------ r66877 | nagachika | 2019-01-20 13:49:40 +0900 (Sun, 20 Jan 2019) | 6 lines merge revision(s) 66401: [Backport #15412] Move autoload to toplevel So that classes which uses Net::HTTP with https can use OpenSSL namespace for example exception classes like OpenSSL::SSL::SSLError. ------------------------------------------------------------------------ r66876 | nagachika | 2019-01-20 13:47:51 +0900 (Sun, 20 Jan 2019) | 7 lines merge revision(s) 66242: [Backport #15387] io.c (io_write_nonblock): add RB_GC_GUARD, io_fflush may switch threads Since io_fflush may block on mutex or rb_io_wait_readable and switch threads, we need to ensure the `str' VALUE returned by `rb_obj_as_string` is visible to GC. ------------------------------------------------------------------------ r66839 | nagachika | 2019-01-17 00:32:54 +0900 (Thu, 17 Jan 2019) | 6 lines merge revision(s) 65974: [Backport #15340] Normalize month-mday before finding epoch Especially over the year 2038, 30 Feb and so on may cause odd behavior on validating found epoch with given year-month-day [Bug #15340] ------------------------------------------------------------------------ r66837 | nagachika | 2019-01-16 21:04:57 +0900 (Wed, 16 Jan 2019) | 15 lines merge revision(s) 64476: [Backport #15084] thread_sync.c (rb_mutex_sleep): disable interrupt checking in ensure This is needed to reliably fix ConditionVariable#wait on Thread#kill [Bug #14999] because there is still a chance an interrupt could fire and prevent lock acquisition after an ensure statement. Arguably, rb_mutex_lock itself should be uninterruptible, but that already prevents bootstraptest/test_thread.rb from completing and probably breaks existing use cases. For reference, POSIX expressly forbids EINTR from pthread_mutex_lock. [ruby-core:88556] [Bug #14999] ------------------------------------------------------------------------ r66818 | nagachika | 2019-01-14 18:23:45 +0900 (Mon, 14 Jan 2019) | 17 lines merge revision(s) 64589,64593: [Backport #15041] cont.c: set th->root_fiber to current fiber at fork Otherwise, th->root_fiber can point to an invalid Fiber, because Fibers do not live across fork. So consider whatever Fiber is running the root fiber. [ruby-core:88723] [Bug #15041] cont.c (rb_fiber_atfork): th->root_fiber may not exist Otherwise, bootstraptest/test_fork.rb fails with -DVM_CHECK_MODE=2 [Bug #15041] Fixes: r64589 "cont.c: set th->root_fiber to current fiber at fork" ------------------------------------------------------------------------ r66785 | svn | 2019-01-11 00:02:22 +0900 (Fri, 11 Jan 2019) | 1 line * 2019-01-11 ------------------------------------------------------------------------ r66784 | nagachika | 2019-01-11 00:02:21 +0900 (Fri, 11 Jan 2019) | 10 lines merge revision(s) 66756: [Backport #15479] Mark array as "going to be modified" in `Array#reject!` Before this patch, if `reject!` is called on a shared array it can mutate the shared array rather than a copy. This patch marks the array as "going to be modified" so that the shared source array isn't mutated. [Bug #15479] [ruby-core:90781] ------------------------------------------------------------------------ r66780 | nagachika | 2019-01-10 23:46:41 +0900 (Thu, 10 Jan 2019) | 11 lines merge revision(s) 63823,63839: [Backport #14890] time.c: [DOC] Time#localtime * time.c: state that Time#localtime does nothing when nothing changes. [ruby-core:87675] [Bug #14880] skip test_localtime_zone if force_tz_test is false For example Solaris https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20180703T091803Z.fail.html.gz ------------------------------------------------------------------------ r66777 | nagachika | 2019-01-10 23:18:09 +0900 (Thu, 10 Jan 2019) | 6 lines merge revision(s) 66111: [Backport #14561] Avoid GCing dead stack after switching away from a fiber Fixes <https://bugs.ruby-lang.org/issues/14561> and discussed <https://bugs.ruby-lang.org/issues/15362>. ------------------------------------------------------------------------ r66748 | nagachika | 2019-01-07 21:05:16 +0900 (Mon, 07 Jan 2019) | 18 lines merge revision(s) 62671: [Backport #14571] resolv.rb: close socket * lib/resolv.rb (UnconnectedUDP#lazy_initialize): store new sockets before binding, so the sockets get closed when the requester is closing. * lib/resolv.rb (ConnectedUDP#lazy_initialize): ditto. * lib/resolv.rb (UnconnectedUDP#close): synchronize to get rid of race condition. * lib/resolv.rb (ConnectedUDP#close): ditto. [ruby-core:85901] [Bug #14571] From: quixoten (Devin Christensen) <quixoten@gmail.com> ------------------------------------------------------------------------ r66689 | nagachika | 2019-01-02 15:44:14 +0900 (Wed, 02 Jan 2019) | 5 lines merge revision(s) 66685,66686: [Backport #15495] Try to update cert Try to update cert (2nd try) ------------------------------------------------------------------------ r66309 | nagachika | 2018-12-10 21:31:18 +0900 (Mon, 10 Dec 2018) | 7 lines merge revision(s) 62621: [Backport #15396] compile.c: do not truncate VALUE to long * compile.c (ibf_dump_object_regexp): do not truncate VALUE to long. it makes invalid VALUE on IL32LLP64 platforms where long is shorter than VALUE. ------------------------------------------------------------------------ r66298 | nagachika | 2018-12-09 15:46:44 +0900 (Sun, 09 Dec 2018) | 5 lines conceptually partial backport from r63103, r65567. All ISeq#to_binary should rescue to skip when running with coverage. current trunk (2.6-) has assert_iseq_to_binary. ------------------------------------------------------------------------ r66297 | nagachika | 2018-12-09 14:38:38 +0900 (Sun, 09 Dec 2018) | 5 lines merge revision(s) 61535: iseq.c: fix build error when VM_CHECK_MODE is enabled Follow up of r61534. Sorry. ------------------------------------------------------------------------ r66285 | nagachika | 2018-12-08 17:00:22 +0900 (Sat, 08 Dec 2018) | 3 lines merge revision(s) 65667: [Backport #15284] Fix for bison 3.2 [Bug #15284] ------------------------------------------------------------------------ r66225 | nagachika | 2018-12-05 23:35:07 +0900 (Wed, 05 Dec 2018) | 26 lines merge revision(s) 64736,65567: [Backport #15270] iseq.c: prefix rb_ to non-static iseq functions I assume we always prefix rb_ to non-static functions to avoid conflict. These functions are not exported and safe to be renamed. iseq.h: ditto compile.c: ditto Fix TracePoint for nested iseq loaded from binary [Bug#14702] When loading iseq from binary while a TracePoint is on, we need to recompile instructions to their "trace_" variant. Before this commit we only recompiled instructions in the top level iseq, which meant that TracePoint was malfunctioning for code inside module/class/method definitions. * compile.c: Move rb_iseq_init_trace to rb_ibf_load_iseq_complete. It is called on all iseqs during loading. * test_iseq.rb: Test that tracepoints fire within children iseq when using load_from_binary. This patch is from: Alan Wu <XrXr@users.noreply.github.com> ------------------------------------------------------------------------ r66131 | nagachika | 2018-12-02 16:37:49 +0900 (Sun, 02 Dec 2018) | 6 lines merge revision(s) 62776: [Backport #15365] test_iseq.rb: skip iseq with coverage * test/ruby/test_iseq.rb (test_to_binary_with_objects): #to_binary does not support iseq compiled with coverage, just skip. ------------------------------------------------------------------------ r66130 | nagachika | 2018-12-02 16:13:22 +0900 (Sun, 02 Dec 2018) | 7 lines merge revision(s) 63040: [Backport #14553] compile.c: do not dump unused callinfos * compile.c (compile_if): rewind callinfo indexes used in unreachable paths, to get rid of dumping unused callinfos. [ruby-core:86399] [Bug #14553] ------------------------------------------------------------------------ r66112 | nagachika | 2018-12-01 13:19:25 +0900 (Sat, 01 Dec 2018) | 3 lines merge revision(s) 65365: Update for tzdata-2018f ------------------------------------------------------------------------ r66105 | nagachika | 2018-11-30 20:59:43 +0900 (Fri, 30 Nov 2018) | 3 lines merge revision(s) 65956: fix r65954; Keep tainty ------------------------------------------------------------------------ r66074 | nagachika | 2018-11-28 22:55:17 +0900 (Wed, 28 Nov 2018) | 25 lines merge revision(s) 64799,64800,64801: [Backport #15105] fix typo. * vm_exec.h (DEBUG_END_INSN()): use `ec` instead of `th`. This macro is used when `VMDEBUG > 0`. escape all env properly. * vm_backtrace.c (rb_debug_inspector_open): escape all env using `rb_vm_stack_to_heap()` before making bindings. [Bug #15105] There is a complicated story of this issue: Without this patch, IFUNC frame does not escaped. A IFUNC frame points to CFUNC ep as previous ep. However, CFUNC ep can be escaped because of making bindings of Ruby level frames. IFUNC's ep can points to invalidated ep and `rb_iter_break()` will fail. This is why `any?` fails. * test/-ext-/debug/test_debug.rb: add a test. * remove trailing spaces. ------------------------------------------------------------------------ r66073 | nagachika | 2018-11-28 22:36:08 +0900 (Wed, 28 Nov 2018) | 17 lines merge revision(s) 65954,65955,65958: [Backport #15337] Don't use single byte optimization on grapheme clusters Unicode Text Segmentation considers CRLF as a character. [Bug #15337] add tests using Unicode test data for grapheme clusters Add file test/ruby/enc/test_grapheme_breaks.rb to test String#each_grapheme_cluster and \X extended grapheme cluster matcher in regular expressions against test data provided by Unicode (ucd/auxiliary/GraphemeBreakTest.txt). Some lines in the data file are ignored, as follows: - Lines with a surrogate, because Ruby doesn't handle these - The case of "\r\n", because there is a bug (#15337) in the implementation remove guard against bug #15337, because it is fixed ------------------------------------------------------------------------ r65728 | nagachika | 2018-11-15 00:21:50 +0900 (Thu, 15 Nov 2018) | 8 lines merge revision(s) 62772: [Backport #14738] compile.c: fix load_from_binary * compile.c (ibf_load_iseq_each): realpath may be nil. follow up r59709. [fix https://github.com/Shopify/bootsnap/issues/132] From: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> ------------------------------------------------------------------------ r65582 | nagachika | 2018-11-07 00:52:16 +0900 (Wed, 07 Nov 2018) | 3 lines merge revision(s) 65554: [Backport #15282] Don't set throw data as cause [Bug #15282] ------------------------------------------------------------------------ r65581 | nagachika | 2018-11-07 00:31:15 +0900 (Wed, 07 Nov 2018) | 7 lines merge revision(s) 65460: [Backport #15271] parse.y: last location from bison * parse.y (command): set the last location from the location managed by bison, so that other nodes are not needed. [ruby-core:89648] [Bug #15271] ------------------------------------------------------------------------ r65580 | nagachika | 2018-11-07 00:13:01 +0900 (Wed, 07 Nov 2018) | 7 lines merge revision(s) 65350: [Backport #15245] compile.c: fix peephole optimization * compile.c (iseq_peephole_optimize): should `pop` before jump instruction which succeeds to `newarray` of a literal object, not after. [ruby-core:89536] [Bug #15245] ------------------------------------------------------------------------ r65579 | nagachika | 2018-11-06 23:49:59 +0900 (Tue, 06 Nov 2018) | 7 lines merge revision(s) 64786: [Backport #15087] parse.y: fix block passing with empty kwargs * parse.y (arg_blk_pass): preceeding arguments node may be NULL when an empty keyword argument hash splat is optimized away. [ruby-core:88890] [Bug #15087] ------------------------------------------------------------------------ r65274 | nagachika | 2018-10-21 20:19:59 +0900 (Sun, 21 Oct 2018) | 7 lines merge revision(s) 64515: remove `const` warning. * compile.c (iseq_ibf_load): remove `const` to pass iseq as no `const` parameter. ------------------------------------------------------------------------ r65273 | nagachika | 2018-10-21 20:16:49 +0900 (Sun, 21 Oct 2018) | 1 line bump up teeny version to 2.5.4. ------------------------------------------------------------------------ r65155 | nagachika | 2018-10-18 19:45:08 +0900 (Thu, 18 Oct 2018) | 1 line bump up teeny version to 2.5.3. ------------------------------------------------------------------------ r65132 | nagachika | 2018-10-18 00:26:54 +0900 (Thu, 18 Oct 2018) | 28 lines Import Ruby/OpenSSL 2.1.2. Original patches are written by rhe. Changes since v2.1.1 can be found at the upstream GitHub repository: https://github.com/ruby/openssl/compare/v2.1.1..v2.1.2 Kazuki Yamaguchi (9): pkey: resume key generation after interrupt tool/ruby-openssl-docker: update to latest versions test/test_ssl: fix test failure with TLS 1.3 test/test_x509name: change script encoding to ASCII-8BIT x509name: refactor OpenSSL::X509::Name#to_s x509name: fix handling of X509_NAME_{oneline,print_ex}() return value x509name: fix OpenSSL::X509::Name#{cmp,<=>} Ruby/OpenSSL 2.0.9 Ruby/OpenSSL 2.1.2 nobu (6): no ID cache in Init functions search winsock libraries explicitly openssl: search winsock openssl_missing.h: constified reduce LibreSSL warnings needs openssl/opensslv.h ------------------------------------------------------------------------ r65128 | nagachika | 2018-10-18 00:06:18 +0900 (Thu, 18 Oct 2018) | 8 lines merge revision(s) 65125: infect taint flag on Array#pack and String#unpack with the directives "B", "b", "H" and "h". * pack.c (pack_pack, pack_unpack_internal): infect taint flag. * test/ruby/test_pack.rb: add test for above. ------------------------------------------------------------------------ r65100 | nagachika | 2018-10-17 08:23:05 +0900 (Wed, 17 Oct 2018) | 6 lines merge revision(s) 64913: [Backport #15223] Support ubasecrt.dll 10.0.17763.1 included in Windows 10 October 2018 Update ------------------------------------------------------------------------ r65002 | nagachika | 2018-10-12 00:12:06 +0900 (Fri, 12 Oct 2018) | 11 lines merge revision(s) 64745: [Backport #15118] Use opt_{aref,aset} over opt_{aref,aset}_with * compile.c (iseq_compile_each0): Use `opt_aref`/`opt_aset` over `opt_aref_with`/`opt_aset_with` when frozen_string_literal: true, not to resurrect the index string on non-Hash receiver. [Fix GH-1957] From: chopraanmol1 <chopraanmol1@gmail.com> ------------------------------------------------------------------------ r64999 | nagachika | 2018-10-11 23:58:30 +0900 (Thu, 11 Oct 2018) | 20 lines merge revision(s) 64062: [Backport #14939] cont.c (ec_switch): prevent delayed/missed trap interrupt race timer-thread may set trap interrupt with rb_threadptr_check_signal at any time independent of GVL. This means timer-thread may set the trap interrupt flag on the previous execution context; causing the flag to be unnoticed until a future ec switch (or lost completely if the ec is done). Note: I avoid relying on th->interrupt_lock here and use atomics because we won't be able to rely on it for proposed lazy timer-thread [Misc #14937]. This regression affects Ruby 2.5 as it was introduced by moving interrupt_flag to `ec' which is an unstable pointer. Ruby <= 2.4 was unaffected because vm->main_thread->interrupt_flag never changed. [ruby-core:88119] [Bug #14939] ------------------------------------------------------------------------ r64998 | nagachika | 2018-10-11 23:40:04 +0900 (Thu, 11 Oct 2018) | 22 lines merge revision(s) 63711,64398: [Backport #14841] thread_sync.c (rb_mutex_lock): fix deadlock * thread_sync.c (rb_mutex_lock): fix deadlock [ruby-core:87467] [Bug #14841] thread_sync.c (rb_mutex_lock): acquire lock before being killed We (the thread acquiring the mutex) need to acquire the mutex before being killed to work with ConditionVariable#wait. Thus we reinstate the acquire-immediately-after-sleeping logic from pre-r63711 while still retaining the acquire-after-checking-for-interrupts logic from r63711. This regression was introduced in commit 501069b8a4013f2e3fdde35c50e9527ef0061963 (r63711) ("thread_sync.c (rb_mutex_lock): fix deadlock") for [Bug #14841] [ruby-core:88503] [Bug #14999] [Bug #14841] ------------------------------------------------------------------------ r64997 | nagachika | 2018-10-11 23:20:25 +0900 (Thu, 11 Oct 2018) | 11 lines merge revision(s) 64514: [Backport #14702] check trace flags at loading [Bug #14702] * iseq.c (iseq_init_trace): at ISeq loading time, we need to check `ruby_vm_event_enabled_flags` to turn on trace instructions. Seprate this checking code from `finish_iseq_build()` and make new function. `iseq_ibf_load()` calls this funcation after loading. * test/ruby/test_iseq.rb: add a test for this fix. ------------------------------------------------------------------------ r64996 | nagachika | 2018-10-11 22:51:19 +0900 (Thu, 11 Oct 2018) | 7 lines merge revision(s) 63030: [Backport #14639] array.c: yield blockarg in collect * array.c (rb_ary_collect): yield in block argument semantics always to splat array elements to lambda, for the backward compatibility. [ruby-core:86362] [Bug #14639] ------------------------------------------------------------------------ r64982 | nagachika | 2018-10-09 23:43:06 +0900 (Tue, 09 Oct 2018) | 10 lines merge revision(s) 64860,64861: [Backport #15164] fallback env encoding to ASCII-8BIT * hash.c (env_enc_str_new): as no locale/filesystem encoding is available in miniruby on Windows, fallback the encoding to ASCII-8BIT so it is valid encoding when the conversion failed. [ruby-core:89177] [Bug #15164] * properties. ------------------------------------------------------------------------ r64981 | nagachika | 2018-10-09 23:39:16 +0900 (Tue, 09 Oct 2018) | 14 lines merge revision(s) 63067,63068: [Backport #14658] Fix Kernel#singleton_method with Module#Prepend * proc.c (rb_obj_singleton_method): search the method entry from the origin class, for fix prepended modules. [Bug #14658] From: Vasiliy Ermolovich <younash@gmail.com> proc.c: fix segfault when no singleton class * proc.c (rb_obj_singleton_method): bail out if the receiver does not have the singleton class without accessing the origin class not to segfault. [Bug #14658] ------------------------------------------------------------------------ r64980 | nagachika | 2018-10-09 23:25:37 +0900 (Tue, 09 Oct 2018) | 5 lines merge revision(s) 64900: [Backport #15190] Just a shebang is valid code [ruby-core:89240] [Bug #15190] ------------------------------------------------------------------------ r64979 | nagachika | 2018-10-09 23:09:35 +0900 (Tue, 09 Oct 2018) | 12 lines merge revision(s) 62007,62024: [Backport #13069] mkmf.rb: ignore linker warnings * lib/mkmf.rb (try_ldflags): ignore linker warnings. they cause unexpected failures on OpenBSD. [ruby-core:78827] [Bug #13069] mkmf.rb: werror on mswin * lib/mkmf.rb (MakeMakefile#try_ldflags): enable warning checking on mswin, link.exe warns -l options but does not fail. [Bug #13069] ------------------------------------------------------------------------ r64978 | nagachika | 2018-10-09 22:59:53 +0900 (Tue, 09 Oct 2018) | 7 lines merge revision(s) 64915: [Backport #15205] check argument type. * iseq.c (iseqw_s_compile): check argument type (T_STRING) to avoid SEGV. ------------------------------------------------------------------------ r64893 | nagachika | 2018-10-01 21:02:17 +0900 (Mon, 01 Oct 2018) | 33 lines merge revision(s) 63868,63870: [Backport #14897] Fix a bug of peephole optimization ``` if L1 L0: jump L2 L1: ... L2: ``` was wrongly optimized to: ``` unless L2 L0: L1: ... L2: ``` To make it conservative, this optimization is now disabled when there is any label between `if` and `jump` instructions. Fixes [Bug #14897]. compile.c: remove unreachable jump only * compile.c (iseq_peephole_optimize): remove unreachable jump instruction only. if it is labeled and referred from other instructions, it is reachable and must not be removed. [ruby-core:87830] [Bug #14897] ------------------------------------------------------------------------ r64621 | nagachika | 2018-09-03 20:04:55 +0900 (Mon, 03 Sep 2018) | 1 line test/test_tmpdir.rb(TRAVERSAL_PATH): re-apply r62990 partially. [Backport #14966] ------------------------------------------------------------------------ r64617 | nagachika | 2018-09-02 20:23:06 +0900 (Sun, 02 Sep 2018) | 7 lines merge revision(s) 64092: [Backport #14942] win32.c: limit write size on console * win32/win32.c (constat_parse): split long buffer and limit write size on a console, as well as rb_w32_write. [ruby-dev:50597] [Bug #14942] ------------------------------------------------------------------------ r64616 | nagachika | 2018-09-02 20:20:33 +0900 (Sun, 02 Sep 2018) | 6 lines merge revision(s) 64071: [Backport #14941] ruby.c: taint ARGV on Windows * ruby.c (external_str_new_cstr): strings come from the external should be tainted. [ruby-dev:50596] [Bug #14941] ------------------------------------------------------------------------ r64613 | nagachika | 2018-09-02 12:43:25 +0900 (Sun, 02 Sep 2018) | 1 line test/ruby/test_io.rb (test_select_leak): extend timeout for Arch Linux[Backport 14929] ------------------------------------------------------------------------ r64612 | nagachika | 2018-09-01 19:50:39 +0900 (Sat, 01 Sep 2018) | 1 line bump up patchlevel for r64611 ------------------------------------------------------------------------ r64611 | nagachika | 2018-09-01 19:49:09 +0900 (Sat, 01 Sep 2018) | 1 line test/ruby/test_io.rb (test_select_leak): extend timeout [Bug 14929] ------------------------------------------------------------------------ r64605 | nagachika | 2018-09-01 14:40:02 +0900 (Sat, 01 Sep 2018) | 21 lines merge revision(s) 64007,64019,64020: [Backport #14929] thread.c (do_select): fix leak on exception When do_select is interrupted and raise happens from RUBY_VM_CHECK_INTS_BLOCKING, the original FD sets we copied do not get freed, leading to a memory leak. Wrap up all the FD sets into a Ruby object to ensure the GC can release an allocations made for rb_fdset_t. This leak existed since Ruby 2.0.0 (r36430) [Bug #14929] increase timeout seconds. * test/ruby/test_io.rb (test_select_leak): increase timeout seconds to pass this test on a high-load machine. 60 sec is not enough at all ------------------------------------------------------------------------ r64603 | nagachika | 2018-09-01 11:31:27 +0900 (Sat, 01 Sep 2018) | 8 lines merge revision(s) 64014: [Backport #14926] fix sum on infinity * array.c (rb_ary_sum): consider non-finite floats. [ruby-core:88024] [Bug #14926] * enum.c (sum_iter): ditto. ------------------------------------------------------------------------ r64602 | nagachika | 2018-09-01 11:03:24 +0900 (Sat, 01 Sep 2018) | 6 lines merge revision(s) 63994: [Backport #14920] reduce tzset * time.c (rb_localtime_r): call tzset() only after TZ environment variable is changed. ------------------------------------------------------------------------ r64443 | nagachika | 2018-08-18 17:35:42 +0900 (Sat, 18 Aug 2018) | 9 lines merge revision(s) 62099: [Backport #14416] net/pop: make modified strings mutable Thanks to Michael Zimmerman for the bug report * lib/net/pop.rb: make modified strings mutable [ruby-core:85210] [Bug #14416] * test/net/pop/test_pop.rb: new test ------------------------------------------------------------------------ r64439 | nagachika | 2018-08-18 14:20:55 +0900 (Sat, 18 Aug 2018) | 9 lines merge revision(s) 63741: [Backport #14868] process.c (ruby_fork_ruby): fix race in signal handling We must block signals before stopping timer-thread, otherwise signal handing may be delayed until (and if) another signal is received after timer-thread is restarted. [ruby-core:87622] [Bug #14868] [Bug #13916] ------------------------------------------------------------------------ r64438 | nagachika | 2018-08-18 14:04:31 +0900 (Sat, 18 Aug 2018) | 8 lines merge revision(s) 63727: [Backport #14865] vm.c: fix infinite loop * vm.c: use EXEC_EVENT_HOOK_AND_POP_FRAME. While exception handling, if an exception is raised in hooks, need to pop current frame and raise this raised exception by hook. [ruby-dev:50582] [Bug #14865] ------------------------------------------------------------------------ r64437 | nagachika | 2018-08-18 13:40:01 +0900 (Sat, 18 Aug 2018) | 15 lines merge revision(s) 63698: [Backport #14856] lib/drb/extservm.rb (service): do not return `false' invoke_service_command may set entries in @servers to `false', making it incompatible with the intended use of the safe navigation operator. This caused occasional DRb test failures, but they were hidden with automatic retry. [ruby-core:87524] [Bug #14856] Fixes: r53111 ("use safe navigation operator") commit 059c9c1cf371e049c7481c78b76e9620da52757f [GH-1142] ------------------------------------------------------------------------ r64435 | nagachika | 2018-08-18 13:19:42 +0900 (Sat, 18 Aug 2018) | 9 lines merge revision(s) 63112: [Backport #14818] Remove outdated example from Numeric documentation Since 2.5, Numeric instances can be cloned and duplicated. [Fix GH-1850] From: Miguel Landaeta <miguel@miguel.cc> ------------------------------------------------------------------------ r64434 | nagachika | 2018-08-18 13:18:32 +0900 (Sat, 18 Aug 2018) | 24 lines merge revision(s) 63571,63572: [Backport #14816] `int isnan(double)` is a POSIXism - `isnan` is something relatively new. We need to provide one for those systems without it. However: - X/Open defines `int isnan(double)`. Note the `int`. - C99 defines `isnan(x)` to be a macro. - C++11 nukes them all, undefines all the "masking macro"s, and defines its own `bool isnan(double)`. Note the `bool`. - In C++, `int isnan(double)` and `bool isnan(double)` are incompatible. - So the mess. [Bug #14816][ruby-core:87364] further reading: https://developers.redhat.com/blog/2016/02/29/why-cstdlib-is-more-complicated-than-you-might-think/ include/ruby/missing.h: defined(__cplusplus) before using __cplusplus * include/ruby/missing.h (isinf, isnan): For non-C++ programs, defined(__cplusplus) may be needed before using __cplusplus. [Bug #14816] ------------------------------------------------------------------------ r64432 | nagachika | 2018-08-18 12:37:56 +0900 (Sat, 18 Aug 2018) | 21 lines merge revision(s) 63549,63551,63554: [Backport #14805] memo->u3.cnt is long not int [Bug #14805] enum.c: mitigate overflows * enum.c (enum_count): convert counters to Integer as unsigned long, instead of long, to mitigate overflows. [ruby-core:87348] [Bug #14805] * enum.c (ary_inject_op): ditto. * enum.c (each_with_index_i): ditto, instead of int. * enum.c (find_index_i, find_index_iter_i): ditto, instead of unsigned int. enum.c: bignum counter * enum.c (imemo_count_up, imemo_count_value): promote the counter value to a bignum on overflow. [Bug #14805] ------------------------------------------------------------------------ r64431 | nagachika | 2018-08-18 12:07:15 +0900 (Sat, 18 Aug 2018) | 12 lines merge revision(s) 63512,63514: [Backport #14790] 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] 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] ------------------------------------------------------------------------ r64430 | nagachika | 2018-08-18 11:56:32 +0900 (Sat, 18 Aug 2018) | 6 lines merge revision(s) 63417: [Backport #14756] error.c: check redefined backtrace result * error.c (rb_get_backtrace): check the result of `backtrace` even if the method is redefined. [ruby-core:87013] [Bug #14756] ------------------------------------------------------------------------ r64428 | nagachika | 2018-08-18 11:39:09 +0900 (Sat, 18 Aug 2018) | 17 lines merge revision(s) 63406: [Backport #14754] openssl: merge changes in v2.1.1 Commits in upstream repository since v2.1.0 can be found at: https://github.com/ruby/openssl/compare/v2.1.0...v2.1.1 ---------------------------------------------------------------- Kazuki Yamaguchi (7): test/utils: disable Thread's report_on_exception in start_server cipher: validate iterations argument for Cipher#pkcs5_keyivgen extconf.rb: fix build with LibreSSL 2.7.0 test/test_pkey_rsa: fix test failure with OpenSSL 1.1.1 test/test_ssl_session: set client protocol version explicitly Ruby/OpenSSL 2.0.8 Ruby/OpenSSL 2.1.1 ------------------------------------------------------------------------ r64421 | nagachika | 2018-08-18 01:27:13 +0900 (Sat, 18 Aug 2018) | 7 lines merge revision(s) 62952: [Backport #14638] win32/file.c: relative path with drive letter * win32/file.c (IS_ABSOLUTE_PATH_P): home directory should not be a relative path regardless a drive letter. PathIsRelativeW returns FALSE on such path. [ruby-core:86356] [Bug #14638] ------------------------------------------------------------------------ r64420 | nagachika | 2018-08-18 01:20:53 +0900 (Sat, 18 Aug 2018) | 6 lines merge revision(s) 63396: [Backport #14750] net/imap: Fix ArgumentError in send_string_data Thanks to ShockwaveNN (Pavel Lobashov) for reporting the bug. [ruby-core:86990] [Bug #14750] ------------------------------------------------------------------------ r64419 | nagachika | 2018-08-18 00:48:46 +0900 (Sat, 18 Aug 2018) | 7 lines merge revision(s) 63255: [Backport #14708] compile.c: fix unconditional branch optimization * compile.c (iseq_peephole_optimize): add dummy `putnil` after a `jump` replacing an unconditional branch, to adjust removed `dup`. [ruby-core:86666] [Bug #14708] ------------------------------------------------------------------------ r64418 | nagachika | 2018-08-18 00:33:57 +0900 (Sat, 18 Aug 2018) | 5 lines merge revision(s) 61567: [Backport #14693] fix uninitialized variable Likewise this can easily be noticed if you read the warnings. ------------------------------------------------------------------------ r64320 | nagachika | 2018-08-12 20:51:02 +0900 (Sun, 12 Aug 2018) | 7 lines merge revision(s) 63252: [Backport #14707] string.c: fix scanned substring with `\K` * string.c (scan_once): fix the matched substring with `\K`, the beginning of that string may differ from the matched position. [ruby-core:86663] [Bug #14707] ------------------------------------------------------------------------ r64319 | nagachika | 2018-08-12 19:37:03 +0900 (Sun, 12 Aug 2018) | 8 lines merge revision(s) 63133: [Backport #14566] eval_error.c: fix loop on exception in message * error.c (rb_get_message): accessor to the message. * eval_error.c (rb_ec_error_print): handle exceptions on fetching the message. [Bug #14566] ------------------------------------------------------------------------ r64195 | nagachika | 2018-08-05 19:59:57 +0900 (Sun, 05 Aug 2018) | 7 lines merge revision(s) 61766: [Backport #14350] vm_insnhelper.c: search in the indexing order * vm_insnhelper.c (vm_opt_newarray_max, vm_opt_newarray_min): search in the indexing order, as well as usual methods. [ruby-core:84821] [Bug #14350] ------------------------------------------------------------------------ r63826 | nagachika | 2018-07-02 18:15:33 +0900 (Mon, 02 Jul 2018) | 9 lines merge revision(s) 63304: [Backport #14713] io.c: workaround for EPROTOTYPE * io.c (internal_write_func, internal_writev_func): retry at unexpected EPROTOTYPE on macOS, to get rid of a kernel bug. [ruby-core:86690] [Bug #14713] * ext/socket/init.c (rsock_{sendto,send,write}_blocking): ditto. ------------------------------------------------------------------------ r63825 | nagachika | 2018-07-02 17:53:52 +0900 (Mon, 02 Jul 2018) | 7 lines merge revision(s) 63696: [Backport #14853] variable.c: fix receiver on private constant * variable.c (rb_const_search): fix NameError :receiver attribute on private constant, should raise with the included module, not the ICLASS. ------------------------------------------------------------------------ r63824 | nagachika | 2018-07-02 17:30:36 +0900 (Mon, 02 Jul 2018) | 27 lines merge revision(s) 62731,62735: [Backport #14495] Bug Fix Enumerator::Lazy#uniq state for multiple call * enumerator.c (lazy_uniq_i): create new hash for each calls. [Fix GH-1820] Currently 2.5.0-preview1 :001 > arr = (0..100).lazy.uniq{|i| i % 10} => #<Enumerator::Lazy: #<Enumerator::Lazy: 0..100>:uniq> 2.5.0-preview1 :002 > arr.to_a => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2.5.0-preview1 :003 > arr.to_a => [] Expected arr.to_a to always return same output From: Anmol Chopra <anmolchopra@rocketbox.in> test_enumerator.rb: duplicate assertions * test/ruby/test_enumerator.rb (test_uniq): remove assertions which ared duplicate of lazy enumerator tests in test_lazy_enumerator.rb. ------------------------------------------------------------------------ r63819 | nagachika | 2018-07-02 09:31:27 +0900 (Mon, 02 Jul 2018) | 23 lines merge revision(s) 61525,61527,63062,63650: [Backport #14846] error.c: negative uplevel * error.c (rb_warn_m): negative uplevel is not allowed. [ruby-core:84568] [Bug #14262] error.c: limit depth * error.c (rb_warn_m): limit backtrace depth to reduce objects to be created but not used. error.c: prepend "warning: " always * error.c (rb_warn_m): prepend the string "warning: " if uplevel keyword is given, even if caller file and line information are not available. Fix condition in Kernel#warn when using uplevel * It causes SEGV on `warn("foo", uplevel: 100)`. * Found in a ruby/spec added by @andrykonchin in https://github.com/ruby/spec/pull/605 ------------------------------------------------------------------------ r63818 | nagachika | 2018-07-02 09:17:38 +0900 (Mon, 02 Jul 2018) | 1 line bump up teeny version to 2.5.2. ------------------------------------------------------------------------ r63817 | nagachika | 2018-07-02 09:14:53 +0900 (Mon, 02 Jul 2018) | 19 lines merge revision(s) 63054,63055,63056: [Backport #14655] test_time_tz.rb: Kiritimati tzdata fix * test/ruby/test_time_tz.rb (TestTimeTZ#test_pacific_kiritimati): fix the expected data at the skip of New Year's Eve 1994. [Bug #14655] test_time_tz.rb: Kiritimati tzdata fix * test/ruby/test_time_tz.rb (gen_zdump_test): fix the expected data at the Kiritimati's skip of New Year's Eve 1994. [Bug #14655] test_time_tz.rb: Lisbon tzdata fix * test/ruby/test_time_tz.rb (gen_variational_zdump_test): Update Lisbon zdump data, which fixed the 1912-01-01 transition for Portugual and its colonies. [Bug #14655] ------------------------------------------------------------------------ r63049 | naruse | 2018-03-31 22:50:56 +0900 (Sat, 31 Mar 2018) | 3 lines merge revision(s) 63048: [Backport #14654] Resurvey performance of RDoc by frozen_string_literal: true [Bug #14654] ------------------------------------------------------------------------ r63035 | naruse | 2018-03-29 19:05:57 +0900 (Thu, 29 Mar 2018) | 3 lines merge revision(s) 61470: Add ruby_2_5 branch to .travis.yml ------------------------------------------------------------------------ r63027 | naruse | 2018-03-29 01:45:58 +0900 (Thu, 29 Mar 2018) | 2 lines p57 ------------------------------------------------------------------------ r63026 | svn | 2018-03-29 01:44:34 +0900 (Thu, 29 Mar 2018) | 1 line * 2018-03-29 ------------------------------------------------------------------------ r63025 | naruse | 2018-03-29 01:44:33 +0900 (Thu, 29 Mar 2018) | 4 lines revert r62985 (r62966 in trunk) It breaks test-all ------------------------------------------------------------------------ r63011 | naruse | 2018-03-28 22:46:14 +0900 (Wed, 28 Mar 2018) | 9 lines merge revision(s) 63008: get rid of test error/failure on Windows introduced at r62955 * lib/webrick/httpresponse.rb (send_body_io): use seek if NotImplementedError is raised in IO.copy_stream with offset. * lib/webrick/httpservlet/filehandler.rb (multipart_body): ditto. ------------------------------------------------------------------------ r63010 | naruse | 2018-03-28 22:45:50 +0900 (Wed, 28 Mar 2018) | 2 lines Revert wrong commit r62976-r62978 ------------------------------------------------------------------------ r63009 | naruse | 2018-03-28 22:43:23 +0900 (Wed, 28 Mar 2018) | 6 lines merge revision(s) 63000: unixsocket.c: abstract namespace * ext/socket/unixsocket.c (unixsock_path_value): fix r62991 for Linux abstract namespace. ------------------------------------------------------------------------ r63007 | naruse | 2018-03-28 21:54:26 +0900 (Wed, 28 Mar 2018) | 2 lines fix r62970 as r62990 ------------------------------------------------------------------------ r63006 | naruse | 2018-03-28 21:50:56 +0900 (Wed, 28 Mar 2018) | 98 lines merge revision(s) 62953-62959: win32/file.c: relative path with drive letter * win32/file.c (IS_ABSOLUTE_PATH_P): home directory should not be a relative path regardless a drive letter. PathIsRelativeW returns FALSE on such path. [ruby-core:86356] [Bug #14638] ------------------------------------------------------------------------ r62953 | normal | 2018-03-28 17:05:46 +0900 (Wed, 28 Mar 2018) | 15 lines webrick: favor .write over << method This will make the next change to use IO.copy_stream easier-to-read. When we can drop Ruby 2.4 support in a few years, this will allow us to use writev(2) with multiple arguments for headers and chunked responses. * lib/webrick/cgi.rb (write): new wrapper method lib/webrick/httpresponse.rb: (send_header): use socket.write (send_body_io): ditto (send_body_string): ditto (send_body_proc): ditto (_write_data): ditto (ChunkedWrapper#write): ditto (_send_file): ditto ------------------------------------------------------------------------ r62954 | normal | 2018-03-28 17:05:52 +0900 (Wed, 28 Mar 2018) | 14 lines webrick/httpresponse: IO.copy_stream for regular files Remove the redundant _send_file method since its functionality is unnecessary with IO.copy_stream. IO.copy_stream also allows the use of sendfile under some OSes to speed up copies to non-TLS sockets. Testing with "curl >/dev/null" and "ruby -run -e httpd" to read a 1G file over Linux loopback reveals a reduction from around ~0.770 to ~0.490 seconds on the client side. * lib/webrick/httpresponse.rb (send_body_io): use IO.copy_stream (_send_file): remove [Feature #14237] ------------------------------------------------------------------------ r62955 | normal | 2018-03-28 17:05:57 +0900 (Wed, 28 Mar 2018) | 10 lines webrick: use IO.copy_stream for single range response This is also compatible with range responses generated by Rack::File (tested with rack 2.0.3). * lib/webrick/httpresponse.rb (send_body_io): use Content-Range * lib/webrick/httpservlet/filehandler.rb (make_partial_content): use File object for the single range case * test/webrick/test_filehandler.rb (get_res_body): use send_body to test result ------------------------------------------------------------------------ r62956 | normal | 2018-03-28 17:06:02 +0900 (Wed, 28 Mar 2018) | 7 lines test/webrick/test_filehandler.rb: stricter multipart range test We need to ensure we generate compatibile output in the face of future changes * test/webrick/test_filehandler.rb (test_make_partial_content): check response body ------------------------------------------------------------------------ r62957 | normal | 2018-03-28 17:06:08 +0900 (Wed, 28 Mar 2018) | 8 lines webrick: quiet warning for multi-part ranges Content-Length is ignored by WEBrick::HTTPResponse even if we calculate it, so instead we chunk responses to HTTP/1.1 clients and terminate HTTP/1.0 connections. * lib/webrick/httpservlet/filehandler.rb (make_partial_content): quiet warning ------------------------------------------------------------------------ r62958 | normal | 2018-03-28 17:06:13 +0900 (Wed, 28 Mar 2018) | 7 lines webrick/httpresponse: make ChunkedWrapper copy_stream-compatible The .write method needs to return the number of bytes written to avoid confusing IO.copy_stream. * lib/webrick/httpresponse.rb (ChunkedWrapper#write): return bytes written (ChunkedWrapper#<<): return self ------------------------------------------------------------------------ r62959 | normal | 2018-03-28 17:06:18 +0900 (Wed, 28 Mar 2018) | 9 lines webrick: use IO.copy_stream for multipart response Use the new Proc response body feature to generate a multipart range response dynamically. We use a flat array to minimize object overhead as much as possible; as many ranges may fit into an HTTP request header. * lib/webrick/httpservlet/filehandler.rb (multipart_body): new method (make_partial_content): use multipart_body ------------------------------------------------------------------------ r62986 | naruse | 2018-03-28 18:26:17 +0900 (Wed, 28 Mar 2018) | 9 lines webrick: prevent response splitting and header injection Original patch by tenderlove (with minor style adjustments). * lib/webrick/httpresponse.rb (send_header): call check_header (check_header): raise on embedded CRLF in header value * test/webrick/test_httpresponse.rb (test_prevent_response_splitting_headers): new test * (test_prevent_response_splitting_cookie_headers): ditto ------------------------------------------------------------------------ r62985 | naruse | 2018-03-28 18:26:16 +0900 (Wed, 28 Mar 2018) | 23 lines webrick/httpproxy: stream request and response bodies Reading entire request or response bodies into memory can lead to trivial denial-of-service attacks. Introduce Fibers in both cases to allow streaming. WEBrick::HTTPRequest gains a new body_reader method to prepare itself as a source for IO.copy_stream. This allows the WEBrick::HTTPRequest object to be used as the Net::HTTPGenericRequest#body_stream= arg for Net::HTTP. For HTTP proxy response bodies, we also use a Fiber to to make the HTTP request and read the response body. * lib/webrick/httprequest.rb (body_reader): new method (readpartial): ditto * lib/webrick/httpproxy.rb (perform_proxy_request): use Fiber to stream response body (do_GET, do_HEAD): adjust call (do_POST): adjust call and supply body_reader * test/webrick/test_httprequest.rb (test_chunked): test for IO.copy_stream compatibility * test/webrick/test_httpproxy.rb (test_big_bodies): new test ------------------------------------------------------------------------ r62984 | naruse | 2018-03-28 18:26:14 +0900 (Wed, 28 Mar 2018) | 18 lines webrick/httpauth/digestauth: stream req.body WARNING! WARNING! WARNING! LIKELY BROKEN CHANGE Pass a proc to WEBrick::HTTPRequest#body to avoid reading a potentially large request body into memory during authentication. WARNING! this will break apps completely which want to do something with the body besides calculating the MD5 digest of it. Also, keep in mind that probably nobody uses "auth-int". Servers such as Apache, lighttpd, nginx don't seem to support it; nor does curl when using POST/PUT bodies; and we didn't have tests for it until now... * lib/webrick/httpauth/digestauth.rb (_authenticate): stream req.body ------------------------------------------------------------------------ r62983 | naruse | 2018-03-28 18:26:13 +0900 (Wed, 28 Mar 2018) | 9 lines webrick: add test for Digest auth-int No changes to the actual code, this is a new test for a feature for which no tests existed. I don't understand the Digest authentication code well at all, but this is necessary for the subsequent change. * test/webrick/test_httpauth.rb (test_digest_auth_int): new test (credentials_for_request): support bodies with POST ------------------------------------------------------------------------ r62982 | naruse | 2018-03-28 18:26:12 +0900 (Wed, 28 Mar 2018) | 9 lines webrick/httprequest: use InputBufferSize for chunked requests While WEBrick::HTTPRequest#body provides a Proc interface for streaming large request bodies, clients must not force the server to use an excessively large chunk size. * lib/webrick/httprequest.rb (read_chunk_size): limit each read and block.call to :InputBufferSize in config. * test/webrick/test_httpserver.rb (test_big_chunks): new test ------------------------------------------------------------------------ r62981 | naruse | 2018-03-28 18:26:12 +0900 (Wed, 28 Mar 2018) | 7 lines webrick/httprequest: raise correct exception "BadRequest" alone does not resolve correctly, it is in the HTTPStatus namespace. * lib/webrick/httprequest.rb (read_chunked): use correct exception * test/webrick/test_httpserver.rb (test_eof_in_chunk): new test ------------------------------------------------------------------------ r62980 | naruse | 2018-03-28 18:26:11 +0900 (Wed, 28 Mar 2018) | 9 lines webrick/httpservlet/cgihandler: reduce memory use WEBrick::HTTPRequest#body can be passed a block to process the body in chunks. Use this feature to avoid building a giant string in memory. * lib/webrick/httpservlet/cgihandler.rb (do_GET): avoid reading entire request body into memory (do_POST is aliased to do_GET, so it handles bodies) ------------------------------------------------------------------------ r62979 | naruse | 2018-03-28 18:26:10 +0900 (Wed, 28 Mar 2018) | 13 lines webrick/httprequest: limit request headers size We use the same 112 KB limit started (AFAIK) by Mongrel, Thin, and Puma to prevent malicious users from using up all the memory with a single request. This also limits the damage done by excessive ranges in multipart Range: requests. Due to the way we rely on IO#gets and the desire to keep the code simple, the actual maximum header may be 4093 bytes larger than 112 KB, but we're splitting hairs at that point. * lib/webrick/httprequest.rb: define MAX_HEADER_LENGTH (read_header): raise when headers exceed max length ------------------------------------------------------------------------ r62978 | naruse | 2018-03-28 18:26:09 +0900 (Wed, 28 Mar 2018) | 1 line sdbm: constified ------------------------------------------------------------------------ r62977 | naruse | 2018-03-28 18:26:08 +0900 (Wed, 28 Mar 2018) | 4 lines sdbm: check offset * ext/sdbm/_sdbm.c (splpage): check offset range. https://hackerone.com/reports/271291 ------------------------------------------------------------------------ r62976 | naruse | 2018-03-28 18:26:07 +0900 (Wed, 28 Mar 2018) | 6 lines sdbm: check offset * ext/sdbm/_sdbm.c (getpair, getnkey): check offset range. https://hackerone.com/reports/271096 * ext/sdbm/init.c (fsdbm_each_pair): raise if fetch failed. ------------------------------------------------------------------------ r62975 | naruse | 2018-03-28 18:26:06 +0900 (Wed, 28 Mar 2018) | 4 lines pack.c: fix underflow * pack.c (pack_unpack_internal): get rid of underflow. https://hackerone.com/reports/298246 ------------------------------------------------------------------------ r62974 | naruse | 2018-03-28 18:26:04 +0900 (Wed, 28 Mar 2018) | 9 lines dir.c: check NUL bytes * dir.c (GlobPathValue): should be used in rb_push_glob only. other methods should use FilePathValue. https://hackerone.com/reports/302338 * dir.c (rb_push_glob): expand GlobPathValue From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r62973 | naruse | 2018-03-28 18:26:01 +0900 (Wed, 28 Mar 2018) | 4 lines unixsocket.c: check NUL bytes * ext/socket/unixsocket.c (rsock_init_unixsock): check NUL bytes. https://hackerone.com/reports/302997 ------------------------------------------------------------------------ r62972 | svn | 2018-03-28 18:26:01 +0900 (Wed, 28 Mar 2018) | 1 line * 2018-03-28 ------------------------------------------------------------------------ r62971 | naruse | 2018-03-28 18:26:00 +0900 (Wed, 28 Mar 2018) | 1 line Remove directory separators ------------------------------------------------------------------------ r62911 | naruse | 2018-03-25 01:00:27 +0900 (Sun, 25 Mar 2018) | 18 lines merge revision(s) 61587,61617,61618: [Backport #14273] compile.c: next label * compile.c (compile_next): label for jump to the end of block is removable. compile.c: remove more unreachable chunk * compile.c (remove_unreachable_chunk): remove beyond labels to be removed. compile.c: fix stack consistency error * compile.c (iseq_peephole_optimize): fix stack consistency error from return in loop, by adding extra `pop` when replacing `jump` with `leave`, which is never reached but needed to adjust sp calculation. [ruby-core:84589] [Bug #14273] ------------------------------------------------------------------------ r62909 | naruse | 2018-03-24 20:43:50 +0900 (Sat, 24 Mar 2018) | 13 lines merge revision(s) 62723,62724: [Backport #14584] parse.y: reduce duplicate code parse.y: fix interpolated string literal dedent * parse.y (heredoc_dedent): fix interpolated string literal dedent, remove indentations from only nodes with the newline flag. [ruby-core:85983] [Bug #14584] * parse.y (here_document): set the newline flag on literal string nodes starting at the beginning of line. ------------------------------------------------------------------------ r62905 | naruse | 2018-03-24 19:57:34 +0900 (Sat, 24 Mar 2018) | 11 lines merge revision(s) 62548,62894: [Backport #14324] eval_error.c: rb_error_write flags * eval_error.c (rb_error_write): add highlight and reverse mode flags. defaulted to rb_stderr_tty_p() if Qnil. error.c: full_message options * error.c (exc_full_message): add highlight: and reverse: keyword options. [Bug #14324] ------------------------------------------------------------------------ r62896 | naruse | 2018-03-22 20:18:00 +0900 (Thu, 22 Mar 2018) | 7 lines merge revision(s) 62892,62893: [Backport #14363] fix each_grapheme_cluster's size [Bug #14363] From: Hugo Peixoto <hugo.peixoto@gmail.com> Factor out get_reg_grapheme_cluster ------------------------------------------------------------------------ r62895 | naruse | 2018-03-22 19:02:54 +0900 (Thu, 22 Mar 2018) | 2 lines teenyup ------------------------------------------------------------------------ r62890 | svn | 2018-03-22 16:00:18 +0900 (Thu, 22 Mar 2018) | 1 line * 2018-03-22 ------------------------------------------------------------------------ r62889 | naruse | 2018-03-22 16:00:17 +0900 (Thu, 22 Mar 2018) | 14 lines merge revision(s) 62042,62044: [Backport #14380] hash.c: support key swapping in Hash#transform_keys! * hash.c (rb_hash_transform_keys_bang): support key swapping in Hash#transform_keys! [Bug #14380] [ruby-core:84951] * test/ruby/test_hash.rb (test_transform_keys_bang): add assertions for this change Fix rubyspec against the change in Hash#transform_keys! [Bug #14380] [ruby-core:84951] ------------------------------------------------------------------------ r62860 | naruse | 2018-03-20 18:52:52 +0900 (Tue, 20 Mar 2018) | 9 lines merge revision(s) 62725: [Backport #14604] Fix setting method visibility on method wrapped with prepend Ignore prepended modules when looking for already defined methods on a class to set the visibility on. [Fix GH-1834] From: Dylan Thacker-Smith <Dylan.Smith@shopify.com> ------------------------------------------------------------------------ r62859 | naruse | 2018-03-20 18:39:52 +0900 (Tue, 20 Mar 2018) | 7 lines merge revision(s) 62734: [Backport #14613] Add missing class FrozenError to Exception subclasses list documentation [Fix GH-1818] From: Miguel Landaeta <miguel@miguel.cc> ------------------------------------------------------------------------ r62858 | naruse | 2018-03-20 18:37:39 +0900 (Tue, 20 Mar 2018) | 37 lines merge revision(s) 62396: [Backport #14357] st.c: retry operations if rebuilt Calling the .eql? and .hash methods during a Hash operation can result in a thread switch or a signal handler to run: allowing one execution context to rebuild the hash table while another is still reading or writing the table. This results in a use-after-free bug affecting the thread_safe-0.3.6 test suite and likely other bugs. This bug did not affect users of commonly keys (String, Symbol, Fixnum) as those are optimized to avoid method dispatch for .eql? and .hash methods. A separate version of this change needs to be ported to Ruby 2.3.x which had a different implementation of st.c but was affected by the same bug. * st.c: Add comment about table rebuilding during comparison. (DO_PTR_EQUAL_CHECK): New macro. (REBUILT_TABLE_ENTRY_IND, REBUILT_TABLE_BIN_IND): New macros. (find_entry, find_table_entry_ind, find_table_bin_ind): Use new macros. Return the rebuild flag. (find_table_bin_ptr_and_reserve): Ditto. (st_lookup, st_get_key, st_insert, st_insert2): Retry the operation if the table was rebuilt. (st_general_delete, st_shift, st_update, st_general_foreach): Ditto. (st_rehash_linear, st_rehash_indexed): Use DO_PTR_EQUAL_CHECK. Return the rebuild flag. (st_rehash): Retry the operation if the table was rebuilt. [ruby-core:85510] [Ruby trunk Bug#14357] Thanks to Vit Ondruch for reporting the bug. From: Vladimir Makarov <vmakarov@redhat.com> ------------------------------------------------------------------------ r62854 | naruse | 2018-03-20 11:09:21 +0900 (Tue, 20 Mar 2018) | 7 lines merge revision(s) 62673: [Backport #14577] thread.c: deadlock in backtrace * thread.c (unblock_function_set): check interrupts just once during raising exceptions, as they are deferred since r16651. [ruby-core:85939] [Bug #14577] ------------------------------------------------------------------------ r62853 | svn | 2018-03-20 11:08:28 +0900 (Tue, 20 Mar 2018) | 1 line * 2018-03-20 ------------------------------------------------------------------------ r62852 | naruse | 2018-03-20 11:08:27 +0900 (Tue, 20 Mar 2018) | 13 lines merge revision(s) 62668: [Backport #14578] thread.c: reset waitq of keeping mutexes in child We must not maintain references to threads in the parent process in any mutexes held by the child process. * thread_sync.c (rb_mutex_cleanup_keeping_mutexes): new function * thread.c (rb_thread_atfork): cleanup keeping mutexes [ruby-core:85940] [Bug #14578] Fixes: r58604 (commit 3586c9e0876e784767a1c1adba9ebc2499fa0ec2) ("reduce rb_mutex_t size from 160 to 80 bytes on 64-bit") ------------------------------------------------------------------------ r62837 | naruse | 2018-03-19 17:27:04 +0900 (Mon, 19 Mar 2018) | 34 lines merge revision(s) 62244,62246,62301,62302,62303,62422,62436,62452: [Backport #14481] Merge RubyGems-2.7.5 from upstream. Please see its details: http://blog.rubygems.org/2018/02/06/2.7.5-released.html test_gem_util.rb: fix broken test * test/rubygems/test_gem_util.rb: no guarantee that tmpdir is always underneath the root directory at all. test_gem_commands_setup_command.rb: BUNDLER_VERS * test/rubygems/test_gem_commands_setup_command.rb: run bundled gem command, instead of installed one. no need to set bundled bundler unless Gem::USE_BUNDLER_FOR_GEMDEPS revert r62302 and force to define the version constant Merge RubyGems 2.7.6 from upstream. It fixed some security vulnerabilities. http://blog.rubygems.org/2018/02/15/2.7.6-released.html fix regexp literal warning. test/rubygems/test_gem_server.rb: eliminate duplicated character class warning. [Bug #14481] Remove unnecessary `[]`s ------------------------------------------------------------------------ r62835 | naruse | 2018-03-19 17:15:50 +0900 (Mon, 19 Mar 2018) | 2 lines Merge r62197 to ease next merge ------------------------------------------------------------------------ r62834 | naruse | 2018-03-19 17:15:16 +0900 (Mon, 19 Mar 2018) | 20 lines merge revision(s) 61501,61758: [Backport #14481] fix concurrent test. * test/rubygems/test_require.rb (test_concurrent_require): Synchronizations should be in ensure clause. Sometimes `require` fails (not sure why) and latch is not released. Such case introduces unlimited awaiting. This patch soleve this problem. skip some tests so that no failure occurs in root privilege Some tests had failed on `sudo make test-all`, mainly because root can access any files regardless of permission. This change adds `skip` guards into such tests. Note that almost all tests in which `skip` guards is added, already have "windows" guard. This is because there is no support to avoid read access by owner on Windows. ------------------------------------------------------------------------ r62761 | naruse | 2018-03-15 16:35:54 +0900 (Thu, 15 Mar 2018) | 15 lines merge revision(s) 62394,62395: [Backport #14469] vm_insnhelper.c: rb_autoloading_value flag * vm_insnhelper.c (vm_get_ev_const): add flag argument of `rb_autoloading_value`. * constant.h (rb_autoloading_value): moved the declaration from vm_core.h for `rb_const_flag_t`. [ruby-core:85516] [Bug #14469] variable.c: flags at autoloading * variable.c (const_tbl_update): flags by deprecate_constant / private_constant set during autoloading should be preserved after required. [ruby-core:85516] [Bug #14469] ------------------------------------------------------------------------ r62632 | naruse | 2018-03-02 17:25:51 +0900 (Fri, 02 Mar 2018) | 13 lines merge revision(s) 62606,62607: [Backport #14557] file.c: get rid of useless conversion * file.c (rb_file_s_stat): File.stat does not accept an IO object as trying conversion to path name string first. skip conversion to IO and try stat(2) only. file.c: realpath on special symlink * file.c (realpath_rec): fallback to symlink path when it is accessible but the link target is not actual entry on file systems. [ruby-dev:50487] [Bug #14557] ------------------------------------------------------------------------ r62610 | naruse | 2018-02-28 18:52:40 +0900 (Wed, 28 Feb 2018) | 8 lines merge revision(s) 62572: [Backport #14549] date_core.c: defensive code * ext/date/date_core.c (f_cmp): check comparison failure. * ext/date/date_core.c (d_lite_step): deal with the comparison result more defensively. [ruby-core:85796] [Bug #14549] ------------------------------------------------------------------------ r62609 | naruse | 2018-02-28 18:49:29 +0900 (Wed, 28 Feb 2018) | 12 lines merge revision(s) 62506,62508: [Backport #14438] test_time_tz.rb: past Japanese DST tzdata fix * test/ruby/test_time_tz.rb (TestTimeTZ#test_asia_tokyo): follow the tzdata 2018 fix of Japanese DST transitions (1948-1951). [ruby-core:85373] [Bug #14438] test_time_tz.rb: past Japanese DST tzdata fix * test/ruby/test_time_tz.rb (TestTimeTZ#test_asia_tokyo): fix the expected data at the end of DST. [Bug #14438] ------------------------------------------------------------------------ r62587 | svn | 2018-02-26 17:43:45 +0900 (Mon, 26 Feb 2018) | 1 line * 2018-02-26 ------------------------------------------------------------------------ r62586 | naruse | 2018-02-26 17:43:44 +0900 (Mon, 26 Feb 2018) | 5 lines merge revision(s) 62094,62584: [Backport #14407] Merge ruby/spec@fd56cd4 ------------------------------------------------------------------------ r62569 | svn | 2018-02-25 09:36:44 +0900 (Sun, 25 Feb 2018) | 1 line * 2018-02-25 ------------------------------------------------------------------------ r62568 | naruse | 2018-02-25 09:36:43 +0900 (Sun, 25 Feb 2018) | 9 lines merge revision(s) 62071: [Backport #14407] defined? returns nil for toplevel constant lookup * variable.c (rb_const_defined_0): toplevel constant lookup has been removed, should return nil too. [ruby-core:85142] [Bug #14407] [Fix GH-1800] From: Gonzalo <grzuy0@gmail.com> ------------------------------------------------------------------------ r62562 | naruse | 2018-02-24 16:19:48 +0900 (Sat, 24 Feb 2018) | 8 lines merge revision(s) 62555: [Backport #14547] rational.c: segfault on Rational exponent * rational.c (read_num): fix segfault on Rational() with positive but less than the length of fractional part exponent. should be negated to convert to divisor which is a reciprocal. [ruby-core:85783] [Bug #14547] ------------------------------------------------------------------------ r62561 | naruse | 2018-02-24 16:19:06 +0900 (Sat, 24 Feb 2018) | 10 lines merge revision(s) 62513: [Backport #12762] Update url with 404 status on LEGAL file. * Update redirected and upstream url. * Added the Wayback Machine url for missing link. [Bug #12762][ruby-dev:49802] From: SHIBATA Hiroshi <hsbt@ruby-lang.org> ------------------------------------------------------------------------ r62539 | naruse | 2018-02-23 07:04:35 +0900 (Fri, 23 Feb 2018) | 6 lines merge revision(s) 61862: [Backport #14368] parse.y (new_regexp): Fix SEGV of `/#{"\u3042"}#{'?'}/` in non UTF-8 Mixing other encoding string literals in one Regexp caused SEGV. This bug was found by CoverityScan. ------------------------------------------------------------------------ r62538 | naruse | 2018-02-23 06:41:46 +0900 (Fri, 23 Feb 2018) | 8 lines merge revision(s) 62107: [Backport #14420] force fixable * complex.c (nucomp_hash): force hash values fixable. [ruby-core:85224] [Bug #14420] * rational.c (nurat_hash): ditto. ------------------------------------------------------------------------ r62537 | naruse | 2018-02-23 06:29:36 +0900 (Fri, 23 Feb 2018) | 12 lines merge revision(s) 61605,62359,62361: [Backport #14356] Try to fix Travis CI configuration. .travis.yml: send notification to #alerts instead of #commits. .travis.yml: resurrect notification to #commits I heard at least Shibata-san sees the channel for the notification. But I want #alets to have all CI failure notifications too. ------------------------------------------------------------------------ r62527 | naruse | 2018-02-22 20:01:13 +0900 (Thu, 22 Feb 2018) | 6 lines merge revision(s) 62333: [Backport #14459] compile.c: popped hash * compile.c (compile_array): skip creating new hash if preceeding elements are popped all. [ruby-core:85486] [Bug #14459] ------------------------------------------------------------------------ r62511 | naruse | 2018-02-21 15:16:32 +0900 (Wed, 21 Feb 2018) | 8 lines merge revision(s) 61484: [Backport #14232] vm_method.c: fix super in refined module * vm_method.c (rb_method_entry_complement_defined_class): clone the original method entry of refined module instance method with the active ICLASS, to track super method chain. [ruby-dev:50390] [Bug #14232] ------------------------------------------------------------------------ r62510 | naruse | 2018-02-21 15:00:51 +0900 (Wed, 21 Feb 2018) | 6 lines merge revision(s) 61469: [Backport #14427] irb.rb: fix highlight * lib/irb.rb (IRB::Irb#eval_input): fix highlight for multiple lines exception messages. ------------------------------------------------------------------------ r62509 | naruse | 2018-02-21 14:42:42 +0900 (Wed, 21 Feb 2018) | 6 lines merge revision(s) 61523: [Backport #14261] parse.y: assignable_error * parse.y (assignable_gen): should return valid NODE always even on errors. [ruby-core:84565] [Bug #14261] ------------------------------------------------------------------------ r62507 | naruse | 2018-02-21 13:36:00 +0900 (Wed, 21 Feb 2018) | 8 lines merge revision(s) 62115: [Backport #14421] proc: fix super_method segfault after bind * proc.c: handle undefined iclass [ruby-core:85231] [Bug #14421] From: Eric Wong <e@80x24.org> ------------------------------------------------------------------------ r62501 | naruse | 2018-02-21 05:11:47 +0900 (Wed, 21 Feb 2018) | 21 lines merge revision(s) 62116,62151: [Backport #14425] ruby.h: relax rb_funcall check on extra args for clang clang 5.+ (tested clang 7.0.0) seems to be attempting division-by-zero and giving a very large number for static args to rb_funcall. * include/ruby/ruby.h (rb_varargs_bad_length): relax check for clang * ext/-test-/funcall/funcall.c: renamed from passing_block.c define extra_args_name function * test/-ext-/funcall/test_funcall.rb: new test [ruby-core:85266] [Bug #14425] From: Eric Wong <e@80x24.org> ruby.h: relax rb_funcall(obj, id, 0, 0) case only * include/ruby/ruby.h (rb_varargs_argc_valid_p): relax rb_funcall check on extra args only if argc == 0, for the compatibility with wrong code which is probably confused with rb_funcallv. [Bug #14425] ------------------------------------------------------------------------ r62483 | naruse | 2018-02-19 15:51:53 +0900 (Mon, 19 Feb 2018) | 7 lines merge revision(s) 62040: [Backport #14388] string.c: clear substring code range * string.c (str_substr): substring of broken code range string may be valid or broken. patch by tommy (Masahiro Tomita) at [ruby-dev:50430] [Bug #14388]. ------------------------------------------------------------------------ r62482 | naruse | 2018-02-19 15:36:03 +0900 (Mon, 19 Feb 2018) | 5 lines merge revision(s) 61645: [Backport #14333] Added bundler for `test-bundled-gems` dependency. rake, did_you_mean, test-unit depends on bundler. ------------------------------------------------------------------------ r62481 | naruse | 2018-02-19 15:33:01 +0900 (Mon, 19 Feb 2018) | 14 lines merge revision(s) 61711: compile.c (iseq_compile_each0): remove irrelevant tracecoverage This change removes tracecoverage instructions on a line that has any NODE but is non-significant, such as, just one literal. This fixes the following failure that occurs only when coverage is enabled: 1) Failure: TestISeq#test_to_a_lines [.../ruby/test/ruby/test_iseq.rb:56]: <[3, 4, 7, 9]> expected but was <[3, 4, 5, 6, 7, 8, 9]>. ------------------------------------------------------------------------ r62472 | naruse | 2018-02-18 23:25:43 +0900 (Sun, 18 Feb 2018) | 3 lines merge revision(s) 61591: [Backport #14312] iseq.c (rb_iseq_new_with_opt): handle the case where node is imemo_func ------------------------------------------------------------------------ r62471 | svn | 2018-02-18 20:53:15 +0900 (Sun, 18 Feb 2018) | 1 line * 2018-02-18 ------------------------------------------------------------------------ r62470 | naruse | 2018-02-18 20:53:14 +0900 (Sun, 18 Feb 2018) | 4 lines Revert r62426 it cause test failure ------------------------------------------------------------------------ r62428 | naruse | 2018-02-16 17:34:45 +0900 (Fri, 16 Feb 2018) | 11 lines merge revision(s) 61616: [Backport #14314] marshal.c: allow marshalling keyword_init struct struct.c: define rb_struct_s_keyword_init to shared with marshal.c internal.h: add the declaration to be used by marshal.c test/ruby/test_marshal.rb: add test for Bug#14314 [Feature #14314] [ruby-core:84629] ------------------------------------------------------------------------ r62427 | naruse | 2018-02-16 17:31:35 +0900 (Fri, 16 Feb 2018) | 10 lines merge revision(s) 61754: [Backport #14346] dir.c: pass flags to openat(2) correctly Flags are 3rd argument of openat(2) while the 4th argument (mode_t) is unnecessary for our uses. This bug exists since Ruby 2.5 from r58860 and was discoverd by strace. * dir.c (nogvl_opendir_at): use openat correctly [Feature #13056] [Feature #14346] ------------------------------------------------------------------------ r62426 | naruse | 2018-02-16 17:28:48 +0900 (Fri, 16 Feb 2018) | 13 lines merge revision(s) 61617,61618: [Backport #14273] compile.c: remove more unreachable chunk * compile.c (remove_unreachable_chunk): remove beyond labels to be removed. compile.c: fix stack consistency error * compile.c (iseq_peephole_optimize): fix stack consistency error from return in loop, by adding extra `pop` when replacing `jump` with `leave`, which is never reached but needed to adjust sp calculation. [ruby-core:84589] [Bug #14273] ------------------------------------------------------------------------ r62425 | naruse | 2018-02-16 17:17:36 +0900 (Fri, 16 Feb 2018) | 13 lines merge revision(s) 61639: [Backport #14323] net/ftp: fix FrozenError in BufferedSocket I noticed this bug while working on something else with RUBYOPT=-d on, existing test cases all passed with it. Note: I use String.new because it is the local style, here, I prefer +'' (or ''.b, for a future commit) * lib/net/ftp.rb (BufferedSocket#read): use String.new * test/net/ftp/test_buffered_socket.rb (test_read_nil): new test [ruby-core:84675] [Bug #14323] ------------------------------------------------------------------------ r62421 | naruse | 2018-02-16 16:36:21 +0900 (Fri, 16 Feb 2018) | 6 lines merge revision(s) 61636: [Backport #14257] string.c: out-of-bounds access * string.c (rb_str_enumerate_lines): fix out-of-bounds access when record separator is longer than the last element. [Bug #14257] ------------------------------------------------------------------------ r62420 | naruse | 2018-02-16 16:32:11 +0900 (Fri, 16 Feb 2018) | 9 lines merge revision(s) 61603: [Backport #14279] check array for zsuper. [Bug #14279] * compile.c (iseq_compile_each0): for zsuper (NODE_ZSUPER), we need to check given argument is Array or not. * test/ruby/test_super.rb: add a test for this bug. ------------------------------------------------------------------------ r62096 | svn | 2018-01-30 02:00:37 +0900 (Tue, 30 Jan 2018) | 1 line * 2018-01-30 ------------------------------------------------------------------------ r62095 | naruse | 2018-01-30 02:00:36 +0900 (Tue, 30 Jan 2018) | 108 lines merge revision(s) 61564,61565,61571: [Backport #14270] fix SEGV touching uninitialized memory This function can be called from Init_VM(). No assumption can be made about object internals. (lldb) run Process 15734 launched: './miniruby' (x86_64) Process 15734 stopped * thread #1: tid = 0x1441d4, 0x00000001000bdfcb miniruby`rb_raw_iseq_info(buff="0x0000000100f61f48 [0 ] T_IMEMO iseq", buff_size=256, iseq=0x0000000100f61f48) + 27 at gc.c:9273, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x50) frame #0: 0x00000001000bdfcb miniruby`rb_raw_iseq_info(buff="0x0000000100f61f48 [0 ] T_IMEMO iseq", buff_size=256, iseq=0x0000000100f61f48) + 27 at gc.c:9273 9270 static void 9271 rb_raw_iseq_info(char *buff, const int buff_size, const rb_iseq_t *iseq) 9272 { -> 9273 if (iseq->body->location.label) { 9274 VALUE path = rb_iseq_path(iseq); 9275 snprintf(buff, buff_size, "%s %s@%s:%d", buff, 9276 RSTRING_PTR(iseq->body->location.label), (lldb) p *iseq (rb_iseq_t) $0 = { flags = 28698 reserved1 = 0 body = 0x0000000000000000 aux = { compile_data = 0x0000000000000000 loader = (obj = 0, index = 0) trace_events = 0 } } (lldb) bt * thread #1: tid = 0x1441d4, 0x00000001000bdfcb miniruby`rb_raw_iseq_info(buff="0x0000000100f61f48 [0 ] T_IMEMO iseq", buff_size=256, iseq=0x0000000100f61f48) + 27 at gc.c:9273, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x50) * frame #0: 0x00000001000bdfcb miniruby`rb_raw_iseq_info(buff="0x0000000100f61f48 [0 ] T_IMEMO iseq", buff_size=256, iseq=0x0000000100f61f48) + 27 at gc.c:9273 frame #1: 0x00000001000bde72 miniruby`rb_raw_obj_info(buff="0x0000000100f61f48 [0 ] T_IMEMO iseq", buff_size=256, obj=4311097160) + 2786 at gc.c:9396 frame #2: 0x00000001000b7c5f miniruby`obj_info(obj=4311097160) + 95 at gc.c:9428 frame #3: 0x00000001000c16a8 miniruby`newobj_init(klass=0, flags=28698, v1=0, v2=0, v3=0, wb_protected=1, objspace=0x00000001007ee280, obj=4311097160) + 424 at gc.c:1887 frame #4: 0x00000001000b44c9 miniruby`newobj_of(klass=0, flags=28698, v1=0, v2=0, v3=0, wb_protected=1) + 217 at gc.c:1970 frame #5: 0x00000001000b464b miniruby`rb_imemo_new(type=imemo_iseq, v1=0, v2=0, v3=0, v0=0) + 75 at gc.c:2017 frame #6: 0x00000001000fd914 miniruby`iseq_imemo_alloc + 36 at iseq.h:156 frame #7: 0x00000001000f6e1d miniruby`iseq_alloc + 13 at iseq.c:211 frame #8: 0x00000001000f6bf8 miniruby`rb_iseq_new_with_opt(node=0x0000000000000000, name=4311097200, path=4311097200, realpath=8, first_lineno=1, parent=0x0000000000000000, type=ISEQ_TYPE_TOP, option=0x0000000100335c30) + 56 at iseq.c:519 frame #9: 0x00000001000f6bb6 miniruby`rb_iseq_new(node=0x0000000000000000, name=4311097200, path=4311097200, realpath=8, parent=0x0000000000000000, type=ISEQ_TYPE_TOP) + 86 at iseq.c:480 frame #10: 0x0000000100284bb0 miniruby`Init_VM + 1040 at vm.c:3022 frame #11: 0x00000001000d4f7d miniruby`rb_call_inits + 189 at inits.c:55 frame #12: 0x000000010009fe06 miniruby`ruby_setup + 198 at eval.c:61 frame #13: 0x000000010009fe5d miniruby`ruby_init + 13 at eval.c:78 frame #14: 0x00000001000009ed miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 93 at main.c:41 frame #15: 0x00007fff88eda5ad libdyld.dylib`start + 1 (lldb) fix SEGV touching uninitialized memory This function can be called from rb_data_typed_object_zalloc(). No assumption can be made about object internals. (lldb) run Process 22135 launched: './miniruby' (x86_64) Process 22135 stopped * thread #1: tid = 0x14a3af, 0x000000010008ac8a miniruby`vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18) frame #0: 0x000000010008ac8a miniruby`vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364 1361 break; 1362 } 1363 #endif -> 1364 return block->type; 1365 } 1366 1367 static inline void (lldb) bt * thread #1: tid = 0x14a3af, 0x000000010008ac8a miniruby`vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18) * frame #0: 0x000000010008ac8a miniruby`vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364 frame #1: 0x000000010008acdb miniruby`vm_block_iseq(block=0x0000000000000000) + 24 at vm_core.h:1399 frame #2: 0x000000010008acc1 miniruby`vm_proc_iseq(procval=4310866360) + 32 at vm_core.h:1387 frame #3: 0x000000010009cbed miniruby`rb_raw_obj_info(buff="0x0000000100f299b8 [0 ] proc (Proc)", buff_size=256, obj=4310866360) + 1513 at gc.c:9349 frame #4: 0x000000010009cf01 miniruby`obj_info(obj=4310866360) + 98 at gc.c:9428 frame #5: 0x000000010008ca1b miniruby`newobj_init(klass=4311027960, flags=12, v1=4298186080, v2=1, v3=0, wb_protected=32, objspace=0x00000001007cf280, obj=4310866360) + 338 at gc.c:1887 frame #6: 0x000000010008cce5 miniruby`newobj_of(klass=4311027960, flags=12, v1=4298186080, v2=1, v3=0, wb_protected=32) + 171 at gc.c:1970 frame #7: 0x000000010008d01d miniruby`rb_data_typed_object_wrap(klass=4311027960, datap=0x0000000000000000, type=0x0000000100311d60) + 133 at gc.c:2062 frame #8: 0x000000010008d04e miniruby`rb_data_typed_object_zalloc(klass=4311027960, size=40, type=0x0000000100311d60) + 42 at gc.c:2073 frame #9: 0x000000010011b459 miniruby`rb_proc_alloc(klass=4311027960) + 36 at proc.c:113 frame #10: 0x0000000100204d8e miniruby`vm_proc_create_from_captured(klass=4311027960, captured=0x00000001025003f8, block_type=block_type_iseq, is_from_method='\0', is_lambda='\x01') + 44 at vm.c:814 frame #11: 0x00000001002050d8 miniruby`rb_vm_make_proc_lambda(ec=0x00000001007cf548, captured=0x00000001025003f8, klass=4311027960, is_lambda='\x01') + 134 at vm.c:892 frame #12: 0x000000010011c0d2 miniruby`proc_new(klass=4311027960, is_lambda='\x01') + 445 at proc.c:752 frame #13: 0x000000010011c154 miniruby`rb_block_lambda + 27 at proc.c:808 frame #14: 0x00000001001ee7e3 miniruby`call_cfunc_0(func=(miniruby`rb_block_lambda at proc.c:807), recv=4310991600, argc=0, argv=0x0000000102400480) + 41 at vm_insnhelper.c:1729 frame #15: 0x00000001001ef2c3 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 386 at vm_insnhelper.c:1918 frame #16: 0x00000001001ef412 miniruby`vm_call_cfunc(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 149 at vm_insnhelper.c:1934 frame #17: 0x00000001001f0655 miniruby`vm_call_method_each_type(ec=0x00000001007cf548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 239 at vm_insnhelper.c:2232 frame #18: 0x00000001001f0ce0 miniruby`vm_call_method(ec=0x00000001007cf548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 117 at vm_insnhelper.c:2355 frame #19: 0x00000001001f0eb6 miniruby`vm_call_general(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 59 at vm_insnhelper.c:2398 frame #20: 0x00000001001f6e61 miniruby`vm_exec_core(ec=0x00000001007cf548, initial=0) + 7480 at insns.def:850 frame #21: 0x0000000100207995 miniruby`vm_exec(ec=0x00000001007cf548) + 230 at vm.c:1771 frame #22: 0x0000000100208647 miniruby`rb_iseq_eval_main(iseq=0x0000000100f29fd0) + 52 at vm.c:2019 frame #23: 0x000000010007b750 miniruby`ruby_exec_internal(n=0x0000000100f29fd0) + 297 at eval.c:246 frame #24: 0x000000010007b876 miniruby`ruby_exec_node(n=0x0000000100f29fd0) + 36 at eval.c:310 frame #25: 0x000000010007b849 miniruby`ruby_run_node(n=0x0000000100f29fd0) + 62 at eval.c:302 frame #26: 0x0000000100000c05 miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 113 at main.c:42 frame #27: 0x00007fff88eda5ad libdyld.dylib`start + 1 (lldb) check an existence of block. * gc.c (rb_raw_obj_info): check block before using it. * vm_core.h (vm_block_iseq): r61565 introduced NULL check but this check is only needed by `rb_raw_obj_info()` and it is called at GC debug mode. Above fix for `rb_raw_obj_info()` solves this problem and NULL check should not be needed any more. ------------------------------------------------------------------------ r62023 | naruse | 2018-01-24 17:11:16 +0900 (Wed, 24 Jan 2018) | 292 lines merge revision(s) 61562,61563,61566,61568,61569: [Backport #14269] fix SEGV touching uninitialized memory This function can be called from boot_defclass(). No assumption can be made about object internals. (lldb) run Process 2386 launched: './miniruby' (x86_64) Process 2386 stopped * thread #1: tid = 0x13f3b6, 0x00000001001e0b26 miniruby`rb_class_path_cached(klass=4311373720) + 20 at variable.c:321, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8) frame #0: 0x00000001001e0b26 miniruby`rb_class_path_cached(klass=4311373720) + 20 at variable.c:321 318 VALUE 319 rb_class_path_cached(VALUE klass) 320 { -> 321 st_table *ivtbl = RCLASS_IV_TBL(klass); 322 st_data_t n; 323 324 if (!ivtbl) return Qnil; (lldb) bt * thread #1: tid = 0x13f3b6, 0x00000001001e0b26 miniruby`rb_class_path_cached(klass=4311373720) + 20 at variable.c:321, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8) * frame #0: 0x00000001001e0b26 miniruby`rb_class_path_cached(klass=4311373720) + 20 at variable.c:321 frame #1: 0x000000010009cbd0 miniruby`rb_raw_obj_info(buff="0x0000000100fa5798 [2 ] T_CLASS", buff_size=256, obj=4311373720) + 1393 at gc.c:9341 frame #2: 0x000000010009cf16 miniruby`obj_info(obj=4311373720) + 98 at gc.c:9423 frame #3: 0x000000010008ca87 miniruby`newobj_init(klass=0, flags=66, v1=0, v2=0, v3=0, wb_protected=1, objspace=0x00000001007cf280, obj=4311373720) + 338 at gc.c:1887 frame #4: 0x000000010008cd51 miniruby`newobj_of(klass=0, flags=66, v1=0, v2=0, v3=0, wb_protected=1) + 171 at gc.c:1970 frame #5: 0x000000010008ce1b miniruby`rb_wb_protected_newobj_of(klass=0, flags=66) + 54 at gc.c:1990 frame #6: 0x0000000100027563 miniruby`class_alloc(flags=2, klass=0) + 46 at class.c:165 frame #7: 0x000000010002761a miniruby`rb_class_boot(super=0) + 35 at class.c:203 frame #8: 0x0000000100028612 miniruby`boot_defclass(name="BasicObject", super=0) + 28 at class.c:537 frame #9: 0x000000010002868b miniruby`Init_class_hierarchy + 26 at class.c:548 frame #10: 0x00000001000efe69 miniruby`InitVM_Object + 9 at object.c:3892 frame #11: 0x00000001000f138e miniruby`Init_Object + 57 at object.c:4122 frame #12: 0x00000001000a59bd miniruby`rb_call_inits + 29 at inits.c:23 frame #13: 0x000000010007af30 miniruby`ruby_setup + 229 at eval.c:61 frame #14: 0x000000010007af7e miniruby`ruby_init + 13 at eval.c:78 frame #15: 0x0000000100000c58 miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 88 at main.c:41 frame #16: 0x00007fff88eda5ad libdyld.dylib`start + 1 (lldb) fix SEGV touching uninitialized memory This function can be called from InitVM_Object(). No assumption can be made about object internals. (lldb) run Process 10675 launched: './miniruby' (x86_64) Process 10675 stopped * thread #1: tid = 0x14252c, 0x00000001000bdda9 miniruby`rb_raw_obj_info(buff="0x0000000100fc1588 [0 ] T_IMEMO ment", buff_size=256, obj=4311487880) + 2489 at gc.c:9383, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) frame #0: 0x00000001000bdda9 miniruby`rb_raw_obj_info(buff="0x0000000100fc1588 [0 ] T_IMEMO ment", buff_size=256, obj=4311487880) + 2489 at gc.c:9383 9380 const rb_method_entry_t *me = &RANY(obj)->as.imemo.ment; 9381 snprintf(buff, buff_size, "%s (called_id: %s, type: %s, alias: %d, owner: %s, defined_class: %s)", buff, 9382 rb_id2name(me->called_id), -> 9383 method_type_name(me->def->type), 9384 me->def->alias_count, 9385 obj_info(me->owner), 9386 obj_info(me->defined_class)); (lldb) p *me (rb_method_entry_t) $0 = { flags = 24602 defined_class = 4311488400 def = 0x0000000000000000 called_id = 3057 owner = 4311488400 } (lldb) bt * thread #1: tid = 0x14252c, 0x00000001000bdda9 miniruby`rb_raw_obj_info(buff="0x0000000100fc1588 [0 ] T_IMEMO ment", buff_size=256, obj=4311487880) + 2489 at gc.c:9383, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) * frame #0: 0x00000001000bdda9 miniruby`rb_raw_obj_info(buff="0x0000000100fc1588 [0 ] T_IMEMO ment", buff_size=256, obj=4311487880) + 2489 at gc.c:9383 frame #1: 0x00000001000b7cbf miniruby`obj_info(obj=4311487880) + 95 at gc.c:9423 frame #2: 0x00000001000c16a8 miniruby`newobj_init(klass=4311488400, flags=24602, v1=0, v2=3057, v3=4311488400, wb_protected=1, objspace=0x00000001007ee280, obj=4311487880) + 424 at gc.c:1887 frame #3: 0x00000001000b4529 miniruby`newobj_of(klass=4311488400, flags=24602, v1=0, v2=3057, v3=4311488400, wb_protected=1) + 217 at gc.c:1970 frame #4: 0x00000001000b46ab miniruby`rb_imemo_new(type=imemo_ment, v1=0, v2=3057, v3=4311488400, v0=4311488400) + 75 at gc.c:2017 frame #5: 0x00000001002773b4 miniruby`rb_method_entry_alloc(called_id=3057, owner=4311488400, defined_class=4311488400, def=0x0000000000000000) + 52 at vm_method.c:368 frame #6: 0x0000000100277307 miniruby`rb_method_entry_create(called_id=3057, klass=4311488400, visi=METHOD_VISI_PRIVATE, def=0x0000000000000000) + 71 at vm_method.c:389 frame #7: 0x00000001002784c7 miniruby`rb_method_entry_make(klass=4311488400, mid=3057, defined_class=4311488400, visi=METHOD_VISI_PRIVATE, type=VM_METHOD_TYPE_CFUNC, def=0x0000000000000000, original_id=3057, opts=0x00007fff5fbfd9e8) + 1207 at vm_method.c:594 frame #8: 0x00000001002770f9 miniruby`rb_add_method(klass=4311488400, mid=3057, type=VM_METHOD_TYPE_CFUNC, opts=0x00007fff5fbfd9e8, visi=METHOD_VISI_PRIVATE) + 73 at vm_method.c:650 frame #9: 0x000000010027708a miniruby`rb_add_method_cfunc(klass=4311488400, mid=3057, func=(miniruby`rb_obj_dummy at object.c:1125), argc=0, visi=METHOD_VISI_PRIVATE) + 138 at vm_method.c:137 frame #10: 0x00000001000391e4 miniruby`rb_define_private_method(klass=4311488400, name="initialize", func=(miniruby`rb_obj_dummy at object.c:1125), argc=0) + 68 at class.c:1529 frame #11: 0x000000010013f5bf miniruby`InitVM_Object + 47 at object.c:3905 frame #12: 0x0000000100142ffd miniruby`Init_Object + 61 at object.c:4122 frame #13: 0x00000001000d4edd miniruby`rb_call_inits + 29 at inits.c:23 frame #14: 0x000000010009fe66 miniruby`ruby_setup + 198 at eval.c:61 frame #15: 0x000000010009febd miniruby`ruby_init + 13 at eval.c:78 frame #16: 0x0000000100000a4d miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 93 at main.c:41 frame #17: 0x00007fff88eda5ad libdyld.dylib`start + 1 (lldb) fix SEGV touching uninitialized local variable This imemo_name is used uninitialized because the switch above does not cover all possible imemo types. (lldb) run Process 26068 launched: './miniruby' (x86_64) Process 26068 stopped * thread #1: tid = 0x14ba96, 0x00007fff8a402132 libsystem_c.dylib`strlen + 18, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xfffffffffffffff0) frame #0: 0x00007fff8a402132 libsystem_c.dylib`strlen + 18 libsystem_c.dylib`strlen: -> 0x7fff8a402132 <+18>: pcmpeqb (%rdi), %xmm0 0x7fff8a402136 <+22>: pmovmskb %xmm0, %esi 0x7fff8a40213a <+26>: andq $0xf, %rcx 0x7fff8a40213e <+30>: orq $-0x1, %rax (lldb) bt * thread #1: tid = 0x14ba96, 0x00007fff8a402132 libsystem_c.dylib`strlen + 18, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xfffffffffffffff0) * frame #0: 0x00007fff8a402132 libsystem_c.dylib`strlen + 18 frame #1: 0x00000001001f1531 miniruby`BSD_vfprintf(fp=0x00007fff5fbfc9e0, fmt0="%s %s", ap=0x00007fff5fbfcbf0) + 5873 at vsnprintf.c:1026 frame #2: 0x00000001001ef213 miniruby`ruby_do_vsnprintf(str="0x0000000100f46450 [0 ] T_IMEMO", n=256, fmt="%s %s", ap=0x00007fff5fbfcbf0) + 131 at sprintf.c:1285 frame #3: 0x00000001001ef3ea miniruby`ruby_snprintf(str="0x0000000100f46450 [0 ] T_IMEMO", n=256, fmt="%s %s") + 426 at sprintf.c:1300 frame #4: 0x00000001000bdc61 miniruby`rb_raw_obj_info(buff="0x0000000100f46450 [0 ] T_IMEMO", buff_size=256, obj=4310983760) + 2353 at gc.c:9376 frame #5: 0x00000001000b7bff miniruby`obj_info(obj=4310983760) + 95 at gc.c:9428 frame #6: 0x00000001000c1658 miniruby`newobj_init(klass=0, flags=36890, v1=0, v2=4303040512, v3=4310983800, wb_protected=1, objspace=0x00000001007ee280, obj=4310983760) + 424 at gc.c:1887 frame #7: 0x00000001000b4469 miniruby`newobj_of(klass=0, flags=36890, v1=0, v2=4303040512, v3=4310983800, wb_protected=1) + 217 at gc.c:1970 frame #8: 0x00000001000b45eb miniruby`rb_imemo_new(type=imemo_ast, v1=0, v2=4303040512, v3=4310983800, v0=0) + 75 at gc.c:2017 frame #9: 0x000000010011daed miniruby`rb_ast_new + 61 at node.c:1146 frame #10: 0x0000000100160e15 miniruby`rb_parser_compile_file_path(vparser=4310984400, fname=4310984960, file=4310984080, start=1) + 53 at parse.y:5776 frame #11: 0x00000001001e18ea miniruby`load_file_internal(argp_v=140734799795024) + 1834 at ruby.c:1907 frame #12: 0x00000001000a1bb5 miniruby`rb_ensure(b_proc=(miniruby`load_file_internal at ruby.c:1795), data1=140734799795024, e_proc=(miniruby`restore_load_file at ruby.c:2007), data2=140734799795024) + 245 at eval.c:1037 frame #13: 0x00000001001df4a4 miniruby`load_file(parser=4310984400, fname=4310984960, f=4310984080, script=1, opt=0x00007fff5fbfda28) + 100 at ruby.c:2026 frame #14: 0x00000001001e084e miniruby`process_options(argc=0, argv=0x00007fff5fbfdc00, opt=0x00007fff5fbfda28) + 3454 at ruby.c:1682 frame #15: 0x00000001001dfaae miniruby`ruby_process_options(argc=2, argv=0x00007fff5fbfdbf0) + 238 at ruby.c:2257 frame #16: 0x000000010009ff43 miniruby`ruby_options(argc=2, argv=0x00007fff5fbfdbf0) + 211 at eval.c:105 frame #17: 0x0000000100000989 miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 105 at main.c:42 frame #18: 0x00007fff88eda5ad libdyld.dylib`start + 1 (lldb) up 4 frame #4: 0x00000001000bdc61 miniruby`rb_raw_obj_info(buff="0x0000000100f46450 [0 ] T_IMEMO", buff_size=256, obj=4310983760) + 2353 at gc.c:9376 9373 #undef IMEMO_NAME 9374 default: UNREACHABLE; 9375 } -> 9376 snprintf(buff, buff_size, "%s %s", buff, imemo_name); 9377 9378 switch (imemo_type(obj)) { 9379 case imemo_ment: { (lldb) p imemo_name (const char *) $0 = 0xffffffffffffffff (lldb) p imemo_type(obj) (imemo_type) $1 = imemo_ast (lldb) fix SEGV inspecting already freed objects obj_info() assumes the given object is alive. Passing freed objects to it results in SEGV. (lldb) run Process 29718 launched: './miniruby' (x86_64) Process 29718 stopped * thread #1: tid = 0x3082c5, 0x00000001000bfaab miniruby`pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) frame #0: 0x00000001000bfaab miniruby`pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269 266 } 267 else { 268 VM_ASSERT(RB_TYPE_P(pathobj, T_ARRAY)); -> 269 return RARRAY_AREF(pathobj, PATHOBJ_PATH); 270 } 271 } 272 (lldb) bt * thread #1: tid = 0x3082c5, 0x00000001000bfaab miniruby`pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) * frame #0: 0x00000001000bfaab miniruby`pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269 frame #1: 0x00000001000c25ff miniruby`rb_iseq_path(iseq=0x000000010af34a20) + 32 at iseq.c:723 frame #2: 0x000000010009db09 miniruby`rb_raw_iseq_info(buff="0x000000010af34a20 [1 ] T_IMEMO iseq", buff_size=256, iseq=0x000000010af34a20) + 69 at gc.c:9274 frame #3: 0x000000010009e45a miniruby`rb_raw_obj_info(buff="0x000000010af34a20 [1 ] T_IMEMO iseq", buff_size=256, obj=4478683680) + 2191 at gc.c:9397 frame #4: 0x000000010009e4d5 miniruby`obj_info(obj=4478683680) + 98 at gc.c:9429 frame #5: 0x0000000100091ae3 miniruby`gc_page_sweep(objspace=0x00000001007d3280, heap=0x00000001007d32a0, sweep_page=0x000000010ae07bc0) + 622 at gc.c:3529 frame #6: 0x000000010009206a miniruby`gc_sweep_step(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 188 at gc.c:3705 frame #7: 0x0000000100092254 miniruby`gc_sweep_continue(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 133 at gc.c:3772 frame #8: 0x000000010008d7f9 miniruby`heap_prepare(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 48 at gc.c:1746 frame #9: 0x000000010008d8a1 miniruby`heap_get_freeobj_from_next_freepage(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 37 at gc.c:1769 frame #10: 0x000000010008d98d miniruby`heap_get_freeobj(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 83 at gc.c:1803 frame #11: 0x000000010008dcb0 miniruby`newobj_slowpath(klass=4334386280, flags=5, v1=0, v2=0, v3=0, objspace=0x00000001007d3280, wb_protected=1) + 220 at gc.c:1930 frame #12: 0x000000010008dd6c miniruby`newobj_slowpath_wb_protected(klass=4334386280, flags=5, v1=0, v2=0, v3=0, objspace=0x00000001007d3280) + 76 at gc.c:1942 frame #13: 0x000000010008dea1 miniruby`newobj_of(klass=4334386280, flags=5, v1=0, v2=0, v3=0, wb_protected=1) + 221 at gc.c:1974 frame #14: 0x000000010008df39 miniruby`rb_wb_protected_newobj_of(klass=4334386280, flags=5) + 54 at gc.c:1990 frame #15: 0x0000000100195f7c miniruby`str_alloc(klass=4334386280) + 29 at string.c:692 frame #16: 0x0000000100195fe9 miniruby`str_new0(klass=4334386280, ptr="gitm", len=4, termlen=1) + 73 at string.c:714 frame #17: 0x000000010019633e miniruby`rb_enc_str_new(ptr="gitm", len=4, enc=0x00000001025d50a0) + 81 at string.c:766 frame #18: 0x000000010010a80a miniruby`parser_str_new(p="gitm", n=4, enc=0x00000001025d50a0, func=66, enc0=0x00000001025d50a0) + 50 at parse.y:5817 frame #19: 0x000000010010ce1a miniruby`parser_parse_string(parser=0x00000001042ac5c0, quote=0x000000010460c028) + 795 at parse.y:6675 frame #20: 0x00000001001120bd miniruby`parser_yylex(parser=0x00000001042ac5c0) + 159 at parse.y:8281 frame #21: 0x0000000100115068 miniruby`yylex(lval=0x00007fff5fbf9948, yylloc=0x00007fff5fbf9ab0, parser=0x00000001042ac5c0) + 55 at parse.y:8931 frame #22: 0x00000001000fc79f miniruby`ruby_yyparse(parser=0x00000001042ac5c0) + 1198 at parse.c:5798 frame #23: 0x0000000100109f5a miniruby`yycompile0(arg=4364879296) + 317 at parse.y:5595 frame #24: 0x0000000100214ef0 miniruby`rb_suppress_tracing(func=(miniruby`yycompile0 at parse.y:5565), arg=4364879296) + 349 at vm_trace.c:397 frame #25: 0x000000010010a1df miniruby`yycompile(parser=0x00000001042ac5c0, fname=4443743440, line=1) + 126 at parse.y:5637 frame #26: 0x000000010010a4c1 miniruby`parser_compile_string(vparser=4443743480, fname=4443743440, s=4443743520, line=1) + 191 at parse.y:5706 frame #27: 0x000000010010a5b7 miniruby`rb_parser_compile_string_path(vparser=4443743480, f=4443743440, s=4443743520, line=1) + 58 at parse.y:5730 frame #28: 0x0000000100206025 miniruby`eval_make_iseq(src=4443743520, fname=4443743440, line=1, bind=0x0000000000000000, base_block=0x00007fff5fbfb370) + 266 at vm_eval.c:1274 frame #29: 0x0000000100206153 miniruby`eval_string_with_cref(self=4334412520, src=4443743520, cref=0x0000000000000000, file=52, line=1) + 197 at vm_eval.c:1307 frame #30: 0x0000000100206389 miniruby`rb_f_eval(argc=1, argv=0x0000000102400eb8, self=4334412520) + 219 at vm_eval.c:1382 frame #31: 0x00000001001f247c miniruby`call_cfunc_m1(func=(miniruby`rb_f_eval at vm_eval.c:1364), recv=4334412520, argc=1, argv=0x0000000102400eb8) + 47 at vm_insnhelper.c:1723 frame #32: 0x00000001001f2f87 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500d80, calling=0x00007fff5fbfbf50, ci=0x000000010263f240, cc=0x0000000100749b50) + 386 at vm_insnhelper.c:1918 frame #33: 0x00000001001f30d6 miniruby`vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500d80, calling=0x00007fff5fbfbf50, ci=0x000000010263f240, cc=0x0000000100749b50) + 149 at vm_insnhelper.c:1934 frame #34: 0x00000001001faf0e miniruby`vm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915 frame #35: 0x000000010020b75d miniruby`vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771 frame #36: 0x00000001002093f8 miniruby`invoke_block(ec=0x00000001007d3548, iseq=0x000000010252d7f0, self=4334412520, captured=0x0000000102500df8, cref=0x0000000000000000, type=572653569, opt_pc=0) + 224 at vm.c:988 frame #37: 0x0000000100209766 miniruby`invoke_iseq_block_from_c(ec=0x00000001007d3548, captured=0x0000000102500df8, self=4334412520, argc=0, argv=0x0000000000000000, passed_block_handler=0, cref=0x0000000000000000, is_lambda=0) + 389 at vm.c:1040 frame #38: 0x0000000100209824 miniruby`invoke_block_from_c_bh(ec=0x00000001007d3548, block_handler=4333768185, argc=0, argv=0x0000000000000000, passed_block_handler=0, cref=0x0000000000000000, is_lambda=0, force_blockarg=0) + 138 at vm.c:1058 frame #39: 0x00000001002099d0 miniruby`vm_yield(ec=0x00000001007d3548, argc=0, argv=0x0000000000000000) + 69 at vm.c:1103 frame #40: 0x0000000100205623 miniruby`rb_yield_0(argc=0, argv=0x0000000000000000) + 40 at vm_eval.c:970 frame #41: 0x0000000100205964 miniruby`loop_i + 19 at vm_eval.c:1049 frame #42: 0x000000010007db07 miniruby`rb_rescue2(b_proc=(miniruby`loop_i at vm_eval.c:1047), data1=0, r_proc=(miniruby`loop_stop at vm_eval.c:1056), data2=0) + 369 at eval.c:896 frame #43: 0x0000000100205a2e miniruby`rb_f_loop(self=4334412520) + 121 at vm_eval.c:1100 frame #44: 0x00000001001f24a7 miniruby`call_cfunc_0(func=(miniruby`rb_f_loop at vm_eval.c:1098), recv=4334412520, argc=0, argv=0x0000000102400e80) + 41 at vm_insnhelper.c:1729 frame #45: 0x00000001001f2f87 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 386 at vm_insnhelper.c:1918 frame #46: 0x00000001001f30d6 miniruby`vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 149 at vm_insnhelper.c:1934 frame #47: 0x00000001001f4319 miniruby`vm_call_method_each_type(ec=0x00000001007d3548, cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 239 at vm_insnhelper.c:2232 frame #48: 0x00000001001f4a2c miniruby`vm_call_method(ec=0x00000001007d3548, cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 253 at vm_insnhelper.c:2366 frame #49: 0x00000001001f4b7a miniruby`vm_call_general(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 59 at vm_insnhelper.c:2398 frame #50: 0x00000001001fab2f miniruby`vm_exec_core(ec=0x00000001007d3548, initial=0) + 7480 at insns.def:850 frame #51: 0x000000010020b75d miniruby`vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771 frame #52: 0x000000010020c40f miniruby`rb_iseq_eval_main(iseq=0x000000010252dd90) + 52 at vm.c:2019 frame #53: 0x000000010007c768 miniruby`ruby_exec_internal(n=0x000000010252dd90) + 297 at eval.c:246 frame #54: 0x000000010007c88e miniruby`ruby_exec_node(n=0x000000010252dd90) + 36 at eval.c:310 frame #55: 0x000000010007c861 miniruby`ruby_run_node(n=0x000000010252dd90) + 62 at eval.c:302 frame #56: 0x000000010000138d miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 113 at main.c:42 frame #57: 0x00007fff88eda5ad libdyld.dylib`start + 1 (lldb) p ((struct RVALUE*)pathobj)->as.basic (RBasic) $0 = (flags = 0, klass = 4478683600) (lldb) fix SEGV inspecting uninitialized objects obj_info() assumes the given object is alive. OTOH gc_writebarrier_incremental is called before or in middle of object initialization. Can casue SEGV. (lldb) run Process 48188 launched: './miniruby' (x86_64) Process 48188 stopped * thread #1: tid = 0x30fd53, 0x00000001000bf7a9 miniruby`rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT) frame #0: 0x00000001000bf7a9 miniruby`rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072 2069 static inline const VALUE * 2070 rb_array_const_ptr(VALUE a) 2071 { -> 2072 return FIX_CONST_VALUE_PTR((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ? 2073 RARRAY(a)->as.ary : RARRAY(a)->as.heap.ptr); 2074 } 2075 (lldb) bt * thread #1: tid = 0x30fd53, 0x00000001000bf7a9 miniruby`rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT) * frame #0: 0x00000001000bf7a9 miniruby`rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072 frame #1: 0x00000001000bfaab miniruby`pathobj_path(pathobj=5251291222225483145) + 70 at vm_core.h:269 frame #2: 0x00000001000c25ff miniruby`rb_iseq_path(iseq=0x00000001025b71a8) + 32 at iseq.c:723 frame #3: 0x000000010009db09 miniruby`rb_raw_iseq_info(buff="0x00000001025b7158 [0 ] proc (Proc)", buff_size=256, iseq=0x00000001025b71a8) + 69 at gc.c:9274 frame #4: 0x000000010009e1d5 miniruby`rb_raw_obj_info(buff="0x00000001025b7158 [0 ] proc (Proc)", buff_size=256, obj=4334514520) + 1546 at gc.c:9351 frame #5: 0x000000010009e4d5 miniruby`obj_info(obj=4334514520) + 98 at gc.c:9429 frame #6: 0x0000000100096658 miniruby`gc_writebarrier_incremental(a=4334514520, b=4334514600, objspace=0x00000001007d3280) + 61 at gc.c:5963 frame #7: 0x00000001000968ca miniruby`rb_gc_writebarrier(a=4334514520, b=4334514600) + 127 at gc.c:6009 frame #8: 0x00000001001eabe0 miniruby`rb_obj_written(a=4334514520, oldv=52, b=4334514600, filename="/Users/urabe.shyouhei/data/src/pedantic/vm.c", line=821) + 72 at ruby.h:1472 frame #9: 0x00000001001eac2c miniruby`rb_obj_write(a=4334514520, slot=0x000000010259ff10, b=4334514600, filename="/Users/urabe.shyouhei/data/src/pedantic/vm.c", line=821) + 70 at ruby.h:1489 frame #10: 0x0000000100208b6f miniruby`vm_proc_create_from_captured(klass=4311027960, captured=0x0000000102500338, block_type=block_type_ifunc, is_from_method='\0', is_lambda='\x01') + 137 at vm.c:821 frame #11: 0x0000000100208e5c miniruby`rb_vm_make_proc_lambda(ec=0x00000001007d3548, captured=0x0000000102500338, klass=4311027960, is_lambda='\x01') + 134 at vm.c:892 frame #12: 0x000000010011f08e miniruby`proc_new(klass=4311027960, is_lambda='\x01') + 445 at proc.c:752 frame #13: 0x000000010011f110 miniruby`rb_block_lambda + 27 at proc.c:808 frame #14: 0x00000001001f24a7 miniruby`call_cfunc_0(func=(miniruby`rb_block_lambda at proc.c:807), recv=4310991600, argc=0, argv=0x0000000000000000) + 41 at vm_insnhelper.c:1729 frame #15: 0x00000001002033de miniruby`vm_call0_cfunc_with_frame(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 370 at vm_eval.c:85 frame #16: 0x00000001002034d9 miniruby`vm_call0_cfunc(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 59 at vm_eval.c:100 frame #17: 0x000000010020368f miniruby`vm_call0_body(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 436 at vm_eval.c:131 frame #18: 0x000000010020326a miniruby`vm_call0(ec=0x00000001007d3548, recv=4310991600, id=2993, argc=0, argv=0x0000000000000000, me=0x0000000100f48110) + 142 at vm_eval.c:58 frame #19: 0x0000000100203c60 miniruby`rb_call0(ec=0x00000001007d3548, recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000, scope=CALL_FCALL, self=4334514640) + 166 at vm_eval.c:296 frame #20: 0x0000000100204827 miniruby`rb_call(recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000, scope=CALL_FCALL) + 84 at vm_eval.c:589 frame #21: 0x000000010020518b miniruby`rb_funcallv(recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000) + 52 at vm_eval.c:815 frame #22: 0x000000010012242e miniruby`mlambda(method=0) + 45 at proc.c:2661 frame #23: 0x0000000100205bac miniruby`rb_iterate0(it_proc=(miniruby`mlambda at proc.c:2660), data1=0, ifunc=0x00000001025b71a8, ec=0x00000001007d3548) + 380 at vm_eval.c:1134 frame #24: 0x0000000100205d16 miniruby`rb_iterate(it_proc=(miniruby`mlambda at proc.c:2660), data1=0, bl_proc=(miniruby`bmcall at proc.c:2666), data2=4334514640) + 88 at vm_eval.c:1166 frame #25: 0x00000001001224c7 miniruby`method_to_proc(method=4334514640) + 43 at proc.c:2701 frame #26: 0x00000001001f24a7 miniruby`call_cfunc_0(func=(miniruby`method_to_proc at proc.c:2688), recv=4334514640, argc=0, argv=0x0000000102400568) + 41 at vm_insnhelper.c:1729 frame #27: 0x00000001001f2f87 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 386 at vm_insnhelper.c:1918 frame #28: 0x00000001001f30d6 miniruby`vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 149 at vm_insnhelper.c:1934 frame #29: 0x00000001001f4319 miniruby`vm_call_method_each_type(ec=0x00000001007d3548, cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 239 at vm_insnhelper.c:2232 frame #30: 0x00000001001f49a4 miniruby`vm_call_method(ec=0x00000001007d3548, cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 117 at vm_insnhelper.c:2355 frame #31: 0x00000001001f4b7a miniruby`vm_call_general(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 59 at vm_insnhelper.c:2398 frame #32: 0x00000001001faf0e miniruby`vm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915 frame #33: 0x000000010020b75d miniruby`vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771 frame #34: 0x000000010020c3d1 miniruby`rb_iseq_eval(iseq=0x00000001007f8270) + 52 at vm.c:2008 frame #35: 0x00000001000caa4a miniruby`rb_load_internal0(ec=0x00000001007d3548, fname=4310799960, wrap=0) + 631 at load.c:611 frame #36: 0x00000001000cab36 miniruby`rb_load_internal(fname=4310799960, wrap=0) + 46 at load.c:642 frame #37: 0x00000001000cae1d miniruby`rb_f_load(argc=1, argv=0x00000001024004b8) + 217 at load.c:710 frame #38: 0x00000001001f247c miniruby`call_cfunc_m1(func=(miniruby`rb_f_load at load.c:695), recv=4311327440, argc=1, argv=0x00000001024004b8) + 47 at vm_insnhelper.c:1723 frame #39: 0x00000001001f2f87 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 386 at vm_insnhelper.c:1918 frame #40: 0x00000001001f30d6 miniruby`vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 149 at vm_insnhelper.c:1934 frame #41: 0x00000001001f4319 miniruby`vm_call_method_each_type(ec=0x00000001007d3548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 239 at vm_insnhelper.c:2232 frame #42: 0x00000001001f4a2c miniruby`vm_call_method(ec=0x00000001007d3548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 253 at vm_insnhelper.c:2366 frame #43: 0x00000001001f4b7a miniruby`vm_call_general(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 59 at vm_insnhelper.c:2398 frame #44: 0x00000001001faf0e miniruby`vm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915 frame #45: 0x000000010020b75d miniruby`vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771 frame #46: 0x000000010020c40f miniruby`rb_iseq_eval_main(iseq=0x0000000100f21240) + 52 at vm.c:2019 frame #47: 0x000000010007c774 miniruby`ruby_exec_internal(n=0x0000000100f21240) + 297 at eval.c:246 frame #48: 0x000000010007c89a miniruby`ruby_exec_node(n=0x0000000100f21240) + 36 at eval.c:310 frame #49: 0x000000010007c86d miniruby`ruby_run_node(n=0x0000000100f21240) + 62 at eval.c:302 frame #50: 0x0000000100001399 miniruby`main(argc=9, argv=0x00007fff5fbfdae0) + 113 at main.c:42 frame #51: 0x00007fff88eda5ad libdyld.dylib`start + 1 (lldb) ------------------------------------------------------------------------ r61661 | naruse | 2018-01-08 07:26:45 +0900 (Mon, 08 Jan 2018) | 7 lines merge revision(s) 61561: [Backport #14272] fix memory leak (FOUND BY A COMPILER WARNING) Confusion of argument order ignores this st_free_table. Results in garbaged table not GCed. Easily noticable when you read the compiper warnings. ------------------------------------------------------------------------ r61660 | naruse | 2018-01-08 07:25:29 +0900 (Mon, 08 Jan 2018) | 10 lines merge revision(s) 61518: [Backport #14260] bit fields treating negative values should be declared as signed int * internal.h (struct vm_ifunc_argc): Bit fields are unsigned by default. For storing nagative values to bit fields, they must be declated as signed int. Fix multiple test failure observed by 32-bit binaries compiled with Oracle Developer Studio (Solaris Studio) 12.x on Solaris 10 on sparc architecture. [Bug #14260] ------------------------------------------------------------------------ r61630 | naruse | 2018-01-06 05:40:54 +0900 (Sat, 06 Jan 2018) | 9 lines merge revision(s) 61625,61626,61627: extend timeout to 15 seconds for ARMv8 environment Show how many seconds it timeouts By this we can easily extend timeout. Extend timeout of test_clear_unreachable_keyword_args ------------------------------------------------------------------------ r61629 | naruse | 2018-01-06 05:40:12 +0900 (Sat, 06 Jan 2018) | 8 lines merge revision(s) 61517: [Backport #14259] numeric.c: Fix Integer#pow with a large Fixnum modulo * numeric.c: Fix Integer#pow with a large Fixnum modulo [Bug #14259] [ruby-core:84562] * test/ruby/test_numeric.rb: add assertions for reproducing this bug. ------------------------------------------------------------------------ r61628 | naruse | 2018-01-06 05:39:03 +0900 (Sat, 06 Jan 2018) | 8 lines merge revision(s) 61513: [Backport #14257] string.c: chomp rs at the end * string.c (rb_str_enumerate_lines): should chomp record separator only, but not a newline, at the end of the receiver as well as middle, if the separator is given. [ruby-core:84552] [Bug #14257] ------------------------------------------------------------------------ r61583 | naruse | 2018-01-04 03:14:56 +0900 (Thu, 04 Jan 2018) | 5 lines merge revision(s) 61507: [Backport #14247] Fix KeyError#{key,receiver} of Thread#fetch [ruby-core:84508] [Bug #14247] ------------------------------------------------------------------------ r61582 | naruse | 2018-01-04 03:12:16 +0900 (Thu, 04 Jan 2018) | 8 lines merge revision(s) 61500: [Backport #14248] fix fd mask detection on os x This was broken in r59440 (3215b27a9abd8de793cf517f32d8901fd421eb1c) [Bug #14248] From: Stefan Kaes <skaes@railsexpress.de> ------------------------------------------------------------------------ r61581 | naruse | 2018-01-04 03:11:47 +0900 (Thu, 04 Jan 2018) | 14 lines merge revision(s) 61497: [Backport #14243] erb.rb: preserve the behavior for invalid syntax comment. Fix regression at r58948. I even don't want to deprecate it because deprecation needs to lex all embedded Ruby script using Ripper and it would be slow. So Let me just keep this behavior of Ruby 2.4. No change is the best compatibility. This commit stopped using String#-@ because it's harmful for "ambiguous first argument" warning if we really want to maintain this behavior. [Bug #14243] ------------------------------------------------------------------------ r61580 | naruse | 2018-01-04 03:03:49 +0900 (Thu, 04 Jan 2018) | 6 lines merge revision(s) 61479: [Backport #14236] variable.c: public rb_autoload * variable.c (rb_autoload): restore the visibility for backward compatibility. [ruby-core:84454] [Bug #14236] ------------------------------------------------------------------------ r61579 | naruse | 2018-01-04 03:02:17 +0900 (Thu, 04 Jan 2018) | 23 lines merge revision(s) 61471,61472: [Backport #14231] Use UINT128_T support flag from configure Current check for __uint128_t in hash.c is not valid, since it ignores compilers other than gcc. We hit this on lcc on e2k platform. Configure script properly checks from 128-bit data types support and sets HAVE_UINT128_T accordingly. This approach is already used within ruby at bignum.c, random.c, etc. Probably hash.c is an overlooked remnant of old days. This patch fixes this. [ruby-core:84438] [Bug #14231] [Fix GH-1781] From: Andrew Savchenko <bircoph@altlinux.org> hash.c: use uint128_t * hash.c (mult_and_mix): use uint128_t instead of __uint128_t. [ruby-core:84438] [Bug #14231] From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61496 | naruse | 2017-12-27 19:25:32 +0900 (Wed, 27 Dec 2017) | 6 lines merge revision(s) 61478: [Backport #14234] prelude.c.tmpl: get rid of errors with old gcc * template/prelude.c.tmpl: moved diagnostic pragmas outside prelude_eval() for very old gcc. [ruby-core:84449] [Bug #14234] ------------------------------------------------------------------------ r61467 | naruse | 2017-12-25 15:56:44 +0900 (Mon, 25 Dec 2017) | 2 lines v2.5.0p0 ------------------------------------------------------------------------ r61466 | naruse | 2017-12-25 15:51:11 +0900 (Mon, 25 Dec 2017) | 1 line Release branch of Ruby 2.5 ------------------------------------------------------------------------ r61465 | nobu | 2017-12-25 14:54:27 +0900 (Mon, 25 Dec 2017) | 4 lines fix leaked fds * lib/rubygems/command.rb (Gem::Command#invoke_with_build_args): restore UI and close the created SilentUI. ------------------------------------------------------------------------ r61464 | mame | 2017-12-25 14:16:05 +0900 (Mon, 25 Dec 2017) | 4 lines doc/contributing.rdoc: Update platform maintainers * mswin32 and Symbian OS are no longer supported * Mac OS X was renamed ------------------------------------------------------------------------ r61463 | ko1 | 2017-12-25 13:40:42 +0900 (Mon, 25 Dec 2017) | 5 lines Disasm output contains code range. * iseq.c (iseq_inspect): show also code range information. Note that `iseq_inspect` is used only for header of disasm. ------------------------------------------------------------------------ r61462 | nobu | 2017-12-25 12:25:45 +0900 (Mon, 25 Dec 2017) | 4 lines prelude.rb: block passing * prelude.rb (Thread.exclusive): pass the block as a block argument. ------------------------------------------------------------------------ r61461 | kazu | 2017-12-25 12:01:07 +0900 (Mon, 25 Dec 2017) | 1 line NEWS: Fix typos [ci skip] ------------------------------------------------------------------------ r61460 | nobu | 2017-12-25 11:42:13 +0900 (Mon, 25 Dec 2017) | 4 lines prelude.c.tmpl: static literals * template/prelude.c.tmpl (PRELUDE_STR): make string objects with static literals not to copy them. ------------------------------------------------------------------------ r61459 | nobu | 2017-12-25 11:09:14 +0900 (Mon, 25 Dec 2017) | 5 lines prelude.c.tmpl: fix optimization options * template/prelude.c.tmpl (prelude_eval): fix optimization options. trace_instruction member has been removed. filled coverage_enabled and debug_level members instead. ------------------------------------------------------------------------ r61458 | hsbt | 2017-12-25 09:33:19 +0900 (Mon, 25 Dec 2017) | 1 line Added gemification entry to NEWS file. ------------------------------------------------------------------------ r61457 | ko1 | 2017-12-25 09:27:17 +0900 (Mon, 25 Dec 2017) | 10 lines Set first line numbers for empty iseqs. * compile.c (iseq_compile_each): for empty method, block and so on, `last_line` is not set so that line number of `putnil` instruction will be zero. This patch set `first_lineno` for such `putnil`. Problem is reported by deivid-rodriguez via Yuichiro Kaneko. * test/ruby/test_iseq.rb: add a test for this spec. ------------------------------------------------------------------------ r61452 | sorah | 2017-12-25 02:55:01 +0900 (Mon, 25 Dec 2017) | 3 lines NEWS: use of copy_file_range(2) isn't a new method [ci skip] ------------------------------------------------------------------------ r61451 | k0kubun | 2017-12-25 02:20:04 +0900 (Mon, 25 Dec 2017) | 7 lines NEWS: move the section to note ERB performance I heard that notable performance improvements should be written to "Implementation Improvements". So I put the sentence here. Also, the sentence itself is fixed to be the same as Ruby 2.5 release note draft's one. ------------------------------------------------------------------------ r61450 | ko1 | 2017-12-25 02:07:53 +0900 (Mon, 25 Dec 2017) | 6 lines Remove "trace_instruction" compile option. * iseq.h (rb_compile_option_struct): trace instruction is removed so that remove the trace_instruction compile option. Don't show warning (just ignore) for Ruby 2.5. ------------------------------------------------------------------------ r61449 | svn | 2017-12-25 01:43:17 +0900 (Mon, 25 Dec 2017) | 1 line * 2017-12-25 ------------------------------------------------------------------------ r61448 | k0kubun | 2017-12-25 01:43:17 +0900 (Mon, 25 Dec 2017) | 8 lines NEWS: note about ERB's rendering performance improvement. There is no specific ticket for it, but improving the ERB's performance was my largest passion that made me a Ruby committer. See r58735, r58842, r58904, r58905, r58916. ------------------------------------------------------------------------ r61447 | mame | 2017-12-24 23:52:23 +0900 (Sun, 24 Dec 2017) | 1 line NEWS: Add a brief explanation for branch and method coverage ------------------------------------------------------------------------ r61446 | nobu | 2017-12-24 19:12:21 +0900 (Sun, 24 Dec 2017) | 1 line fix grammatical mistake [ci skip] ------------------------------------------------------------------------ r61445 | normal | 2017-12-24 17:45:21 +0900 (Sun, 24 Dec 2017) | 1 line NEWS: updates for WEBrick [ci skip] ------------------------------------------------------------------------ r61444 | normal | 2017-12-24 17:40:11 +0900 (Sun, 24 Dec 2017) | 1 line NEWS: fix typo [ci skip] ------------------------------------------------------------------------ r61443 | normal | 2017-12-24 17:38:43 +0900 (Sun, 24 Dec 2017) | 13 lines webrick 1.4.2 This release removes uses of Kernel#open to avoid unintended behaviors and make future auditing easier. [Misc #14216] 6 changes since 1.4.1: webrick: httpauth requires regular files webrick/httpservlet/cgi_runner.rb: remove unnecessary open webrick: WEBrick::Log requires path arg when given string webrick/httpservlet/*handler: use File.open webrick/httputils: note Kernel#open behavior webrick/httpservelet/cgi_runner: avoid IO#reopen on pathname ------------------------------------------------------------------------ r61442 | mrkn | 2017-12-24 15:24:57 +0900 (Sun, 24 Dec 2017) | 1 line NEWS: update for bigdecimal 1.3.4 ------------------------------------------------------------------------ r61441 | mrkn | 2017-12-24 15:22:41 +0900 (Sun, 24 Dec 2017) | 5 lines bigdecimal: version 1.3.4 Import bigdecimal version 1.3.4. The full commit log is here: https://github.com/ruby/bigdecimal/compare/v1.3.3...v1.3.4 ------------------------------------------------------------------------ r61438 | kazu | 2017-12-24 11:41:00 +0900 (Sun, 24 Dec 2017) | 1 line [DOC] Improve example of IO#pread [ci skip] ------------------------------------------------------------------------ r61437 | nobu | 2017-12-24 11:38:27 +0900 (Sun, 24 Dec 2017) | 4 lines compile.c: toplevel return arguments * compile.c (compile_return): evaluate arguments to top-level return but ignore the results. ------------------------------------------------------------------------ r61435 | nobu | 2017-12-24 11:26:22 +0900 (Sun, 24 Dec 2017) | 1 line lib/irb.rb: highlight exceptions ------------------------------------------------------------------------ r61434 | nobu | 2017-12-24 10:52:21 +0900 (Sun, 24 Dec 2017) | 1 line lib/irb.rb: simplified backtrace filtering ------------------------------------------------------------------------ r61433 | kazu | 2017-12-24 10:26:46 +0900 (Sun, 24 Dec 2017) | 1 line [DOC] Use File.open with block instead of File.new without close [ci skip] ------------------------------------------------------------------------ r61432 | hsbt | 2017-12-24 08:33:09 +0900 (Sun, 24 Dec 2017) | 5 lines Merge rdoc-6.0.1. It fixes an installation error of activerecord. https://github.com/ruby/rdoc/issues/571 ------------------------------------------------------------------------ r61431 | sorah | 2017-12-24 03:17:39 +0900 (Sun, 24 Dec 2017) | 3 lines Print backtrace in reverse order on IRB too [Feature #8861] ------------------------------------------------------------------------ r61430 | svn | 2017-12-24 01:17:57 +0900 (Sun, 24 Dec 2017) | 1 line * 2017-12-24 ------------------------------------------------------------------------ r61429 | naruse | 2017-12-24 01:17:57 +0900 (Sun, 24 Dec 2017) | 10 lines undef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P on GCC 4.8 GCC 4.8 with optimization causes error if it compiles following code. [Bug #14221] ```c __builtin_choose_expr(__builtin_constant_p(b),0,1) ``` https://github.com/ruby/ruby/pull/1778 ------------------------------------------------------------------------ r61428 | ko1 | 2017-12-23 23:48:28 +0900 (Sat, 23 Dec 2017) | 1 line fix last commit ------------------------------------------------------------------------ r61427 | ko1 | 2017-12-23 23:46:59 +0900 (Sat, 23 Dec 2017) | 7 lines RubyVM::InstructionSequence#trace_points. * iseq.c (iseqw_trace_points): add `RubyVM::InstructionSequence#trace_points` method for tools which want to manipulate ISeq (and traces). * test/ruby/test_iseq.rb: add a test for this method. ------------------------------------------------------------------------ r61426 | nobu | 2017-12-23 23:31:56 +0900 (Sat, 23 Dec 2017) | 6 lines test_io_console.rb: get rid of sporadic failures * test/io/console/test_io_console.rb (test_getpass): try to get rid of timing issues. * test/io/console/test_io_console.rb (test_ioflush2): ditto. ------------------------------------------------------------------------ r61425 | ko1 | 2017-12-23 21:48:24 +0900 (Sat, 23 Dec 2017) | 7 lines RubyVM::InstructionSequence#each_child. * iseq.c (iseqw_each_child): add RubyVM::InstructionSequence#each_child method for tools which want to manipulate ISeq. * test/ruby/test_iseq.rb: add a test for this method. ------------------------------------------------------------------------ r61424 | ko1 | 2017-12-23 20:00:48 +0900 (Sat, 23 Dec 2017) | 15 lines revert line number spec of *return events. * compile.c (rb_iseq_compile_node): line number spec of :return, :b_return and :end events of 'TracePoint` is changed for [Feature #14104]. Quoted from [Feature #14104]: > Line numbers on :return/:b_return events show the last executed lines, > instead of end lines (without return statement). Note that :end event also affected. However, "buybug", a well-known ruby debugger depends on previous behavior so that I reverted this specification. * test/ruby/test_settracefunc.rb: catch up this fix. ------------------------------------------------------------------------ r61423 | k0kubun | 2017-12-23 18:10:34 +0900 (Sat, 23 Dec 2017) | 7 lines iseq.c: show first_lineno on iseq inspect My motivation was to improve the output of `ruby --dump=insns xxx.rb`. When one file has many iseqs, it's hard to find the one I want to read. So I wanted `iseq_disasm` to show first_lineno. I unified the behavior of `iseqw_disasm` for consistency. ------------------------------------------------------------------------ r61422 | kazu | 2017-12-23 10:53:48 +0900 (Sat, 23 Dec 2017) | 1 line iseq.c: Remove unused macro in r61395 ------------------------------------------------------------------------ r61421 | nobu | 2017-12-23 09:55:29 +0900 (Sat, 23 Dec 2017) | 5 lines iseq.c: local variable names * iseq.c (rb_insn_operand_intern): simplified the condition for local variable names, assume TS_LINDEX and TS_NUM combinations are only for local variables. ------------------------------------------------------------------------ r61420 | nobu | 2017-12-23 09:51:36 +0900 (Sat, 23 Dec 2017) | 4 lines insns.def: adjust type * insns.def (checkkeyword): adjust argument type to vm_check_keyword as lindex_t. ------------------------------------------------------------------------ r61419 | hsbt | 2017-12-23 09:38:52 +0900 (Sat, 23 Dec 2017) | 1 line Avoid to warnings about gemspec loadings in rubygems tests. ------------------------------------------------------------------------ r61418 | svn | 2017-12-23 09:30:36 +0900 (Sat, 23 Dec 2017) | 1 line * 2017-12-23 ------------------------------------------------------------------------ r61417 | nobu | 2017-12-23 09:30:33 +0900 (Sat, 23 Dec 2017) | 4 lines fix unicode data directory * test/ruby/enc/test_regex_casefold.rb: fix searching unicode data directory, like as test_case_comprehensive.rb. ------------------------------------------------------------------------ r61416 | hsbt | 2017-12-23 08:08:05 +0900 (Sat, 23 Dec 2017) | 4 lines Postponing the Bundler merge. I faced a big issue about Bundler with ruby core. I have no time to resolve it issue before 2.5 final release. ------------------------------------------------------------------------ r61415 | nobu | 2017-12-22 21:39:32 +0900 (Fri, 22 Dec 2017) | 6 lines update unicode data files directory * test/ruby/enc/test_case_comprehensive.rb: search ucd directory first if exists. * test/ruby/enc/test_regex_casefold.rb: ditto. ------------------------------------------------------------------------ r61413 | usa | 2017-12-22 17:52:11 +0900 (Fri, 22 Dec 2017) | 7 lines force hash values fixable * include/ruby/ruby.h (RB_ST2FIX): force fixable on LLP64 environment. * hash.c (any_hash): ditto. [ruby-core:84395] [Bug #14218] ------------------------------------------------------------------------ r61412 | glass | 2017-12-22 17:47:39 +0900 (Fri, 22 Dec 2017) | 6 lines io.c: ignore EPERM * io.c (nogvl_copy_file_range): ignore EPERM and fallback to sendfile(2) or read/write. copy_file_range(2) may not exist even if __NR_copy_file_range is defined in the build environment. [Bug #14207] ------------------------------------------------------------------------ r61411 | nobu | 2017-12-22 17:08:31 +0900 (Fri, 22 Dec 2017) | 5 lines erb.rb: shadow by keys * lib/erb.rb (ERB#new_toplevel): shadow already defined local variables by block local variabes, not to overwrite them. [ruby-core:84390] [Bug #14215] ------------------------------------------------------------------------ r61410 | hsbt | 2017-12-22 17:00:10 +0900 (Fri, 22 Dec 2017) | 3 lines Bump up fileutils-1.0.2 Added `FileUtils::VERSION` const variable. ------------------------------------------------------------------------ r61409 | normal | 2017-12-22 14:59:11 +0900 (Fri, 22 Dec 2017) | 8 lines webrick/httpservelet/cgi_runner: avoid IO#reopen on pathname IO#reopen seems to behave strangely on Win32 based on the logs posted by Greg for [Bug #14420]. Lets try to fix the issue by using File.open explicitly (but not Kernel#open). * lib/webrick/httpservelet/cgi_runner: use File.open explicitly [Bug #14220] ------------------------------------------------------------------------ r61408 | ko1 | 2017-12-22 14:15:45 +0900 (Fri, 22 Dec 2017) | 6 lines fix a test for debugging. * test/rdoc/test_rdoc_markup_pre_process.rb: show `RDoc::Markup::PreProcess.post_processors` as a failure message for debugging. ------------------------------------------------------------------------ r61407 | kazu | 2017-12-22 12:35:54 +0900 (Fri, 22 Dec 2017) | 1 line [DOC] StringIO#write accepts multiple arguments since r60377 [ci skip] ------------------------------------------------------------------------ r61406 | kazu | 2017-12-22 12:35:52 +0900 (Fri, 22 Dec 2017) | 1 line [DOC] Fix indent [ci skip] ------------------------------------------------------------------------ r61405 | kazu | 2017-12-22 12:35:46 +0900 (Fri, 22 Dec 2017) | 1 line [DOC] Remove unmatched parenthesis [ci skip] ------------------------------------------------------------------------ r61404 | nobu | 2017-12-22 10:49:00 +0900 (Fri, 22 Dec 2017) | 4 lines ifaddr.c: get_ifaddrs * ext/socket/ifaddr.c (get_ifaddrs): extract ifaddrs from Socket::Ifaddr. ------------------------------------------------------------------------ r61403 | nobu | 2017-12-22 10:12:02 +0900 (Fri, 22 Dec 2017) | 1 line iseq.c (rb_insn_operand_intern): needs parenthesies ------------------------------------------------------------------------ r61402 | normal | 2017-12-22 10:08:05 +0900 (Fri, 22 Dec 2017) | 11 lines webrick/httputils: note Kernel#open behavior I don't know who uses the load_mime_types method; but it is conceivable that a user would want to read the results of a command instead of reading a regular file to load MIME types. None of the WEBrick-related code in Ruby or default/bundled gems seems to rely on this method; but it is likely 3rd-party code does. * lib/webrick/httputils.rb (load_mime_types): note Kernel#open behavior [Misc #14216] ------------------------------------------------------------------------ r61401 | normal | 2017-12-22 10:08:00 +0900 (Fri, 22 Dec 2017) | 10 lines webrick/httpservlet/*handler: use File.open This makes future code audits easier. None of these changes fix realistic remote code execution vulnerabilities because we stat(2) before attempting Kernel#open. * lib/webrick/httpservlet/erbhandler.rb (do_GET): use File.open * lib/webrick/httpservlet/filehandler.rb (do_GET): use File.open (make_partial_content): ditto [Misc #14216] ------------------------------------------------------------------------ r61400 | normal | 2017-12-22 10:07:55 +0900 (Fri, 22 Dec 2017) | 7 lines webrick: WEBrick::Log requires path arg when given string Allowing a user to specify "| command" via Kernel#open is nonsensical since we never read from the resultant IO. * lib/webrick/log.rb (initialize): replace Kernel#open with File.open [Misc #14216] ------------------------------------------------------------------------ r61399 | normal | 2017-12-22 10:07:50 +0900 (Fri, 22 Dec 2017) | 7 lines webrick: add test for WEBrick::HTTPServlet::ERBHandler This previously had no coverage. * test/webrick/test_filehandler.rb (test_erbhandler): new test * test/webrick/webrick.rhtml: new file for test [Misc #14216] ------------------------------------------------------------------------ r61398 | normal | 2017-12-22 10:07:45 +0900 (Fri, 22 Dec 2017) | 11 lines webrick/httpservlet/cgi_runner.rb: remove unnecessary open IO#reopen already takes string path names as well as IO objects (but not "| command" strings) This makes further auditing for inadvertant code execution easier. There's no actual bugfix or behavior change here, as no external data is passed to cgi_runner.rb. * lib/webrick/httpservlet/cgi_runner.rb: remove Kernel#open call [Misc #14216] ------------------------------------------------------------------------ r61397 | normal | 2017-12-22 10:07:39 +0900 (Fri, 22 Dec 2017) | 9 lines webrick: httpauth requires regular files Be sure we do not try to open a pipe to read from, since we care about mtime in all cases. * lib/webrick/httpauth/htdigest.rb: use File.open * lib/webrick/httpauth/htgroup.rb: ditto * lib/webrick/httpauth/htpasswd.rb: ditto [Misc #14216] ------------------------------------------------------------------------ r61396 | nobu | 2017-12-22 10:03:17 +0900 (Fri, 22 Dec 2017) | 4 lines encoding.c: rb_enc_find_index2 * string.c (str_undump): use rb_enc_find_index2 to find encoding by unterminated string. check the format before encoding name. ------------------------------------------------------------------------ r61395 | nobu | 2017-12-22 09:29:38 +0900 (Fri, 22 Dec 2017) | 4 lines iseq.c: defined insn operand * iseq.c (rb_insn_operand_intern): improve operands of defined instruction. ------------------------------------------------------------------------ r61394 | svn | 2017-12-22 08:28:16 +0900 (Fri, 22 Dec 2017) | 1 line * 2017-12-22 ------------------------------------------------------------------------ r61393 | shugo | 2017-12-22 08:28:15 +0900 (Fri, 22 Dec 2017) | 3 lines Extend timeout for CI. http://ci.rvm.jp/results/trunk-asserts-nopara@ruby-sky1/266962 ------------------------------------------------------------------------ r61392 | akr | 2017-12-21 23:15:04 +0900 (Thu, 21 Dec 2017) | 5 lines open-uri defines URI.open defined as an alias. open-uri's Kernel.open will be deprecated in future. ------------------------------------------------------------------------ r61391 | nobu | 2017-12-21 20:59:31 +0900 (Thu, 21 Dec 2017) | 1 line test for [Bug #14214] ------------------------------------------------------------------------ r61390 | hsbt | 2017-12-21 18:29:47 +0900 (Thu, 21 Dec 2017) | 1 line Added detailed version of Bundler on NEWS. ------------------------------------------------------------------------ r61389 | eregon | 2017-12-21 18:29:18 +0900 (Thu, 21 Dec 2017) | 1 line Simplify Thread#[]= spec ------------------------------------------------------------------------ r61388 | hsbt | 2017-12-21 18:22:15 +0900 (Thu, 21 Dec 2017) | 1 line Merge release version of bundler-1.16.1 from upstream. ------------------------------------------------------------------------ r61387 | ko1 | 2017-12-21 17:29:56 +0900 (Thu, 21 Dec 2017) | 4 lines revert r61371 for [Bug #14214] Reverted patch doesn't check overwritten value. ------------------------------------------------------------------------ r61386 | nobu | 2017-12-21 16:59:00 +0900 (Thu, 21 Dec 2017) | 1 line string.c: fix memory leak ------------------------------------------------------------------------ r61385 | nobu | 2017-12-21 16:50:46 +0900 (Thu, 21 Dec 2017) | 1 line common.mk: revert r58542 [Bug #14213] ------------------------------------------------------------------------ r61384 | yui-knk | 2017-12-21 16:09:03 +0900 (Thu, 21 Dec 2017) | 1 line iseq.c (rb_iseq_code_range): Remove needless `;` ------------------------------------------------------------------------ r61383 | mame | 2017-12-21 15:52:15 +0900 (Thu, 21 Dec 2017) | 7 lines parse.y: change NODE_SCOPE's nd_loc to one of the parent NODE This change (ad-hocly) adjusts the code range of NODE_SCOPE in class/module definition because the same adjust is already done in method definition. I intend to just remove inconsistency between class/module definition and method definition, but this kind of adjust is dirty, so it should be fixed later (maybe in 2.6). ------------------------------------------------------------------------ r61382 | ko1 | 2017-12-21 15:40:28 +0900 (Thu, 21 Dec 2017) | 4 lines add experimental API. * iseq.c (rb_iseq_code_range): added to access iseq's code range. ------------------------------------------------------------------------ r61381 | naruse | 2017-12-21 14:09:17 +0900 (Thu, 21 Dec 2017) | 1 line Don't allow mixed escape ------------------------------------------------------------------------ r61380 | naruse | 2017-12-21 14:09:16 +0900 (Thu, 21 Dec 2017) | 1 line move dump format validation into parsing epilogue ------------------------------------------------------------------------ r61379 | naruse | 2017-12-21 14:08:57 +0900 (Thu, 21 Dec 2017) | 1 line fix escapes in undump ------------------------------------------------------------------------ r61378 | sonots | 2017-12-21 14:07:43 +0900 (Thu, 21 Dec 2017) | 2 lines * lib/logger.rb (Logger::LogDevice#open_logfile, #create_logfile): Logger should be able to open only files [Bug #14212] ------------------------------------------------------------------------ r61377 | tenderlove | 2017-12-21 09:40:54 +0900 (Thu, 21 Dec 2017) | 4 lines Fix `imemo_name` to dump new imemo types New IMEMO types were introduced, this just fixes the function that converts the type to support the new types. ------------------------------------------------------------------------ r61376 | normal | 2017-12-21 09:26:24 +0900 (Thu, 21 Dec 2017) | 8 lines io.c: IO#pwrite uses tmp buffer to avoid parallel modification Since we release GVL, we must freeze and duplicate the string buffer to prevent other threads from modifying our buffer while we are waiting on pwrite(2). * io.c (rb_io_pwrite): use_rb_str_tmp_frozen_{acquire/release} [Bug #14195] ------------------------------------------------------------------------ r61375 | ko1 | 2017-12-21 08:49:30 +0900 (Thu, 21 Dec 2017) | 5 lines fix threading bug. * spec/ruby/core/thread/element_set_spec.rb: `t` can be uninitialized. Use `Thread.current` explicitly. ------------------------------------------------------------------------ r61374 | usa | 2017-12-21 01:04:41 +0900 (Thu, 21 Dec 2017) | 10 lines fix test errors on Windows * test/resolv/test_addr.rb (test_hosts_by_command): on Windows, `|` is invalid charactor for path and raises `Errno::EINVAL` if trying to open. * test/resolv/test_dns.rb (test_resolv_conf_by_command): ditto. cf. [Bug #14205] ------------------------------------------------------------------------ r61372 | svn | 2017-12-21 00:45:02 +0900 (Thu, 21 Dec 2017) | 1 line * 2017-12-21 ------------------------------------------------------------------------ r61371 | nobu | 2017-12-21 00:45:01 +0900 (Thu, 21 Dec 2017) | 5 lines compile.c: branch on block param * compile.c (compile_branch_condition): replace block param value in branch conditions with `defined(yield)`, to get rid of creating proc value. ------------------------------------------------------------------------ r61360 | nobu | 2017-12-20 23:10:06 +0900 (Wed, 20 Dec 2017) | 4 lines iseq.c: block param name * iseq.c (rb_insn_operand_intern): show local variable name at getblockparam/setblockparam too. ------------------------------------------------------------------------ r61359 | naruse | 2017-12-20 21:06:59 +0900 (Wed, 20 Dec 2017) | 3 lines raise error if value contains CR/LF in iniheader of initialize_http_header like r59693, initialize_http_header also should raise error. [Bug #14208] ------------------------------------------------------------------------ r61357 | stomar | 2017-12-20 18:51:29 +0900 (Wed, 20 Dec 2017) | 1 line NEWS: update news for Psych ------------------------------------------------------------------------ r61356 | stomar | 2017-12-20 18:31:58 +0900 (Wed, 20 Dec 2017) | 1 line NEWS: "absent operator" is now called "absence operator" ------------------------------------------------------------------------ r61355 | stomar | 2017-12-20 18:31:22 +0900 (Wed, 20 Dec 2017) | 1 line NEWS: grammar fixes ------------------------------------------------------------------------ r61354 | hsbt | 2017-12-20 17:50:26 +0900 (Wed, 20 Dec 2017) | 1 line Update rdoc-6.0.0 entry on NEWS file ------------------------------------------------------------------------ r61353 | mame | 2017-12-20 16:38:24 +0900 (Wed, 20 Dec 2017) | 6 lines iseq.c (get_insn_info): use binary search instead of linear search This change introduces get_insn_info_binary_search, which is (should be) equivalent to the old get_insn_info. The old get_insn_info is renamed to get_insn_info_linear_search. When VM_CHECK_MODE > 0, the equivalence is validated at finish_iseq_build. ------------------------------------------------------------------------ r61352 | mame | 2017-12-20 13:45:05 +0900 (Wed, 20 Dec 2017) | 3 lines test/coverage/test_coverage.rb: make the expected value the same as 2.4 A follow up of r61350 ------------------------------------------------------------------------ r61351 | nobu | 2017-12-20 13:25:01 +0900 (Wed, 20 Dec 2017) | 5 lines Fixed command Injection * lib/resolv.rb (Resolv::Config.parse_resolv_conf): fixed potential command injection by use of Kernel#open. [ruby-core:84347] [Bug #14205] ------------------------------------------------------------------------ r61350 | mame | 2017-12-20 13:24:14 +0900 (Wed, 20 Dec 2017) | 16 lines compile.c: add a RUBY_EVENT_COVERAGE_LINE event for line coverage 2.5's line coverage measurement was about two times slower than 2.4 because of two reasons; (1) vm_trace uses rb_iseq_event_flags (which takes O(n) currently where n is the length of iseq) to get an event type, and (2) RUBY_EVENT_LINE uses setjmp to call an event hook. This change adds a special event for line coverage, RUBY_EVENT_COVERAGE_LINE, and adds `tracecoverage` instructions where the event occurs in iseq. `tracecoverage` instruction calls an event hook without vm_trace. And, RUBY_EVENT_COVERAGE_LINE is an internal event which does not use setjmp. This change also cancells lineno change due to the deletion of trace instructions [Feature #14104]. So fixes [Bug #14191]. ------------------------------------------------------------------------ r61349 | nobu | 2017-12-20 13:18:31 +0900 (Wed, 20 Dec 2017) | 7 lines Fixed command Injection * resolv.rb (Resolv::Hosts#lazy_initialize): fixed potential command Injection in Hosts::new() by use of Kernel#open. [Fix GH-1777] [ruby-core:84347] [Bug #14205] From: Drigg3r <drigg3r@yandex.com> ------------------------------------------------------------------------ r61348 | mame | 2017-12-20 10:51:50 +0900 (Wed, 20 Dec 2017) | 3 lines vm_insnhelper.c (vm_trace): fix a typo Typical code clone bug. ------------------------------------------------------------------------ r61347 | ko1 | 2017-12-20 09:24:19 +0900 (Wed, 20 Dec 2017) | 9 lines extend timeout limit. * test/ruby/test_process.rb (test_threading_works_after_exec_fail): extend timeout limit from 30 to 90 because some test nodes fails with timeout error. Also use a Queue instead of a local variable to communicate with threads. ------------------------------------------------------------------------ r61346 | nobu | 2017-12-20 09:09:51 +0900 (Wed, 20 Dec 2017) | 4 lines parse.y: end of script at newline * parse.y (parser_yylex): deal with end of script chars just after ignored newline as other places. [ruby-core:84349] [Bug #14206] ------------------------------------------------------------------------ r61345 | ngoto | 2017-12-20 02:09:13 +0900 (Wed, 20 Dec 2017) | 7 lines skip test_aspawn_too_long_path on Solaris 10 or earlier * test/ruby/test_process.rb (TestProcess#test_aspawn_too_long_path): skip test_aspawn_too_long_path on Solaris 10 or earlier versions because they lack Process::RLIMIT_NPROC and the test creates extraordinary number of processes that makes the system unstable. ------------------------------------------------------------------------ r61344 | ngoto | 2017-12-20 01:55:08 +0900 (Wed, 20 Dec 2017) | 7 lines Workaround for optimization bug of Oracle Developer Studio 12.4-12.6 * pack.c (pack_unpack, AVOID_CC_BUG): Very ugly workaround for optimization bug of Oracle Developer Studio (Oracle Solaris Studio) 12.4, 12.5, and 12.6 on Solaris 10 with -xO4 optimization option. [Bug #11684] [ruby-core:84351] ------------------------------------------------------------------------ r61343 | svn | 2017-12-20 00:40:14 +0900 (Wed, 20 Dec 2017) | 1 line * 2017-12-20 ------------------------------------------------------------------------ r61342 | eregon | 2017-12-20 00:40:13 +0900 (Wed, 20 Dec 2017) | 4 lines Break out of the loop after shutdown in DRbServer * Patch by @seki: https://gist.github.com/seki/ae8bef20238c37c94a91b5461c4bfbdd ------------------------------------------------------------------------ r61341 | watson1978 | 2017-12-19 23:26:30 +0900 (Tue, 19 Dec 2017) | 6 lines Revert "Improve performance of creating Hash object" This reverts commit r61309 Because it was unstable on mswin CI. [ruby-dev:50370][Bug #14203] ------------------------------------------------------------------------ r61340 | hsbt | 2017-12-19 21:28:18 +0900 (Tue, 19 Dec 2017) | 3 lines Update version number of Psych From: SHIBATA Hiroshi <hsbt@ruby-lang.org> ------------------------------------------------------------------------ r61339 | hsbt | 2017-12-19 21:23:21 +0900 (Tue, 19 Dec 2017) | 3 lines Update RubyGems entry on NEWS file. From: SHIBATA Hiroshi <hsbt@ruby-lang.org> ------------------------------------------------------------------------ r61338 | nobu | 2017-12-19 21:20:21 +0900 (Tue, 19 Dec 2017) | 9 lines st.c: fix up * st.c (_st_table_list, _st_table_pool): symbols beginning with an underscore and a lower letter are preserved by the standard. * st.c (get_st_table): protoized. * st.c (st_insert_generic): adjust local variable type to an argument argc. ------------------------------------------------------------------------ r61337 | nobu | 2017-12-19 19:46:51 +0900 (Tue, 19 Dec 2017) | 6 lines thread_sync.c: fix rdoc * thread_sync.c (define_thread_class): hide rb_define_class_under from rdoc, so that fake code to teach rdoc takes effect. * thread_sync.c (Init_thread_sync): teach rdoc Mutex. ------------------------------------------------------------------------ r61336 | hsbt | 2017-12-19 18:44:33 +0900 (Tue, 19 Dec 2017) | 8 lines Merge psych-3.0.2 from ruby/psych. It version changed fallback option to keywoad argument on `Yaml.load` method. It break backword compatiblity. see detailed discuttion: https://github.com/ruby/psych/issues/340 From: SHIBATA Hiroshi <hsbt@ruby-lang.org> ------------------------------------------------------------------------ r61335 | nobu | 2017-12-19 13:57:20 +0900 (Tue, 19 Dec 2017) | 4 lines error.c: KeyError docs [ci skip] * error.c (key_err_receiver, key_err_key): [DOC] documents of KeyError methods. ------------------------------------------------------------------------ r61334 | nobu | 2017-12-19 12:17:37 +0900 (Tue, 19 Dec 2017) | 4 lines vcs: --add-author-from * tool/vcs.rb (VCS::GIT#commit): no --add-author-from option if author equals committer. ------------------------------------------------------------------------ r61333 | hsbt | 2017-12-19 12:12:22 +0900 (Tue, 19 Dec 2017) | 10 lines Update version of strscan to 1.0.0. But we couldn't ship strscan (and stringio) gem. Because rubygems.org still masked them. https://github.com/rubygems/rubygems.org/pull/1696 I'm going to ship them after it deployed. From: SHIBATA Hiroshi <hsbt@ruby-lang.org> ------------------------------------------------------------------------ r61332 | hsbt | 2017-12-19 11:43:09 +0900 (Tue, 19 Dec 2017) | 6 lines Remove digest.gemspec for default gems. It needs to support header file installation and uninstallation. But current RubyGems didn't support it feature yet. From: SHIBATA Hiroshi <hsbt@ruby-lang.org> ------------------------------------------------------------------------ r61331 | nobu | 2017-12-19 11:41:37 +0900 (Tue, 19 Dec 2017) | 7 lines compile.c: pop splat result * compile.c (compile_array): pop splat result without creating a new hash if the whole hash is popped. [ruby-core:84340] [Bug #14201] From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61330 | nobu | 2017-12-19 10:08:52 +0900 (Tue, 19 Dec 2017) | 6 lines Improve Array#- efficiency [Fixes GH-1756] When doing the difference of a small array with a big one it is not efficient in both time and memory to convert the second one to a hash. From: Ana Maria Martinez Gomez <ammartinez@suse.de> ------------------------------------------------------------------------ r61329 | nobu | 2017-12-19 09:45:55 +0900 (Tue, 19 Dec 2017) | 7 lines compile.c: side effect in splat * compile.c (compile_array): splat which may have side effects should be compiled even if the result will be popped. [ruby-core:84340] [Bug #14201] From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61327 | eregon | 2017-12-19 01:41:48 +0900 (Tue, 19 Dec 2017) | 1 line Use syswrite to avoid potential buffering in IO#select spec ------------------------------------------------------------------------ r61326 | ngoto | 2017-12-19 01:17:17 +0900 (Tue, 19 Dec 2017) | 10 lines Support C89 if possible * addr2line.c: Because stdbool.h is a C99 feature, compile error occurs with some old compilers without specifying C99 options. Fix compile error with Oracle Solaris Studio 12.4 on Solaris 10. [Bug #14200] [ruby-dev:50366] * missing/stdbool.h: Alternative of stdbool.h for C89 compilers. ------------------------------------------------------------------------ r61325 | svn | 2017-12-19 00:46:57 +0900 (Tue, 19 Dec 2017) | 1 line * 2017-12-19 ------------------------------------------------------------------------ r61324 | ngoto | 2017-12-19 00:46:56 +0900 (Tue, 19 Dec 2017) | 6 lines eval_error.c: Fix compile error on Solaris 10 * eval_error.c (write_warn, write_warn2, write_warn_str): Fix compile error "operands have incompatible types" with Oracle Solaris Studio 12.4 on Solaris 10. ------------------------------------------------------------------------ r61323 | naruse | 2017-12-18 18:03:59 +0900 (Mon, 18 Dec 2017) | 1 line suppress warning: 'const' attribute on function returning 'void' ------------------------------------------------------------------------ r61322 | normal | 2017-12-18 17:54:30 +0900 (Mon, 18 Dec 2017) | 5 lines webrick 1.4.1 release * lib/webrick/version.rb: bump version * lib/webrick/webrick.gemspec: support Ruby 2.3+ [Bug #14189] ------------------------------------------------------------------------ r61321 | nobu | 2017-12-18 16:39:05 +0900 (Mon, 18 Dec 2017) | 6 lines test_io.rb: EINVAL on Windows * test/ruby/test_io.rb (test_read_command): unusable character causes Errno::EINVAL on Windows. From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61320 | nobu | 2017-12-18 16:15:07 +0900 (Mon, 18 Dec 2017) | 7 lines io.c: opening external command * io.c (rb_io_open_generic): try to open the named file as usual, if klass is not IO nor File, so that Errno::ENOENT will be raised probably. calling on File will be same in the future. From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61319 | nobu | 2017-12-18 16:10:15 +0900 (Mon, 18 Dec 2017) | 5 lines io.c: open generic in binread * io.c (rb_io_s_binread): fix r61317, unintentional change. From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61318 | ko1 | 2017-12-18 13:42:53 +0900 (Mon, 18 Dec 2017) | 5 lines check EOPNOTSUPP. * test/ruby/test_file.rb (test_open_tempfile_path): skip EOPNOTSUPP (observed on Ubuntu 16 on Docker). ------------------------------------------------------------------------ r61317 | nobu | 2017-12-18 13:32:54 +0900 (Mon, 18 Dec 2017) | 7 lines io.c: opening external command * io.c (rb_io_open_generic): when external command will be invoked as other than IO singleton method, probably unintentionally, warn if it is File or raise ArgumentError. From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61316 | nobu | 2017-12-18 13:23:16 +0900 (Mon, 18 Dec 2017) | 6 lines envutil.rb: define flush method * test/lib/envutil.rb (verbose_warning): flush is called on STDOUT and STDERR sometimes. From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61315 | nobu | 2017-12-18 13:12:06 +0900 (Mon, 18 Dec 2017) | 3 lines test/ruby/test_io.rb: test for r61314 From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61314 | nobu | 2017-12-18 12:38:20 +0900 (Mon, 18 Dec 2017) | 6 lines io.c: open_key_args by rb_io_open * io.c (open_key_args): open by rb_io_open always also when open_args: option is given. From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61313 | mame | 2017-12-18 11:44:36 +0900 (Mon, 18 Dec 2017) | 7 lines iseq.c (finish_iseq_build): fix coverage leakage [Bug #14191] Before this change, coverage.so had failed to measure some multiple-line code fragments. This is because removing trace instructions (#14104) changed TracePoint's lineno (new lineno), and coverage counter array was based on old lineno. This change initializes coverage counter array based on new lineno. ------------------------------------------------------------------------ r61312 | nobu | 2017-12-18 10:55:55 +0900 (Mon, 18 Dec 2017) | 3 lines vcs.rb: --add-author-from option From: Nobuyoshi Nakada <nobu@ruby-lang.org> ------------------------------------------------------------------------ r61311 | nobu | 2017-12-18 10:54:19 +0900 (Mon, 18 Dec 2017) | 1 line st.c: no C99 comment ------------------------------------------------------------------------ r61310 | nobu | 2017-12-18 10:51:53 +0900 (Mon, 18 Dec 2017) | 5 lines Requiring pp is not required now [ci skip] - Followup of https://bugs.ruby-lang.org/issues/14123 From: Prathamesh Sonpatki <csonpatki@gmail.com> ------------------------------------------------------------------------ r61309 | watson1978 | 2017-12-18 10:49:33 +0900 (Mon, 18 Dec 2017) | 50 lines Improve performance of creating Hash object When generate Hash object, the heap area of st_table will be always allocated in internally and seems it take a time. To improve performance of creating Hash object, this patch will reduce count of allocating heap areas for st_table by reuse them. Performance of creating Hash literal -> 1.53 times faster. [Fix GH-1766] [ruby-core:84008] [Feature #14146] ### Environment * OS : macOS 10.13.1 * CPU : 1.4 GHz Intel Core i7 * Compiler : Apple LLVM version 9.0.0 (clang-900.0.39) ### Before $ ./miniruby -v -I. -I../benchmark-ips/lib ~/tmp/bench/literal.rb ruby 2.5.0dev (2017-11-28 hash 60926) [x86_64-darwin17] Warming up -------------------------------------- Hash literal 51.544k i/100ms Calculating ------------------------------------- Hash literal 869.132k ({U+00B1} 1.1%) i/s - 4.381M in 5.041574s ### After $ ./miniruby -v -I. -I../benchmark-ips/lib ~/tmp/bench/literal.rb ruby 2.5.0dev (2017-11-28 hash 60926) [x86_64-darwin17] Warming up -------------------------------------- Hash literal 63.068k i/100ms Calculating ------------------------------------- Hash literal 1.328M ({U+00B1} 2.3%) i/s - 6.685M in 5.037861s ### Test code require 'benchmark/ips' Benchmark.ips do |x| x.report "Hash literal" do |loop| count = 0 while count < loop hash = {foo: 12, bar: 34, baz: 56} count += 1 end end end ------------------------------------------------------------------------ r61308 | usa | 2017-12-18 03:43:49 +0900 (Mon, 18 Dec 2017) | 5 lines `BASERUBY` may be not available when building from tarball * common.mk ($(REVISION_H)): revert a part of r61055 because this obstructs building ruby from tarball in clean (no ruby) environment. ------------------------------------------------------------------------ r61307 | svn | 2017-12-18 03:19:42 +0900 (Mon, 18 Dec 2017) | 1 line * properties. ------------------------------------------------------------------------ r61306 | svn | 2017-12-18 03:19:42 +0900 (Mon, 18 Dec 2017) | 1 line * 2017-12-18 ------------------------------------------------------------------------ r61305 | marcandre | 2017-12-18 03:19:41 +0900 (Mon, 18 Dec 2017) | 1 line Integer#{any|all|no}_bits: Fix coercion. Add specs [#12753] ------------------------------------------------------------------------ r61304 | nobu | 2017-12-17 20:13:23 +0900 (Sun, 17 Dec 2017) | 4 lines common.mk: exts-note [ci skip] * common.mk (exts-note): show notes of non-configured extension libraries. ------------------------------------------------------------------------ r61303 | nobu | 2017-12-17 18:40:19 +0900 (Sun, 17 Dec 2017) | 4 lines thread.c: adjusted [ci skip] * thread.c (timeval_add): adjusted indent and parenthesized in braces. ------------------------------------------------------------------------ r61302 | normal | 2017-12-17 17:26:17 +0900 (Sun, 17 Dec 2017) | 7 lines thread.c: fix overly long Thread#join w/ timeout * test/ruby/test_thread.rb (test_signal_at_join): test with timeout * thread.c (sleep_wait_for_interrupt): remove (thread_join_sleep): use native_sleep directly to avoid extra missing thread status change [Bug #14181] ------------------------------------------------------------------------ r61301 | normal | 2017-12-17 17:26:12 +0900 (Sun, 17 Dec 2017) | 8 lines thread.c: hoist out timeval arithmetic functions timeval arithmetic may be reused in other places and this makes sleep_timeval easier-to-read. * thread.c (timeval_add): hoist out of sleep_timeval (timeval_update_expire): ditto (sleep_timeval): use new functions ------------------------------------------------------------------------ r61300 | svn | 2017-12-17 14:35:28 +0900 (Sun, 17 Dec 2017) | 1 line * 2017-12-17 ------------------------------------------------------------------------ r61299 | nobu | 2017-12-17 14:35:28 +0900 (Sun, 17 Dec 2017) | 4 lines vm_method.c: empty table * vm_method.c (prepare_callable_method_entry): empty method table has no entries. ------------------------------------------------------------------------ r61298 | nobu | 2017-12-17 14:35:27 +0900 (Sun, 17 Dec 2017) | 4 lines vm_method.c: debug message * vm_method.c (method_definition_addref_complement): fix debug message, show complemented_count instead of alias_count. ------------------------------------------------------------------------ r61297 | nobu | 2017-12-16 22:25:11 +0900 (Sat, 16 Dec 2017) | 9 lines ruby.c: script __dir__ encoding * ruby.c (process_options): fallback to the encoding of the script name since rb_realpath_internal() cannot convert the encoding when it is ASCII-8BIT. * test/ruby/test_rubyoptions.rb (test___dir__encoding): explicitly pass environment variables for locale as they are overriden by invoke_ruby. ------------------------------------------------------------------------ r61296 | k0kubun | 2017-12-16 22:02:25 +0900 (Sat, 16 Dec 2017) | 10 lines vm.c: always export rb_frame_method_id_and_class Functions declared in include/ruby/backward.h is exported only when the condition `!defined RUBY_EXPORT && !defined RUBY_NO_OLD_COMPATIBILITY` is met (i.e. included by include/ruby/ruby.h). So if it is not the case when ruby is built, this will not be exported. This was not intentional at r60994. [Bug #14192] ------------------------------------------------------------------------ r61295 | usa | 2017-12-16 15:05:16 +0900 (Sat, 16 Dec 2017) | 5 lines should install after test * common.mk (love): should install after test (but this change does not gurantee the order). ------------------------------------------------------------------------ r61294 | usa | 2017-12-16 10:56:14 +0900 (Sat, 16 Dec 2017) | 4 lines aliases * tool/merger.rb: aliases for removetag command. ------------------------------------------------------------------------ r61292 | mame | 2017-12-16 09:39:34 +0900 (Sat, 16 Dec 2017) | 5 lines random.c: make sure that Random.urandom returns required-length buffer getrandom(2) and read(2) (from /dev/urandom) may return a random buffer whose length is shorter than required. This change makes sure that they get enough buffer by using a loop. ------------------------------------------------------------------------ r61291 | nobu | 2017-12-16 09:36:31 +0900 (Sat, 16 Dec 2017) | 4 lines test_vm_dump.rb: skip if gcc * test/ruby/test_vm_dump.rb (assert_darwin_vm_dump_works): gcc seems not to chain some frames like Apple's clang. ------------------------------------------------------------------------ r61290 | nobu | 2017-12-16 09:30:52 +0900 (Sat, 16 Dec 2017) | 4 lines string.c: multiple codepoints * string.c (undump_after_backslash): fix multiple codepoints in braces. ------------------------------------------------------------------------ r61289 | nobu | 2017-12-16 09:03:51 +0900 (Sat, 16 Dec 2017) | 4 lines string.c: suppress warning * string.c (str_undump): suppress maybe-uninitialized warning by gcc 7 and later. ------------------------------------------------------------------------ r61288 | normal | 2017-12-16 06:55:50 +0900 (Sat, 16 Dec 2017) | 3 lines NEWS: update for WEBrick Proc body responses Better late than never :x [Feature #855] ------------------------------------------------------------------------ r61287 | normal | 2017-12-16 06:49:21 +0900 (Sat, 16 Dec 2017) | 4 lines NEWS: updates about trivial GVL release changes No tickets, but all pretty trivial changes which avoids stalls on slow/non-responsive filesytems. ------------------------------------------------------------------------ r61286 | marcandre | 2017-12-16 05:15:54 +0900 (Sat, 16 Dec 2017) | 1 line lib/erb: Update doc [ci-skip] [doc] ------------------------------------------------------------------------ r61285 | eregon | 2017-12-16 02:44:37 +0900 (Sat, 16 Dec 2017) | 1 line Update to ruby/spec@595645f ------------------------------------------------------------------------ r61284 | svn | 2017-12-16 02:44:16 +0900 (Sat, 16 Dec 2017) | 1 line * 2017-12-16 ------------------------------------------------------------------------ r61283 | eregon | 2017-12-16 02:44:15 +0900 (Sat, 16 Dec 2017) | 1 line Update to ruby/mspec@19d929e ------------------------------------------------------------------------ r61282 | nobu | 2017-12-15 23:42:43 +0900 (Fri, 15 Dec 2017) | 4 lines gperf.sed: static declarations * tool/gperf.sed: comment out arguments part only, to keep the following declarations static. [Feature #13883] ------------------------------------------------------------------------ r61281 | kazu | 2017-12-15 20:52:41 +0900 (Fri, 15 Dec 2017) | 4 lines [DOC] `IO.new` accepts `external_encoding` Revert part of r61278 [Bug #13655] [ci skip] ------------------------------------------------------------------------ r61280 | kazu | 2017-12-15 20:52:40 +0900 (Fri, 15 Dec 2017) | 1 line Fix typo [ci skip] ------------------------------------------------------------------------ r61279 | naruse | 2017-12-15 18:43:40 +0900 (Fri, 15 Dec 2017) | 1 line initialize should be outside ------------------------------------------------------------------------ r61278 | naruse | 2017-12-15 17:26:33 +0900 (Fri, 15 Dec 2017) | 1 line IO.new doesn't recive "-" as external_encoding [Bug #13655] ------------------------------------------------------------------------ r61277 | rhe | 2017-12-15 17:19:32 +0900 (Fri, 15 Dec 2017) | 5 lines openssl: suppress report_on_exception warning Import a commit from upstream: 33a67ac96492 test/utils: disable Thread's report_on_exception in start_server ------------------------------------------------------------------------ r61276 | naruse | 2017-12-15 16:58:02 +0900 (Fri, 15 Dec 2017) | 1 line check icc version inside condition ------------------------------------------------------------------------ r61275 | naruse | 2017-12-15 16:58:00 +0900 (Fri, 15 Dec 2017) | 4 lines suppress icc warnings * subscript out of range * enumerated type mixed with another type ------------------------------------------------------------------------ r61274 | nobu | 2017-12-15 16:27:04 +0900 (Fri, 15 Dec 2017) | 6 lines thread.c: fix deadlock * thread.c (thread_join_sleep): the target thread may exit during `RUBY_VM_CHECK_INTS_BLOCKING`, but `sleep_forever` does not consider the condition change to wait. [ruby-core:84248] [Bug #14181] ------------------------------------------------------------------------ r61273 | mame | 2017-12-15 14:55:11 +0900 (Fri, 15 Dec 2017) | 1 line node.c: show variable type for NODE_*ASGN ------------------------------------------------------------------------ r61272 | mame | 2017-12-15 14:55:10 +0900 (Fri, 15 Dec 2017) | 1 line node.c (NODE_HASH): remove wrong default case ------------------------------------------------------------------------ r61271 | mame | 2017-12-15 14:55:09 +0900 (Fri, 15 Dec 2017) | 1 line node.c: add more comment to NODE_CASE2 ------------------------------------------------------------------------ r61270 | mame | 2017-12-15 14:55:08 +0900 (Fri, 15 Dec 2017) | 1 line node.c: fix typos ------------------------------------------------------------------------ r61269 | usa | 2017-12-15 12:22:51 +0900 (Fri, 15 Dec 2017) | 4 lines add `removetag` command * tool/merger.rb (remove_tag): add `removetag` command. ------------------------------------------------------------------------ r61268 | nobu | 2017-12-15 12:07:10 +0900 (Fri, 15 Dec 2017) | 6 lines thread.c: debug messages * thread.c (terminate_all): fix funtion name in debug messages. * thread.c (terminate_all, thread_join_sleep, thread_join): show the status of the target thread in debug messages. ------------------------------------------------------------------------ r61267 | usa | 2017-12-15 12:04:56 +0900 (Fri, 15 Dec 2017) | 5 lines check the existence of specified tag * tool/merger.rb (tag): check the existence of specified tag before tagging to get rid of careless mistakes. ------------------------------------------------------------------------ r61266 | normal | 2017-12-15 05:02:15 +0900 (Fri, 15 Dec 2017) | 6 lines webrick 1.4.0 release * lib/webrick/version.rb: change VERSION to 1.4.0 * lib/webrick/webrick.gemspec: require_relative for version, update date and contact info [Feature #13173] ------------------------------------------------------------------------ r61265 | eregon | 2017-12-15 04:26:04 +0900 (Fri, 15 Dec 2017) | 1 line Add [Feature #14143] to NEWS ------------------------------------------------------------------------ r61263 | naruse | 2017-12-15 03:33:33 +0900 (Fri, 15 Dec 2017) | 3 lines particular_werror_flags=no on ICC fix r61261 ------------------------------------------------------------------------ r61262 | svn | 2017-12-15 01:47:29 +0900 (Fri, 15 Dec 2017) | 1 line * 2017-12-15 ------------------------------------------------------------------------ r61261 | naruse | 2017-12-15 01:47:28 +0900 (Fri, 15 Dec 2017) | 3 lines ICC doesn't support -Werror= but ignore It cause warnings when ruby remove error= on compiling ext/*. ------------------------------------------------------------------------ r61242 | nagachika | 2017-12-14 22:41:30 +0900 (Thu, 14 Dec 2017) | 1 line Fix a command injection vulnerability in Net::FTP. ------------------------------------------------------------------------ r61237 | eregon | 2017-12-14 22:08:02 +0900 (Thu, 14 Dec 2017) | 4 lines The main Thread should have report_on_exception=true for consistency * Adapt test and add specs. * See [Feature #14143] [ruby-core:84227] ------------------------------------------------------------------------ r61236 | rhe | 2017-12-14 20:19:17 +0900 (Thu, 14 Dec 2017) | 1 line NEWS: add entry for openssl ------------------------------------------------------------------------ r61235 | rhe | 2017-12-14 20:19:16 +0900 (Thu, 14 Dec 2017) | 19 lines openssl: import v2.1.0 Import Ruby/OpenSSL 2.1.0. Commits since v2.1.0.beta2 can be found at: https://github.com/ruby/openssl/compare/v2.1.0.beta2...v2.1.0 ---------------------------------------------------------------- Kazuki Yamaguchi (8): test/test_ssl: prevent changing default internal encoding ssl: remove a misleading comment pkey/ec: rearrange PKey::EC::Point#initialize ssl: remove unreachable code asn1: fix docs pkey/ec: add support for octet string encoding of EC point Ruby/OpenSSL 2.0.7 Ruby/OpenSSL 2.1.0 eregon (1): Fix test-all tests to avoid creating report_on_exception warnings ------------------------------------------------------------------------ r61234 | naruse | 2017-12-14 19:38:36 +0900 (Thu, 14 Dec 2017) | 1 line NaCl support is dropped at r60374 ------------------------------------------------------------------------ r61233 | stomar | 2017-12-14 19:25:57 +0900 (Thu, 14 Dec 2017) | 1 line numeric.c: [DOC] grammar fixes ------------------------------------------------------------------------ r61232 | stomar | 2017-12-14 19:25:17 +0900 (Thu, 14 Dec 2017) | 1 line struct.c: [DOC] improve docs for Struct.new ------------------------------------------------------------------------ r61231 | stomar | 2017-12-14 19:24:38 +0900 (Thu, 14 Dec 2017) | 1 line process.c: [DOC] fix grammar and double negative ------------------------------------------------------------------------ r61230 | stomar | 2017-12-14 19:23:10 +0900 (Thu, 14 Dec 2017) | 1 line NEWS: grammar fixes ------------------------------------------------------------------------ r61229 | stomar | 2017-12-14 19:21:56 +0900 (Thu, 14 Dec 2017) | 5 lines enum.c: improve docs for Enumerable#{any?,all?,none?,one?} * enum.c: [DOC] reword docs for Enumerable#{any?,all?,none?,one?} to not mention the receiver (`enum') from call-seq, because it does not appear in the call-seq of the rendered HTML docs. ------------------------------------------------------------------------ r61228 | tadd | 2017-12-14 17:47:13 +0900 (Thu, 14 Dec 2017) | 2 lines Implement String#undump to unescape String#dump-ed string [Feature #12275] [close GH-1765] ------------------------------------------------------------------------ r61227 | mame | 2017-12-14 17:22:22 +0900 (Thu, 14 Dec 2017) | 3 lines node.h: add nd_last_loc and nd_set_last_loc Just refactoring. ------------------------------------------------------------------------ r61226 | usa | 2017-12-14 15:38:47 +0900 (Thu, 14 Dec 2017) | 5 lines Thread.current.report_on_exception = false * test/win32ole/test_win32ole.rb: set report_on_exception = false in threads which are expected to be throw some exceptions. ------------------------------------------------------------------------ r61225 | naruse | 2017-12-14 15:30:22 +0900 (Thu, 14 Dec 2017) | 1 line Use string instead of regexp ------------------------------------------------------------------------ r61224 | mame | 2017-12-14 15:02:26 +0900 (Thu, 14 Dec 2017) | 5 lines node.[ch], parse.y, compile.c: rename nd_column to nd_first_column nd_set_column -> nd_first_set_column nd_lineno -> nd_first_lineno nd_set_lineno -> nd_first_set_lineno ------------------------------------------------------------------------ r61223 | mame | 2017-12-14 14:54:10 +0900 (Thu, 14 Dec 2017) | 1 line parse.y: suppress "unused variable" warning of ripper.y ------------------------------------------------------------------------ r61222 | nobu | 2017-12-14 14:13:23 +0900 (Thu, 14 Dec 2017) | 1 line prelude.rb: remove duplicate rdoc ------------------------------------------------------------------------ r61221 | nobu | 2017-12-14 13:40:15 +0900 (Thu, 14 Dec 2017) | 4 lines bigdecimal: dependency * ext/bigdecimal/extconf.rb: extconf.h depends on the gemspec file. [ruby-core:84247] [Bug #14180] ------------------------------------------------------------------------ r61220 | yuki | 2017-12-14 11:29:01 +0900 (Thu, 14 Dec 2017) | 1 line * gems/bundled_gems: Upgrade the did_you_mean gem to 1.2.0 ------------------------------------------------------------------------ r61219 | hsbt | 2017-12-14 11:21:41 +0900 (Thu, 14 Dec 2017) | 1 line Added `test-bundler` and `test-bundled-gems` to `make help` entries`. ------------------------------------------------------------------------ r61218 | knu | 2017-12-14 10:11:28 +0900 (Thu, 14 Dec 2017) | 8 lines Allow empty path components in a URI [Bug #8352] * generic.rb (URI::Generic#merge, URI::Generic#route_to): Fix a bug where a sequence of slashes in the path part gets collapsed to a single slash. According to the relevant RFCs and WHATWG URL Standard, empty path components are simply valid and there is no special treatment defined for them, so we just keep them as they are. ------------------------------------------------------------------------ r61217 | k0kubun | 2017-12-14 01:07:52 +0900 (Thu, 14 Dec 2017) | 33 lines iseq.c: dump type of branchiftype on disasm This makes easier to debug scripts related to r59950. * before $ ./ruby --dump=insns -e '"#{a}"' == disasm: #<ISeq:<main>@-e>============================================ 0000 putobject "" ( 1)[Li] 0002 putself 0003 opt_send_without_block <callinfo!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE>, <callcache> 0006 dup 0007 branchiftype 5, 15 0010 dup 0011 opt_send_without_block <callinfo!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>, <callcache> 0014 tostring 0015 concatstrings 2 0017 leave * after $ ./ruby --dump=insns -e '"#{a}"' == disasm: #<ISeq:<main>@-e>============================================ 0000 putobject "" ( 1)[Li] 0002 putself 0003 opt_send_without_block <callinfo!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE>, <callcache> 0006 dup 0007 branchiftype T_STRING, 15 0010 dup 0011 opt_send_without_block <callinfo!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>, <callcache> 0014 tostring 0015 concatstrings 2 0017 leave ------------------------------------------------------------------------ r61216 | eregon | 2017-12-14 00:59:26 +0900 (Thu, 14 Dec 2017) | 4 lines Document how to deal with output created by Thread.report_on_exception. * Improve and clarify the documentation of Thread.report_on_exception and related methods. ------------------------------------------------------------------------ r61215 | mrkn | 2017-12-14 00:36:25 +0900 (Thu, 14 Dec 2017) | 1 line NEWS: bigdecimal 1.3.3 ------------------------------------------------------------------------ r61214 | svn | 2017-12-14 00:28:31 +0900 (Thu, 14 Dec 2017) | 1 line * 2017-12-14 ------------------------------------------------------------------------ r61213 | mrkn | 2017-12-14 00:28:30 +0900 (Thu, 14 Dec 2017) | 5 lines bigdecimal: version 1.3.3 Import bigdecimal version 1.3.3. The full commit log is here: https://github.com/ruby/bigdecimal/compare/v1.3.2...v1.3.3 ------------------------------------------------------------------------ r61212 | kazu | 2017-12-13 23:08:20 +0900 (Wed, 13 Dec 2017) | 3 lines [DOC] Fix exception class [ci skip] ref https://github.com/rurema/doctree/pull/816 ------------------------------------------------------------------------ r61211 | nobu | 2017-12-13 21:06:11 +0900 (Wed, 13 Dec 2017) | 4 lines vcs.rb: raise NotFoundError when command not found * tool/vcs.rb (VCS#get_revisions): raise VCS::NotFoundError when command not found. ------------------------------------------------------------------------ r61210 | eregon | 2017-12-13 20:22:55 +0900 (Wed, 13 Dec 2017) | 1 line Travis: the workaround needs sudo: required to work ------------------------------------------------------------------------ r61209 | eregon | 2017-12-13 20:13:55 +0900 (Wed, 13 Dec 2017) | 5 lines Use the older Travis CI image * The new one produces many warnings like: warning: Insecure world writable dir /usr/local/clang-5.0.0/bin in PATH, mode 040777 * Workaround from https://blog.travis-ci.com/2017-12-12-new-trusty-images-q4-launch ------------------------------------------------------------------------ r61208 | sorah | 2017-12-13 19:55:41 +0900 (Wed, 13 Dec 2017) | 1 line NEWS: typo [DOC] [ci skip] ------------------------------------------------------------------------ r61207 | nobu | 2017-12-13 19:43:21 +0900 (Wed, 13 Dec 2017) | 1 line test/ruby/test_env.rb: suppress a warning ------------------------------------------------------------------------ r61206 | nobu | 2017-12-13 19:40:54 +0900 (Wed, 13 Dec 2017) | 5 lines test_process.rb: fix error when empty groups * test/ruby/test_process.rb (test_maxgroups): set one element at least get rid of ZeroDivisionError when no process groups. [ruby-core:84224] [Bug #14174] ------------------------------------------------------------------------ r61205 | nobu | 2017-12-13 19:26:09 +0900 (Wed, 13 Dec 2017) | 5 lines Ripper::Lexer bit predicates * ext/ripper/lib/ripper/lexer.rb (Ripper::Lexer): added allbits?, anybits? and nobits? methods, as well as Integer. a patch by aycabta. [Feature #14170] ------------------------------------------------------------------------ r61204 | nobu | 2017-12-13 19:16:05 +0900 (Wed, 13 Dec 2017) | 1 line process.c: adjust indent ------------------------------------------------------------------------ r61203 | eregon | 2017-12-13 18:45:48 +0900 (Wed, 13 Dec 2017) | 1 line Avoid extra output in test_thread_interrupt_for_killed_thread ------------------------------------------------------------------------ r61202 | naruse | 2017-12-13 17:38:43 +0900 (Wed, 13 Dec 2017) | 1 line Revert r61054 ------------------------------------------------------------------------ r61201 | hsbt | 2017-12-13 14:52:47 +0900 (Wed, 13 Dec 2017) | 1 line Bump version to etc-1.0.0 as default gems. ------------------------------------------------------------------------ r61200 | hsbt | 2017-12-13 14:24:01 +0900 (Wed, 13 Dec 2017) | 1 line Bump version to csv-1.0.0 as default gems. ------------------------------------------------------------------------ r61199 | hsbt | 2017-12-13 11:43:38 +0900 (Wed, 13 Dec 2017) | 4 lines Modify git clone command The previous git clone command is not work, the protocol in URL should be https [fix GH-1772] ------------------------------------------------------------------------ r61198 | yui-knk | 2017-12-13 10:10:27 +0900 (Wed, 13 Dec 2017) | 4 lines parse.y: Revert r61196 * parse.y: Because top_stmts is generated from none (not "/* none */"), @0 is not set by YYLLOC_DEFAULT. So @0 is a meaningless location. ------------------------------------------------------------------------ r61197 | normal | 2017-12-13 09:38:08 +0900 (Wed, 13 Dec 2017) | 13 lines webrick: compile RE correctly for beginning and end match Using ^ and $ in regexps means we can accidentally get fooled by "%0a" in HTTP request paths being decoded to newline characters. Use \A and \z to match beginning and end-of-string respectively, instead. Thanks to mame and hsbt for reporting. * lib/webrick/httpserver.rb (MountTable#compile): use \A and \z instead of ^ and $ * lib/webrick/httpserver.rb (MountTable#normalize): use \z instead of $ * test/webrick/test_httpserver.rb (test_cntrl_in_path): new test ------------------------------------------------------------------------ r61196 | yui-knk | 2017-12-13 08:48:50 +0900 (Wed, 13 Dec 2017) | 20 lines parse.y: Fix the locations of an empty script * parse.y: Fix the locations of NODE_BEGIN in an empty script. ``` ruby --dump=p -e '' ``` * Before ``` NODE_BEGIN (line: 1, code_range: (1,1)-(1,1)) ``` * After ``` NODE_BEGIN (line: 1, code_range: (1,0)-(1,0)) ``` ------------------------------------------------------------------------ r61195 | eregon | 2017-12-13 08:41:50 +0900 (Wed, 13 Dec 2017) | 5 lines Capture the values of globals in EnvUtil to restore to the original * Avoids the thread-safety issues mentioned in r61192, when thread concurrently modify default Encodings or $VERBOSE. Their state will always be the original one once the test finishes. ------------------------------------------------------------------------ r61194 | eregon | 2017-12-13 08:41:34 +0900 (Wed, 13 Dec 2017) | 3 lines Revert r61192 and r61193 * More general fix coming. ------------------------------------------------------------------------ r61193 | eregon | 2017-12-13 07:37:40 +0900 (Wed, 13 Dec 2017) | 3 lines Use EnvUtil.with_default_external in tests needing it * Reverts part of r54522. ------------------------------------------------------------------------ r61192 | eregon | 2017-12-13 06:51:53 +0900 (Wed, 13 Dec 2017) | 11 lines Do not change Encoding.default_internal in assert_raise_with_message * It is not thread-safe: if two threads call it concurrently, the default_internal Encoding might not be restored, which causes many problems. The same applies for $VERBOSE, which might also not be restored to its original value but to the new value instead. This happens because reading the original value might capture the value already changed by EnvUtil.with_default_internal in another Thread. One solution could be to capture the value of these globals before running the test. * Reverts part of r54522. ------------------------------------------------------------------------ r61191 | eregon | 2017-12-13 06:32:13 +0900 (Wed, 13 Dec 2017) | 4 lines Check that global encodings are not changed in test-all * Check that Encoding.default_internal and Encoding.default_external are the same before and after every test. ------------------------------------------------------------------------ r61190 | eregon | 2017-12-13 05:09:36 +0900 (Wed, 13 Dec 2017) | 3 lines Remove useless assertion in TestThread#test_handle_interrupt_blocking * It was originally th.join(0.2), but th.join never returns nil. ------------------------------------------------------------------------ r61189 | eregon | 2017-12-13 04:48:32 +0900 (Wed, 13 Dec 2017) | 3 lines Handle exception explicitly in TestBignum#test_interrupt_during_to_s * Otherwise it produces a warning with Thread.report_on_exception=true. ------------------------------------------------------------------------ r61188 | eregon | 2017-12-13 03:44:49 +0900 (Wed, 13 Dec 2017) | 6 lines Fix test-all tests to avoid creating report_on_exception warnings * The warnings are shown by Thread.report_on_exception defaulting to true. [Feature #14143] [ruby-core:83979] * Improves tests by narrowing down the scope where an exception is expected. ------------------------------------------------------------------------ r61187 | eregon | 2017-12-13 03:44:33 +0900 (Wed, 13 Dec 2017) | 3 lines Remove extra assert_nil in Rinda tests * They are never executed since thread_join() raises. ------------------------------------------------------------------------ r61186 | eregon | 2017-12-13 03:44:21 +0900 (Wed, 13 Dec 2017) | 3 lines Fix tests which fail with extra stderr output when a Thread dies * [Feature #14143] [ruby-core:83979]. ------------------------------------------------------------------------ r61185 | eregon | 2017-12-13 03:44:07 +0900 (Wed, 13 Dec 2017) | 5 lines Rescue expected Interrupt in TupleSpaceTestModule#test_take_bug_8215 * test/rinda/test_rinda.rb (test_take_bug_8215): add rescue for expected exception, which removes the warning by Thread.report_on_exception [Feature #14143]. ------------------------------------------------------------------------ r61184 | eregon | 2017-12-13 03:43:55 +0900 (Wed, 13 Dec 2017) | 7 lines Avoid creating a Thread for shutting down a DRbServer * lib/drb/drb.rb: avoid creating a Thread and call the shutdown logic directly. Do not try to kill or join the current Thread. Thread.new { stop_service } caused "can't alloc thread (ThreadError)", which is shown with Thread.report_on_exception = true. [Bug #14171] ------------------------------------------------------------------------ r61183 | eregon | 2017-12-13 03:43:42 +0900 (Wed, 13 Dec 2017) | 11 lines Set Thread.report_on_exception=true by default to report exceptions in Threads * [Feature #14143] [ruby-core:83979] * vm.c (vm_init2): Set Thread.report_on_exception to true. * thread.c (thread_start_func_2): Add indication the message is caused by report_on_exception = true. * spec/ruby: Specify the new behavior. * test/ruby/test_thread.rb: Adapt and improve tests for Thread.report_on_exception and Thread#report_on_exception. * test/ruby/test_thread.rb, test/ruby/test_exception.rb: Unset report_on_exception for tests expecting no extra output. ------------------------------------------------------------------------ r61182 | k0kubun | 2017-12-13 00:12:05 +0900 (Wed, 13 Dec 2017) | 9 lines struct.c: don't explain implementation details of keyword_init option. [DOC] [ci skip] It's implemented to take Hash, but it's just implementation detail and it's intended to behave in the same way as keyword arguments (for :keyword_init option too). Also I unified coding style of r61137 with other places. ------------------------------------------------------------------------ r61181 | k0kubun | 2017-12-13 00:03:45 +0900 (Wed, 13 Dec 2017) | 14 lines struct.c: show `keyword_init: true` on inspect for debugging if it's specified for the Struct class. This follows up r61137. We don't provide a method to check it because I don't think of any use case, but showing this to inspect would be helpful for debugging if someone is debugging whether keyword_init is properly enabled or not. In this commit, I didn't show `keyword_init: false` because of backward compatibility. Ideally any application should not depend on the behavior of inspect, but I don't have strong motivation to break it too. [close GH-1773] ------------------------------------------------------------------------ r61180 | usa | 2017-12-13 00:02:51 +0900 (Wed, 13 Dec 2017) | 10 lines set ino at `File.lstat` on Windows * win32/win32.c (winnt_stat): support symbolic link and others. * win32/win32.c (w32_stati128, wstati128, name_for_stat, rb_w32_{,ul}stati128, wutimensat): follow above change. [Feature #14169] From: Takehiro Kubo kubo@jiubao.org ------------------------------------------------------------------------ r61179 | kazu | 2017-12-13 00:01:13 +0900 (Wed, 13 Dec 2017) | 1 line Add more example of `Enumerable#one?` [ci skip] ------------------------------------------------------------------------ r61178 | kazu | 2017-12-13 00:01:11 +0900 (Wed, 13 Dec 2017) | 1 line pattern and modulo are not keyword argument [ci skip] ------------------------------------------------------------------------ r61177 | kazu | 2017-12-13 00:01:10 +0900 (Wed, 13 Dec 2017) | 1 line Fix typos [ci skip] ------------------------------------------------------------------------ r61176 | kazu | 2017-12-13 00:01:08 +0900 (Wed, 13 Dec 2017) | 3 lines atime,mtime,ctime of File::Stat are instance methods [ci skip] ------------------------------------------------------------------------ r61175 | kazu | 2017-12-13 00:01:07 +0900 (Wed, 13 Dec 2017) | 11 lines Remove unnecessary `:` Before: `.../irb/init.rb:280: warning: :LoadError: cannot load such file -- hoge` After: `.../irb/init.rb:280: warning: LoadError: cannot load such file -- hoge` [ci skip] ------------------------------------------------------------------------ r61174 | kazu | 2017-12-13 00:01:04 +0900 (Wed, 13 Dec 2017) | 3 lines Use printf instead of puts and sprintf [ci skip] ------------------------------------------------------------------------ r61173 | svn | 2017-12-13 00:01:03 +0900 (Wed, 13 Dec 2017) | 1 line * 2017-12-13 ------------------------------------------------------------------------ r61172 | kazu | 2017-12-13 00:01:02 +0900 (Wed, 13 Dec 2017) | 3 lines [DOC] Process.last_status may return nil [ci skip] ------------------------------------------------------------------------ r61171 | yui-knk | 2017-12-12 23:47:34 +0900 (Tue, 12 Dec 2017) | 25 lines parse.y: Change the last location of none * parse.y: Change the last location of none to be equal to the first location of none. Sometimes none has length (`parser->tokp` does not match `lex_p` when none is generated). This leads to invalid code_ranges. e.g. The locations of the NODE_CALL (:sort) is fixed: ``` x.sort.join(" ") ``` * Before ``` NODE_CALL (line: 1, code_range: (1,0)-(1,7)) ``` * After ``` NODE_CALL (line: 1, code_range: (1,0)-(1,6)) ``` ------------------------------------------------------------------------ r61170 | yui-knk | 2017-12-12 23:21:20 +0900 (Tue, 12 Dec 2017) | 3 lines parse.y: Set locations of nd_body in NODE_ITER explicitly * parse.y: Same as r61168, but for brace_block. ------------------------------------------------------------------------ r61169 | hsbt | 2017-12-12 23:10:43 +0900 (Tue, 12 Dec 2017) | 6 lines Revert "switch from http to https for Unicode data file downloads" This reverts commit 90de118a75921a08497b41de2950971073b3c924. The environment of mswinci couldn't handle https download. (It's certificates problem, We should upgrade its environment) ------------------------------------------------------------------------ r61168 | yui-knk | 2017-12-12 23:10:23 +0900 (Tue, 12 Dec 2017) | 11 lines parse.y: Set locations of nd_body in NODE_ITER explicitly * parse.y: Currently the location of do_body is set by new_do_body. Sometimes the last part of do_body is none, because bodystmt ends with opt_ensure. Token keyword_end has been looked ahead when a tokenizer generates none, so the last location of opt_ensure matches the last location of `end`. But this relation will be broken when we change the last location of none to be equal to the first location of none. So set locations of nd_body in NODE_ITER explicitly. ------------------------------------------------------------------------ r61167 | k0kubun | 2017-12-12 22:56:48 +0900 (Tue, 12 Dec 2017) | 9 lines irb/test_init.rb: add test to ensure $0 is not changed. At first `ARGV.unshift('something')` was suggested for r61149, but it wasn't sufficient because it modifies $0. Not only to preserve ARGV, but also r61149 intends to preserve $0. This test prevents future breakage of the behavior. ------------------------------------------------------------------------ r61166 | k0kubun | 2017-12-12 22:47:46 +0900 (Tue, 12 Dec 2017) | 6 lines test_struct.rb: rename constants to clarify the intention. Follows up r61137. They were forgotten to be renamed when :keyword_args is renamed to :keyword_init. ------------------------------------------------------------------------ r61165 | yui-knk | 2017-12-12 22:19:40 +0900 (Tue, 12 Dec 2017) | 5 lines ext/coverage/coverage.c: Add test cases * ext/coverage/coverage.c (test_method_coverage_for_define_method): Add test cases for method coverages which test do-end block define_method. ------------------------------------------------------------------------ r61164 | svn | 2017-12-12 22:07:08 +0900 (Tue, 12 Dec 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r61163 | sorah | 2017-12-12 22:07:06 +0900 (Tue, 12 Dec 2017) | 1 line NEWS: polish ------------------------------------------------------------------------ r61162 | ko1 | 2017-12-12 21:40:41 +0900 (Tue, 12 Dec 2017) | 6 lines ignore lines (to catch up r61155). * spec/ruby/library/net/ftp/return_code_spec.rb: check message body only. * spec/ruby/library/net/http/http/set_debug_output_spec.rb: ditto. ------------------------------------------------------------------------ r61161 | sorah | 2017-12-12 21:17:38 +0900 (Tue, 12 Dec 2017) | 4 lines error.c(rb_error_write): Remove ec_ from its name It's unrelated to rb_execution_context_t during writing the patch r61154 ------------------------------------------------------------------------ r61160 | a_matsuda | 2017-12-12 21:12:40 +0900 (Tue, 12 Dec 2017) | 1 line NEWS for Method#=== ------------------------------------------------------------------------ r61159 | a_matsuda | 2017-12-12 21:12:39 +0900 (Tue, 12 Dec 2017) | 1 line Unneeded assertion ------------------------------------------------------------------------ r61158 | a_matsuda | 2017-12-12 21:12:38 +0900 (Tue, 12 Dec 2017) | 3 lines Add Method#=== that invokes #call Patch by osyo via [Feature #14142] ------------------------------------------------------------------------ r61157 | sorah | 2017-12-12 21:10:21 +0900 (Tue, 12 Dec 2017) | 1 line hotfix implicit-function-declaration ------------------------------------------------------------------------ r61156 | shyouhei | 2017-12-12 21:10:20 +0900 (Tue, 12 Dec 2017) | 2 lines NEWS entry for [Feature #12882] ------------------------------------------------------------------------ r61155 | shyouhei | 2017-12-12 20:56:25 +0900 (Tue, 12 Dec 2017) | 27 lines Add uplevel keyword to Kernel#warn and use it If uplevel keyword is given, the warning message is prepended with caller file and line information and the string "warning: ". The use of the uplevel keyword makes Kernel#warn format output similar to how rb_warn formats output. This patch modifies net/ftp and net/imap to use Kernel#warn instead of $stderr.puts or $stderr.printf, since they are used for printing warnings. This makes lib/cgi/core and tempfile use $stderr.puts instead of warn for debug logging, since they are used for debug printing and not for warning. This does not modify bundler, rubygems, or rdoc, as those are maintained outside of ruby and probably wish to remain backwards compatible with older ruby versions. rb_warn_m code is originally from nobu, but I've changed it so that it only includes the path and lineno from uplevel (not the method), and also prepends the string "warning: ", to make it more similar to rb_warn. From: Jeremy Evans code@jeremyevans.net Signed-off-by: Urabe Shyouhei shyouhei@ruby-lang.org ------------------------------------------------------------------------ r61154 | sorah | 2017-12-12 20:47:16 +0900 (Tue, 12 Dec 2017) | 6 lines error.c(exc_full_message): Exception#full_message Add a method to retrieve a String expression of an exception, formatted in the same way that Ruby prints an uncaught exception out. [Feature #14141] ------------------------------------------------------------------------ r61153 | usa | 2017-12-12 20:43:18 +0900 (Tue, 12 Dec 2017) | 4 lines remove unused variable thanks kubo-san. c.f. [ruby-dev:50345] ------------------------------------------------------------------------ r61152 | shyouhei | 2017-12-12 20:33:26 +0900 (Tue, 12 Dec 2017) | 2 lines NEWS entry for FrozenError [Feature #13224] ------------------------------------------------------------------------ r61151 | k0kubun | 2017-12-12 20:32:37 +0900 (Tue, 12 Dec 2017) | 1 line irb/init.rb: make sure ARGV refers to toplevel one ------------------------------------------------------------------------ r61150 | svn | 2017-12-12 20:25:17 +0900 (Tue, 12 Dec 2017) | 1 line * properties. ------------------------------------------------------------------------ r61149 | k0kubun | 2017-12-12 20:25:16 +0900 (Tue, 12 Dec 2017) | 12 lines irb.rb: preserve ARGV on binding.irb This is not perfectly good solution (at least we don't want to have ARGV as default value of `argv` argument), but unfortunately IRB.setup and IRB.parse_opts are public methods and we can't make breaking change to those methods. We may deprecate using them and then make them private in the future, but the removal should not be in Ruby 2.5. So I kept their interface for now. [Bug #14162] [close GH-1770] ------------------------------------------------------------------------ r61148 | hsbt | 2017-12-12 19:57:58 +0900 (Tue, 12 Dec 2017) | 4 lines Bump version to fileutils-1.0.1. Update source code url metadata on rubygems.org. [Feature #13197][ruby-core:79455] ------------------------------------------------------------------------ r61147 | naruse | 2017-12-12 18:12:14 +0900 (Tue, 12 Dec 2017) | 1 line Integer#allbits?, Integer#anybits?, Integer#nobits? [Feature #12753] ------------------------------------------------------------------------ r61146 | hsbt | 2017-12-12 18:01:34 +0900 (Tue, 12 Dec 2017) | 1 line Bump version to fileutils-1.0.0 as default gems. ------------------------------------------------------------------------ r61145 | duerst | 2017-12-12 18:00:20 +0900 (Tue, 12 Dec 2017) | 2 lines switch from http to https for Unicode data file downloads (patch from MSP-Greg (Greg L), this closes issue #13962) ------------------------------------------------------------------------ r61144 | mrkn | 2017-12-12 18:00:19 +0900 (Tue, 12 Dec 2017) | 1 line NEWS: mention Process.last_status ------------------------------------------------------------------------ r61143 | mrkn | 2017-12-12 18:00:17 +0900 (Tue, 12 Dec 2017) | 7 lines process.c: add Process.last_status * process.c (proc_s_last_status): add Process.last_status [ruby-core:83514] [Feature #14043] * test/ruby/test_process.rb (test_last_status): add a test case for Process.last_status. ------------------------------------------------------------------------ r61142 | yui-knk | 2017-12-12 17:54:34 +0900 (Tue, 12 Dec 2017) | 20 lines parse.y: Fix the locations of NODE_ITER (cmd_brace_block) * parse.y: Update the locations of NODE_ITER when nd_iter is determined. ``` a (1) {|i|} ``` * Before ``` NODE_ITER (line: 1, code_range: (1,6)-(1,10)) ``` * After ``` NODE_ITER (line: 1, code_range: (1,0)-(1,11)) ``` ------------------------------------------------------------------------ r61141 | duerst | 2017-12-12 17:35:08 +0900 (Tue, 12 Dec 2017) | 1 line mention support of emoji-related Unicode character properties in NEWS ------------------------------------------------------------------------ r61140 | svn | 2017-12-12 17:34:14 +0900 (Tue, 12 Dec 2017) | 1 line * properties. ------------------------------------------------------------------------ r61139 | hsbt | 2017-12-12 17:34:13 +0900 (Tue, 12 Dec 2017) | 1 line Ignore gemspec under the lib directory for documentation. ------------------------------------------------------------------------ r61138 | k0kubun | 2017-12-12 17:27:33 +0900 (Tue, 12 Dec 2017) | 1 line NEWS: add entry for r61137 ------------------------------------------------------------------------ r61137 | k0kubun | 2017-12-12 17:12:43 +0900 (Tue, 12 Dec 2017) | 5 lines struct.c: add keyword_init option to Struct.new to initialize struct with keyword arguments. [Feature #11925] [close GH-1771] ------------------------------------------------------------------------ r61136 | svn | 2017-12-12 15:15:45 +0900 (Tue, 12 Dec 2017) | 1 line * properties. ------------------------------------------------------------------------ r61135 | svn | 2017-12-12 15:15:45 +0900 (Tue, 12 Dec 2017) | 1 line * remove trailing spaces, append newline at EOF. ------------------------------------------------------------------------ r61134 | hsbt | 2017-12-12 15:15:44 +0900 (Tue, 12 Dec 2017) | 4 lines Merge 1-16-stable branch of bundler. It's rc version for bundler-1.16.1. I'm going to update it version after official release from bundler team. ------------------------------------------------------------------------ r61133 | yui-knk | 2017-12-12 10:13:56 +0900 (Tue, 12 Dec 2017) | 22 lines parse.y: Fix locations of NODE_ARRAY of mlhs_head * parse.y: Fix to only include a range of mlhs_item (exclude ',' form range). e.g. The locations of the NODE_ARRAY is fixed: ``` (a,) = 1,2 ``` * Before ``` NODE_ARRAY (line: 1, code_range: (1,1)-(1,3)) ``` * After ``` NODE_ARRAY (line: 1, code_range: (1,1)-(1,2)) ``` ------------------------------------------------------------------------ r61132 | ko1 | 2017-12-12 09:56:24 +0900 (Tue, 12 Dec 2017) | 4 lines catch up r61131. * spec/ruby/core/kernel/autoload_spec.rb: should use FrozenError. ------------------------------------------------------------------------ r61131 | shyouhei | 2017-12-12 09:46:34 +0900 (Tue, 12 Dec 2017) | 11 lines Add FrozenError as a subclass of RuntimeError FrozenError will be used instead of RuntimeError for exceptions raised when there is an attempt to modify a frozen object. The reason for this change is to differentiate exceptions related to frozen objects from generic exceptions such as those generated by Kernel#raise without an exception class. From: Jeremy Evans <code@jeremyevans.net> Signed-off-by: Urabe Shyouhei <shyouhei@ruby-lang.org> ------------------------------------------------------------------------ r61130 | yui-knk | 2017-12-12 09:28:29 +0900 (Tue, 12 Dec 2017) | 21 lines parse.y: Fix locations of NODE_ARRAY in NODE_CALL(:=~) * parse.y (match_op_gen): Fix to only include a range of node2. e.g. The locations of the NODE_ARRAY is fixed: ``` re =~ s1 ``` * Before ``` NODE_ARRAY (line: 1, code_range: (1,0)-(1,8)) ``` * After ``` NODE_ARRAY (line: 1, code_range: (1,6)-(1,8)) ``` ------------------------------------------------------------------------ r61129 | mame | 2017-12-12 09:20:58 +0900 (Tue, 12 Dec 2017) | 3 lines ext/coverage/coverage.c: remove COVERAGE_EXPERIMENTAL_MODE A NEWS entry is also added. ------------------------------------------------------------------------ r61128 | yui-knk | 2017-12-12 09:12:43 +0900 (Tue, 12 Dec 2017) | 22 lines parse.y: Fix locations of NODE_ARRAY of opt_call_args * parse.y: Fix to only include a range of assocs (exclude ',' form range). e.g. The locations of the NODE_ARRAY is fixed: ``` m1(str: "bar",) ``` * Before ``` NODE_ARRAY (line: 1, code_range: (1,3)-(1,14)) ``` * After ``` NODE_ARRAY (line: 1, code_range: (1,3)-(1,13)) ``` ------------------------------------------------------------------------ r61127 | marcandre | 2017-12-12 08:50:40 +0900 (Tue, 12 Dec 2017) | 1 line NEWS: add changes for Matrix [ci-skip] [doc] ------------------------------------------------------------------------ r61126 | yui-knk | 2017-12-12 08:38:00 +0900 (Tue, 12 Dec 2017) | 21 lines parse.y: Fix locations of NODE_ARRAY in NODE_BLOCK_PASS * parse.y: Fix to only include a range of assocs. e.g. The locations of the NODE_ARRAY is fixed: ``` m1(str: "bar", &blk) ``` * Before ``` NODE_ARRAY (line: 1, code_range: (1,3)-(1,19)) ``` * After ``` NODE_ARRAY (line: 1, code_range: (1,3)-(1,13)) ``` ------------------------------------------------------------------------ r61125 | yui-knk | 2017-12-12 08:20:42 +0900 (Tue, 12 Dec 2017) | 4 lines Fix a method name * test/ruby/test_optimization.rb (test_fixnum_ge): Fix a method name to suppress method redefinition warnings. ------------------------------------------------------------------------ r61124 | yui-knk | 2017-12-12 08:13:47 +0900 (Tue, 12 Dec 2017) | 24 lines parse.y: Change locations of NODE_DVAR in NODE_MASGN * parse.y: Change the last location of NODE_DVAR to be equal to the first location of NODE_DVAR. NODE_DVAR of NODE_MASGN (nd_value) is an internal variable, so it has no length. e.g. The locations of the NODE_DVAR is changed: ``` a.b {|(c,d)| e} ``` * Before ``` NODE_DVAR (line: 1, code_range: (1,7)-(1,10)) ``` * After ``` NODE_DVAR (line: 1, code_range: (1,7)-(1,7)) ``` ------------------------------------------------------------------------ r61123 | ko1 | 2017-12-12 05:30:37 +0900 (Tue, 12 Dec 2017) | 10 lines remove vm_opt_binop_dispatch(). * vm_insnhelper.c (vm_opt_binop_dispatch): removed because this function has several issues for micro-benchmark. Write conditions manually. The worst point is that we can't control value checking order. For example, we can assume FIXNUM arithmetic operations are most popular in Ruby, so that we need to check FIXNUM at first. * test/ruby/test_optimization.rb: also fix redef bug for LE/GT/GE. ------------------------------------------------------------------------ r61122 | ko1 | 2017-12-12 04:17:25 +0900 (Tue, 12 Dec 2017) | 13 lines do not disable `trace_` prefix insns. * vm.c: introduce `ruby_vm_event_enabled_flags` which represents which event flags are enabled before. * vm_trace.c: do not turn off `trace_` prefix instructions because turn on overhead is a matter if a program repeats turn on and turn off frequently. * iseq.c (finish_iseq_build): respect `ruby_vm_event_enabled_flags`. * vm_insnhelper.c (vm_trace): check `ruby_vm_event_flags` and disable lazy trace-off technique (do not disable traces). ------------------------------------------------------------------------ r61121 | usa | 2017-12-12 02:31:43 +0900 (Tue, 12 Dec 2017) | 4 lines fixed typo * win32/win32.c (get_ino): forgotten to specify the member. thanks kubo-san. ------------------------------------------------------------------------ r61120 | ko1 | 2017-12-12 01:07:21 +0900 (Tue, 12 Dec 2017) | 11 lines vm_exec.h: introduce macros for abstarction. * vm_exec.h: declare two macros * START_OF_ORIGINAL_INSN() * DISPATCH_ORIGINAL_INSN() instead of inserting label and goto lines. For OPT_CALL_THREADED_CODE, first macro is empty and second macro is simply call the original insn function. * tool/instruction.rb: use above macros. ------------------------------------------------------------------------ r61119 | usa | 2017-12-12 01:06:41 +0900 (Tue, 12 Dec 2017) | 4 lines undef previous definition of `SIZEOF_STRUCT_STAT_ST_INO` trying to solve build problem of MinGW. see [Bug #14165] ------------------------------------------------------------------------ r61118 | svn | 2017-12-12 00:30:01 +0900 (Tue, 12 Dec 2017) | 1 line * 2017-12-12 ------------------------------------------------------------------------ r61117 | kou | 2017-12-12 00:30:00 +0900 (Tue, 12 Dec 2017) | 2 lines Update test-unit to 3.2.7 ------------------------------------------------------------------------ r61116 | naruse | 2017-12-11 21:09:47 +0900 (Mon, 11 Dec 2017) | 1 line extern rb_time_utc_offset to get utc offset ------------------------------------------------------------------------ r61115 | hsbt | 2017-12-11 17:37:49 +0900 (Mon, 11 Dec 2017) | 1 line Bump version to zlib-1.0.0 as default gems. ------------------------------------------------------------------------ r61114 | hsbt | 2017-12-11 17:18:01 +0900 (Mon, 11 Dec 2017) | 1 line Bump version to scanf-1.0.0 as default gems. ------------------------------------------------------------------------ r61113 | hsbt | 2017-12-11 15:48:09 +0900 (Mon, 11 Dec 2017) | 1 line Bump version to sdbm-1.0.0 as default gems. ------------------------------------------------------------------------ r61112 | hsbt | 2017-12-11 15:03:53 +0900 (Mon, 11 Dec 2017) | 1 line Bump version to fcntl-1.0.0 as default gems. ------------------------------------------------------------------------ r61111 | mame | 2017-12-11 13:46:57 +0900 (Mon, 11 Dec 2017) | 3 lines lib/pp.rb: remove alias for suppressing a redefinition warning. Because there is now the same guard in prelude.rb (alias pp pp). ------------------------------------------------------------------------ r61110 | hsbt | 2017-12-11 12:56:01 +0900 (Mon, 11 Dec 2017) | 1 line Bump version to date-1.0.0 as default gems. ------------------------------------------------------------------------ r61109 | hsbt | 2017-12-11 12:27:47 +0900 (Mon, 11 Dec 2017) | 1 line Bump version to cmath-1.0.0 as default gems. ------------------------------------------------------------------------ r61108 | usa | 2017-12-11 11:30:42 +0900 (Mon, 11 Dec 2017) | 2 lines bccwin is no longer supported ------------------------------------------------------------------------ r61107 | usa | 2017-12-11 11:30:21 +0900 (Mon, 11 Dec 2017) | 4 lines depend on win32.h on Windows * lib/mkmf.rb (depend_rules): all objs should depend on win32.h on Windows. ------------------------------------------------------------------------ r61106 | yui-knk | 2017-12-11 11:19:43 +0900 (Mon, 11 Dec 2017) | 21 lines parse.y: Fix locations of NODE_DSTR generated by evstr2dstr_gen * parse.y (evstr2dstr_gen): Fix to only include a range of node. e.g. The locations of the NODE_DSTR is fixed: ``` %W[a #{b} c] ``` * Before ``` NODE_DSTR (line: 1, code_range: (1,3)-(1,9)) ``` * After ``` NODE_DSTR (line: 1, code_range: (1,5)-(1,9)) ``` ------------------------------------------------------------------------ r61105 | svn | 2017-12-11 10:04:47 +0900 (Mon, 11 Dec 2017) | 1 line * properties. ------------------------------------------------------------------------ r61104 | hsbt | 2017-12-11 10:04:46 +0900 (Mon, 11 Dec 2017) | 3 lines Ignore to generate documentation for template files of bundler. [Bug #14163][ruby-core:84141] ------------------------------------------------------------------------ r61103 | yui-knk | 2017-12-11 09:28:27 +0900 (Mon, 11 Dec 2017) | 3 lines parse.y: Remove not used argument * parse.y (list_append_gen): location is not used. ------------------------------------------------------------------------ r61102 | yui-knk | 2017-12-11 09:06:11 +0900 (Mon, 11 Dec 2017) | 24 lines parse.y: Fix locations of NODE_SCOPE in NODE_MODULE * parse.y: Fix to only include a range of bodystmt. e.g. The locations of the NODE_SCOPE is fixed: ``` module M def m end end ``` * Before ``` NODE_SCOPE (line: 4, code_range: (1,0)-(4,3)) ``` * After ``` NODE_SCOPE (line: 4, code_range: (1,8)-(4,3)) ``` ------------------------------------------------------------------------ r61101 | yui-knk | 2017-12-11 08:44:22 +0900 (Mon, 11 Dec 2017) | 21 lines parse.y: Fix the last location of NODE_COLON2 * parse.y: Fix to only include a range from primary_value to tCONSTANT. e.g. The locations of the NODE_COLON2 is fixed: ``` A::B ||= 1 ``` * Before ``` NODE_COLON2 (line: 1, code_range: (1,0)-(1,10)) ``` * After ``` NODE_COLON2 (line: 1, code_range: (1,0)-(1,4)) ``` ------------------------------------------------------------------------ r61100 | usa | 2017-12-11 08:28:09 +0900 (Mon, 11 Dec 2017) | 2 lines mention about [Feature #13726] and [Feature #13731] ------------------------------------------------------------------------ r61099 | yui-knk | 2017-12-11 08:27:58 +0900 (Mon, 11 Dec 2017) | 22 lines parse.y: Change the first location of NODE_ARRAY in NODE_DSTR (nd_next->nd_next) * parse.y (list_append_gen): Change the first location to start with the location of item if new list is generated. e.g. The locations of the NODE_ARRAY is changed: ``` "#{a}.#{b}" ``` * Before ``` NODE_ARRAY (line: 1, code_range: (1,0)-(1,6)) ``` * After ``` NODE_ARRAY (line: 1, code_range: (1,5)-(1,6)) ``` ------------------------------------------------------------------------ r61098 | marcandre | 2017-12-11 07:36:28 +0900 (Mon, 11 Dec 2017) | 3 lines Add case equality arity to Enumerable#all?, any?, none? and one?, and specialized Array#any? and Hash#any? Based on patch by D.E. Akers [#11286] ------------------------------------------------------------------------ r61097 | svn | 2017-12-11 02:26:59 +0900 (Mon, 11 Dec 2017) | 1 line * 2017-12-11 ------------------------------------------------------------------------ r61096 | usa | 2017-12-11 02:26:58 +0900 (Mon, 11 Dec 2017) | 12 lines support 128bit ino on Windows (if available) * win32/win32.c, include/ruby/win32.h (stati128, rb_{,u,l,ul}stati128): rename from stati64ns, change the type of st_ino to 64bit and added st_inohigh. * dir.c, file.c (stat, lstat): follow above changes. * file.c (rb_stat_ino): support 128bit ino. * win32/win32.c (rb_{,u,l,ul}stati128): ditto. [Feature #13731] ------------------------------------------------------------------------ r61095 | yui-knk | 2017-12-09 22:13:58 +0900 (Sat, 09 Dec 2017) | 22 lines parse.y: Fix locations of NODE_ARRAY in NODE_ATTRASGN (nd_args) * parse.y (arg_append_gen): Fix to only include a range of node2 if new list is generated. e.g. The locations of the NODE_ARRAY is fixed: ``` x.default = 5 ``` * Before ``` NODE_ARRAY (line: 1, code_range: (1,0)-(1,13)) ``` * After ``` NODE_ARRAY (line: 1, code_range: (1,12)-(1,13)) ``` ------------------------------------------------------------------------ r61094 | nobu | 2017-12-09 20:58:25 +0900 (Sat, 09 Dec 2017) | 1 line test_process.rb (test_maxgroups): add assertions ------------------------------------------------------------------------ r61093 | yui-knk | 2017-12-09 18:44:03 +0900 (Sat, 09 Dec 2017) | 25 lines parse.y: Change locations of NODE_BLOCK in NODE_RESBODY (nd_body) * parse.y: Change to only include a range from exc_var to compstmt. e.g. The locations of the NODE_BLOCK is changed: ``` begin :a rescue E => e :b end ``` * Before ``` NODE_BLOCK (line: 3, code_range: (3,0)-(5,3)) ``` * After ``` NODE_BLOCK (line: 3, code_range: (3,9)-(4,4)) ``` ------------------------------------------------------------------------ r61092 | yui-knk | 2017-12-09 12:52:59 +0900 (Sat, 09 Dec 2017) | 23 lines parse.y: Fix locations of NODE_SCOPE in NODE_SCLASS * parse.y: Fix to only include a range of bodystmt. e.g. The locations of the NODE_SCOPE is fixed: ``` class << [] def m; end end ``` * Before ``` NODE_SCOPE (line: 3, code_range: (1,0)-(3,3)) ``` * After ``` NODE_SCOPE (line: 3, code_range: (2,2)-(3,3)) ``` ------------------------------------------------------------------------ r61091 | normal | 2017-12-09 12:46:39 +0900 (Sat, 09 Dec 2017) | 15 lines Dir#chdir keeps GVL if passed block On further examination, Dir.chdir with a block from multiple threads is thread-unsafe given our use of the chdir_blocking and chdir_thread global variables. This bug was only introduced in r60583 so not part of any stable release. Dir.chdir without a block can still make senses in a MT context as only one thread could be cwd-sensitive and other threads do not care which directory they're in. * dir.c (dir_chdir): keep GVL here (dir_s_chdir): release GVL if no block given ------------------------------------------------------------------------ r61090 | yui-knk | 2017-12-09 12:18:55 +0900 (Sat, 09 Dec 2017) | 21 lines parse.y: Fix locations of NODE_ARRAY in NODE_OPCALL(nd_args) * parse.y: Fix to only include a range of arg1. e.g. The locations of the NODE_ARRAY is fixed: ``` 1 + 2 ``` * Before ``` NODE_ARRAY (line: 1, code_range: (1,0)-(1,5)) ``` * After ``` NODE_ARRAY (line: 1, code_range: (1,4)-(1,5)) ``` ------------------------------------------------------------------------ r61089 | yui-knk | 2017-12-09 12:03:34 +0900 (Sat, 09 Dec 2017) | 23 lines parse.y: Fix locations of NODE_SCOPE in NODE_CLASS * parse.y: Fix to only include a range of bodystmt. e.g. The locations of the NODE_SCOPE is fixed: ``` class A def a; end end ``` * Before ``` NODE_SCOPE (line: 3, code_range: (1,0)-(3,3)) ``` * After ``` NODE_SCOPE (line: 3, code_range: (1,7)-(3,3)) ``` ------------------------------------------------------------------------ r61088 | stomar | 2017-12-09 07:51:42 +0900 (Sat, 09 Dec 2017) | 1 line doc/syntax/refinements.rdoc: fix typos ------------------------------------------------------------------------ r61087 | stomar | 2017-12-09 07:43:47 +0900 (Sat, 09 Dec 2017) | 1 line bignum.c: [DOC] simplify comment ------------------------------------------------------------------------ r61086 | stomar | 2017-12-09 07:43:05 +0900 (Sat, 09 Dec 2017) | 1 line NEWS: grammar fix ------------------------------------------------------------------------ r61085 | stomar | 2017-12-09 07:42:19 +0900 (Sat, 09 Dec 2017) | 1 line ext/strscan/strscan.c: [DOC] grammar fixes ------------------------------------------------------------------------ r61084 | svn | 2017-12-09 03:51:57 +0900 (Sat, 09 Dec 2017) | 1 line * 2017-12-09 ------------------------------------------------------------------------ r61083 | normal | 2017-12-09 03:51:56 +0900 (Sat, 09 Dec 2017) | 15 lines webrick: allow shutdown after StartCallback We must to ensure the @status ivar is set to :Running before running StartCallback, otherwise Webrick::Server#stop will not change the @status to :Shutdown properly. Note: I have not been able to reproduce the original issue but understood at least part of the problem and fixed it with this commit. However, the original reporter (Peak Xu) was still able to reproduce the problem on 1.9.2 p180 on Windows, so I'm not sure what else might be going on. Ruby threading and synchronization primitives have changed a lot since 1.9.2, so maybe that was fixed elsewhere. * lib/webrick/server.rb: call StartCallback sooner [Bug #4841] ------------------------------------------------------------------------ r61082 | nobu | 2017-12-08 17:38:57 +0900 (Fri, 08 Dec 2017) | 1 line lib/pp.rb: no rdoc of alias to suppress a warning ------------------------------------------------------------------------ r61081 | nobu | 2017-12-08 16:35:07 +0900 (Fri, 08 Dec 2017) | 5 lines test_file_exhaustive.rb: get rid of failures * test/ruby/test_file_exhaustive.rb (test_utime_symlinkfile): under some condition, symlink file is also affected by utimes() on Linux. ------------------------------------------------------------------------ r61080 | nobu | 2017-12-08 16:17:34 +0900 (Fri, 08 Dec 2017) | 4 lines pp.rb: rdoc * lib/pp.rb (pp): move pp alias before its rdoc, not to prevent parsing. ------------------------------------------------------------------------ r61079 | nobu | 2017-12-08 16:13:04 +0900 (Fri, 08 Dec 2017) | 5 lines test_file_exhaustive.rb: test_utime_symlinkfile * test_file_exhaustive.rb (test_utime_symlinkfile): investigate failures on some platforms. wait a second to tell if symlink atime is changed. ------------------------------------------------------------------------ r61078 | nobu | 2017-12-08 15:24:16 +0900 (Fri, 08 Dec 2017) | 1 line test_file_exhaustive.rb: fix arguments order ------------------------------------------------------------------------ r61077 | nobu | 2017-12-08 15:20:06 +0900 (Fri, 08 Dec 2017) | 4 lines win32.c: check error code * win32/win32.c (w32_io_info): check GetFileInformationByHandleEx error code to fallback to GetFileInformationByHandle. ------------------------------------------------------------------------ r61076 | nobu | 2017-12-08 14:51:19 +0900 (Fri, 08 Dec 2017) | 7 lines support gperf 3.1 * tool/gperf.sed: extracted sed commands to a script. ANSI-C code produced by gperf 3.1 declares length arguments as `size_t`. it causes conflict with existing declarations, and needs casts for a local variable and return statements. [Feature #13883] ------------------------------------------------------------------------ r61075 | yui-knk | 2017-12-08 09:45:23 +0900 (Fri, 08 Dec 2017) | 3 lines parse.y Fix compile error ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] ------------------------------------------------------------------------ r61074 | yui-knk | 2017-12-08 09:33:38 +0900 (Fri, 08 Dec 2017) | 22 lines parse.y: Fix locations of modifier_rescue * parse.y: Fix to only include a range from modifier_rescue to stmt (or arg). e.g. The locations of the NODE_RESBODY is fixed: ``` a rescue 1 ``` * Before ``` NODE_RESBODY (line: 1, code_range: (1,0)-(1,10)) ``` * After ``` NODE_RESBODY (line: 1, code_range: (1,2)-(1,10)) ``` ------------------------------------------------------------------------ r61073 | svn | 2017-12-08 08:36:00 +0900 (Fri, 08 Dec 2017) | 1 line * 2017-12-08 ------------------------------------------------------------------------ r61072 | yui-knk | 2017-12-08 08:35:59 +0900 (Fri, 08 Dec 2017) | 21 lines parse.y: Fix locations of string * parse.y: Fix to include locations of tSTRING_BEG and tSTRING_END. e.g. The locations of the NODE_STR is fixed: ``` "a" ``` * Before ``` NODE_STR (line: 1, code_range: (1,1)-(1,2)) ``` * After ``` NODE_STR (line: 1, code_range: (1,0)-(1,3)) ``` ------------------------------------------------------------------------ r61071 | hsbt | 2017-12-07 17:08:56 +0900 (Thu, 07 Dec 2017) | 4 lines Follow up r60970 for bundler's examples. r60970 break Gemfile.lock format with file protocol after bundle install/update. I addd hostname to these examples. ------------------------------------------------------------------------ r61070 | yui-knk | 2017-12-07 15:38:49 +0900 (Thu, 07 Dec 2017) | 23 lines parse.y: Fix locations of array * parse.y (make_array): Set locations of ary to include locations of start token (tLBRACK, tWORDS_BEG, ...) and end token (']', tSTRING_END, ...) of array. e.g. The locations of the NODE_ARRAY is fixed: ``` [1, 2, 3] ``` * Before ``` NODE_ARRAY (line: 1, code_range: (1,1)-(1,8)) ``` * After ``` NODE_ARRAY (line: 1, code_range: (1,0)-(1,9)) ``` ------------------------------------------------------------------------ r61069 | nobu | 2017-12-07 13:42:16 +0900 (Thu, 07 Dec 2017) | 1 line win32/win32.c: removed a stale comment ------------------------------------------------------------------------ r61068 | nobu | 2017-12-07 13:12:42 +0900 (Thu, 07 Dec 2017) | 4 lines parse.y: fix for old compilers * parse.y (arg_value): initialization of aggregation type with non-constant values is not allowed in C89. ------------------------------------------------------------------------ r61067 | nobu | 2017-12-07 13:03:44 +0900 (Thu, 07 Dec 2017) | 5 lines win32.c: fallback to old API * win32/win32.c (w32_io_info, rb_w32_file_identical_p): fallback to GetFileInformationByHandle if GetFileInformationByHandleEx failed. it seems not working on network drives. ------------------------------------------------------------------------ r61066 | yui-knk | 2017-12-07 12:00:36 +0900 (Thu, 07 Dec 2017) | 21 lines parse.y: Fix locations of dsym * parse.y: Fix to only include a range from tSTRING_BEG to tLABEL_END. e.g. The locations of the NODE_LIT is fixed: ``` { "a": 10 } ``` * Before ``` NODE_LIT (line: 1, code_range: (1,2)-(1,9)) ``` * After ``` NODE_LIT (line: 1, code_range: (1,2)-(1,6)) ``` ------------------------------------------------------------------------ r61065 | yui-knk | 2017-12-07 11:48:38 +0900 (Thu, 07 Dec 2017) | 22 lines parse.y: Fix locations of dsym * parse.y (dsym_node_gen): Always set locations to include locations of tSYMBEG and tSTRING_END. e.g. The locations of the NODE_LIT is fixed: ``` :"a" ``` * Before ``` NODE_LIT (line: 1, code_range: (1,2)-(1,3)) ``` * After ``` NODE_LIT (line: 1, code_range: (1,0)-(1,4)) ``` ------------------------------------------------------------------------ r61064 | yui-knk | 2017-12-07 11:36:51 +0900 (Thu, 07 Dec 2017) | 22 lines parse.y: Fix locations of regexp * parse.y (new_regexp_gen): Always set locations to include locations of tREGEXP_BEG and tREGEXP_END. e.g. The locations of the NODE_LIT is fixed: ``` /a/ ``` * Before ``` NODE_LIT (line: 1, code_range: (1,1)-(1,2)) ``` * After ``` NODE_LIT (line: 1, code_range: (1,0)-(1,3)) ``` ------------------------------------------------------------------------ r61063 | yui-knk | 2017-12-07 11:25:37 +0900 (Thu, 07 Dec 2017) | 22 lines parse.y: Fix locations of xstring * parse.y (new_xstring_gen): Always set locations to include locations of tXSTRING_BEG and tSTRING_END. e.g. The locations of the NODE_XSTR is fixed: ``` `a` ``` * Before ``` NODE_XSTR (line: 1, code_range: (1,1)-(1,2)) ``` * After ``` NODE_XSTR (line: 1, code_range: (1,0)-(1,3)) ``` ------------------------------------------------------------------------ r61062 | shugo | 2017-12-07 08:56:04 +0900 (Thu, 07 Dec 2017) | 1 line remove unnecessary read_timeout. ------------------------------------------------------------------------ r61061 | mame | 2017-12-07 07:43:54 +0900 (Thu, 07 Dec 2017) | 1 line eval_intern.h: fix a typo ------------------------------------------------------------------------ r61060 | normal | 2017-12-07 06:51:10 +0900 (Thu, 07 Dec 2017) | 3 lines cont.c: update comment for ec refactoring * cont.c (fiber_switch): update comment (ec.fiber => ec->fiber_ptr) ------------------------------------------------------------------------ r61059 | svn | 2017-12-07 00:02:32 +0900 (Thu, 07 Dec 2017) | 1 line * 2017-12-07 ------------------------------------------------------------------------ r61058 | kazu | 2017-12-07 00:02:31 +0900 (Thu, 07 Dec 2017) | 4 lines `Integer#pow(b)` accepts numeric instead of integer only and returns numeric instead of integer only same as `Integer#**` ------------------------------------------------------------------------ r61057 | nobu | 2017-12-06 21:36:37 +0900 (Wed, 06 Dec 2017) | 4 lines numeric.c: rb_int_powm rdoc * numeric.c (Init_Numeric): let rdoc know that rb_int_powm is defined in bignum.c. [Feature #12508] [Feature #11003] ------------------------------------------------------------------------ r61056 | nobu | 2017-12-06 20:36:42 +0900 (Wed, 06 Dec 2017) | 5 lines vcs.rb: fix r61054 * tool/vcs.rb (VCS::SVN.get_revisions): cmd_readd_at expects the whole arguments for IO.popen as the second argument, that is an array of command and mode. ------------------------------------------------------------------------ r61055 | nobu | 2017-12-06 20:18:53 +0900 (Wed, 06 Dec 2017) | 4 lines file2lastrev.rb: suppress_not_found * tool/file2lastrev.rb: exit successfully when command not found, and if --suppress_not_found is given. ------------------------------------------------------------------------ r61054 | nobu | 2017-12-06 20:18:52 +0900 (Wed, 06 Dec 2017) | 4 lines vcs.rb: raise NotFoundError when command not found * tool/vcs.rb (cmd_pipe_at, cmd_read_at, system): moved from GIT to VCS, and now raise VCS::NotFoundError when command not found. ------------------------------------------------------------------------ r61053 | hsbt | 2017-12-06 17:35:13 +0900 (Wed, 06 Dec 2017) | 1 line Bump fiddle-1.0.0 for released version. ------------------------------------------------------------------------ r61052 | hsbt | 2017-12-06 17:34:34 +0900 (Wed, 06 Dec 2017) | 1 line Bump gdbm-2.0.0 for released versionn. ------------------------------------------------------------------------ r61051 | hsbt | 2017-12-06 17:32:01 +0900 (Wed, 06 Dec 2017) | 1 line Bump dbm-1.0.0 for released version. ------------------------------------------------------------------------ r61050 | mame | 2017-12-06 16:26:54 +0900 (Wed, 06 Dec 2017) | 4 lines compile.c (rb_iseq_compile_node): Move the check for imemo_ifunc to top Applying nd_type to imemo_ifunc object seems harmless fortunately, but very dirty (to me). ------------------------------------------------------------------------ r61049 | mame | 2017-12-06 16:19:17 +0900 (Wed, 06 Dec 2017) | 4 lines vm_core.h (RUBY_EVENT_COVERAGE_BRANCH): renamed This change moves RUBY_EVENT_COVERAGE from include/ruby/ruby.h to vm_core.h and renames it to RUBY_EVENT_COVERAGE_BRANCH. ------------------------------------------------------------------------ r61048 | mame | 2017-12-06 16:19:16 +0900 (Wed, 06 Dec 2017) | 3 lines Remove RUBY_EVENT_SPECIFIED_LINE Follow up of r61044 ------------------------------------------------------------------------ r61047 | mame | 2017-12-06 16:04:49 +0900 (Wed, 06 Dec 2017) | 1 line insns.def (tracebranch): renamed from `trace2` ------------------------------------------------------------------------ r61046 | mame | 2017-12-06 16:04:48 +0900 (Wed, 06 Dec 2017) | 4 lines thread.c (update_branch_coverage): renamed from `update_coverage` Now this function only deals with branch events, so this change renames it and remove complexity that is no longer needed. ------------------------------------------------------------------------ r61045 | ko1 | 2017-12-06 15:54:40 +0900 (Wed, 06 Dec 2017) | 1 line fix last commit ------------------------------------------------------------------------ r61044 | ko1 | 2017-12-06 15:53:15 +0900 (Wed, 06 Dec 2017) | 7 lines remove unsupported RUBY_EVENT_SPECIFIED_LINE. * vm_trace.c (get_event_id): remove experimental in past, and not supported now feature. * vm_trace.c (tracepoint_inspect): ditto. ------------------------------------------------------------------------ r61043 | mame | 2017-12-06 15:39:05 +0900 (Wed, 06 Dec 2017) | 5 lines thread.c (update_line_coverage): Use RUBY_EVENT_LINE This change makes coverage use the general event type RUBY_EVENT_LINE instead of a special event type RUBY_EVENT_COVERAGE. Just a refactoring. ------------------------------------------------------------------------ r61042 | nobu | 2017-12-06 14:22:19 +0900 (Wed, 06 Dec 2017) | 4 lines prelude.c.tmpl: fix line number * template/prelude.c.tmpl (Init_prelude): fix line number of preludes. line of prelude_eval is an int, not a VALUE. ------------------------------------------------------------------------ r61041 | mame | 2017-12-06 12:19:17 +0900 (Wed, 06 Dec 2017) | 1 line eval_intern.h: prevent core dump with clang and make test-all ------------------------------------------------------------------------ r61040 | ko1 | 2017-12-06 12:16:08 +0900 (Wed, 06 Dec 2017) | 5 lines remove `PUSH_TAG`/`EXEC_AG`/`POP_TAG`/`JUMO_TAG`. * eval_intern.h: remove non-`EC_` prefix *_TAG() macros. Use `EC_` prefix macros explicitly. ------------------------------------------------------------------------ r61039 | yui-knk | 2017-12-06 12:09:55 +0900 (Wed, 06 Dec 2017) | 28 lines parse.y: Fix the first location of heredoc identifier * parse.y (parser_heredoc_identifier): Put length of term at the head of rb_strterm_heredoc_struct.term. * parse.y (rb_parser_set_location_from_strterm_heredoc): Use length of term to calculate first_loc.column. e.g. The locations of the NODE_DSTR is fixed: ``` a <<STR 123 #{:a} STR ``` * Before ``` NODE_DSTR (line: 3, code_range: (1,3)-(1,7)) ``` * After ``` NODE_DSTR (line: 3, code_range: (1,2)-(1,7)) ``` ------------------------------------------------------------------------ r61038 | mame | 2017-12-06 10:41:05 +0900 (Wed, 06 Dec 2017) | 3 lines parse.y: remove redefined typedef Clang told me that this is C11 feature. ------------------------------------------------------------------------ r61037 | yui-knk | 2017-12-06 09:44:18 +0900 (Wed, 06 Dec 2017) | 28 lines parse.y: Fix locations of HEREDOC * parse.y (rb_parser_set_location_from_strterm_heredoc): Set locations based on rb_strterm_heredoc_t. * parse.y (yylex): Set yylloc based on rb_strterm_heredoc_t when parsing heredoc. e.g. The locations of the NODE_DSTR is changed: ``` a <<STR 123 #{:a} STR ``` * Before ``` NODE_DSTR (line: 3, code_range: (3,0)-(1,7)) ``` * After ``` NODE_DSTR (line: 3, code_range: (1,3)-(1,7)) ``` ------------------------------------------------------------------------ r61036 | svn | 2017-12-06 08:34:15 +0900 (Wed, 06 Dec 2017) | 1 line * 2017-12-06 ------------------------------------------------------------------------ r61035 | yui-knk | 2017-12-06 08:34:14 +0900 (Wed, 06 Dec 2017) | 5 lines test_syntax.rb: Add a test case for `not()` * test/ruby/test_syntax.rb (TestSyntax#test_keyword_not_parens): Currently `not()` is tested by only TestRipper::ParserEvents#test_unary, so I think it's better to test this syntax directly. ------------------------------------------------------------------------ r61034 | nobu | 2017-12-05 22:49:40 +0900 (Tue, 05 Dec 2017) | 4 lines parse.y: nd_line of new node * parse.y (nd_set_loc): set nd_line of the newly created node to the first location. ------------------------------------------------------------------------ r61033 | nobu | 2017-12-05 22:46:21 +0900 (Tue, 05 Dec 2017) | 4 lines parse.y: nd_line of call_uni_op * parse.y (call_uni_op): set nd_line to the unary operator location, same as non-operator method calls. ------------------------------------------------------------------------ r61032 | nobu | 2017-12-05 22:42:46 +0900 (Tue, 05 Dec 2017) | 4 lines parse.y: nd_line of logop * parse.y (logop): set nd_line to the logical operator location, same as non-operator method calls. ------------------------------------------------------------------------ r61031 | nobu | 2017-12-05 22:38:01 +0900 (Tue, 05 Dec 2017) | 4 lines parse.y: nd_line of match_op * parse.y (match_op): set nd_line to the match operator location, same as non-operator method calls. ------------------------------------------------------------------------ r61030 | nobu | 2017-12-05 22:30:06 +0900 (Tue, 05 Dec 2017) | 4 lines parse.y: nd_line of call_bin_op * parse.y (call_bin_op): set nd_line to the binary operator location, same as non-operator method calls. ------------------------------------------------------------------------ r61029 | hsbt | 2017-12-05 20:08:00 +0900 (Tue, 05 Dec 2017) | 3 lines Bump version to rdoc-6.0.0. There is no changes from rdoc-6.0.0.bebta4. ------------------------------------------------------------------------ r61028 | mame | 2017-12-05 18:45:03 +0900 (Tue, 05 Dec 2017) | 1 line iseq.c (iseq_load, iseq_data_to_ary): Fix a type error (for clang) ------------------------------------------------------------------------ r61027 | mame | 2017-12-05 17:58:57 +0900 (Tue, 05 Dec 2017) | 3 lines Hide ISeq#load I disclosed it incorrectly at r61025. Sorry. ------------------------------------------------------------------------ r61026 | mame | 2017-12-05 17:56:51 +0900 (Tue, 05 Dec 2017) | 5 lines ext/coverage/coverage.c: method coverage has column info. of method def. This change makes method coverage result have not only first lineno of method defintion, but also code range (i.e. first lineno, first column, last lineno, and last column). ------------------------------------------------------------------------ r61025 | mame | 2017-12-05 17:56:50 +0900 (Tue, 05 Dec 2017) | 4 lines vm_core.h (rb_iseq_locatoin_t): add a field `code_range` This change makes each ISeq keep NODE's code range. This information is needed for method coverage. ------------------------------------------------------------------------ r61024 | nobu | 2017-12-05 17:50:14 +0900 (Tue, 05 Dec 2017) | 4 lines node.c: FIELD_BLOCK * node.c (COMPOUND_FIELD, FIELD_BLOCK): moved block outside arguments like as SIMPLE_FIELD. ------------------------------------------------------------------------ r61023 | mame | 2017-12-05 16:16:42 +0900 (Tue, 05 Dec 2017) | 11 lines Revamp method coverage to support define_method Traditionally, method coverage measurement was implemented by inserting `trace2` instruction to the head of method iseq. So, it just measured methods defined by `def` keyword. This commit drastically changes the measuring mechanism of method coverage; at `RUBY_EVENT_CALL`, it keeps a hash from rb_method_entry_t* to runs (i.e., it counts the runs per method entry), and at `Coverage.result`, it creates the result hash by enumerating all `rb_method_entry_t*` objects (by `ObjectSpace.each_object`). ------------------------------------------------------------------------ r61022 | mame | 2017-12-05 13:23:06 +0900 (Tue, 05 Dec 2017) | 3 lines node.c: a simple notation for code range of NODEs This affects only `--dump=parsetree` and `--dump=parsetree_with_comment`. ------------------------------------------------------------------------ r61021 | svn | 2017-12-05 10:10:15 +0900 (Tue, 05 Dec 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r61020 | hsbt | 2017-12-05 10:10:13 +0900 (Tue, 05 Dec 2017) | 22 lines vm_core.h: Increase the Fiber stack size on powerpc64 Currently the Fiber stack size is small for powerpc64 and it causes test/ruby/test_backtrace.rb test to break, since it is using a 8kb stack size. It breaks on powerpc64 due to the fact that a frame in the stack is usually 50% bigger on powerpc64 compared to Intel, due to some considerations: * The powerpc64 minimum frame is 2x bigger than on Intel * Powerpc has more registers that might be saved in the frame compared to Intel. I ran the same ruby test that is failing on both Intel and Powerpc, and each Fiber frame is ~50% bigger on powerpc64 for every single lambda function, thus, we need to increase the stack size on powerpc64 to accomodate the same tests/applications. This fixes bug#13757. Signed-off-by: Breno Leitao <leitao@debian.org> ------------------------------------------------------------------------ r61019 | shugo | 2017-12-05 09:59:40 +0900 (Tue, 05 Dec 2017) | 3 lines Remove unnecessary read_timeout. http://ci.rvm.jp/results/trunk-asserts-nopara@ruby-sky1/219867 ------------------------------------------------------------------------ r61018 | nobu | 2017-12-05 09:09:58 +0900 (Tue, 05 Dec 2017) | 3 lines bignum.c: unified int_pow_tmp2 * bignum.c (int_pow_tmp2): unified DLONG and none DLONG code. ------------------------------------------------------------------------ r61017 | svn | 2017-12-05 08:59:03 +0900 (Tue, 05 Dec 2017) | 1 line * 2017-12-05 ------------------------------------------------------------------------ r61016 | yui-knk | 2017-12-05 08:59:02 +0900 (Tue, 05 Dec 2017) | 27 lines parse.y: Fix locations of NODE_*ASGN and NODE_ERRINFO * parse.y: Fix to only include a range of exc_var. e.g. The locations of the NODE_DASGN_CURR and NODE_ERRINFO are fixed: ``` begin 1 rescue => e 2 end ``` * Before ``` NODE_DASGN_CURR (line: 3, first_lineno: 3, first_column: 0, last_lineno: 5, last_column: 3) NODE_ERRINFO (line: 5, first_lineno: 3, first_column: 0, last_lineno: 5, last_column: 3) ``` * After ``` NODE_DASGN_CURR (line: 3, first_lineno: 3, first_column: 7, last_lineno: 3, last_column: 11) NODE_ERRINFO (line: 5, first_lineno: 3, first_column: 7, last_lineno: 3, last_column: 11) ``` ------------------------------------------------------------------------ r61015 | nobu | 2017-12-04 21:49:20 +0900 (Mon, 04 Dec 2017) | 3 lines win32.c: fix error on mingw * win32/win32.c (FILE_ID_128): defined on mingw already. ------------------------------------------------------------------------ r61014 | kazu | 2017-12-04 21:31:44 +0900 (Mon, 04 Dec 2017) | 1 line [DOC] improve rdoc formatting for links [ci skip] ------------------------------------------------------------------------ r61013 | usa | 2017-12-04 19:48:30 +0900 (Mon, 04 Dec 2017) | 10 lines support nanosec file timestamp on newer Windows Support nanosec file timestamp on Windows 8 or later. Original patches are written by kubo (Kubo Takehiro). Windows 7 and earlier also supports nanosec file timestamp, but it's too accurate than system time. so, this feature is disabled on such versions. [Feature #13726] this change also includes [Misc #13702] ------------------------------------------------------------------------ r61012 | nobu | 2017-12-04 19:41:45 +0900 (Mon, 04 Dec 2017) | 4 lines bignum.c: explicit casts * bignum.c (int_pow_tmp2): explicitly cast to get rid of implicit conversion. ------------------------------------------------------------------------ r61011 | yui-knk | 2017-12-04 17:20:07 +0900 (Mon, 04 Dec 2017) | 22 lines parse.y: Fix a location of NODE_BLOCK_PASS * parse.y (arg_append_gen): Update the last location of NODE_BLOCK_PASS when NODE is appended to nd_head. e.g. The locations of the NODE_BLOCK_PASS is fixed: ``` o[1, &bl] = :c ``` * Before ``` NODE_BLOCK_PASS (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 8) ``` * After ``` NODE_BLOCK_PASS (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 14) ``` ------------------------------------------------------------------------ r61010 | yui-knk | 2017-12-04 16:50:42 +0900 (Mon, 04 Dec 2017) | 22 lines parse.y: Fix a location of NODE_ARGSCAT * parse.y (arg_append_gen): Update the last location of NODE_ARGSCAT when NODE is appended to nd_body. e.g. The locations of the NODE_ARGSCAT is fixed: ``` m(*a, :b, :c) ``` * Before ``` NODE_ARGSCAT (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 8) ``` * After ``` NODE_ARGSCAT (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 12) ``` ------------------------------------------------------------------------ r61009 | nobu | 2017-12-04 16:37:21 +0900 (Mon, 04 Dec 2017) | 7 lines hide internal data objects * marshal.c (compat_allocator_table): hide the wrapper object of compat_allocator_tbl. * process.c (rb_execarg_new): hide wrapper objects of struct rb_execarg. ------------------------------------------------------------------------ r61008 | yui-knk | 2017-12-04 16:16:31 +0900 (Mon, 04 Dec 2017) | 22 lines parse.y: Fix a location of NODE_ARRAY in NODE_ARGSCAT * parse.y: Fix the first location to be equal to the location of the first element of NODE_ARRAY. e.g. The locations of the NODE_ARRAY is fixed: ``` m(*a, :b, :c) ``` * Before ``` NODE_ARRAY (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 12) ``` * After ``` NODE_ARRAY (line: 1, first_lineno: 1, first_column: 6, last_lineno: 1, last_column: 12) ``` ------------------------------------------------------------------------ r61007 | usa | 2017-12-04 15:41:28 +0900 (Mon, 04 Dec 2017) | 5 lines try to pass compiling with VC12 * win32/win32.c (FILE_ID_128): it's not defined in SDK with VC10, but seems to be defined in SDK with VC12. ------------------------------------------------------------------------ r61006 | nobu | 2017-12-04 15:08:30 +0900 (Mon, 04 Dec 2017) | 5 lines ifaddr.c: fix memsize * ext/socket/ifaddr.c (ifaddr_memsize): do not count the whole rb_ifaddr_t array for each elements. the header size is included in the first element for the time being. ------------------------------------------------------------------------ r61005 | usa | 2017-12-04 12:33:48 +0900 (Mon, 04 Dec 2017) | 7 lines support `File.identical?` on ReFS * file.c (rb_file_idenitical_p): move Windows dependent code to win32/win32.c. * win32/win32.c (rb_w32_file_identical_p): support ReFS. see [Feature #13731] [ruby-dev:50166] ------------------------------------------------------------------------ r61004 | mrkn | 2017-12-04 11:35:41 +0900 (Mon, 04 Dec 2017) | 1 line NEWS: add Integer#pow(b, m) ------------------------------------------------------------------------ r61003 | mrkn | 2017-12-04 11:35:40 +0900 (Mon, 04 Dec 2017) | 34 lines bignum.c, numeric.c: add Integer#pow(b, m) This commit is based on the pull-request #1320 created by Makoto Kishimoto. [Feature #12508] [Feature #11003] [close GH-1320] * bignum.c (rb_int_powm): Added for Integer#pow(b, m). * internal.h (rb_int_powm): Declared to refer in numeric.c. * bignum.c (bary_powm_gmp): Added for Integer#pow(b, m) using GMP. * bignum.c (int_pow_tmp1): Added for implementing Integer#pow(b, m). * bignum.c (int_pow_tmp2, int_pow_tmp3): ditto. * internal.h (rb_num_positive_int_p): Moved from numeric.c for sharing the definition with bignum.c. * internal.h (rb_num_negative_int_p, rb_num_compare_with_zero): ditto. * numeric.c(negative_int_p): Moved to internal.h for sharing the definition with bignum.c. * numeric.c (positive_int_p, compare_with_zero): ditto. * numeric.c (rb_int_odd_p): Exported (renamed from int_odd_p). * internal.h (rb_int_odd_p): ditto. * internal.h (HALF_LONG_MSB): Added. * numeric.c (SQRT_LONG_MAX): Redefined by using HALF_LONG_MSB. * test/ruby/test_numeric.rb (test_pow): Added for Integer#pow(b, m). ------------------------------------------------------------------------ r61002 | usa | 2017-12-04 09:23:31 +0900 (Mon, 04 Dec 2017) | 5 lines revert r60999 * test/logger/test_logdevice.rb: revert r60999 because it was caused by not committed changes. ------------------------------------------------------------------------ r61001 | nobu | 2017-12-04 08:54:45 +0900 (Mon, 04 Dec 2017) | 4 lines ifaddr.c: unused member * ext/socket/ifaddr.c (struct rb_ifaddr_tag): removed set but unused member root. ------------------------------------------------------------------------ r61000 | yui-knk | 2017-12-04 08:12:01 +0900 (Mon, 04 Dec 2017) | 21 lines parse.y: Fix a location of NODE_ZARRAY * parse.y: Fix to only include a range of opt_call_args. e.g. The locations of the NODE_ZARRAY is fixed: ``` a[] ||= 1 ``` * Before ``` NODE_ZARRAY (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 9) ``` * After ``` NODE_ZARRAY (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 3) ``` ------------------------------------------------------------------------ r60999 | svn | 2017-12-04 00:49:06 +0900 (Mon, 04 Dec 2017) | 1 line * 2017-12-04 ------------------------------------------------------------------------ r60998 | usa | 2017-12-04 00:49:05 +0900 (Mon, 04 Dec 2017) | 5 lines give a change to determine to rotate the log or not * test/logger/test_logdevice.rb (test_shifting_{age,period_suffix}): give a chance to determine to rotate the log or not. ------------------------------------------------------------------------ r60997 | yui-knk | 2017-12-03 21:44:47 +0900 (Sun, 03 Dec 2017) | 1 line parse.y (new_args_gen): Set the location of NODE_ARGS ------------------------------------------------------------------------ r60996 | yui-knk | 2017-12-03 21:27:01 +0900 (Sun, 03 Dec 2017) | 21 lines parse.y: Fix a location of NODE_DVAR in rb_args_info * parse.y (new_args_tail_gen): Set only a location of NODE_DVAR. e.g. The locations of the NODE_DVAR is fixed: ``` def a(k: 1, **kws) end ``` * Before ``` NODE_DVAR (line: 1, first_lineno: 1, first_column: 6, last_lineno: 1, last_column: 18) ``` * After ``` NODE_DVAR (line: 1, first_lineno: 1, first_column: 12, last_lineno: 1, last_column: 17) ``` ------------------------------------------------------------------------ r60995 | naruse | 2017-12-03 21:11:19 +0900 (Sun, 03 Dec 2017) | 1 line Set binmode to handle non ASCII commit message ------------------------------------------------------------------------ r60994 | nobu | 2017-12-03 21:10:19 +0900 (Sun, 03 Dec 2017) | 5 lines common.mk: ignore error * common.mk ($(REVISION_H)): ignore error when git not found. `--suppress_not_found` option suppresses a warning but does not ignore the error. ------------------------------------------------------------------------ r60993 | naruse | 2017-12-03 21:06:16 +0900 (Sun, 03 Dec 2017) | 1 line Add test for Bug::String.buf_new ------------------------------------------------------------------------ r60992 | shugo | 2017-12-03 17:35:44 +0900 (Sun, 03 Dec 2017) | 3 lines Specify refinement inheritance by Module#include. [ruby-core:79880] [Bug #13271] ------------------------------------------------------------------------ r60991 | shugo | 2017-12-03 17:10:42 +0900 (Sun, 03 Dec 2017) | 4 lines Fix a documentation error of IO#putc. IO#putc is multi-byte character safe when a String is given as its argument. [ruby-core:82019] [Bug #13741] ------------------------------------------------------------------------ r60990 | shugo | 2017-12-03 17:02:56 +0900 (Sun, 03 Dec 2017) | 1 line Init functions should have prefix to avoid confliction. ------------------------------------------------------------------------ r60989 | yui-knk | 2017-12-03 15:53:18 +0900 (Sun, 03 Dec 2017) | 1 line parse.y: Set a location of NODE_NIL in `not()` ------------------------------------------------------------------------ r60988 | nobu | 2017-12-03 15:14:58 +0900 (Sun, 03 Dec 2017) | 4 lines parse.y: location of BEGIN * parse.y (top_stmt): wrap BEGIN statement to store the whole location for each block. ------------------------------------------------------------------------ r60987 | nobu | 2017-12-03 14:08:17 +0900 (Sun, 03 Dec 2017) | 1 line common.mk: suppress an error message when git not found ------------------------------------------------------------------------ r60986 | yui-knk | 2017-12-03 13:53:05 +0900 (Sun, 03 Dec 2017) | 23 lines parse.y: Fix locations of NODEs generated by cond0 * parse.y: Fix to only include a range of the first argument of cond. e.g. The locations of the NODE_MATCH2 and NODE_GVAR are fixed: ``` 1 while /#{:a}/ ``` * Before ``` NODE_MATCH2 (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 15) NODE_GVAR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 15) ``` * After ``` NODE_MATCH2 (line: 1, first_lineno: 1, first_column: 8, last_lineno: 1, last_column: 15) NODE_GVAR (line: 1, first_lineno: 1, first_column: 8, last_lineno: 1, last_column: 15) ``` ------------------------------------------------------------------------ r60985 | nobu | 2017-12-03 13:41:06 +0900 (Sun, 03 Dec 2017) | 4 lines setup.mak: make Makefile stable * win32/setup.mak (-basic-vars-): moved BASERUBY and HAVE_BASERUBY definition to make Makefile stable when they have been defaulted. ------------------------------------------------------------------------ r60984 | shugo | 2017-12-03 09:39:26 +0900 (Sun, 03 Dec 2017) | 4 lines The superclass of a refinement should have BasicObject as its ancestor. Otherwise, VM_ASSERT(callable_method_entry_p(cme)) in prepare_callable_method_entry() fails if VM_CHECK_MODE is 2. ------------------------------------------------------------------------ r60983 | svn | 2017-12-03 00:41:08 +0900 (Sun, 03 Dec 2017) | 1 line * 2017-12-03 ------------------------------------------------------------------------ r60982 | naruse | 2017-12-03 00:41:08 +0900 (Sun, 03 Dec 2017) | 1 line static ------------------------------------------------------------------------ r60981 | naruse | 2017-12-03 00:41:07 +0900 (Sun, 03 Dec 2017) | 1 line Update dependencies ------------------------------------------------------------------------ r60980 | shugo | 2017-12-02 19:54:39 +0900 (Sat, 02 Dec 2017) | 6 lines Modules should not have subclasses. When refining a module, the module was set to the superclass of its refinement, and a segmentation fault occurred. The superclass of the refinement should be an iclass of the module. [ruby-core:83617] [Bug #14070] ------------------------------------------------------------------------ r60979 | nobu | 2017-12-02 16:09:16 +0900 (Sat, 02 Dec 2017) | 4 lines string.c: fix rb_external_str_new_with_enc * string.c (rb_external_str_new_with_enc): do not search non-ascii by NULL pointer. [ruby-core:84055] [Bug #14150] ------------------------------------------------------------------------ r60978 | nobu | 2017-12-02 12:16:01 +0900 (Sat, 02 Dec 2017) | 4 lines common.mk: fix message * common.mk (update-unicode-property-files): fix emoji version in the message. ------------------------------------------------------------------------ r60977 | nobu | 2017-12-02 12:12:51 +0900 (Sat, 02 Dec 2017) | 8 lines fix for emoji-data.txt * common.mk: download emoji-data.txt. As emoji data files are located in a separate directory in Unicode.org site, reearranged Unicode data files directories same as the site. * tool/enc-unicode.rb (get_file): search emoji data files in the second argument path. ------------------------------------------------------------------------ r60976 | nobu | 2017-12-02 12:12:50 +0900 (Sat, 02 Dec 2017) | 4 lines enc-unicode.rb: for gperf 3.1 * tool/enc-unicode.rb: support for gperf 3.1, which defines length arguments as `size_t` but a local variable as `unsigned int`. ------------------------------------------------------------------------ r60975 | eregon | 2017-12-02 02:51:16 +0900 (Sat, 02 Dec 2017) | 1 line Update to ruby/spec@e2d0d1e ------------------------------------------------------------------------ r60974 | svn | 2017-12-02 00:41:52 +0900 (Sat, 02 Dec 2017) | 1 line * append newline at EOF. ------------------------------------------------------------------------ r60973 | eregon | 2017-12-02 00:41:50 +0900 (Sat, 02 Dec 2017) | 1 line Update to ruby/spec@bacedc5 ------------------------------------------------------------------------ r60972 | eregon | 2017-12-02 00:41:23 +0900 (Sat, 02 Dec 2017) | 1 line Update to ruby/mspec@b501ade ------------------------------------------------------------------------ r60971 | svn | 2017-12-02 00:09:42 +0900 (Sat, 02 Dec 2017) | 1 line * 2017-12-02 ------------------------------------------------------------------------ r60970 | naruse | 2017-12-02 00:09:41 +0900 (Sat, 02 Dec 2017) | 6 lines Append "//" if empty host for file or postgres URI https://url.spec.whatwg.org/#url-serializing > Otherwise, if url's host is null and url's scheme is "file", append "//" to output. URL spec doesn't says anything about postgres, but assume the same thing. ------------------------------------------------------------------------ r60969 | naruse | 2017-12-01 23:32:12 +0900 (Fri, 01 Dec 2017) | 1 line re-apply r60755 ------------------------------------------------------------------------ r60968 | svn | 2017-12-01 23:08:14 +0900 (Fri, 01 Dec 2017) | 1 line * properties. ------------------------------------------------------------------------ r60967 | naruse | 2017-12-01 23:08:13 +0900 (Fri, 01 Dec 2017) | 1 line Add missing file ------------------------------------------------------------------------ r60966 | naruse | 2017-12-01 22:50:13 +0900 (Fri, 01 Dec 2017) | 3 lines Update to Onigmo 6.1.3-669ac9997619954c298da971fcfacccf36909d05. [Bug #13892] ------------------------------------------------------------------------ r60965 | yui-knk | 2017-12-01 22:40:03 +0900 (Fri, 01 Dec 2017) | 23 lines parse.y: Fix locations of NODEs related to for statement * parse.y: Fix to only include a range of for_var. e.g. The locations of the NODE_ARGS and NODE_DVAR are fixed: ``` for a in m do n end ``` * Before ``` NODE_ARGS (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 19) NODE_DVAR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 19) ``` * After ``` NODE_ARGS (line: 1, first_lineno: 1, first_column: 4, last_lineno: 1, last_column: 5) NODE_DVAR (line: 1, first_lineno: 1, first_column: 4, last_lineno: 1, last_column: 5) ``` ------------------------------------------------------------------------ r60964 | k0kubun | 2017-12-01 21:26:40 +0900 (Fri, 01 Dec 2017) | 12 lines vm.c: partially revert r60558 because it was actually used in https://github.com/tmm1/rbtrace/blob/v0.4.8/ext/rbtrace.c#L329 and deprecated in r60579 AFTER removal in r60558. ko1 agreed that we should keep just deprecated in Ruby 2.5 and remove it later, and I'm commiting this because I want to make rbtrace.gem installation successful. backward.h: modify r60579 to make rb_frame_method_id_and_class() compilable. ------------------------------------------------------------------------ r60963 | nobu | 2017-12-01 21:00:10 +0900 (Fri, 01 Dec 2017) | 1 line vm_trace.c: suppress -Wclobbered warning ------------------------------------------------------------------------ r60962 | nobu | 2017-12-01 21:00:09 +0900 (Fri, 01 Dec 2017) | 6 lines vm_trace.c: remove duplicate flag * vm_trace.c (rb_suppress_tracing): remove duplicate flag `tracing`, which equals to `ec->trace_arg != NULL`. and that `ec->trace_arg` points `dummy_trace_arg` means it was NULL at the beginning. ------------------------------------------------------------------------ r60961 | akr | 2017-12-01 19:48:29 +0900 (Fri, 01 Dec 2017) | 51 lines Replace Kernel#pp after PP class is defined. Avoid a race condition which a context switch occur after replacing Kernel#pp but before defining PP class. Following patch, inserting sleep, makes this problem reproducible. ``` Index: lib/pp.rb =================================================================== --- lib/pp.rb (revision 60960) +++ lib/pp.rb (working copy) @@ -26,6 +26,7 @@ module Kernel end undef __pp_backup__ if method_defined?(:__pp_backup__) module_function :pp + sleep 1 # thread context switch end ## ``` With the above patch, "uninitialized constant Kernel::PP" can happen as as follows. ``` % ./ruby -w -Ilib -e ' t1 = Thread.new { Thread.current.report_on_exception = true pp :foo1 } t2 = Thread.new { Thread.current.report_on_exception = true sleep 0.5 pp :foo2 } t1.join rescue nil t2.join rescue nil ' #<Thread:0x000055dbf926eaa0@-e:6 run> terminated with exception: Traceback (most recent call last): 3: from -e:9:in `block in <main>' 2: from /home/ruby/tst2/ruby/lib/pp.rb:22:in `pp' 1: from /home/ruby/tst2/ruby/lib/pp.rb:22:in `each' /home/ruby/tst2/ruby/lib/pp.rb:23:in `block in pp': uninitialized constant Kernel::PP (NameError) :foo1 ``` ------------------------------------------------------------------------ r60960 | yui-knk | 2017-12-01 18:48:17 +0900 (Fri, 01 Dec 2017) | 21 lines parse.y: Fix a location of NODE_HASH * parse.y: Fix to only include a range of assocs. e.g. The locations of the NODE_HASH is fixed: ``` a(1, b: 10, &block) ``` * Before ``` NODE_HASH (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 18) ``` * After ``` NODE_HASH (line: 1, first_lineno: 1, first_column: 5, last_lineno: 1, last_column: 10) ``` ------------------------------------------------------------------------ r60959 | mrkn | 2017-12-01 17:35:58 +0900 (Fri, 01 Dec 2017) | 3 lines NEWS: Net::HTTP is a stdlib [ci skip] ------------------------------------------------------------------------ r60958 | yui-knk | 2017-12-01 15:32:59 +0900 (Fri, 01 Dec 2017) | 21 lines parse.y: Fix a location of hash keys * parse.y: Use @1 to only include a range of tLABEL. e.g. The locations of the NODE_LIT(:b) is fixed: ``` a(1, b: 10) ``` * Before ``` NODE_LIT (line: 1, first_lineno: 1, first_column: 5, last_lineno: 1, last_column: 10) ``` * After ``` NODE_LIT (line: 1, first_lineno: 1, first_column: 5, last_lineno: 1, last_column: 7) ``` ------------------------------------------------------------------------ r60957 | usa | 2017-12-01 14:32:29 +0900 (Fri, 01 Dec 2017) | 5 lines bold/underscore support in traceback before Windows10 * io.c (rb_write_error2): call `rb_w32_write_console()` when the device is tty, like `rb_write_error_str()`. ------------------------------------------------------------------------ r60956 | hsbt | 2017-12-01 13:39:49 +0900 (Fri, 01 Dec 2017) | 1 line Added repository url for default gems. ------------------------------------------------------------------------ r60955 | nobu | 2017-12-01 13:27:32 +0900 (Fri, 01 Dec 2017) | 1 line prelude.c.tmpl: escape comments ------------------------------------------------------------------------ r60954 | hsbt | 2017-12-01 13:25:32 +0900 (Fri, 01 Dec 2017) | 1 line Added bundler entry to documentation of library and maintainers. ------------------------------------------------------------------------ r60953 | nobu | 2017-12-01 12:54:50 +0900 (Fri, 01 Dec 2017) | 5 lines prelude.c.tmpl: split prelude code * template/prelude.c.tmpl: split prelude code into blocks so that each elements do not exceed the string literal size limit in C89. ------------------------------------------------------------------------ r60952 | nobu | 2017-12-01 12:54:49 +0900 (Fri, 01 Dec 2017) | 1 line prelude.rb: suppress redefinition warnings ------------------------------------------------------------------------ r60951 | hsbt | 2017-12-01 10:52:26 +0900 (Fri, 01 Dec 2017) | 3 lines Merge psych-3.0.0. See NEWS file for this update details. ------------------------------------------------------------------------ r60950 | usa | 2017-12-01 10:29:50 +0900 (Fri, 01 Dec 2017) | 5 lines revert r60873 * template/prelude.c.tmpl (translate): revert r60873 because when some errors or warnings are shown their line numbers are shifted. ------------------------------------------------------------------------ r60949 | svn | 2017-12-01 09:41:18 +0900 (Fri, 01 Dec 2017) | 1 line * 2017-12-01 ------------------------------------------------------------------------ r60948 | mame | 2017-12-01 09:41:17 +0900 (Fri, 01 Dec 2017) | 1 line lib/pp.rb (Kernel#pp): Fix a race condition ------------------------------------------------------------------------ r60945 | mame | 2017-11-30 11:12:42 +0900 (Thu, 30 Nov 2017) | 1 line prelude.rb (Kernel#pp): Fix a delegation bug ------------------------------------------------------------------------ r60944 | mame | 2017-11-30 10:31:00 +0900 (Thu, 30 Nov 2017) | 3 lines prelude.rb: Add Kernel#pp, a trigger for lib/pp.rb [Feature #14123] ------------------------------------------------------------------------ r60943 | marcandre | 2017-11-30 04:46:46 +0900 (Thu, 30 Nov 2017) | 1 line Cherrypick 9f8d3d0 from ruby/spec ------------------------------------------------------------------------ r60942 | marcandre | 2017-11-30 02:47:59 +0900 (Thu, 30 Nov 2017) | 1 line Make Module#{define|alias|undef|remove}_method public [#14133] ------------------------------------------------------------------------ r60941 | svn | 2017-11-30 02:47:48 +0900 (Thu, 30 Nov 2017) | 1 line * 2017-11-30 ------------------------------------------------------------------------ r60940 | marcandre | 2017-11-30 02:47:47 +0900 (Thu, 30 Nov 2017) | 1 line Make Module#attr{accessor|reader|writer|} public [#14132] ------------------------------------------------------------------------ r60939 | nobu | 2017-11-29 23:48:02 +0900 (Wed, 29 Nov 2017) | 1 line configure.ac: fixed a typo [Feature #4052] ------------------------------------------------------------------------ r60938 | naruse | 2017-11-29 21:04:24 +0900 (Wed, 29 Nov 2017) | 1 line Update information about Oniguruma/Onigmo [Bug #13818] ------------------------------------------------------------------------ r60937 | k0kubun | 2017-11-29 20:27:32 +0900 (Wed, 29 Nov 2017) | 9 lines test_workspace.rb: prefer using skip rather than ignoring test definition to know untestability when executing test with `-v`. Also this simplifies check using `MiniTest::Unit::Guard#windows?`. This change is suggested by @MSP-Greg here: https://github.com/ruby/ruby/commit/7128849c8c5fce8df450379db54136fd21fab6ad#commitcomment-25836745 ------------------------------------------------------------------------ r60936 | sorah | 2017-11-29 20:16:14 +0900 (Wed, 29 Nov 2017) | 3 lines Typo... the feature committed at r60935 [Feature #14140] [ruby-core:83963] ------------------------------------------------------------------------ r60935 | sorah | 2017-11-29 20:14:23 +0900 (Wed, 29 Nov 2017) | 6 lines Log exception with bold and underline for TTYs Print error message in bold/underlined text if STDERR is unchanged and a tty. [Feature #14160] [experimental] Screenshot: https://img.sorah.jp/s/2017-11-29_1711_xj2fu.png ------------------------------------------------------------------------ r60934 | nobu | 2017-11-29 19:38:36 +0900 (Wed, 29 Nov 2017) | 1 line spec/ruby/optional/capi/constants_spec.rb: Data is deprecated now ------------------------------------------------------------------------ r60933 | nobu | 2017-11-29 18:59:20 +0900 (Wed, 29 Nov 2017) | 3 lines file.c: File.lutime * file.c (utime_internal): add File.lutime. [Feature #4052] ------------------------------------------------------------------------ r60932 | svn | 2017-11-29 17:39:48 +0900 (Wed, 29 Nov 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60931 | shugo | 2017-11-29 17:39:47 +0900 (Wed, 29 Nov 2017) | 5 lines Unused module refinement shouldn't break method search. Use rb_callable_method_entry_t::defined_class instead of rb_callable_method_entry_t::owner, because the superclass of iclass should be searched for modules. [ruby-core:83613] [Bug #14068] ------------------------------------------------------------------------ r60930 | nobu | 2017-11-29 17:23:16 +0900 (Wed, 29 Nov 2017) | 4 lines object.c: deprecate Data * object.c (InitVM_Object): Data is deprecated now. [Feature #3072] ------------------------------------------------------------------------ r60929 | nobu | 2017-11-29 16:57:48 +0900 (Wed, 29 Nov 2017) | 6 lines strscan.c: add MatchData-like methods * ext/strscan/strscan.c: added `size`, `captures` and `values_at` to StringScanner, shorthands of accessing the matched data. based on the patch by apeiros (Stefan Rusterholz) at [ruby-core:20412]. [Feature #836] ------------------------------------------------------------------------ r60928 | svn | 2017-11-29 07:30:29 +0900 (Wed, 29 Nov 2017) | 1 line * 2017-11-29 ------------------------------------------------------------------------ r60927 | hsbt | 2017-11-29 07:30:28 +0900 (Wed, 29 Nov 2017) | 3 lines Merge rubygems-2.7.3. http://blog.rubygems.org/2017/11/28/2.7.3-released.html ------------------------------------------------------------------------ r60926 | yui-knk | 2017-11-28 15:19:04 +0900 (Tue, 28 Nov 2017) | 1 line Fix typos ------------------------------------------------------------------------ r60925 | normal | 2017-11-28 12:28:35 +0900 (Tue, 28 Nov 2017) | 23 lines file: release GVL for access(2) syscalls Like stat(2), the access(2) syscall may take an indeterminate amount of time on slow/remote filesystems. This lets the following methods release the GVL to avoid choking the entire VM while one thread is stuck on a slow or non-responsive filesystem: - File.readable? - File.readable_real? - File.writable? - File.writable_real? - File.executable? - File.executable_real? * file.c (nogvl_eaccess): new function (nogvl_access): ditto (rb_access): new wrapper function (rb_eaccess): release GVL (rb_file_readable_real_p): use rb_access (rb_file_writable_real_p): ditto (rb_file_executable_real_p): ditto ------------------------------------------------------------------------ r60924 | svn | 2017-11-28 11:27:48 +0900 (Tue, 28 Nov 2017) | 1 line * 2017-11-28 ------------------------------------------------------------------------ r60923 | ko1 | 2017-11-28 11:27:47 +0900 (Tue, 28 Nov 2017) | 9 lines check ruby_vm_event_flags everytime. * vm_insnhelper.c (vm_trace): use EXEC_EVENT_HOOK() instead of EXEC_EVENT_HOOK_VM_TRACE(). The latter macro assumes `ruby_vm_event_flags` is constant in `vm_trace()` function, but it can be changed in hook functions. * vm_core.h (EXEC_EVENT_HOOK_VM_TRACE): removed. ------------------------------------------------------------------------ r60922 | hsbt | 2017-11-27 20:02:48 +0900 (Mon, 27 Nov 2017) | 1 line Ignored obsoleted `bundle_ruby` command from upstream. ------------------------------------------------------------------------ r60921 | svn | 2017-11-27 19:45:27 +0900 (Mon, 27 Nov 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60920 | hsbt | 2017-11-27 19:45:24 +0900 (Mon, 27 Nov 2017) | 3 lines Merge rdoc-6.0.0.beta4 from upstream. It version applied `frozen_string_literal: true` ------------------------------------------------------------------------ r60919 | nobu | 2017-11-27 15:59:07 +0900 (Mon, 27 Nov 2017) | 4 lines psych_parser.c: fix compile error * ext/psych/psych_parser.c (parse): fix declarations after statement, which cause compile error on mswin. ------------------------------------------------------------------------ r60918 | hsbt | 2017-11-27 14:38:48 +0900 (Mon, 27 Nov 2017) | 3 lines Ignored `bundle_ruby` example with Ruby core. It was ignored with Bundler-1.15.x. It's regression at r60603. ------------------------------------------------------------------------ r60917 | hsbt | 2017-11-27 12:11:18 +0900 (Mon, 27 Nov 2017) | 1 line Merge psych-3.0.0.beta4 from upstream. ------------------------------------------------------------------------ r60916 | ko1 | 2017-11-27 11:11:36 +0900 (Mon, 27 Nov 2017) | 5 lines Ignore failures related to threading. * test/lib/tracepointchecker.rb: ignore "deletion trace" check when there are threads other than the main thread. ------------------------------------------------------------------------ r60915 | ko1 | 2017-11-27 09:43:23 +0900 (Mon, 27 Nov 2017) | 7 lines Relax `rb_bug()` condition. * iseq.c (rb_iseq_trace_set): simply return immediately if ISeq::compile_data is available. Not sure why this state is allowed, but exception during compile (or `ISeq::load`) can make such states. ------------------------------------------------------------------------ r60914 | yui-knk | 2017-11-27 08:52:47 +0900 (Mon, 27 Nov 2017) | 22 lines parse.y: Fix the last location of NODE_KW_ARG * parse.y (kwd_append): Update the last location of NODE_KW_ARG when NODE is appended to the last. e.g. The locations of the first NODE_KW_ARG is fixed: ``` def a(b: 1, c: 2); end ``` * Before ``` NODE_KW_ARG (line: 1, first_lineno: 1, first_column: 6, last_lineno: 1, last_column: 10) ``` * After ``` NODE_KW_ARG (line: 1, first_lineno: 1, first_column: 6, last_lineno: 1, last_column: 16) ``` ------------------------------------------------------------------------ r60913 | svn | 2017-11-27 08:33:24 +0900 (Mon, 27 Nov 2017) | 1 line * 2017-11-27 ------------------------------------------------------------------------ r60912 | yui-knk | 2017-11-27 08:33:23 +0900 (Mon, 27 Nov 2017) | 22 lines parse.y: Fix the last location of NODE_OPT_ARG * parse.y (opt_arg_append): Update the last location of NODE_OPT_ARG when NODE is appended to the last. e.g. The locations of the first NODE_OPT_ARG is fixed: ``` def a(b = 1, c = 2); end ``` * Before ``` NODE_OPT_ARG (line: 1, first_lineno: 1, first_column: 6, last_lineno: 1, last_column: 11) ``` * After ``` NODE_OPT_ARG (line: 1, first_lineno: 1, first_column: 6, last_lineno: 1, last_column: 18) ``` ------------------------------------------------------------------------ r60911 | rhe | 2017-11-26 19:33:32 +0900 (Sun, 26 Nov 2017) | 8 lines openssl: sync with 2475d94517b4 Merge a commit from upstream: 01445af367ec test/test_ssl: prevent changing default internal encoding OpenSSL::TestSSL#test_fallback_scsv could change the default internal encoding accidentally, causing other unrelated test cases to fail. ------------------------------------------------------------------------ r60910 | nobu | 2017-11-26 11:11:24 +0900 (Sun, 26 Nov 2017) | 1 line leakchecker.rb: no conversion ------------------------------------------------------------------------ r60909 | svn | 2017-11-26 10:36:34 +0900 (Sun, 26 Nov 2017) | 1 line * 2017-11-26 ------------------------------------------------------------------------ r60908 | nobu | 2017-11-26 10:36:33 +0900 (Sun, 26 Nov 2017) | 1 line util.h: remove my_getcwd ------------------------------------------------------------------------ r60907 | rhe | 2017-11-25 23:12:08 +0900 (Sat, 25 Nov 2017) | 47 lines openssl: import v2.1.0.beta2 Import Ruby/OpenSSL 2.1.0.beta2. The full commit log since commit e72d960db262 which was imported by r60013 can be found at: https://github.com/ruby/openssl/compare/e72d960db262...v2.1.0.beta2 ---------------------------------------------------------------- Kazuki Yamaguchi (26): bn: use ALLOCV() macro instead of xmalloc() appveyor.yml: remove 'openssl version' line test/test_ssl_session: skip tests for session_remove_cb x509ext: implement X509::Extension#== x509attr: implement X509::Attribute#== x509cert: implement X509::Certificate#== x509revoked: add missing X509::Revoked#to_der x509crl, x509revoked: implement X509::{CRL,Revoked}#== x509req: implement X509::Request#== ssl: extract rb_intern("call") cipher: disallow setting AAD for non-AEAD ciphers test/test_cipher: fix test_non_aead_cipher_set_auth_data failure ssl: fix conflict of options in SSLContext#set_params buffering: let #write accept multiple arguments pkey: make pkey_check_public_key() non-static x509cert, x509crl, x509req, ns_spki: check sanity of public key test/envutil: port assert_warning from Ruby trunk test/utils: remove a pointless .public_key call in issue_cert ssl: add SSLContext#add_certificate test/test_ssl: fix test_security_level Drop support for LibreSSL 2.4 kdf: add HKDF support test/test_x509cert: fix flaky test test/test_x509crl: fix random failure History.md: fix a typo Ruby/OpenSSL 2.1.0.beta2 Mark Wright (1): Fix build failure against OpenSSL 1.1 built with no-deprecated Thanks rhenium for the code review and fixes. Peter Karman (1): Add RSA sign_pss() and verify_pss() methods aeris (1): TLS Fallback Signaling Cipher Suite Value kazu (1): Use caller with length to reduce unused strings ------------------------------------------------------------------------ r60906 | rhe | 2017-11-25 23:12:07 +0900 (Sat, 25 Nov 2017) | 3 lines openssl: revert changes in SSLContext#{min,max}_version= in r60310 And adapt a net/http test to their old behavior. [ruby-core:83491] ------------------------------------------------------------------------ r60905 | yui-knk | 2017-11-25 20:57:33 +0900 (Sat, 25 Nov 2017) | 4 lines parse.y: opt_arg_append * parse.y (opt_arg_append): extract optional arguments append. ------------------------------------------------------------------------ r60904 | svn | 2017-11-25 10:39:46 +0900 (Sat, 25 Nov 2017) | 1 line * 2017-11-25 ------------------------------------------------------------------------ r60903 | yui-knk | 2017-11-25 10:39:45 +0900 (Sat, 25 Nov 2017) | 26 lines parse.y: Fix a location of assignable nodes * parse.y (new_op_assign_gen): Update the location of lhs when NODE_OP_ASGN_OR/NODE_OP_ASGN_AND are generated. When NODE_OP_ASGN_OR/NODE_OP_ASGN_AND are generated a nd_value of lhs is set, so it is needed to update a location of lhs to include a location of rhs (same as node_assign_gen). e.g. The locations of NODE_DASGN_CURR is fixed: ``` a ||= 1 ``` * Before ``` NODE_DASGN_CURR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 1) ``` * After ``` NODE_DASGN_CURR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 7) ``` ------------------------------------------------------------------------ r60902 | yui-knk | 2017-11-24 22:08:21 +0900 (Fri, 24 Nov 2017) | 4 lines node.h: Remove not used macros * node.h (nd_modl, nd_clss_, nd_tval, nd_visi_): Remove not used macros. ------------------------------------------------------------------------ r60901 | k0kubun | 2017-11-24 21:37:07 +0900 (Fri, 24 Nov 2017) | 11 lines test_workspace.rb: skip test failing on windows > Note that all files are always readable > https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/chmod-wchmod It seems that we can't make a file unreadable with `File.chmod` on Windows. When file can't be read, File::EACCES is raised on Windows too. So r60900 should work anyway, but I don't know how to let it happen by Ruby code. I tried to open file before reading it, but I couldn't reproduce File::EACCES too. ------------------------------------------------------------------------ r60900 | kazu | 2017-11-24 20:00:10 +0900 (Fri, 24 Nov 2017) | 1 line Fix TOCTTOU and avoid to read existing unreadable file ------------------------------------------------------------------------ r60899 | kazu | 2017-11-24 20:00:08 +0900 (Fri, 24 Nov 2017) | 1 line Fix typos [ci skip] ------------------------------------------------------------------------ r60898 | nobu | 2017-11-24 14:46:55 +0900 (Fri, 24 Nov 2017) | 1 line test/irb/test_workspace.rb: fix SCRIPT_LINES__ ------------------------------------------------------------------------ r60897 | nobu | 2017-11-24 14:44:58 +0900 (Fri, 24 Nov 2017) | 1 line workspace.rb: one more space ------------------------------------------------------------------------ r60896 | nobu | 2017-11-24 14:00:56 +0900 (Fri, 24 Nov 2017) | 6 lines workspace.rb: fix SCRIPT_LINES__ * lib/irb/workspace.rb (code_around_binding): `SCRIPT_LINES__` values are arrays of lines. get file and line at once. moved loop-invariant format string. join without extra strings by `$,`. ------------------------------------------------------------------------ r60895 | normal | 2017-11-24 13:49:05 +0900 (Fri, 24 Nov 2017) | 8 lines file.c: simplify eaccess(3) callers This will make future work to release GVL here simpler. * file.c (rb_eaccess): new function (rb_file_readable_p): use rb_eaccess (rb_file_writable_p): ditto (rb_file_executable_p): ditto ------------------------------------------------------------------------ r60894 | k0kubun | 2017-11-24 13:29:49 +0900 (Fri, 24 Nov 2017) | 3 lines NEWS: note about r57274 fixed r60888 to have Feature number too. ------------------------------------------------------------------------ r60893 | nobu | 2017-11-24 13:26:29 +0900 (Fri, 24 Nov 2017) | 3 lines parse.y: make_array * parse.y (make_array): turn NULL node into zero length array. ------------------------------------------------------------------------ r60892 | nobu | 2017-11-24 13:26:27 +0900 (Fri, 24 Nov 2017) | 8 lines parse.y: refactor list literals * parse.y (words, symbols, qwords, qsymbols): unify empty list and non-empty list. * parse.y (parser_parse_string): always dispatch a word separator at the beginning of list literals. [ruby-core:83871] [Bug #14126] ------------------------------------------------------------------------ r60891 | nobu | 2017-11-24 13:26:23 +0900 (Fri, 24 Nov 2017) | 5 lines test_parser_events.rb: results of list literals * test/ripper/test_parser_events.rb (test_qwords_add), (test_qsymbols_add, test_symbols_add, test_words_add): more assertions for results of list literals. ------------------------------------------------------------------------ r60890 | svn | 2017-11-24 12:53:30 +0900 (Fri, 24 Nov 2017) | 1 line * properties. ------------------------------------------------------------------------ r60889 | svn | 2017-11-24 12:53:28 +0900 (Fri, 24 Nov 2017) | 1 line * 2017-11-24 ------------------------------------------------------------------------ r60888 | k0kubun | 2017-11-24 12:53:27 +0900 (Fri, 24 Nov 2017) | 3 lines irb.rb: show source around binding.irb on start [Feature #14124] [ruby-dev:50319] [close GH-1764] ------------------------------------------------------------------------ r60887 | yui-knk | 2017-11-23 23:15:27 +0900 (Thu, 23 Nov 2017) | 22 lines parse.y: Fix a location of serial NODE_AND/NODE_OR * parse.y (logop_gen): Update the last location of NODE_AND/NODE_OR when NODE is appended to the last. e.g. The locations of NODE_AND is fixed: ``` a && b && c ``` * Before ``` NODE_AND (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 6) ``` * After ``` NODE_AND (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 11) ``` ------------------------------------------------------------------------ r60886 | k0kubun | 2017-11-23 23:04:24 +0900 (Thu, 23 Nov 2017) | 12 lines .travis.yml: revert "workaround to resolve ::1" This commit reverts r60736. Shibata-san reported the cause of r60736 to Travis and it seems fixed: https://github.com/travis-ci/travis-ci/issues/8780 In another CI, I found "::1 ip6-localhost ip6-loopback" in build system information, unlike "::1 localhost ip6-localhost ip6-loopback" that had failed in Ruby's CI on Travis. Let's try Container-based environment again. ------------------------------------------------------------------------ r60885 | yui-knk | 2017-11-23 20:52:36 +0900 (Thu, 23 Nov 2017) | 4 lines thread.c: Update documents * thread.c (rb_default_coverage): Update documents of internal data structures for branch coverage. ------------------------------------------------------------------------ r60884 | nobu | 2017-11-23 16:10:56 +0900 (Thu, 23 Nov 2017) | 4 lines io.c: read BOM only for reading * io.c (io_strip_bom): just abandon detecting UTF encoding by BOM unless opened for reading. ------------------------------------------------------------------------ r60883 | nobu | 2017-11-23 13:30:23 +0900 (Thu, 23 Nov 2017) | 8 lines ripper.y: fix word list events * parse.y (parser_skip_words_sep): QWORDS_BEG should not include the first separators in ripper. * parse.y (parser_parse_string): WORDS_SEP should not include the closing parentheses of a word list in ripper, should include spaces at beginning of lines. [ruby-core:83864] [Bug #14126] ------------------------------------------------------------------------ r60882 | nobu | 2017-11-23 12:14:12 +0900 (Thu, 23 Nov 2017) | 1 line debug.c: include RIMemo in ruby_dummy_gdb_enums ------------------------------------------------------------------------ r60881 | stomar | 2017-11-23 06:13:51 +0900 (Thu, 23 Nov 2017) | 1 line lib/set.rb: [DOC] remove empty comments ------------------------------------------------------------------------ r60880 | svn | 2017-11-23 05:58:25 +0900 (Thu, 23 Nov 2017) | 1 line * 2017-11-23 ------------------------------------------------------------------------ r60879 | stomar | 2017-11-23 05:58:24 +0900 (Thu, 23 Nov 2017) | 5 lines set.rb: improve docs for Set * lib/set.rb: [DOC] add examples for Set#replace, add examples for creating a set from a hash with duplicates, simplify and fix style of some other examples, fix typos. ------------------------------------------------------------------------ r60878 | svn | 2017-11-22 21:32:42 +0900 (Wed, 22 Nov 2017) | 1 line * 2017-11-22 ------------------------------------------------------------------------ r60877 | yui-knk | 2017-11-22 21:32:41 +0900 (Wed, 22 Nov 2017) | 22 lines parse.y: Fix the locations of NODE_BLOCK_PASS * parse.y (arg_blk_pass): Update the first location of NODE_BLOCK_PASS if nd_head is assigned. e.g. The locations of NODE_BLOCK_PASS is fixed: ``` a(1, &:to_s) ``` * Before ``` NODE_BLOCK_PASS (line: 1, first_lineno: 1, first_column: 5, last_lineno: 1, last_column: 11) ``` * After ``` NODE_BLOCK_PASS (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 11) ``` ------------------------------------------------------------------------ r60876 | kazu | 2017-11-21 21:29:52 +0900 (Tue, 21 Nov 2017) | 1 line Fix a typo ------------------------------------------------------------------------ r60875 | kazu | 2017-11-21 21:29:51 +0900 (Tue, 21 Nov 2017) | 4 lines Use `const void*` instead of `const char*` Use cast from `char*` to `void*` instead of union in opendir_without_gvl, because convert from `void*` to `char*` without union in nogvl_opendir. ------------------------------------------------------------------------ r60874 | nobu | 2017-11-21 20:15:51 +0900 (Tue, 21 Nov 2017) | 4 lines vm_args.c: ec arg of args_setup_kw_parameters * vm_args.c (args_setup_kw_parameters): use same ec as the caller. make arguments order consistent with other functions. ------------------------------------------------------------------------ r60873 | usa | 2017-11-21 17:48:07 +0900 (Tue, 21 Nov 2017) | 5 lines Skip comment lines * template/prelude.c.tmpl (translate): empty (only LF) lines are not necessary. so skip them, but for safety only when they are made from comment line. ------------------------------------------------------------------------ r60872 | nobu | 2017-11-21 14:01:28 +0900 (Tue, 21 Nov 2017) | 6 lines fix test_erb.rb [GH-1763] * test/erb/test_erb.rb (test_run): require stringio. suppress an unused variable warning. From: MSP-Greg <MSP-Greg@users.noreply.github.com> ------------------------------------------------------------------------ r60871 | ko1 | 2017-11-21 11:57:01 +0900 (Tue, 21 Nov 2017) | 5 lines check invariant. * iseq.c (rb_iseq_trace_set): at this point ISEQ_USE_COMPILE_DATA should not be set. ------------------------------------------------------------------------ r60870 | eregon | 2017-11-21 09:56:09 +0900 (Tue, 21 Nov 2017) | 1 line test/ruby/bug-13526.rb: should wait until all threads are stopped ------------------------------------------------------------------------ r60869 | yui-knk | 2017-11-21 09:47:00 +0900 (Tue, 21 Nov 2017) | 26 lines parse.y: Fix the locations of NODE in percent strings * parse.y (parser_yylex): token_flush before calling parse_string. Without token_flush the first locations of NODE in percent strings are set to the location of %. e.g. The locations of NODE_STR is fixed: ``` %w[a b] ``` * Before ``` NODE_STR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 4) ("a") NODE_STR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 6) ("b") ``` * After ``` NODE_STR (line: 1, first_lineno: 1, first_column: 3, last_lineno: 1, last_column: 4) ("a") NODE_STR (line: 1, first_lineno: 1, first_column: 5, last_lineno: 1, last_column: 6) ("b") ``` ------------------------------------------------------------------------ r60868 | yui-knk | 2017-11-21 08:58:42 +0900 (Tue, 21 Nov 2017) | 21 lines parse.y: Fix the last location of NODE_STR in %w * parse.y: Use @2 to only include a range of tSTRING_CONTENT. e.g. The locations of NODE_STR is fixed: ``` %w[a] ``` * Before ``` NODE_STR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 5) ``` * After ``` NODE_STR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 4) ``` ------------------------------------------------------------------------ r60867 | yui-knk | 2017-11-21 08:37:01 +0900 (Tue, 21 Nov 2017) | 23 lines parse.y: Set the last location of NODE_ARRAY in %w * parse.y: list_append uses the locations of the second argument. So we should set the locations of $2 before pass it to list_append. e.g. The locations of NODE_ARRAY is fixed: ``` %w[a b] ``` * Before ``` NODE_ARRAY (line: 1, first_lineno: 1, first_column: 0, last_lineno: 0, last_column: -1) ``` * After ``` NODE_ARRAY (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 7) ``` ------------------------------------------------------------------------ r60866 | yui-knk | 2017-11-21 08:12:43 +0900 (Tue, 21 Nov 2017) | 21 lines parse.y: Fix the last location of NODE_LIT in %i * parse.y: Use @2 to not include a range of ' '. e.g. The locations of NODE_LIT is fixed: ``` %i[a] ``` * Before ``` NODE_LIT (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 5) ``` * After ``` NODE_LIT (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 4) ``` ------------------------------------------------------------------------ r60865 | svn | 2017-11-21 07:48:06 +0900 (Tue, 21 Nov 2017) | 1 line * 2017-11-21 ------------------------------------------------------------------------ r60864 | yui-knk | 2017-11-21 07:48:05 +0900 (Tue, 21 Nov 2017) | 23 lines parse.y: Set the last location of NODE_ARRAY in %i * parse.y: list_append uses the locations of the second argument. So we should set the locations of $2 before pass it to list_append. e.g. The locations of NODE_ARRAY is fixed: ``` %i[a b] ``` * Before ``` NODE_ARRAY (line: 1, first_lineno: 1, first_column: 0, last_lineno: 0, last_column: -1) ``` * After ``` NODE_ARRAY (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 7) ``` ------------------------------------------------------------------------ r60863 | kazu | 2017-11-20 21:57:08 +0900 (Mon, 20 Nov 2017) | 1 line [DOC] Fix example result [ci skip] ------------------------------------------------------------------------ r60862 | yui-knk | 2017-11-20 15:00:04 +0900 (Mon, 20 Nov 2017) | 22 lines parse.y: Fix the locations of NODE_FCALL * parse.y: Update the locations of NODE_FCALL when nd_args is determined. e.g. The locations of NODE_FCALL is fixed: ``` a 1 ``` * Before ``` NODE_FCALL (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 1) ``` * After ``` NODE_FCALL (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 3) ``` ------------------------------------------------------------------------ r60861 | normal | 2017-11-20 11:29:35 +0900 (Mon, 20 Nov 2017) | 8 lines File.mkfifo releases GVL mkfifo(3) is subject to the same problems as open(2) on slow filesystems. Release the GVL and let the rest of the VM run while we call mkfifo. * file.c (nogvl_mkfifo): new function (rb_file_s_mkfifo): release GVL ------------------------------------------------------------------------ r60860 | marcandre | 2017-11-20 11:18:43 +0900 (Mon, 20 Nov 2017) | 3 lines lib/matrix: Add hadamard_product/entrywise_product. Based on a patch by Charley Hutchison. [GH-674] ------------------------------------------------------------------------ r60859 | marcandre | 2017-11-20 11:18:34 +0900 (Mon, 20 Nov 2017) | 1 line lib/matrix: Add Matrix{.|#}combine ------------------------------------------------------------------------ r60858 | marcandre | 2017-11-20 11:18:23 +0900 (Mon, 20 Nov 2017) | 1 line lib/matrix: accept vectors in {h|v}stack ------------------------------------------------------------------------ r60857 | marcandre | 2017-11-20 11:18:12 +0900 (Mon, 20 Nov 2017) | 1 line lib/matrix: Add explicit coercion #to_matrix ------------------------------------------------------------------------ r60856 | nobu | 2017-11-20 10:17:43 +0900 (Mon, 20 Nov 2017) | 10 lines win32.c: vm_exit_handler * win32/win32.c (vm_exit_handler): separate exit handler for resources which must be released at exit of Ruby VM. * win32/win32.c (socklist_insert, constat_handle): install the VM exit handler. * gc.c (ENABLE_VM_OBJSPACE): no longer needs process global object space on Windows too. ------------------------------------------------------------------------ r60855 | yui-knk | 2017-11-20 08:59:32 +0900 (Mon, 20 Nov 2017) | 22 lines Update the last location of NODE_BLOCK * parse.y (block_append_gen): Update the last location of NODE_BLOCK when a tail is appended. e.g. The locations of NODE_BLOCK is fixed: ``` a; b; c ``` * Before ``` NODE_BLOCK (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 4) ``` * After ``` NODE_BLOCK (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 7) ``` ------------------------------------------------------------------------ r60854 | eregon | 2017-11-20 00:15:49 +0900 (Mon, 20 Nov 2017) | 4 lines test/ruby/bug-13526.rb: Fix to actually refer to an existing file * Add Thread.report_on_exception=true to catch problems early. * Increase the number of Thread.pass to let the autoload start. ------------------------------------------------------------------------ r60853 | svn | 2017-11-20 00:15:32 +0900 (Mon, 20 Nov 2017) | 1 line * properties. ------------------------------------------------------------------------ r60852 | svn | 2017-11-20 00:15:32 +0900 (Mon, 20 Nov 2017) | 1 line * append newline at EOF. ------------------------------------------------------------------------ r60851 | eregon | 2017-11-20 00:15:31 +0900 (Mon, 20 Nov 2017) | 3 lines Add specs for concurrent Module#autoload * When the file does not exist or the constant is not set. ------------------------------------------------------------------------ r60850 | svn | 2017-11-20 00:15:13 +0900 (Mon, 20 Nov 2017) | 1 line * 2017-11-20 ------------------------------------------------------------------------ r60849 | eregon | 2017-11-20 00:15:12 +0900 (Mon, 20 Nov 2017) | 1 line Reorganize Module#autoload to have similar specs next to each other ------------------------------------------------------------------------ r60848 | nobu | 2017-11-19 16:07:42 +0900 (Sun, 19 Nov 2017) | 1 line gc.c: moved ENABLE_VM_OBJSPACE from vm_core.h ------------------------------------------------------------------------ r60847 | normal | 2017-11-19 14:23:48 +0900 (Sun, 19 Nov 2017) | 7 lines file.c (rb_file_s_mkfifo): use mode_t instead of int mode_t is the correct type for mkfifo(3). This fixes an oversight from r60592 which made the same change to several other functions. * file.c (rb_file_s_mkfifo): use mode_t instead of int ------------------------------------------------------------------------ r60846 | normal | 2017-11-19 14:03:22 +0900 (Sun, 19 Nov 2017) | 4 lines file.c: fix 64-bit conversion warnings from r60844 * file.c (nogvl_truncate): cast int to VALUE before "void *" (rb_file_s_truncate): cast "void *" to VALUE before int ------------------------------------------------------------------------ r60845 | normal | 2017-11-19 14:03:17 +0900 (Sun, 19 Nov 2017) | 9 lines File.readlink and rb_readlink releases GVL The `readlink' can stall on slow filesystems like `open' and `read' syscalls. Release the GVL and let the rest of the VM function while `readlink' runs. * file.c (nogvl_readlink): new function (readlink_without_gvl): ditto (rb_readlink): use readlink_without_gvl ------------------------------------------------------------------------ r60844 | normal | 2017-11-19 07:45:11 +0900 (Sun, 19 Nov 2017) | 10 lines file: File#truncate and File.truncate release GVL Like IO#write and IO.open, these file operations have unpredictable performance on slow file systems. Allow other threads of the VM to proceed while they are taking place. * file.c (nogvl_truncate): extract from rb_file_s_truncate (rb_file_s_truncate): release GVL (nogvl_ftruncate): extract from rb_file_truncate (rb_file_truncate): release GVL ------------------------------------------------------------------------ r60843 | normal | 2017-11-19 06:57:38 +0900 (Sun, 19 Nov 2017) | 8 lines addr2line.c: fix r60841 for glibc before 2.22 SHF_COMPRESSED was not defined until glibc 2.22, and there are older distros (e.g. Debian 8.x jessie) which do not have this defined. Perhaps it is safe to define SHF_COMPRESSED to (1 << 11) ourselves, too, since ELF should be a standardized format. ------------------------------------------------------------------------ r60842 | svn | 2017-11-19 03:05:40 +0900 (Sun, 19 Nov 2017) | 1 line * 2017-11-19 ------------------------------------------------------------------------ r60841 | naruse | 2017-11-19 03:05:39 +0900 (Sun, 19 Nov 2017) | 5 lines explictly skip compressed debug line To identify the line of backtrace with ease, show the offset address of library. You can just find the source filename and the line with `addr2line -e libruby.so.2.5.0 0xXXXX` ------------------------------------------------------------------------ r60840 | yui-knk | 2017-11-18 22:11:36 +0900 (Sat, 18 Nov 2017) | 22 lines parse.y: Fix the locations of NODE_ITER * parse.y: Update the locations of NODE_ITER when nd_iter is determined. e.g. The locations of NODE_ITER is fixed: ``` a {b} ``` * Before ``` NODE_ITER (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 5) ``` * After ``` NODE_ITER (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 5) ``` ------------------------------------------------------------------------ r60839 | ko1 | 2017-11-18 22:01:12 +0900 (Sat, 18 Nov 2017) | 5 lines call only with ISEQ_TRACE_EVENTS. * vm_insnhelper.c (vm_trace): rb_iseq_trace_set() only accepts ISEQ_TRACE_EVENTS. ------------------------------------------------------------------------ r60838 | ko1 | 2017-11-18 18:39:41 +0900 (Sat, 18 Nov 2017) | 18 lines introduce `trace_events' info for iseq. * vm_core.h (rb_iseq_t::aux): add `trace_events` which represents which events are enabled on this iseq. With this information, we can skip useless trace-on changes for ISeqs. * vm_trace.c (RUBY_EVENTS_TRACE_BY_ISEQ): moved to iseq.h and rename it with ISEQ_TRACE_EVENTS. * iseq.h: introduce ISEQ_USE_COMPILE_DATA iseq (imemo) flag to represent COMPILE_DATA is available. In other words, iseq->aux.trace_events is not available when this flag is set. * ISEQ_COMPILE_DATA() is changed from a macro. * ISEQ_COMPILE_DATA_ALLOC() is added. * ISEQ_COMPILE_DATA_CLEAR() is added. * iseq.c: use them. ------------------------------------------------------------------------ r60837 | usa | 2017-11-18 17:25:29 +0900 (Sat, 18 Nov 2017) | 6 lines Cannot call rb_thread_call_with{out,}_gvl before running VM * dir.c (opendir_without_gvl, with_gvl_gc_for_fd, opendir_at): check the VM is already initialized before calling rb_thread_call_with{out,}_gvl(). [Bug #14115] ------------------------------------------------------------------------ r60836 | yui-knk | 2017-11-18 17:21:46 +0900 (Sat, 18 Nov 2017) | 22 lines parse.y: Fix the locations of NODE_DVAR and NODE_LVAR * parse.y: Fix the locations of NODE_DVAR and NODE_LVAR when it's a multiple assignment method parameter. e.g. The locations of NODE_DVAR is fixed: ``` a {|(b, c)| d} ``` * Before ``` NODE_DVAR (line: 1, first_lineno: 1, first_column: 4, last_lineno: 1, last_column: 10) ``` * After ``` NODE_DVAR (line: 1, first_lineno: 1, first_column: 5, last_lineno: 1, last_column: 9) ``` ------------------------------------------------------------------------ r60835 | ktsj | 2017-11-18 15:24:52 +0900 (Sat, 18 Nov 2017) | 3 lines .gdbinit: fix print_pathobj $str is not C string but RString. ------------------------------------------------------------------------ r60834 | ktsj | 2017-11-18 14:45:21 +0900 (Sat, 18 Nov 2017) | 4 lines .gdbinit: follow up changes in r60726 rb_iseq_constant_body::line_info_size and line_info_table have been renamed to insns_info_size, insns_info. ------------------------------------------------------------------------ r60833 | yui-knk | 2017-11-18 12:32:05 +0900 (Sat, 18 Nov 2017) | 1 line parse.y: Use node_assign ------------------------------------------------------------------------ r60832 | suke | 2017-11-18 11:53:39 +0900 (Sat, 18 Nov 2017) | 4 lines * ext/win32ole/win32ole.c: use WIN32OLEQueryInterfaceError when failed to query com interface. * ext/win32ole/win32ole_event.c: ditto. * ext/win32ole/win32ole_method.c: ditto. ------------------------------------------------------------------------ r60831 | normal | 2017-11-18 11:01:49 +0900 (Sat, 18 Nov 2017) | 12 lines dir.c: openat calls release GVL, too openat(2) also performs a path lookup, so it is also subject to pathological slowdowns like opendir(3) and open(2) syscalls. * dir.c (struct opendir_at_arg): new struct for callback (with_gvl_gc_for_fd): new callback for rb_thread_call_with_gvl (gc_for_fd_with_gvl): moved up (nogvl_opendir_at): extracted from do_opendir (opendir_at): new wrapper to release GVL for opendir_at (do_opendir): use new wrappers to release GVL (nogvl_dir_empty_p): adjust for gc_for_fd_with_gvl ------------------------------------------------------------------------ r60830 | normal | 2017-11-18 11:01:44 +0900 (Sat, 18 Nov 2017) | 10 lines dir: release GVL on opendir opendir(3) is subject to the same pathological slowdowns on slow or unreliable filesystems as open(2), so release the GVL to avoid stalling the entire VM like we do with IO#open * dir.c (nogvl_opendir): new function (opendir_without_gvl): new function (dir_initialize): s/opendir/&_without_gvl/ (do_opendir): ditto ------------------------------------------------------------------------ r60829 | yui-knk | 2017-11-18 10:40:13 +0900 (Sat, 18 Nov 2017) | 23 lines Update the last location of NODE_ARRAY * parse.y (list_append_gen, list_concat): Update the last location of NODE_ARRAY when an item is appended or concatenated with another NODE_ARRAY. e.g. The locations of NODE_ARRAY is fixed: ``` a(1,2,3) ``` * Before ``` NODE_ARRAY (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 3) ``` * After ``` NODE_ARRAY (line: 1, first_lineno: 1, first_column: 2, last_lineno: 1, last_column: 7) ``` ------------------------------------------------------------------------ r60828 | svn | 2017-11-18 00:08:04 +0900 (Sat, 18 Nov 2017) | 1 line * 2017-11-18 ------------------------------------------------------------------------ r60827 | kazu | 2017-11-18 00:08:03 +0900 (Sat, 18 Nov 2017) | 5 lines Fix typo in `Timeout` doc [ci skip] Author: yuuji.yaginuma <yuuji.yaginuma@gmail.com> https://github.com/ruby/ruby/pull/1760 [Fix GH-1760] ------------------------------------------------------------------------ r60826 | nobu | 2017-11-17 21:16:31 +0900 (Fri, 17 Nov 2017) | 1 line parse.y: RUBY_SET_YYLLOC to rb_parser_set_location ------------------------------------------------------------------------ r60825 | nobu | 2017-11-17 21:16:30 +0900 (Fri, 17 Nov 2017) | 6 lines parse.y: RUBY_SET_YYLLOC * parse.y (RUBY_SET_YYLLOC): extract setting locations from the source line. * parse.y (yylex): use RUBY_SET_YYLLOC. ------------------------------------------------------------------------ r60824 | knu | 2017-11-17 18:48:47 +0900 (Fri, 17 Nov 2017) | 4 lines Add examples to Set documentation [ci skip] GitHub PR: https://github.com/ruby/ruby/pull/1752 [Fix GH-1752] Submitted by: @Ana06 <anamma06@gmail.com> ------------------------------------------------------------------------ r60823 | yui-knk | 2017-11-17 17:23:06 +0900 (Fri, 17 Nov 2017) | 5 lines NODE_CALL is not passed to node_assign_gen * parse.y (node_assign_gen): NODE_CALL is not passed to node_assign_gen. NODE_CALL is not assignable. Assignable method call (array set and attr set) is represented by NODE_ATTRASGN. ------------------------------------------------------------------------ r60822 | ko1 | 2017-11-17 16:47:03 +0900 (Fri, 17 Nov 2017) | 4 lines don't use `goto`. * vm_trace.c (rb_exec_event_hooks): we don't need to use goto statement. ------------------------------------------------------------------------ r60821 | yui-knk | 2017-11-17 16:39:15 +0900 (Fri, 17 Nov 2017) | 24 lines Fix location of assignable nodes * parse.y (node_assign_gen): NODE_ATTRASGN is created before rhs is created. It is needed to set location after rhs is created to rhs range be included to the location of NODE_ATTRASGN. e.g. The locations of NODE_ATTRASGN is fixed: ``` a[1] = 2 ``` * Before ``` NODE_ATTRASGN (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 4) ``` * After ``` NODE_ATTRASGN (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 8) ``` ------------------------------------------------------------------------ r60820 | ko1 | 2017-11-17 16:29:07 +0900 (Fri, 17 Nov 2017) | 6 lines remove a wrong assertion. * iseq.c (rb_iseq_trace_set): remove a wrong assertion. This assertion checked `insn` is `trace_` prefix instruction but threaded code `insn` is original code. ------------------------------------------------------------------------ r60819 | ko1 | 2017-11-17 15:59:22 +0900 (Fri, 17 Nov 2017) | 7 lines reuse gvar value. * vm_core.h (EXEC_EVENT_HOOK_VM_TRACE): added to pass vm_event_flags (== ruby_vm_event_flags) as a macro parameter. * vm_insnhelper.c (vm_trace): use an added macro. ------------------------------------------------------------------------ r60818 | svn | 2017-11-17 15:24:56 +0900 (Fri, 17 Nov 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60817 | ko1 | 2017-11-17 15:24:55 +0900 (Fri, 17 Nov 2017) | 10 lines remove `trace_` prefix insns lazily. * vm_trace.c (update_global_event_hook): set only when tracing is added. If tracing was off (event flags are decreased), then ignore them. Next `trace_` prefix instruction will trace off itself (lazy tracing off). * vm_insnhelper.c (vm_trace): trace-off for when trace is not needed. * iseq.c (rb_iseq_trace_set): fix trace-off process (it was never off tracing). ------------------------------------------------------------------------ r60816 | yui-knk | 2017-11-17 13:25:48 +0900 (Fri, 17 Nov 2017) | 24 lines Fix location of assignable nodes * parse.y (node_assign_gen): In some case assignable nodes are created before rhs is created. In this case it is needed to set location after rhs is shifted to rhs range be included to assignable nodes. e.g. The locations of NODE_DASGN_CURR is fixed: ``` a = 10 ``` * Before ``` NODE_DASGN_CURR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 1) ``` * After ``` NODE_DASGN_CURR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 6) ``` ------------------------------------------------------------------------ r60815 | svn | 2017-11-17 08:13:25 +0900 (Fri, 17 Nov 2017) | 1 line * 2017-11-17 ------------------------------------------------------------------------ r60814 | yui-knk | 2017-11-17 08:13:24 +0900 (Fri, 17 Nov 2017) | 27 lines Fix location of NODEs generated by new_op_assign_gen * parse.y (new_op_assign_gen): Use a location of lhs when call gettable, bacause gettable creates a variable node. Use a location of rhs when call new_list, because item of new_list is rhs. The locations of NODE_DVAR(nd_vid: :a) and NODE_ARRAY are fixed: ``` a -= 1 ``` * Before ``` NODE_DVAR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 6) NODE_ARRAY (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 6) ``` * After ``` NODE_DVAR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 1) NODE_ARRAY (line: 1, first_lineno: 1, first_column: 5, last_lineno: 1, last_column: 6) ``` ------------------------------------------------------------------------ r60813 | usa | 2017-11-16 21:26:04 +0900 (Thu, 16 Nov 2017) | 6 lines Old gem file had not been removed * common.mk (update-gems): `old.delete("gems/#{gem}")` always returns nil because when really downloading new gem, the filename is not in `old`. the real intention of this condition might be checking `old` is empty or not. ------------------------------------------------------------------------ r60812 | mame | 2017-11-16 20:03:37 +0900 (Thu, 16 Nov 2017) | 1 line Refactoring out the direct accesses of NODE's u1, u2, and u3 ------------------------------------------------------------------------ r60811 | k0kubun | 2017-11-16 19:02:03 +0900 (Thu, 16 Nov 2017) | 12 lines thread_win32.c: stop returning unused value to unify signature with pthread's one I'm planning to use functions for rb_nativethread_cond_t and rb_nativethread_mutex_t in the future JIT introduction. In that case, I want them to have the same signature. To prevent the case that its return value is used in somewhere and it becomes harder to unify signature, I want to drop unused return value. [close GH-1751] ------------------------------------------------------------------------ r60810 | ko1 | 2017-11-16 18:24:48 +0900 (Thu, 16 Nov 2017) | 5 lines remove an unused function. * eval.c (rb_iterator_p): removed because nobody use it and not exposed by headers. ------------------------------------------------------------------------ r60809 | ko1 | 2017-11-16 18:00:15 +0900 (Thu, 16 Nov 2017) | 5 lines make a func static. * vm_backtrace.c (rb_ec_backtrace_location_ary): make it static and remove `rb_` prefix. ------------------------------------------------------------------------ r60808 | ko1 | 2017-11-16 17:53:49 +0900 (Thu, 16 Nov 2017) | 4 lines make a func static. * vm_method.c (rb_resolve_refined_method_callable): make it static. ------------------------------------------------------------------------ r60807 | ko1 | 2017-11-16 17:48:59 +0900 (Thu, 16 Nov 2017) | 7 lines make funcs static. * thread.c (rb_threadptr_trap_interrupt): make it static and remove `rb_` prefix. * thread.c (rb_threadptr_pending_interrupt_active_p): ditto. ------------------------------------------------------------------------ r60806 | ko1 | 2017-11-16 17:19:46 +0900 (Thu, 16 Nov 2017) | 6 lines make funcs static. * node.c: make them static: * rb_node_buffer_new * rb_node_buffer_free ------------------------------------------------------------------------ r60805 | ko1 | 2017-11-16 17:01:26 +0900 (Thu, 16 Nov 2017) | 4 lines make a func static. * addr2line.c (main_exe_path): make it static. ------------------------------------------------------------------------ r60804 | ko1 | 2017-11-16 16:56:56 +0900 (Thu, 16 Nov 2017) | 4 lines remove unused func. * gc.c (rb_garbage_collect): removed. ------------------------------------------------------------------------ r60803 | ko1 | 2017-11-16 16:49:43 +0900 (Thu, 16 Nov 2017) | 4 lines make a func static. * vm_eval.c (rb_f_block_given_p): make it static. ------------------------------------------------------------------------ r60802 | ko1 | 2017-11-16 16:47:33 +0900 (Thu, 16 Nov 2017) | 4 lines make a func static. * vm_eval.c (rb_f_public_send): make it static. ------------------------------------------------------------------------ r60801 | ko1 | 2017-11-16 16:46:05 +0900 (Thu, 16 Nov 2017) | 4 lines remove unused function. * vm_method.c (rb_method_entry_with_refinements): removed. ------------------------------------------------------------------------ r60800 | ko1 | 2017-11-16 16:43:27 +0900 (Thu, 16 Nov 2017) | 5 lines make a func static. * vm.c (rb_proc_create_from_captured): make this func static and renmae with vm_ prefix. ------------------------------------------------------------------------ r60799 | ko1 | 2017-11-16 16:41:33 +0900 (Thu, 16 Nov 2017) | 4 lines export rb_tracearg_callee_id(). * include/ruby/debug.h (rb_tracearg_callee_id): export. ------------------------------------------------------------------------ r60798 | ko1 | 2017-11-16 16:38:41 +0900 (Thu, 16 Nov 2017) | 5 lines make a func static. * vm_eval.c (rb_raise_method_missing): make this func static and renmae with vm_ prefix. ------------------------------------------------------------------------ r60797 | ko1 | 2017-11-16 16:28:16 +0900 (Thu, 16 Nov 2017) | 4 lines make it static. * vm.c (rb_thread_mark): now file local. ------------------------------------------------------------------------ r60796 | ko1 | 2017-11-16 16:25:30 +0900 (Thu, 16 Nov 2017) | 9 lines provide rb_vm_make_proc/lambda(). * vm.c (rb_vm_make_proc): removed. * vm_core.h: provide utility inline functions * rb_vm_make_proc() * rb_vm_make_lambda() to call rb_vm_make_proc_lambda(). ------------------------------------------------------------------------ r60795 | ko1 | 2017-11-16 16:14:45 +0900 (Thu, 16 Nov 2017) | 4 lines remove unused function. * vm_insnhelper.c (rb_vm_env_write): remove unused function. ------------------------------------------------------------------------ r60794 | ko1 | 2017-11-16 15:10:31 +0900 (Thu, 16 Nov 2017) | 4 lines accepts `ec` as first parameter. * vm_insnhelper.c (vm_check_match): accepts `ec` as first parameter. ------------------------------------------------------------------------ r60793 | ko1 | 2017-11-16 14:56:21 +0900 (Thu, 16 Nov 2017) | 4 lines fix r60792. * error.c (warning_string): `file` is already cstr. ------------------------------------------------------------------------ r60792 | ko1 | 2017-11-16 14:52:19 +0900 (Thu, 16 Nov 2017) | 7 lines `rb_source_loc` -> `rb_source_location_cstr` * vm.c (rb_source_loc): rename to rb_source_location_cstr() to make behavior clear compare with rb_source_location(). * error.c (warning_string): use rb_source_location_cstr() directly. ------------------------------------------------------------------------ r60791 | ko1 | 2017-11-16 14:45:44 +0900 (Thu, 16 Nov 2017) | 4 lines fix r60789. * vm.c (rb_source_loc): fix condition. ------------------------------------------------------------------------ r60790 | nobu | 2017-11-16 14:36:42 +0900 (Thu, 16 Nov 2017) | 4 lines parse.y: no return in class * parse.y (k_return): prohibit return in class/module body except for singleton class. ------------------------------------------------------------------------ r60789 | ko1 | 2017-11-16 14:35:58 +0900 (Thu, 16 Nov 2017) | 4 lines rb_source_location() may return nil. * vm.c (rb_source_location): return nil if path is not found. ------------------------------------------------------------------------ r60788 | ko1 | 2017-11-16 14:18:29 +0900 (Thu, 16 Nov 2017) | 4 lines remove an unused function. * vm.c (rb_sourcefilename): removed because nobody use it. ------------------------------------------------------------------------ r60787 | ko1 | 2017-11-16 14:14:18 +0900 (Thu, 16 Nov 2017) | 6 lines add `ec` as first parameter. * vm.c (vm_svar_get): accepts `ec` as first parameter. * vm.c (vm_svar_set): ditto. ------------------------------------------------------------------------ r60786 | ko1 | 2017-11-16 13:37:02 +0900 (Thu, 16 Nov 2017) | 4 lines fix up r60782 and r60783. * cont.c (cont_restore_thread): re-check a condition (pointed by nobu). ------------------------------------------------------------------------ r60785 | yui-knk | 2017-11-16 12:36:20 +0900 (Thu, 16 Nov 2017) | 12 lines Add a last location to branch coverage * compile.c (DECL_BRANCH_BASE, ADD_TRACE_BRANCH_COVERAGE): Add a last location to arguments. * compile.c (compile_if, compile_case, compile_case2, compile_loop, iseq_compile_each0): Pass a last location to macros. * ext/coverage/coverage.c (branch_coverage): Add a last location to a return value. * test/coverage/test_coverage.rb: Follow-up these changes. ------------------------------------------------------------------------ r60784 | kazu | 2017-11-16 12:32:23 +0900 (Thu, 16 Nov 2017) | 4 lines Regexp#===: Use `\A` and `\z` instead of `^` and `$` [ci skip] ref https://github.com/rurema/doctree/pull/812 ------------------------------------------------------------------------ r60783 | ko1 | 2017-11-16 11:53:17 +0900 (Thu, 16 Nov 2017) | 4 lines avoid duplicated-cond compile error. * cont.c (cont_restore_thread): fix duplicated-cond compile error. ------------------------------------------------------------------------ r60782 | ko1 | 2017-11-16 11:47:58 +0900 (Thu, 16 Nov 2017) | 17 lines cleanup hook cleanup code. * vm_trace.c: before this patch, deleted hooks are remvoed at *the beggining* of hooks (exec_hooks_precheck). This patch cleanup deleted hooks at (1) just after hook is deleted (TracePoint#disable and so on) (2) just after executing hooks (exec_hooks_postcheck) Most of time (1) is enough, but if some threads running hooks, we need to wait cleaning up deleted hooks until threads finish running the hooks. This is why (2) is introduced (and this is why current impl cleanup deleted hooks at the beggining of hooks). * test/lib/tracepointchecker.rb: check also the number of delete waiting hooks. * cont.c (cont_restore_thread): fix VM->trace_running count. ------------------------------------------------------------------------ r60781 | yui-knk | 2017-11-16 10:56:54 +0900 (Thu, 16 Nov 2017) | 24 lines parse.y: Fix location of asgn node * parse.y (new_op_assign_gen): Fix location of asgn node. Assignable node (e.g. NODE_LASGN) is generated before rhs is generated, so we reset the location when nd_value of asgn is fixed. e.g. : ``` a -= 10 ``` * Before ``` NODE_DASGN_CURR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 1) ``` * After ``` NODE_DASGN_CURR (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 7) ``` ------------------------------------------------------------------------ r60780 | yui-knk | 2017-11-16 10:06:10 +0900 (Thu, 16 Nov 2017) | 39 lines parse.y: Preserve previous line and restore it when read '\n' * parse.y (parser_params): Add prevline to store previous line. * parse.y (yycompile0): Initialize prevline with 0. * parse.y (parser_nextline): Store previous line on prevline. * parse.y (parser_nextc): Check parser is on EOF or has nextline. Now parser_yylex does not always set lex_p as lex_pend, we should check EOF flag and nextline is set. * parse.y (parser_yylex): Restore previous line, set lex_p and tokp on '\n'. Before this commit, tokp is on the head of next line of '\n' and lex_p is on the tail of next line when next token is '\n'. By this behavior, in some case the last column of NODE_CALL (or NODE_QCALL) is set to the last column of next line. NODE_CALL can be generated via `primary_value call_op operation2 {} opt_paren_args` and opt_paren_args can be none. If none is generated with next token '\n', the last column of none is set to the last column of next line. e.g. : ``` a.b cd.ef ``` The location of NODE_CALL of first line is set to, * Before ``` NODE_CALL (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 6) ``` * After ``` NODE_CALL (line: 1, first_lineno: 1, first_column: 0, last_lineno: 1, last_column: 3) ``` * parse.y (parser_mark): GC mark prevline. ------------------------------------------------------------------------ r60779 | svn | 2017-11-16 02:07:55 +0900 (Thu, 16 Nov 2017) | 1 line * 2017-11-16 ------------------------------------------------------------------------ r60778 | hsbt | 2017-11-16 02:07:54 +0900 (Thu, 16 Nov 2017) | 1 line Bump rake-12.3.0 on bundled gems. ------------------------------------------------------------------------ r60777 | kazu | 2017-11-15 22:53:15 +0900 (Wed, 15 Nov 2017) | 1 line Remove redundant last newline [ci skip] ------------------------------------------------------------------------ r60776 | ko1 | 2017-11-15 22:21:24 +0900 (Wed, 15 Nov 2017) | 12 lines remove rb_thread_t::event_hooks. * vm_core.h (rb_thread_t): remove rb_thread_t::event_hooks. * vm_trace.c: all hooks are connected to vm->event_hooks and add rb_event_hook_t::filter::th to filter invoke thread. It will simplify invoking hooks code. * thread.c (thread_start_func_2): clear thread specific trace_func. * test/ruby/test_settracefunc.rb: add a test for Thread#add_trace_func. ------------------------------------------------------------------------ r60775 | nobu | 2017-11-15 17:02:09 +0900 (Wed, 15 Nov 2017) | 4 lines tmpdir.rb: merged make_tmpname to create * lib/tmpdir.rb (Dir::Tmpname#create): try conversion of prefix and suffix just once before loop. ------------------------------------------------------------------------ r60774 | normal | 2017-11-15 16:24:26 +0900 (Wed, 15 Nov 2017) | 14 lines dir.c: revert r60772, r60770, and r60769 Using readdir(3) without any locking causes thread-safety problems if directory streams get shared between threads. On ancient platforms, readdir(3) may have thread-safety problems even on different directory streams. Using readdir_r(3) is not viable, either, as it's deprecated due to name overflow problems. So for now, rely on GVL as in previous Rubies and perhaps consider per-"struct dir_data" mutexes for modern platforms which allow concurrent calls to readdir(3) on different directory streams. ------------------------------------------------------------------------ r60773 | nobu | 2017-11-15 14:50:10 +0900 (Wed, 15 Nov 2017) | 4 lines thread.c: use ec * thread.c (call_without_gvl): use execution context for RUBY_VM_CHECK_INTS_BLOCKING. ------------------------------------------------------------------------ r60772 | usa | 2017-11-15 14:18:37 +0900 (Wed, 15 Nov 2017) | 6 lines Cannot call rb_thread_call_without_gvl before running VM * dir.c (readdir_without_gvl): check the VM is already initialized before calling rb_thread_call_without_gvl(). [Bug #14108] ------------------------------------------------------------------------ r60771 | ko1 | 2017-11-15 13:52:39 +0900 (Wed, 15 Nov 2017) | 7 lines fix uninitialized memory reference. * compile.c (iseq_set_sequence): clear kwargs (in ci_entries) memory area. kwargs ci entries are initialized by compiler. However, sometimes these initializations are skipped because corresponding calls are eliminated by some optimizations (for example, `if true` syntax elimnates else code). ------------------------------------------------------------------------ r60770 | usa | 2017-11-15 12:44:58 +0900 (Wed, 15 Nov 2017) | 4 lines nogvl readdir make SEGV on Windows * dir.c (readdir_without_gvl): workaround for Windows. [Bug #14108] ------------------------------------------------------------------------ r60769 | normal | 2017-11-15 08:20:31 +0900 (Wed, 15 Nov 2017) | 18 lines dir.c: release GVL around remaining readdir calls Release GVL around all remaining readdir calls from the Dir class to prevent pathological stalls on slow filesystems in multi-threaded applications. opendir, rewinddir, closedir calls are not affected yet, but will be changed in future commits. In the future, further work may be done consolidate multiple GVL releasing calls to reduce overhead, similar to how changes to Dir.empty? were made in r60111 * dir.c (nogvl_readdir): new function (readdir_without_gvl): ditto (dir_read): s/READDIR/readdir_without_gvl/ (dir_each_entry): ditto (glob_helper): ditto ------------------------------------------------------------------------ r60768 | nobu | 2017-11-15 02:07:47 +0900 (Wed, 15 Nov 2017) | 3 lines compile.c: fixup TRACE * compile.c (remove_unreachable_chunk): ignore TRACE elements. ------------------------------------------------------------------------ r60767 | svn | 2017-11-15 00:37:49 +0900 (Wed, 15 Nov 2017) | 1 line * 2017-11-15 ------------------------------------------------------------------------ r60766 | nobu | 2017-11-15 00:37:48 +0900 (Wed, 15 Nov 2017) | 6 lines parse.y: zero codepoints * parse.y (parser_tokadd_utf8): relax restriction to allow zero or more codepoints. fixup r59417. https://github.com/ruby/ruby/commit/7e8b910#commitcomment-25602670 ------------------------------------------------------------------------ r60765 | ko1 | 2017-11-14 22:25:11 +0900 (Tue, 14 Nov 2017) | 5 lines rewrite only if changed. * vm_trace.c (update_global_event_hook): rewrite ISeqs only when effective events are changed. ------------------------------------------------------------------------ r60764 | ko1 | 2017-11-14 22:18:44 +0900 (Tue, 14 Nov 2017) | 9 lines fix prefix. * compile.c: the following functions accept LINK_ELEMENT so rename to `ELEM_` prefix names: * INSERT_ELEM_NEXT -> ELEM_INSERT_NEXT * INSERT_ELEM_PREV -> ELEM_INSERT_PREV * REPLACE_ELEM -> ELEM_REPLACE * REMOVE_ELEM -> ELEM_REMOVE ------------------------------------------------------------------------ r60763 | ko1 | 2017-11-14 21:58:36 +0900 (Tue, 14 Nov 2017) | 22 lines remove `trace` instruction. [Feature #14104] * tool/instruction.rb: create `trace_` prefix instructions. * compile.c (ADD_TRACE): do not add `trace` instructions but add TRACE link elements. TRACE elements will be unified with a next instruction as instruction information. * vm_trace.c (update_global_event_hook): modify all ISeqs when hooks are enabled. * iseq.c (rb_iseq_trace_set): added to toggle `trace_` instructions. * vm_insnhelper.c (vm_trace): added. This function is a body of `trace_` prefix instructions. * vm_insnhelper.h (JUMP): save PC to a control frame. * insns.def (trace): removed. * vm_exec.h (INSN_ENTRY_SIG): add debug output (disabled). ------------------------------------------------------------------------ r60762 | nobu | 2017-11-14 13:42:38 +0900 (Tue, 14 Nov 2017) | 10 lines process.c: removed preserving_errno * process.c (try_with_sh, handle_fork_error): added argument for errno. * process.c (proc_exec_cmd, proc_exec_sh, exec_async_signal_safe): now return errno instead of -1. * process.c (rb_fork_ruby): merged retry_fork_ruby() and unified clean-up after fork regardless failure. ------------------------------------------------------------------------ r60761 | nobu | 2017-11-14 12:02:58 +0900 (Tue, 14 Nov 2017) | 1 line string.c: prefer rb_syserr_fail ------------------------------------------------------------------------ r60760 | nobu | 2017-11-14 12:00:23 +0900 (Tue, 14 Nov 2017) | 1 line common.mk: add dependencies for iseq.h ------------------------------------------------------------------------ r60759 | nobu | 2017-11-14 11:40:04 +0900 (Tue, 14 Nov 2017) | 1 line compile.c: comments for concatstrings optimization [ci skip] ------------------------------------------------------------------------ r60758 | ko1 | 2017-11-14 10:37:41 +0900 (Tue, 14 Nov 2017) | 8 lines use RUBY_API_VERSION as ISEQ versions. * iseq.h: use RUBY_API_VERSION_MAJOR for ISEQ_MAJOR_VERSION and RUBY_API_VERSION_MINOR for ISEQ_MINOR_VERSION. We need to keep compatibility for ISeq during same major/minor versions. If we need to change compatibility between teeny versions, we should use (RUBY_API_VERSION_MINOR * 10 + iseq revs) for ISEQ_MINOR_VERSION. ------------------------------------------------------------------------ r60757 | svn | 2017-11-14 08:53:01 +0900 (Tue, 14 Nov 2017) | 1 line * 2017-11-14 ------------------------------------------------------------------------ r60756 | nobu | 2017-11-14 08:53:00 +0900 (Tue, 14 Nov 2017) | 5 lines compile.c: fixup r60727 * compile.c (iseq_peephole_optimize): skip next `freezestring` instruction after `concatstrings` instruction when frozen string literal is enabled. ------------------------------------------------------------------------ r60755 | nobu | 2017-11-13 14:50:54 +0900 (Mon, 13 Nov 2017) | 5 lines regexec.c: invalidate previously matched position * regexec.c (match_at): invalidate end position not yet matched when new start position is pushed, to dispose previously stored position. [ruby-core:83743] [Bug #14101] ------------------------------------------------------------------------ r60754 | nobu | 2017-11-13 14:46:30 +0900 (Mon, 13 Nov 2017) | 4 lines test_regexp.rb: test_absent * test/ruby/test_regexp.rb (test_absent): add simple tests for absent operator. ------------------------------------------------------------------------ r60753 | nobu | 2017-11-13 10:58:18 +0900 (Mon, 13 Nov 2017) | 4 lines envutil.rb: preserve RUBYLIB * test/lib/envutil.rb (invoke_ruby): preserve RUBYLIB which is set by runruby.rb and necessary to load standard libraries. ------------------------------------------------------------------------ r60752 | yui-knk | 2017-11-13 10:24:16 +0900 (Mon, 13 Nov 2017) | 3 lines Print last location of a node * node.c (A_NODE_HEADER): Print last location of a node. ------------------------------------------------------------------------ r60751 | yui-knk | 2017-11-13 10:24:15 +0900 (Mon, 13 Nov 2017) | 5 lines Initialize last column with -1 and lineno with 0 * parse.y (node_newnode): Initialize last column of nodes with -1 and lineno with 0 to make it easy to detect nodes which we forget to set a column number or lineno. ------------------------------------------------------------------------ r60750 | yui-knk | 2017-11-13 09:14:33 +0900 (Mon, 13 Nov 2017) | 16 lines Store last location of a node on RNode * node.c (rb_node_init): Initialize last location with 0. * node.h (struct rb_code_range_struct): Define a structure which contains first location and last location of a node. * node.h (struct RNode): Use rb_code_range_t to store last location of a node. * node.h (nd_column, nd_set_column, nd_lineno, nd_set_lineno): Follow-up the change of struct RNode. * node.h (nd_last_column, nd_set_last_column, nd_last_lineno, nd_set_last_lineno): Define getter/setter macros for last location of RNode. * parse.y : Set last location of tokens. Thanks to Yusuke Endoh (mame) for design of data structures. ------------------------------------------------------------------------ r60749 | rhe | 2017-11-13 02:10:29 +0900 (Mon, 13 Nov 2017) | 6 lines string.c: fix up r60748 An #ifdef was missing in r60748 and build broke on systems without crypt_r(). https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20171112T162503Z.fail.html.gz ------------------------------------------------------------------------ r60748 | rhe | 2017-11-13 00:55:04 +0900 (Mon, 13 Nov 2017) | 9 lines string.c: fix memory leak in String#crypt Use ALLOCV to allocate struct crypt_data for slightly cleaner and less error-prone code. It is currently possible it leaks when an invalid argument is passed to String#crypt or rb_str_new_cstr() fails to allocate memory. SIZEOF_CRYPT_DATA macro in missing/crypt.h is removed since it is not used any longer. ------------------------------------------------------------------------ r60747 | svn | 2017-11-13 00:25:57 +0900 (Mon, 13 Nov 2017) | 1 line * 2017-11-13 ------------------------------------------------------------------------ r60746 | k0kubun | 2017-11-13 00:25:56 +0900 (Mon, 13 Nov 2017) | 3 lines .gitignore: ignore dlntest.dll This was generated with in-place build on MinGW and not ignored. ------------------------------------------------------------------------ r60745 | kazu | 2017-11-12 16:05:58 +0900 (Sun, 12 Nov 2017) | 5 lines Clarify Dir.mktmpdir's change `FileUtils.remove_entry_secure` checks `world_writable?` (and `sticky?`) only. [ci skip] ref https://github.com/rurema/doctree/pull/805 ------------------------------------------------------------------------ r60744 | svn | 2017-11-12 13:45:52 +0900 (Sun, 12 Nov 2017) | 1 line * 2017-11-12 ------------------------------------------------------------------------ r60743 | nobu | 2017-11-12 13:45:51 +0900 (Sun, 12 Nov 2017) | 6 lines load.c: cwd encoding * load.c (rb_get_expanded_load_path): save cwd cache in OS path encoding, to get rid of unnecessary conversion and infinite loading when it needs encoding conversion. [ruby-dev:50221] [Bug #13863] ------------------------------------------------------------------------ r60742 | nobu | 2017-11-11 13:50:11 +0900 (Sat, 11 Nov 2017) | 1 line parse.y: constified YYLTYPE ------------------------------------------------------------------------ r60741 | svn | 2017-11-11 12:57:03 +0900 (Sat, 11 Nov 2017) | 1 line * 2017-11-11 ------------------------------------------------------------------------ r60740 | suke | 2017-11-11 12:57:02 +0900 (Sat, 11 Nov 2017) | 2 lines * ext/win32ole/win32ole.c(ole_const_load): suppress constant redefinition warnings when WIN32OLE.const_load [Bug #14085] ------------------------------------------------------------------------ r60739 | k0kubun | 2017-11-10 22:59:01 +0900 (Fri, 10 Nov 2017) | 10 lines bin/erb: change template file encoding to UTF-8 Unlike Ruby source file encoding (script encoding) whose default is changed to UTF-8 in Ruby 2.0 (Feature #6679), template's file encoding given to erb(1) has been ASCII-8BIT since ERB supports m17n at r21170. Like Ruby source file encoding, erb template file encoding should be UTF-8 in Ruby 2. [Bug #14095] [ruby-core:83708] ------------------------------------------------------------------------ r60738 | kazu | 2017-11-10 22:50:14 +0900 (Fri, 10 Nov 2017) | 1 line Fix a typo [ci skip] ------------------------------------------------------------------------ r60737 | mame | 2017-11-10 22:46:38 +0900 (Fri, 10 Nov 2017) | 6 lines Make `rb_ast_dispose` use `RB_OBJ_WRITE` This fixes the mistake of r60722. I used `rb_gc_writebarrier_remember` to notify to GC that the references is changed. But the function just adds the object to the remember set blindly. Ko1 told me that `RB_OBJ_WRITE` is suitable in this case. ------------------------------------------------------------------------ r60736 | k0kubun | 2017-11-10 20:50:00 +0900 (Fri, 10 Nov 2017) | 19 lines .travis.yml: workaround to resolve ::1 Container-based Trusty environment (sudo: false) does not support IPv6. https://github.com/travis-ci/travis-ci/issues/3302 And the image has "::1 localhost ip6-localhost ip6-loopback" entry in addition to "127.0.0.1 localhost" in /etc/hosts. Thus when it can resolve localhost to ::1 and CI fails. To resolve this, at least we need to modify /etc/hosts for now but we can't modify /etc/hosts without sudo. So I enabled sudo. As Sudo-enabled VM didn't have "::1 localhost" entry, this change fixed the cause without touching /etc/hosts. Since boot of `sudo: required` is slower than `sudo: false`, please revert this commit anytime when Container-based Trusty environment is updated and ::1 issue has gone. https://docs.travis-ci.com/user/reference/overview/ ------------------------------------------------------------------------ r60735 | nobu | 2017-11-10 17:26:44 +0900 (Fri, 10 Nov 2017) | 4 lines iseq.c: disasm only once for each iseq * iseq.c (rb_iseq_disasm): do not dump repeatedly same iseq which has been dumped by catch tables. ------------------------------------------------------------------------ r60734 | hsbt | 2017-11-10 15:31:36 +0900 (Fri, 10 Nov 2017) | 4 lines Do not define test method instead of skip when Calendar class is not defined. Revisit r34739. Patch by MSP-Greg. [Bug #14088][ruby-core:83690][fix GH-1743] ------------------------------------------------------------------------ r60733 | ko1 | 2017-11-10 14:26:52 +0900 (Fri, 10 Nov 2017) | 6 lines refactoring about source line. * iseq.c (find_line_no): renamed to rb_iseq_line_no(). * vm_backtrace.c (calc_lineno): add a comment why we need to use "pos-1". ------------------------------------------------------------------------ r60732 | nobu | 2017-11-10 08:08:01 +0900 (Fri, 10 Nov 2017) | 4 lines iseq.c: operand lvar * iseq.c (rb_insn_operand_intern): show local variable operand name in unified instructions. ------------------------------------------------------------------------ r60731 | nobu | 2017-11-10 08:02:52 +0900 (Fri, 10 Nov 2017) | 1 line mk_call_iseq_optimized.rb: add mode string [ci skip] ------------------------------------------------------------------------ r60730 | marcandre | 2017-11-10 07:05:44 +0900 (Fri, 10 Nov 2017) | 1 line lib/matrix: Remove method catalog [doc] [ci-skip] ------------------------------------------------------------------------ r60729 | svn | 2017-11-10 07:04:48 +0900 (Fri, 10 Nov 2017) | 1 line * 2017-11-10 ------------------------------------------------------------------------ r60728 | marcandre | 2017-11-10 07:04:47 +0900 (Fri, 10 Nov 2017) | 1 line TracePoint.new: raise ArgumentError when no block given [#14074] ------------------------------------------------------------------------ r60727 | nobu | 2017-11-09 17:27:01 +0900 (Thu, 09 Nov 2017) | 1 line compile.c: optimize nested string interpolations ------------------------------------------------------------------------ r60726 | ko1 | 2017-11-09 15:57:24 +0900 (Thu, 09 Nov 2017) | 11 lines insn_info/insns_info * iseq.h (iseq_line_info_entry): rename to iseq_insn_info_entry. * vm_core.h (rb_iseq_constant_body): rename field name line_info_table to insns_info and also from line_info_size to insns_info_size. * compile.c (INSN): add struct insn_info to contain per insn information. * compile.c (add_insn_info): added to add new insn_info entry. ------------------------------------------------------------------------ r60725 | ko1 | 2017-11-09 14:22:51 +0900 (Thu, 09 Nov 2017) | 8 lines fix backtrace on argment error. * vm_backtrace.c (rb_backtrace_use_iseq_first_lineno_for_last_location): added. It modifies last location's line as corresponding iseq's first line number. * vm_args.c (raise_argument_error): use added function. ------------------------------------------------------------------------ r60724 | ko1 | 2017-11-09 13:27:27 +0900 (Thu, 09 Nov 2017) | 9 lines fix peephole optimization. * compile.c (iseq_peephole_optimize): do not need to put `pop` instruction. * test/ruby/test_optimization.rb (test_peephole_optimization_without_trace): This code "def foo; 1.times{|(a), &b| nil && a}; end" fails to compile by stack underflow because of above bug (fixed by this patch). ------------------------------------------------------------------------ r60723 | mame | 2017-11-09 10:50:58 +0900 (Thu, 09 Nov 2017) | 5 lines node.c (dump_node): add an explanation of NODE_HASH's nd_alen The field has a flag to represent if it is a keyword argument (that has no braces, e.g., `foo(k:1)`) or hash literal (that has braces, e.g., `foo({k:1})`). ------------------------------------------------------------------------ r60722 | mame | 2017-11-09 10:32:11 +0900 (Thu, 09 Nov 2017) | 4 lines use `rb_ast_dispose` instead of `rb_ast_free` `rb_ast_dispose` calls `rb_gc_writebarrier_remember`. Unless we call it, the marked objects may not be GC'ed until `rb_ast_t` is GC'ed. ------------------------------------------------------------------------ r60721 | hsbt | 2017-11-09 09:42:19 +0900 (Thu, 09 Nov 2017) | 4 lines Merge rubygems-2.7.2. This version fixes some setup commands. https://github.com/rubygems/rubygems/blob/01e797f6aa045fd09df7813d0b5448e3667172a9/History.txt#L3 ------------------------------------------------------------------------ r60720 | nobu | 2017-11-09 08:09:25 +0900 (Thu, 09 Nov 2017) | 6 lines parse.y: fix r60644 * parse.y (rb_strterm_heredoc_t): should not define sourceline as union, to fix wrong read on big-endian platforms. as rb_imemo_new stores all members as VALUEs, should read it as VALUE too. ------------------------------------------------------------------------ r60719 | svn | 2017-11-09 01:43:24 +0900 (Thu, 09 Nov 2017) | 1 line * 2017-11-09 ------------------------------------------------------------------------ r60718 | a_matsuda | 2017-11-09 01:43:23 +0900 (Thu, 09 Nov 2017) | 8 lines Fix typo in doc [ci skip] `enable` and `disable` are instance methods. Patch by: yuuji.yaginuma <yuuji.yaginuma@gmail.com> https://github.com/ruby/ruby/pull/1744 [Fix GH-1744] ------------------------------------------------------------------------ r60717 | kazu | 2017-11-08 23:14:54 +0900 (Wed, 08 Nov 2017) | 1 line fixup r60440 [ci skip] ------------------------------------------------------------------------ r60716 | nobu | 2017-11-08 19:54:09 +0900 (Wed, 08 Nov 2017) | 4 lines parse.y: remove in_single * parse.y (parser_params): removed in_single, which is referenced with in_def always. ------------------------------------------------------------------------ r60715 | knu | 2017-11-08 12:57:54 +0900 (Wed, 08 Nov 2017) | 1 line Fix typos in rdoc ------------------------------------------------------------------------ r60714 | yui-knk | 2017-11-08 09:03:02 +0900 (Wed, 08 Nov 2017) | 5 lines Omit first argument of NEW_CASE2 * node.h (NEW_CASE2): Omit first argument of NEW_CASE2, bacause the first argument of NEW_CASE2 is always 0. * parse.y: Ditto ------------------------------------------------------------------------ r60713 | stomar | 2017-11-08 05:17:04 +0900 (Wed, 08 Nov 2017) | 6 lines hash.c: improve docs for Hash#slice * hash.c: [DOC] clarify description for Hash#slice and remove a sentence that might suggest that the receiver is modified; improve example to also include a case where a hash with several elements is returned. ------------------------------------------------------------------------ r60712 | stomar | 2017-11-08 05:15:59 +0900 (Wed, 08 Nov 2017) | 6 lines string.c: improve docs for String#{concat,<<} * string.c: [DOC] remove a misleading call-seq for String#concat, which suggests that all arguments must be Integers in this case; also clarify in the example that the receiver is modified; fix grammar for String#<<; move references to the end. ------------------------------------------------------------------------ r60711 | stomar | 2017-11-08 05:14:46 +0900 (Wed, 08 Nov 2017) | 5 lines pathname.c: improve docs for Pathname * ext/pathname/pathname.c: [DOC] improve example for Pathname.glob, by using a more common glob pattern, and improve the reference to the `base' keyword argument for Pathname#glob. ------------------------------------------------------------------------ r60710 | stomar | 2017-11-08 05:13:48 +0900 (Wed, 08 Nov 2017) | 3 lines http.rb: improve docs * lib/net/http.rb: [DOC] fix typos and grammar ------------------------------------------------------------------------ r60709 | stomar | 2017-11-08 05:13:00 +0900 (Wed, 08 Nov 2017) | 4 lines socket.c,tcpsocket.c: improve deprecation notices * ext/socket/socket.c: [DOC] fix grammar in deprecation notices. * ext/socket/tcpsocket.c: [DOC] ditto. ------------------------------------------------------------------------ r60708 | stomar | 2017-11-08 05:11:44 +0900 (Wed, 08 Nov 2017) | 1 line vm_dump.c: [DOC] fix grammar ------------------------------------------------------------------------ r60707 | stomar | 2017-11-08 05:11:09 +0900 (Wed, 08 Nov 2017) | 3 lines string.c: fix typos * string.c: [DOC] fix typos in doxygen comments. ------------------------------------------------------------------------ r60706 | stomar | 2017-11-08 05:10:29 +0900 (Wed, 08 Nov 2017) | 4 lines file.c: improve docs for File#path * file.c: [DOC] fix grammar in docs for File#path and use a stronger description than "inaccurate". ------------------------------------------------------------------------ r60705 | stomar | 2017-11-08 05:09:19 +0900 (Wed, 08 Nov 2017) | 1 line ext/socket/ifaddr.c: [DOC] fix typo ------------------------------------------------------------------------ r60704 | stomar | 2017-11-08 05:08:34 +0900 (Wed, 08 Nov 2017) | 3 lines etc.c: improve docs for sysconfdir * ext/etc/etc.c: [DOC] small language fixes for etc_sysconfdir docs. ------------------------------------------------------------------------ r60703 | stomar | 2017-11-08 05:07:33 +0900 (Wed, 08 Nov 2017) | 1 line README.md: fix typos and grammar ------------------------------------------------------------------------ r60702 | stomar | 2017-11-08 05:06:25 +0900 (Wed, 08 Nov 2017) | 1 line NEWS: clarify "ubygems.rb" entry ------------------------------------------------------------------------ r60701 | svn | 2017-11-08 05:04:59 +0900 (Wed, 08 Nov 2017) | 1 line * 2017-11-08 ------------------------------------------------------------------------ r60700 | stomar | 2017-11-08 05:04:58 +0900 (Wed, 08 Nov 2017) | 4 lines refinements.rdoc: improve docs * doc/syntax/refinements.rdoc: [DOC] fix typos and grammar and remove superfluous "for the first time". ------------------------------------------------------------------------ r60699 | ko1 | 2017-11-07 23:23:58 +0900 (Tue, 07 Nov 2017) | 5 lines disable GC. * test/ruby/test_io.rb (test_write_no_garbage): malloc can cause GC and it will reduce string object counts. So disable GC during this test. ------------------------------------------------------------------------ r60698 | nobu | 2017-11-07 20:21:09 +0900 (Tue, 07 Nov 2017) | 1 line tool/runruby.rb: fix RUNRUBY_USE_GDB case ------------------------------------------------------------------------ r60697 | ko1 | 2017-11-07 17:23:57 +0900 (Tue, 07 Nov 2017) | 7 lines `th` is not used. * vm_args.c: `th` parameter is not used on the following functions: * args_check_block_arg0 * keyword_hash_p * args_pop_keyword_hash ------------------------------------------------------------------------ r60696 | ko1 | 2017-11-07 17:19:25 +0900 (Tue, 07 Nov 2017) | 5 lines th->ec: dtrace * vm.c (ruby_th_dtrace_setup): rename to rb_dtrace_setup() and accept `ec`. ------------------------------------------------------------------------ r60695 | ko1 | 2017-11-07 17:01:26 +0900 (Tue, 07 Nov 2017) | 1 line `rb_execution_context_t *` should not be `th` ------------------------------------------------------------------------ r60694 | mame | 2017-11-07 15:36:07 +0900 (Tue, 07 Nov 2017) | 11 lines Symptomatic treatment for `rb_thread_terminate_all` freeze Under uncertain condition, `rb_thread_terminate_all` gets stuck. `make test-all TESTOPTS="test/ruby/test_gc.rb -n test_interrupt_in_finalizer` fails very rarely (only once every thousand runs). This IS a bug, but seems difficult to fix it soon. This commit makes `rb_thread_terminate_all` wake up every one second, instead of waiting forever, which mitigates the unuseful freeze. This is not an essential solution for the bug, though. I'll create a ticket with how to reproduce the original issue. ------------------------------------------------------------------------ r60693 | ko1 | 2017-11-07 15:14:00 +0900 (Tue, 07 Nov 2017) | 4 lines th->ec: vm_once_dispatch. * vm_insnhelper.c (vm_once_dispatch): accepts `ec`. ------------------------------------------------------------------------ r60692 | ko1 | 2017-11-07 15:09:47 +0900 (Tue, 07 Nov 2017) | 4 lines th->ec: rb_threadptr_setup_exception * eval.c (rb_threadptr_setup_exception): renamed to rb_ec_setup_exception(). ------------------------------------------------------------------------ r60691 | ko1 | 2017-11-07 15:01:16 +0900 (Tue, 07 Nov 2017) | 9 lines fix prefix `ruby_...()` to `rb_...()`. * vm_core.h: fix prefix `ruby_` to `rb_` for the following functions. * ruby_current_execution_context * ruby_current_thread * ruby_current_vm * ruby_vm_check_ints * ruby_exec_event_hook_orig ------------------------------------------------------------------------ r60690 | ko1 | 2017-11-07 14:54:34 +0900 (Tue, 07 Nov 2017) | 2 lines * vm_trace.c (rb_exec_event_hooks): accepts pop_p. ------------------------------------------------------------------------ r60689 | ko1 | 2017-11-07 14:45:46 +0900 (Tue, 07 Nov 2017) | 4 lines th->ec: rb_load_internal0 * load.c (rb_load_internal0): accepts `ec`. ------------------------------------------------------------------------ r60688 | ko1 | 2017-11-07 14:41:43 +0900 (Tue, 07 Nov 2017) | 1 line fix comment ------------------------------------------------------------------------ r60687 | ko1 | 2017-11-07 14:41:15 +0900 (Tue, 07 Nov 2017) | 2 lines * eval_intern.h (rb_threadptr_tag_state): rename to rb_ec_tag_state. ------------------------------------------------------------------------ r60686 | ko1 | 2017-11-07 14:39:02 +0900 (Tue, 07 Nov 2017) | 2 lines * vm_eval.c (rescue_funcall_args): th->ec ------------------------------------------------------------------------ r60685 | knu | 2017-11-07 14:28:14 +0900 (Tue, 07 Nov 2017) | 1 line Add details on the min/time parameters to the rdoc ------------------------------------------------------------------------ r60684 | ko1 | 2017-11-07 14:22:09 +0900 (Tue, 07 Nov 2017) | 3 lines * eval_intern.h: rename macros rb_thread_raised_* to rb_ec_raised_*. ------------------------------------------------------------------------ r60683 | ko1 | 2017-11-07 14:12:39 +0900 (Tue, 07 Nov 2017) | 5 lines rename to rb_ec_set_raised(). * thread.c (rb_threadptr_set_raised): rename to rb_ec_set_raised and accepts `ec` ------------------------------------------------------------------------ r60682 | ko1 | 2017-11-07 14:09:27 +0900 (Tue, 07 Nov 2017) | 1 line use GET_VM() ------------------------------------------------------------------------ r60681 | ko1 | 2017-11-07 14:08:09 +0900 (Tue, 07 Nov 2017) | 1 line use GET_EC() directly ------------------------------------------------------------------------ r60680 | ko1 | 2017-11-07 14:06:50 +0900 (Tue, 07 Nov 2017) | 2 lines * vm_backtrace.c (rb_debug_inspector_t): `th` -> `ec`. ------------------------------------------------------------------------ r60679 | ko1 | 2017-11-07 14:01:51 +0900 (Tue, 07 Nov 2017) | 5 lines move `rb_thread_t::method_missing_reason` to ec. * vm_core.h (rb_thread_t): move method_missing_reason to rb_execution_context_t. ------------------------------------------------------------------------ r60678 | ko1 | 2017-11-07 13:53:11 +0900 (Tue, 07 Nov 2017) | 4 lines remove `rb_postponed_job_t::th`. * vm_trace.c (rb_postponed_job_t): remove `th` field because it is not used. ------------------------------------------------------------------------ r60677 | ko1 | 2017-11-07 13:04:18 +0900 (Tue, 07 Nov 2017) | 2 lines rename because it doesn't receive `th`. ------------------------------------------------------------------------ r60676 | ko1 | 2017-11-07 13:01:13 +0900 (Tue, 07 Nov 2017) | 11 lines th->ec: rb_threadptr_reset_raised() * thread.c (rb_threadptr_reset_raised): rename to `rb_ec_reset_raised` and accepts `ec`. * vm_trace.c: the following functions accept `ec` instead of `th` * exec_hooks_body * exec_hooks_precheck * exec_hooks_unprotected * exec_hooks_protected ------------------------------------------------------------------------ r60675 | svn | 2017-11-07 12:41:35 +0900 (Tue, 07 Nov 2017) | 1 line * 2017-11-07 ------------------------------------------------------------------------ r60674 | ko1 | 2017-11-07 12:41:34 +0900 (Tue, 07 Nov 2017) | 5 lines prepare local variables (th and vm). * vm_trace.c (rb_threadptr_exec_event_hooks_orig): prepare local variables `th` and `vm` instead of using rb_ec_... functions. ------------------------------------------------------------------------ r60673 | ko1 | 2017-11-06 17:22:27 +0900 (Mon, 06 Nov 2017) | 2 lines use `GET_EC()` directly. ------------------------------------------------------------------------ r60672 | ko1 | 2017-11-06 16:44:28 +0900 (Mon, 06 Nov 2017) | 12 lines move rb_thread_t::interrupt_flag and mask to rb_execution_context_t. * vm_core.h (rb_thread_t): move `rb_thread_t::interrupt_flag` and `rb_thread_t::interrupt_mask` to rb_execution_context_t. RUBY_VM_CHECK_INTS() accepts `ec` instead of `th`. * cont.c (rb_fiber_terminate): to propagate interrupt information, add new parameter `need_interrupt`. ------------------------------------------------------------------------ r60671 | ko1 | 2017-11-06 16:35:37 +0900 (Mon, 06 Nov 2017) | 1 line show the location at intterrupted ------------------------------------------------------------------------ r60670 | ko1 | 2017-11-06 14:41:48 +0900 (Mon, 06 Nov 2017) | 5 lines renmae ec::fiber to ec::fiber_ptr. * vm_core.h (rb_execution_context_t): renmae ec::fiber to ec::fiber_ptr make consistent with ec::thread_ptr. ------------------------------------------------------------------------ r60669 | hsbt | 2017-11-06 11:02:04 +0900 (Mon, 06 Nov 2017) | 3 lines Merge RubyGems 2.7.1. * Fix `gem update --system` with RubyGems 2.7+. ------------------------------------------------------------------------ r60668 | nobu | 2017-11-06 08:32:50 +0900 (Mon, 06 Nov 2017) | 4 lines enum.c: check argument first * enum.c (enum_cycle_size): check an argument before the size of the receiver, if it is given. ------------------------------------------------------------------------ r60667 | nobu | 2017-11-06 08:27:46 +0900 (Mon, 06 Nov 2017) | 1 line test/ruby/test_lazy_enumerator.rb: test for [Bug #14082] ------------------------------------------------------------------------ r60666 | marcandre | 2017-11-06 07:14:25 +0900 (Mon, 06 Nov 2017) | 3 lines Fix size on Enumerable#cycle when the size is 0 [Bug #14082]. Patch by Kenichi Kamiya ------------------------------------------------------------------------ r60665 | nobu | 2017-11-06 06:13:18 +0900 (Mon, 06 Nov 2017) | 7 lines lexer.rb: Ripper::Lexer::State * ext/ripper/lib/ripper/lexer.rb (Ripper::Lexer::State): wrapper of lex_state values. * parse.y (rb_parser_lex_state_name): return shared strings. lex state combinations are very restricted. ------------------------------------------------------------------------ r60664 | nobu | 2017-11-06 06:13:17 +0900 (Mon, 06 Nov 2017) | 1 line runruby.rb: add -C/--chdir option ------------------------------------------------------------------------ r60663 | svn | 2017-11-06 00:10:41 +0900 (Mon, 06 Nov 2017) | 1 line * 2017-11-06 ------------------------------------------------------------------------ r60662 | kazu | 2017-11-06 00:10:41 +0900 (Mon, 06 Nov 2017) | 6 lines Modify spell miss. Runing -> Running Author: TomoyukiNakagawa <nakagawa.tomoyuki@gmail.com> [Fix GH-1741] [ci skip] ------------------------------------------------------------------------ r60661 | nobu | 2017-11-05 14:11:04 +0900 (Sun, 05 Nov 2017) | 1 line runruby.rb: support run.gdb by --debugger option ------------------------------------------------------------------------ r60660 | mame | 2017-11-05 12:52:22 +0900 (Sun, 05 Nov 2017) | 7 lines Revert "Introduce rb_code_range_t and replace YYLTYPE with it" r60655 changed the usage of bison by defining a customized YYLTYPE, which seemed to cause a random stall at rb_thread_terminate_all. Kazuki Tsujimoto investigated the issue and pointed out the commit that caused it. Thanks! ------------------------------------------------------------------------ r60659 | suke | 2017-11-05 10:02:04 +0900 (Sun, 05 Nov 2017) | 3 lines ext/win32ole/lib/win32ole.rb (metods): rescue WIN32OLEQueryInterfaceError. test/win32ole/test_win32ole.rb: add test for WIN32OLE#methods ------------------------------------------------------------------------ r60658 | suke | 2017-11-05 09:36:37 +0900 (Sun, 05 Nov 2017) | 2 lines test/win32ole/test_win32ole_method.rb: remove redundant assertions. ------------------------------------------------------------------------ r60657 | suke | 2017-11-05 09:30:57 +0900 (Sun, 05 Nov 2017) | 10 lines * ext/win32ole/win32ole_error.c: add WIN32OLEQueryInterfaceError. * ext/win32ole/win32ole_error.h: ditto. * ext/win32ole/win32ole.c(typeinfo_from_ole): raise WIN32OLEQueryInterfaceError in ole_methods. * ext/win32ole/win32ole_method.c(ole_methods_from_typeinfo): ditto. M ext/win32ole/win32ole.c M ext/win32ole/win32ole_error.c M ext/win32ole/win32ole_error.h M ext/win32ole/win32ole_method.c ------------------------------------------------------------------------ r60656 | eregon | 2017-11-05 02:48:51 +0900 (Sun, 05 Nov 2017) | 1 line Workaround Travis CI issue by hardcoding localhost ------------------------------------------------------------------------ r60655 | mame | 2017-11-05 01:34:00 +0900 (Sun, 05 Nov 2017) | 8 lines Introduce rb_code_range_t and replace YYLTYPE with it rb_code_range_t has two t_code_location_t, i.e., the first and last locations. This is used for YYLTYPE, tracked locations of bison, and will be also used for representing the "range", the first and the last locations of each NODE. Currently, each NODE keeps only the first location, though. ------------------------------------------------------------------------ r60654 | nobu | 2017-11-05 00:39:52 +0900 (Sun, 05 Nov 2017) | 4 lines parse.y: fix duplicate symbol * parse.y (rb_strterm_mark): do not define in ripper to get rid of duplicate symbol with static-linked-ext. ------------------------------------------------------------------------ r60653 | svn | 2017-11-05 00:22:19 +0900 (Sun, 05 Nov 2017) | 1 line * 2017-11-05 ------------------------------------------------------------------------ r60652 | mame | 2017-11-05 00:22:18 +0900 (Sun, 05 Nov 2017) | 5 lines Introduce `rb_code_location_t` `rb_code_location_t` has two integers, lineno and column, which point to one location on a code. Now `rb_code_location_t` is used instead of `VALUE nd_location`. ------------------------------------------------------------------------ r60651 | nobu | 2017-11-04 23:32:48 +0900 (Sat, 04 Nov 2017) | 3 lines gc.c: UNEXPECTED_NODE * gc.c (UNEXPECTED_NODE): extract rb_bug for T_NODE. ------------------------------------------------------------------------ r60650 | mame | 2017-11-04 23:24:16 +0900 (Sat, 04 Nov 2017) | 10 lines Avoid usage of the magic number `(NODE*)-1` This magic number has two meanings depending upon the context: * "required keyword argument (no name)" on NODE_LASGN (`def foo(x:)`) * "rest argument (no name)" on NODE_MASGN and NODE_POSTARG ('a, b, * = ary` or `a, b, *, z = ary`) To show this intention explicitly, two macros are introduced: NODE_SPECIAL_REQUIRED_KEYWORD and NODE_SPECIAL_NO_NAME_REST. ------------------------------------------------------------------------ r60649 | yui-knk | 2017-11-04 22:59:34 +0900 (Sat, 04 Nov 2017) | 6 lines compile.c (setup_args): Fix a typo * compile.c (setup_args): In this function, an argument of nd_line is argn except this line. And argn is a pointer of NODE. So I think this is a typo. ------------------------------------------------------------------------ r60648 | mame | 2017-11-04 22:31:47 +0900 (Sat, 04 Nov 2017) | 8 lines gc.c (rb_free_tmp_buffer): stop accessing imemo_alloc as NODE The fields of imemo_alloc were accessed via RNODE() cast, since the imemo was NODE_ALLOCA traditionally. This was refactored at r60239, so now the fields should be accessed as imemo_alloc. This prevented change of NODE structure. Yuichiro Kaneko pointed out this inconsistency. Thanks! ------------------------------------------------------------------------ r60647 | mame | 2017-11-04 22:31:46 +0900 (Sat, 04 Nov 2017) | 4 lines parse.y (new_args_tail_gen): returns a NODE instead of imemo `new_args_tail_gen` returned imemo, but the value was later accessed as `NODE*`. This prevented change of NODE structure. ------------------------------------------------------------------------ r60646 | mame | 2017-11-04 22:05:05 +0900 (Sat, 04 Nov 2017) | 5 lines test/ruby/test_io.rb (test_write_no_garbage): Add detailed message I saw this test failed once. There is no problem if `before > after` but we cannot check it. To allow diagnosis in future, the detailed message is added. ------------------------------------------------------------------------ r60645 | nobu | 2017-11-04 21:07:20 +0900 (Sat, 04 Nov 2017) | 4 lines parse.y: suppress warning in ripper * parse.y (rb_discard_node_gen): rb_discard_node() is not used in ripper right now. ------------------------------------------------------------------------ r60644 | nobu | 2017-11-04 21:01:42 +0900 (Sat, 04 Nov 2017) | 8 lines parse.y: suppress warnings * parse.y (parser_set_line): removed no longer used function. * parse.y (rb_strterm_heredoc_t): adjust type of sourceline to ruby_sourceline. * parse.y (rb_strterm_t): get rid of redefinition. ------------------------------------------------------------------------ r60643 | mame | 2017-11-04 20:37:19 +0900 (Sat, 04 Nov 2017) | 5 lines Remove RNODE cast from NODE utility functions Now, casting NODE to VALUE is not recommended. This change requires an explicit cast from VALUE to NODE to use the NODE utility functions such as `nd_type`. ------------------------------------------------------------------------ r60642 | mame | 2017-11-04 19:56:50 +0900 (Sat, 04 Nov 2017) | 3 lines Rename imemo_strterm to imemo_parser_strterm Per ko1's request. ------------------------------------------------------------------------ r60641 | mame | 2017-11-04 19:56:49 +0900 (Sat, 04 Nov 2017) | 1 line ext/objspace/objspace.c: add imemo_strterm ------------------------------------------------------------------------ r60640 | mame | 2017-11-04 19:02:43 +0900 (Sat, 04 Nov 2017) | 1 line Remove NODE-related pieces of code from GC ------------------------------------------------------------------------ r60639 | mame | 2017-11-04 18:18:08 +0900 (Sat, 04 Nov 2017) | 11 lines Make Ripper use NODE buffer This is a follow-up of r60488. Not only the Ruby parser but also Ripper now use NODE buffer instead of NODE objects managed by GC. Now we can change the struct of NODEs so that it can keep detailed location information, perhaps (not tried yet). Note that, however, the first word of each NODE must be still compatible with RBasic structure. This is because Ripper handles NODEs and other objects uniformly; especially, it still uses `RB_TYPE_P(obj, T_NODE)` for distinguishing between NODEs and other objects. ------------------------------------------------------------------------ r60638 | mame | 2017-11-04 16:21:37 +0900 (Sat, 04 Nov 2017) | 1 line Fix the alignment bug of r60634 for LLP64 ------------------------------------------------------------------------ r60637 | mame | 2017-11-04 16:21:36 +0900 (Sat, 04 Nov 2017) | 3 lines Revert "Revert "Replace NODE_STRTERM and NODE_HEREDOC with imemo_strterm"" Retry r60634 ------------------------------------------------------------------------ r60636 | rhe | 2017-11-04 15:56:16 +0900 (Sat, 04 Nov 2017) | 7 lines openssl: pull test case from upstream commit 62af0446569a The test case added by r60310 ("fix OpenSSL::SSL::SSLContext#min_version doesn't work", 2017-10-21) does not pass with OpenSSL >= 1.1.0 or LibreSSL >= 2.6.0. Check that the default 'min_version' value is properly enforced by actually attempting a handshake rather than by inspecting the SSL option flags. [ruby-core:83479] [Bug #14039] ------------------------------------------------------------------------ r60635 | mame | 2017-11-04 13:59:19 +0900 (Sat, 04 Nov 2017) | 3 lines Revert "Replace NODE_STRTERM and NODE_HEREDOC with imemo_strterm" Due to build failure on mswin and mingw. ------------------------------------------------------------------------ r60634 | mame | 2017-11-04 12:04:54 +0900 (Sat, 04 Nov 2017) | 8 lines Replace NODE_STRTERM and NODE_HEREDOC with imemo_strterm Just refactoring. NODE_STRTERM and NODE_HEREDOC are not an internal node of AST, but a temporary storage for managing termination of string literals and heredocs. Instead of NODE abuse, I want to use imemo for the storage in order to avoid (my) confusion. ------------------------------------------------------------------------ r60633 | svn | 2017-11-04 10:48:46 +0900 (Sat, 04 Nov 2017) | 1 line * 2017-11-04 ------------------------------------------------------------------------ r60632 | nobu | 2017-11-04 10:48:45 +0900 (Sat, 04 Nov 2017) | 6 lines load from relative path to __FILE__ * spec/ruby/library/pathname/empty_spec.rb: load spec_helper from relative path to `__FILE__` same as other spec files, instead of `__dir__` in which symlinks are resolved, to get rid of constant redefinition warning when `srcdir` contains symlinks. ------------------------------------------------------------------------ r60631 | kazu | 2017-11-03 16:14:51 +0900 (Fri, 03 Nov 2017) | 1 line Fix a typo [ci skip] ------------------------------------------------------------------------ r60630 | suke | 2017-11-03 15:07:24 +0900 (Fri, 03 Nov 2017) | 3 lines * ext/win32ole/lib/win32ole.rb :add WIN32OLE#methods. WIN32OLE might work well with did_you_mean gem. ------------------------------------------------------------------------ r60629 | yui-knk | 2017-11-03 12:49:07 +0900 (Fri, 03 Nov 2017) | 1 line node.c: Add some comments ------------------------------------------------------------------------ r60628 | yui-knk | 2017-11-03 12:22:23 +0900 (Fri, 03 Nov 2017) | 6 lines node.c: Fix possible alignment bugs * node.c (rb_node_buffer_new): Use offsetof for node_buffer_t size calculation. * node.c (rb_ast_newnode): Use offsetof for node_buffer_elem_t size calculation. ------------------------------------------------------------------------ r60627 | yui-knk | 2017-11-03 11:17:07 +0900 (Fri, 03 Nov 2017) | 5 lines node.h: Remove obsolete comment * node.h: NODE_FL_CREF_PUSHED_BY_EVAL was defined as NODE_FL_NEWLINE by r25984, redefined by r40703 and removed by r49897. ------------------------------------------------------------------------ r60625 | nobu | 2017-11-03 09:52:54 +0900 (Fri, 03 Nov 2017) | 4 lines test/ruby/test_eval.rb: use orphan procs This failure has been hidden by the bug of assert_raise which is fixed at r60614. ------------------------------------------------------------------------ r60624 | stomar | 2017-11-03 05:38:04 +0900 (Fri, 03 Nov 2017) | 4 lines io.c: improve docs for the chomp option * io.c: [DOC] improve the description for the chomp option and add examples to IO.readlines and IO#readlines; other small fixes. ------------------------------------------------------------------------ r60623 | stomar | 2017-11-03 05:26:11 +0900 (Fri, 03 Nov 2017) | 1 line NEWS: add entry for Psych ------------------------------------------------------------------------ r60622 | stomar | 2017-11-03 05:25:37 +0900 (Fri, 03 Nov 2017) | 1 line NEWS: fix grammar ------------------------------------------------------------------------ r60621 | stomar | 2017-11-03 05:25:04 +0900 (Fri, 03 Nov 2017) | 1 line doc/NEWS-2.4.0: fix grammar and typo ------------------------------------------------------------------------ r60620 | stomar | 2017-11-03 05:23:47 +0900 (Fri, 03 Nov 2017) | 4 lines proc.c: fix rdoc for Method class documentation * proc.c: [DOC] fix rdoc syntax for the class documentation of the Method class so that it is displayed in the rendered docs. ------------------------------------------------------------------------ r60619 | stomar | 2017-11-03 05:21:15 +0900 (Fri, 03 Nov 2017) | 6 lines proc.c: further improve docs for {Method,Proc}#arity * proc.c: [DOC] fix grammar in docs for {Method,Proc}#arity; for Method#arity, move special case of methods written in C to the end of the description, fix a typo in a method name, and add an example for required arguments with an optional keyword argument. ------------------------------------------------------------------------ r60618 | stomar | 2017-11-03 05:20:11 +0900 (Fri, 03 Nov 2017) | 6 lines proc.c: improve docs for {Method,Proc}#arity * proc.c: [DOC] improve Method#arity documentation to match with Proc#arity, mentioning keyword arguments; also make Proc#arity examples more consistent in the naming of keyword arguments. Patch by Nikita Misharin (TheSmartnik). [Fix GH-1735] ------------------------------------------------------------------------ r60617 | svn | 2017-11-03 05:06:38 +0900 (Fri, 03 Nov 2017) | 1 line * 2017-11-03 ------------------------------------------------------------------------ r60616 | stomar | 2017-11-03 05:06:38 +0900 (Fri, 03 Nov 2017) | 4 lines rexml: improve docs * lib/rexml/entity.rb: [DOC] drop a pointless comment. Reported by Michael Gee (mikegee). [Fix GH-1736] ------------------------------------------------------------------------ r60615 | nobu | 2017-11-02 21:45:37 +0900 (Thu, 02 Nov 2017) | 4 lines skip/fix wrong tests * test/ruby/test_{class,eval}.rb: skip or fix wrong tests hidden by a bug of assert_raise. ------------------------------------------------------------------------ r60614 | nobu | 2017-11-02 21:29:33 +0900 (Thu, 02 Nov 2017) | 4 lines assertions.rb: fix return in assert_raise * test/lib/test/unit/assertions.rb (assert_raise): should fail if returned gently in the given block without any exceptions. ------------------------------------------------------------------------ r60613 | nobu | 2017-11-02 16:52:49 +0900 (Thu, 02 Nov 2017) | 4 lines compile.c: kw splat after splat * compile.c (setup_args): set keyword splat flag after splat arguments. [ruby-core:83638] [Bug #10856] ------------------------------------------------------------------------ r60612 | nobu | 2017-11-02 16:52:48 +0900 (Thu, 02 Nov 2017) | 3 lines debug.c: vm call flags * debug.c (ruby_dummy_gdb_enums): include vm_call_flag_bits. ------------------------------------------------------------------------ r60611 | rhe | 2017-11-02 15:30:18 +0900 (Thu, 02 Nov 2017) | 5 lines bignum.c: avoid use of uninitialized value in Integer.sqrt This is a follow-up fix to r57713. estimate_initial_sqrt() didn't initialize BDIGITs except the topmost two, letting Integer.sqrt return wrong result in the fast path, such as for (1<<504). ------------------------------------------------------------------------ r60610 | usa | 2017-11-02 13:28:30 +0900 (Thu, 02 Nov 2017) | 7 lines Support Windows * spec/bundler/spec_helper.rb: there are no reason to refuse ':' and '-' in the path of spec files. especially, ':' is always contained on Windows. * spec/bundler/spec/helper.rb: open3.rb is also supported on Windows. ------------------------------------------------------------------------ r60609 | hsbt | 2017-11-02 13:27:33 +0900 (Thu, 02 Nov 2017) | 1 line Fixed syntax error with ignore option order. ------------------------------------------------------------------------ r60608 | hsbt | 2017-11-02 13:25:37 +0900 (Thu, 02 Nov 2017) | 1 line Merge release version of Rubygems 2.7.0. ------------------------------------------------------------------------ r60607 | usa | 2017-11-02 12:12:05 +0900 (Thu, 02 Nov 2017) | 4 lines Should quote by double quotes, not single quotes for Windows * common.mk (test-bundler-precheck): single quotes is not quote on Windows. ------------------------------------------------------------------------ r60606 | svn | 2017-11-02 08:30:03 +0900 (Thu, 02 Nov 2017) | 1 line * 2017-11-02 ------------------------------------------------------------------------ r60605 | svn | 2017-11-02 08:30:01 +0900 (Thu, 02 Nov 2017) | 1 line * properties. ------------------------------------------------------------------------ r60604 | svn | 2017-11-02 08:30:00 +0900 (Thu, 02 Nov 2017) | 1 line * remove trailing spaces, append newline at EOF. ------------------------------------------------------------------------ r60603 | hsbt | 2017-11-02 08:29:38 +0900 (Thu, 02 Nov 2017) | 4 lines Update bundled bundler to 1.16.0. * lib/bundler, spec/bundler: Merge bundler-1.16.0. * common.mk: rspec examples of bundler-1.16.0 needs require option. ------------------------------------------------------------------------ r60602 | nobu | 2017-11-01 12:26:55 +0900 (Wed, 01 Nov 2017) | 1 line compile.c: refactored compile_return ------------------------------------------------------------------------ r60601 | nobu | 2017-11-01 12:26:54 +0900 (Wed, 01 Nov 2017) | 4 lines test_syntax.rb: all assertions * test/ruby/test_syntax.rb (test_return_toplevel): try all assertions even if any assertions failed. ------------------------------------------------------------------------ r60600 | nobu | 2017-11-01 12:26:27 +0900 (Wed, 01 Nov 2017) | 1 line Pathname: get rid of a -Wcomment warning [DOC] ------------------------------------------------------------------------ r60599 | nobu | 2017-11-01 11:22:10 +0900 (Wed, 01 Nov 2017) | 5 lines file.c: infect from arguments * file.c (rb_check_realpath_internal): infetct the result with arguments, no taint if none are tainted and cwd is not used. [ruby-core:83583] [Bug #14060] ------------------------------------------------------------------------ r60598 | ko1 | 2017-11-01 11:04:02 +0900 (Wed, 01 Nov 2017) | 1 line revert r60596 because it cause faulure on TestFile#test_realpath_taintedness ------------------------------------------------------------------------ r60597 | nobu | 2017-11-01 10:55:45 +0900 (Wed, 01 Nov 2017) | 1 line dir.c: cast to suppress a warning ------------------------------------------------------------------------ r60596 | nobu | 2017-11-01 10:51:57 +0900 (Wed, 01 Nov 2017) | 5 lines file.c: infect from arguments * file.c (rb_check_realpath_internal): infetct the result with arguments, no taint if none are tainted and cwd is not used. [ruby-core:83583] [Bug #14060] ------------------------------------------------------------------------ r60595 | normal | 2017-11-01 09:17:11 +0900 (Wed, 01 Nov 2017) | 11 lines dir: Dir.mkdir and Dir.rmdir release GVL This avoids blocking the entire VM when operating on slow or unreliable filesystems. Instead, only the thread performing the mkdir or rmdir operation is blocked and other threads are free to proceed. * dir.c (nogvl_mkdir): new function (nogvl_rmdir): ditto (dir_s_mkdir): release GVL (dir_s_rmdir): ditto ------------------------------------------------------------------------ r60594 | marcandre | 2017-11-01 07:24:03 +0900 (Wed, 01 Nov 2017) | 1 line Pathname: Simplify example [DOC] [ci-skip] ------------------------------------------------------------------------ r60593 | svn | 2017-11-01 04:10:20 +0900 (Wed, 01 Nov 2017) | 1 line * 2017-11-01 ------------------------------------------------------------------------ r60592 | normal | 2017-11-01 04:10:19 +0900 (Wed, 01 Nov 2017) | 13 lines use mode_t where applicable (instead of int) mode_t is the correct type for these syscalls and it can be easier-to-understand. It may also help portability to future platforms and improve type checking. * dir.c (dir_s_mkdir): use mode_t for mkdir(2) * file.c (chmod_internal): use mode_t for chmod(2) (rb_file_s_chmod): s/int/mode_t/ (lchmod_internal): ditto, deref pointer as in chmod_internal (rb_file_s_lchmod): pass pointer as in rb_file_s_chmod (rb_file_s_rename): use mode_t for umask(2) ------------------------------------------------------------------------ r60591 | yui-knk | 2017-10-31 22:29:54 +0900 (Tue, 31 Oct 2017) | 4 lines node.h: Rename nd_reserved to nd_location * node.h (RNode): Now nd_reserved is used to store location information, so rename nd_reserved to nd_location. ------------------------------------------------------------------------ r60590 | nobu | 2017-10-31 18:33:22 +0900 (Tue, 31 Oct 2017) | 7 lines compile.c: ensure after return in library toplevel * compile.c (compile_return): execute ensure clause after toplevel return even in library toplevel other than the main script. [ruby-core:83589] [Bug #14061] test ------------------------------------------------------------------------ r60589 | nobu | 2017-10-31 18:33:21 +0900 (Tue, 31 Oct 2017) | 3 lines compile.c: compile_return * compile.c (compile_return): extract from iseq_compile_each. ------------------------------------------------------------------------ r60588 | hsbt | 2017-10-31 16:24:29 +0900 (Tue, 31 Oct 2017) | 4 lines null byte at Psych::Emitter. Check null byte. Patched by tommy (Masahiro Tomita). [Bug #13993][ruby-dev:50285] ------------------------------------------------------------------------ r60587 | mame | 2017-10-31 14:24:21 +0900 (Tue, 31 Oct 2017) | 1 line Remove unneeded complexity ------------------------------------------------------------------------ r60586 | normal | 2017-10-31 10:37:37 +0900 (Tue, 31 Oct 2017) | 23 lines webrick/httpresponse: minor cleanups to reduce memory use I never knew "format" was a global method alias for "sprintf"; so it was confusing to me. Normally, one would use "sprintf" since it's also available in many other languages, but Integer#to_s avoids parsing a format string so it's less bug-prone. Furthermore, favor string interpolation over String#<< since it is easier for the VM to optimize memory allocation (as in r60320). Interpolation also reduces method calls and memory overhead for inline method cache. Finally, ensure we clear all short-lived buffers for body responses. A similar change was made and measured for Net::* in r58840 showing a large memory reduction on some workloads. * webrick/httpresponse.rb (send_body_io): favor String#to_s, reduce method calls for String#<<, clear `buf' when done, avoid extra String#bytesize calls * (send_body_string): ditto ------------------------------------------------------------------------ r60585 | yui-knk | 2017-10-31 09:46:30 +0900 (Tue, 31 Oct 2017) | 30 lines Use NODE_CASE2 if case expressions don't exist When NODE_WHEN is compiled by iseq_compile_each0, the node passed to compile_when is NODE_WHEN (not NODE_CASE). So we can not handle the location of NODE_CASE of case statements which don't have case expressions. e.g. : ``` case; when 1; foo; when 2; bar; else baz; end ``` This commit adds NODE_CASE2, and compiles it by iseq_compile_each0. * compile.c (compile_case): Does not call COMPILE_ when NODE_CASE does not have case expressions. * compile.c (compile_case2): Compile NODE_CASE2 by compile_case2. * compile.c (compile_when): Delete an obsoleted function. * compile.c (iseq_compile_each0): Compile NODE_CASE2. * ext/objspace/objspace.c (count_nodes): Add NODE_CASE2 case. * node.c (dump_node, rb_gc_mark_node): Add NODE_CASE2 case. * node.h (node_type): Add NODE_CASE2. * node.h (NEW_CASE2): Add a macro which generates NODE_CASE2. * parse.y: Generate NODE_CASE2 if case expressions don't exist. ------------------------------------------------------------------------ r60584 | normal | 2017-10-31 08:56:44 +0900 (Tue, 31 Oct 2017) | 9 lines webrick: support Proc objects as body responses * lib/webrick/httpresponse.rb (send_body): call send_body_proc (send_body_proc): new method (class ChunkedWrapper): new class * test/webrick/test_httpresponse.rb (test_send_body_proc): new test (test_send_body_proc_chunked): ditto [Feature #855] ------------------------------------------------------------------------ r60583 | normal | 2017-10-31 08:47:27 +0900 (Tue, 31 Oct 2017) | 9 lines dir: Dir.chdir releases GVL chdir(2) is subject to all the pathological slowdowns and caveats as open(2) on slow or unreliable filesystems, so ensure other threads can proceed while this is happening. * dir.c (nogvl_chdir): new function * dir.c (dir_chdir): release GVL ------------------------------------------------------------------------ r60582 | svn | 2017-10-31 08:44:43 +0900 (Tue, 31 Oct 2017) | 1 line * 2017-10-31 ------------------------------------------------------------------------ r60581 | yui-knk | 2017-10-31 08:44:42 +0900 (Tue, 31 Oct 2017) | 17 lines Use nd_lineno instead of nd_line for branch coverages * compile.c (compile_if, compile_case, compile_loop, iseq_compile_each0): Use nd_lineno of nodes for branch coverages. nd_lineno is not adjusted line number of nodes. Sometimes nd_line is adjusted by fixpos. These adjustments lead to confusing result. For example, lineno of NODE_IF is 1, but line is 2 (line number is one-based). ``` ;;;;;;;;;;;;;;;;;;;;if 1 + 1 2 end ``` ------------------------------------------------------------------------ r60580 | yui-knk | 2017-10-30 22:36:20 +0900 (Mon, 30 Oct 2017) | 12 lines Store lineno on RNode * node.c (A_NODE_HEADER): Print lineno. * node.h (nd_column, nd_set_column): Store column number with 16-bit. * node.h (nd_lineno, nd_set_lineno): Define getter/setter macros for lineno of RNode. * parse.y : Set first lineno of tokens. Thanks to takeshinoda for review. ------------------------------------------------------------------------ r60579 | nobu | 2017-10-30 14:45:21 +0900 (Mon, 30 Oct 2017) | 4 lines backward.h: rb_frame_method_id_and_class * include/ruby/backward.h (rb_frame_method_id_and_class): moved a deprecated declaration from intern.h, for r60558. ------------------------------------------------------------------------ r60578 | nobu | 2017-10-30 14:45:20 +0900 (Mon, 30 Oct 2017) | 5 lines rbinstall.rb: show categories of default gems * tool/rbinstall.rb (#install_default_gem): show categories of default gems, pure ruby libraries and libraries with extensions. [ruby-core:83600] [Bug #14065] ------------------------------------------------------------------------ r60577 | ko1 | 2017-10-30 12:58:05 +0900 (Mon, 30 Oct 2017) | 1 line stop refine_spec because it causes double free error ------------------------------------------------------------------------ r60576 | yui-knk | 2017-10-30 07:12:08 +0900 (Mon, 30 Oct 2017) | 4 lines Remove duplicated column set * parse.y : Column of resq is set by new_resbody, so this line is needless. ------------------------------------------------------------------------ r60575 | yui-knk | 2017-10-30 06:52:54 +0900 (Mon, 30 Oct 2017) | 1 line parse.y (new_regexp_gen): Set column for NODE_SCOPE ------------------------------------------------------------------------ r60574 | stomar | 2017-10-30 06:43:36 +0900 (Mon, 30 Oct 2017) | 3 lines string.c: improve docs * string.c: [DOC] fix rdoc for cross reference; fix grammar. ------------------------------------------------------------------------ r60573 | stomar | 2017-10-30 05:59:33 +0900 (Mon, 30 Oct 2017) | 3 lines lib/set.rb: improve docs for Set#=== * lib/set.rb: [DOC] improve description and examples for Set#===. ------------------------------------------------------------------------ r60572 | stomar | 2017-10-30 05:58:36 +0900 (Mon, 30 Oct 2017) | 3 lines io.c: improve docs * io.c: [DOC] fix rdoc for some cross references; fix grammar. ------------------------------------------------------------------------ r60571 | stomar | 2017-10-30 05:57:29 +0900 (Mon, 30 Oct 2017) | 3 lines io.c: docs for IO#write * io.c: [DOC] fix example and language in IO#write docs. ------------------------------------------------------------------------ r60570 | stomar | 2017-10-30 05:56:13 +0900 (Mon, 30 Oct 2017) | 1 line doc/contributors.rdoc: [DOC] update ------------------------------------------------------------------------ r60569 | stomar | 2017-10-30 05:50:55 +0900 (Mon, 30 Oct 2017) | 3 lines complex.c: doc fix * complex.c: [DOC] fix grammar and typo. ------------------------------------------------------------------------ r60568 | eregon | 2017-10-30 01:20:04 +0900 (Mon, 30 Oct 2017) | 1 line Clarify what is written and read in IO#popen spec ------------------------------------------------------------------------ r60567 | eregon | 2017-10-30 01:18:50 +0900 (Mon, 30 Oct 2017) | 1 line Fix spec which can fail if the pipe is closed before flushing in the subprocess ------------------------------------------------------------------------ r60566 | ko1 | 2017-10-30 01:12:06 +0900 (Mon, 30 Oct 2017) | 4 lines * vm_dump.c (vm_stack_dump_each): accepts `ec`. * vm_dump.c (vm_base_ptr): constify. ------------------------------------------------------------------------ r60565 | ko1 | 2017-10-30 00:51:23 +0900 (Mon, 30 Oct 2017) | 2 lines * node.h (ast_t): renamed to `rb_ast_t`. ------------------------------------------------------------------------ r60564 | ko1 | 2017-10-30 00:41:53 +0900 (Mon, 30 Oct 2017) | 2 lines * eval_jump.c (rb_exec_end_proc): use `GET_EC()`. ------------------------------------------------------------------------ r60563 | ko1 | 2017-10-30 00:38:55 +0900 (Mon, 30 Oct 2017) | 9 lines call `rb_vm_stack_to_heap()` * safe.c (rb_set_safe_level): call `rb_vm_stack_to_heap()` to set block parameter. * safe.c (rb_set_safe_level): use `GET_EC()`. * safe.c (safe_setter): ditto. ------------------------------------------------------------------------ r60562 | ko1 | 2017-10-30 00:34:20 +0900 (Mon, 30 Oct 2017) | 2 lines * vm_insnhelper.h (GET_SP_COUNT): removed because nobody use it. ------------------------------------------------------------------------ r60561 | ko1 | 2017-10-30 00:31:47 +0900 (Mon, 30 Oct 2017) | 2 lines * vm_eval.c (current_vm_stack_arg): accepts `ec`. ------------------------------------------------------------------------ r60560 | ko1 | 2017-10-30 00:27:07 +0900 (Mon, 30 Oct 2017) | 1 line use given `ec`. ------------------------------------------------------------------------ r60559 | ko1 | 2017-10-30 00:25:32 +0900 (Mon, 30 Oct 2017) | 6 lines constify `rb_vm_bh_to_procval()` * vm_insnhelper.c (rb_vm_bh_to_procval): constify 1st param (ec). * vm_args.c (args_setup_block_parameter): accepts (const) `ec`. ------------------------------------------------------------------------ r60558 | ko1 | 2017-10-30 00:17:29 +0900 (Mon, 30 Oct 2017) | 6 lines remove unused functions. * vm.c (rb_frame_method_id_and_class): removed because nobody use it. * vm.c (rb_thread_current_status): ditto. ------------------------------------------------------------------------ r60557 | ko1 | 2017-10-30 00:13:49 +0900 (Mon, 30 Oct 2017) | 10 lines use `GET_EC()`. * eval.c (rb_block_given_p): use `GET_EC()` directly. * eval.c (rb_ensure): ditto. * eval.c (rb_errinfo): ditto. * eval.c (previous_frame): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60556 | ko1 | 2017-10-30 00:03:33 +0900 (Mon, 30 Oct 2017) | 2 lines * vm_eval.c (vm_catch_protect): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60555 | svn | 2017-10-30 00:00:24 +0900 (Mon, 30 Oct 2017) | 1 line * 2017-10-30 ------------------------------------------------------------------------ r60554 | ko1 | 2017-10-30 00:00:23 +0900 (Mon, 30 Oct 2017) | 1 line use `GET_EC()`. ------------------------------------------------------------------------ r60553 | ko1 | 2017-10-29 23:59:04 +0900 (Sun, 29 Oct 2017) | 1 line use `GET_EC()`. ------------------------------------------------------------------------ r60552 | ko1 | 2017-10-29 23:55:19 +0900 (Sun, 29 Oct 2017) | 2 lines `th` -> `ec` for `rb_iterate0`. ------------------------------------------------------------------------ r60551 | ko1 | 2017-10-29 23:52:05 +0900 (Sun, 29 Oct 2017) | 2 lines `th` -> `ec` for rb_raise_method_missing(). ------------------------------------------------------------------------ r60550 | ko1 | 2017-10-29 23:45:16 +0900 (Sun, 29 Oct 2017) | 4 lines `rb_call0()` accepts `ec`. * vm_eval.c (rb_call0): accepts `ec`. ------------------------------------------------------------------------ r60549 | ko1 | 2017-10-29 23:39:51 +0900 (Sun, 29 Oct 2017) | 2 lines * vm_eval.c (rb_current_receiver): use `GET_EC()`. ------------------------------------------------------------------------ r60548 | ko1 | 2017-10-29 23:38:25 +0900 (Sun, 29 Oct 2017) | 4 lines `th` -> `ec` for vm_call_super(). * vm_eval.c (vm_call_super): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60547 | ko1 | 2017-10-29 23:33:23 +0900 (Sun, 29 Oct 2017) | 2 lines use `GET_VM()` directly. ------------------------------------------------------------------------ r60546 | ko1 | 2017-10-29 23:31:01 +0900 (Sun, 29 Oct 2017) | 9 lines `th` -> `ec` for VM dump related functions. * vm_dump.c: `th` -> `ec` (and constify) for: * control_frame_dump * rb_vmdebug_stack_dump_raw * rb_vmdebug_debug_print_register * rb_vmdebug_debug_print_pre * rb_vmdebug_debug_print_post ------------------------------------------------------------------------ r60545 | ko1 | 2017-10-29 23:06:58 +0900 (Sun, 29 Oct 2017) | 5 lines `rb_ec_error_print()`. * eval_error.c (rb_threadptr_error_print): renamed to rb_ec_error_print() and it accepts `ec`. ------------------------------------------------------------------------ r60544 | ko1 | 2017-10-29 22:51:37 +0900 (Sun, 29 Oct 2017) | 4 lines remove rb_threadptr_during_gc(). * gc.c (rb_threadptr_during_gc): removed because nobody use it. ------------------------------------------------------------------------ r60543 | ko1 | 2017-10-29 22:50:24 +0900 (Sun, 29 Oct 2017) | 2 lines use `GET_EC()`. ------------------------------------------------------------------------ r60542 | ko1 | 2017-10-29 22:49:45 +0900 (Sun, 29 Oct 2017) | 5 lines rb_ec_stack_check() * gc.c (rb_ec_stack_check): renamed from rb_threadptr_stack_check() and it accepts `ec`. ------------------------------------------------------------------------ r60541 | ko1 | 2017-10-29 22:20:44 +0900 (Sun, 29 Oct 2017) | 2 lines use `GET_EC()` directly. ------------------------------------------------------------------------ r60540 | ko1 | 2017-10-29 22:19:53 +0900 (Sun, 29 Oct 2017) | 2 lines use `GET_VM()` directly. ------------------------------------------------------------------------ r60539 | ko1 | 2017-10-29 22:19:14 +0900 (Sun, 29 Oct 2017) | 4 lines EXEC_EVENT_HOOK(ec, ...) * vm_core.h (EXEC_EVENT_HOOK): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60538 | ko1 | 2017-10-29 22:17:37 +0900 (Sun, 29 Oct 2017) | 4 lines `rb_trace_arg_t::ec` * vm_core.h (rb_trace_arg_t): introduce `ec` field instead of `th`. ------------------------------------------------------------------------ r60537 | ko1 | 2017-10-29 21:57:04 +0900 (Sun, 29 Oct 2017) | 7 lines `ec` has `thread_ptr`. * cont.c (rb_context_struct): move rb_context_t::thread_ptr to rb_execution_context_t::thread_ptr. * cont.c (rb_fiberptr_thread_ptr): removed. ------------------------------------------------------------------------ r60536 | ktsj | 2017-10-29 15:16:10 +0900 (Sun, 29 Oct 2017) | 3 lines .gdbinit: follow up changes in r60440 ruby_current_vm has been renamed to ruby_current_vm_ptr. ------------------------------------------------------------------------ r60535 | nobu | 2017-10-29 14:46:23 +0900 (Sun, 29 Oct 2017) | 5 lines io.c: honor buffered mode * io.c (io_writev): honor buffered mode to get rid of broken pipe error when stdout is redirected to a pipeline. [ruby-core:83578] [Feature #14042] ------------------------------------------------------------------------ r60534 | nobu | 2017-10-29 09:43:34 +0900 (Sun, 29 Oct 2017) | 5 lines io.c: convert to string at writev * io.c (io_fwritev): needs conversion to string before accessing the content, as well as single argument case, not to segfault. [Feature #9323] ------------------------------------------------------------------------ r60533 | nobu | 2017-10-29 08:54:16 +0900 (Sun, 29 Oct 2017) | 1 line Localize EC functions ------------------------------------------------------------------------ r60532 | eregon | 2017-10-29 05:04:52 +0900 (Sun, 29 Oct 2017) | 3 lines Ignore the libruby check if it cannot be found * ENV['RUBY_EXE'] can be just 'ruby' and is not an absolute path. ------------------------------------------------------------------------ r60531 | eregon | 2017-10-29 02:45:46 +0900 (Sun, 29 Oct 2017) | 1 line Make sure to compile each extension only once in ruby/spec ------------------------------------------------------------------------ r60530 | kazu | 2017-10-29 01:34:30 +0900 (Sun, 29 Oct 2017) | 4 lines Add note to close_{read,write} too when call on closed stream [ci skip] ------------------------------------------------------------------------ r60529 | eregon | 2017-10-29 01:15:46 +0900 (Sun, 29 Oct 2017) | 3 lines Use ENV['RUBY_EXE'] as RbConfig.ruby might be incorrect * On a built-but-not-installed-ruby. ------------------------------------------------------------------------ r60528 | ktsj | 2017-10-29 00:37:00 +0900 (Sun, 29 Oct 2017) | 5 lines iseq.c: remove obsolete comment You can see ARGS_SIMPLE flag as follows: $ ruby --dump=insns -e itself ------------------------------------------------------------------------ r60527 | svn | 2017-10-29 00:15:52 +0900 (Sun, 29 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60526 | svn | 2017-10-29 00:15:52 +0900 (Sun, 29 Oct 2017) | 1 line * append newline at EOF. ------------------------------------------------------------------------ r60525 | eregon | 2017-10-29 00:15:48 +0900 (Sun, 29 Oct 2017) | 1 line Update to ruby/spec@a6b8805 ------------------------------------------------------------------------ r60524 | svn | 2017-10-29 00:14:56 +0900 (Sun, 29 Oct 2017) | 1 line * 2017-10-29 ------------------------------------------------------------------------ r60523 | eregon | 2017-10-29 00:14:55 +0900 (Sun, 29 Oct 2017) | 1 line Update to ruby/mspec@90925d6 ------------------------------------------------------------------------ r60522 | ko1 | 2017-10-28 22:22:04 +0900 (Sat, 28 Oct 2017) | 10 lines `th` -> `ec` for backtrace functions. * vm_backtrace.c: accept `ec` and rename `threadptr` to `ec`. * rb_threadptr_backtrace_object -> rb_ec_backtrace_object * rb_threadptr_backtrace_str_ary -> rb_ec_backtrace_str_ar * rb_threadptr_backtrace_location_ary -> rb_ec_backtrace_location_ary * threadptr_backtrace_to_ary -> ec_backtrace_to_ary * vm_eval.c (adjust_backtrace_in_eval): accepts `ec`. ------------------------------------------------------------------------ r60521 | ko1 | 2017-10-28 21:23:51 +0900 (Sat, 28 Oct 2017) | 16 lines `th` -> `ec` for method management functions. * vm_eval.c: `th` -> `ec` for the following functions: * check_funcall_respond_to * check_funcall_callable * check_funcall_missing * rb_method_call_status * vm_method.c: ditto. * call_method_entry * basic_obj_respond_to_missing * basic_obj_respond_to * vm_respond_to * vm_eval.c (stack_check): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60520 | ko1 | 2017-10-28 20:52:56 +0900 (Sat, 28 Oct 2017) | 6 lines `th` -> `ec` for rb_vm_call() * vm_eval.c (rb_vm_call): accepts `ec` instead of `th`. * proc.c: catch up this fix. ------------------------------------------------------------------------ r60519 | ko1 | 2017-10-28 20:46:32 +0900 (Sat, 28 Oct 2017) | 4 lines * proc.c (rb_block_arity): use `ec` directly. * proc.c (rb_mod_define_method): ditto. ------------------------------------------------------------------------ r60518 | ko1 | 2017-10-28 20:43:17 +0900 (Sat, 28 Oct 2017) | 2 lines * proc.c (proc_new): use `ec` directly. ------------------------------------------------------------------------ r60517 | ko1 | 2017-10-28 20:41:08 +0900 (Sat, 28 Oct 2017) | 10 lines `th` -> `ec` for rb_longjmp() and related functions. * eval.c: `th` -> `ec` for the following functions: * rb_longjmp * exc_setup_message * setup_exception * errinfo_place * eval.c (get_thread_errinfo): rename to get_ec_errinfo() and accepts `ec`. ------------------------------------------------------------------------ r60516 | ko1 | 2017-10-28 20:22:15 +0900 (Sat, 28 Oct 2017) | 2 lines use `ec` directly. ------------------------------------------------------------------------ r60515 | ko1 | 2017-10-28 20:20:17 +0900 (Sat, 28 Oct 2017) | 6 lines check `ec` instead of `th`. * error.c (rb_bug): check `ec` instead of `th`. * error.c (rb_bug_context): ditto. ------------------------------------------------------------------------ r60514 | ko1 | 2017-10-28 20:15:56 +0900 (Sat, 28 Oct 2017) | 4 lines `th` -> `ec` for rb_vm_make_binding(). * vm.c (rb_vm_make_binding): accepts (const) `ec` instead of `th`. ------------------------------------------------------------------------ r60513 | ko1 | 2017-10-28 20:11:17 +0900 (Sat, 28 Oct 2017) | 5 lines rename a function. * vm.c (rb_thread_method_id_and_class): rename to rb_ec_frame_method_id_and_class() and accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60512 | ko1 | 2017-10-28 20:04:08 +0900 (Sat, 28 Oct 2017) | 2 lines * vm.c (vm_define_method): don't use `th` any more. ------------------------------------------------------------------------ r60511 | ko1 | 2017-10-28 20:02:16 +0900 (Sat, 28 Oct 2017) | 2 lines * vm.c (REWIND_CFP): use `ec` directly. ------------------------------------------------------------------------ r60510 | ko1 | 2017-10-28 19:59:37 +0900 (Sat, 28 Oct 2017) | 4 lines `th` -> `ec` for vm_iter_break(). * vm.c (vm_iter_break): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60509 | ko1 | 2017-10-28 19:55:35 +0900 (Sat, 28 Oct 2017) | 7 lines `th` -> `ec` for some functions. * vm.c: `th` -> `ec` for the following functions: * vm_normal_frame * vm_cfp_svar_get * vm_cfp_svar_set ------------------------------------------------------------------------ r60508 | ko1 | 2017-10-28 19:47:19 +0900 (Sat, 28 Oct 2017) | 6 lines `th` -> `ec` for some functions. * vm.c (rb_vm_get_binding_creatable_next_cfp): accepts `ec` instead of `th`. * vm.c (rb_vm_stack_to_heap): ditto. ------------------------------------------------------------------------ r60507 | ko1 | 2017-10-28 19:43:30 +0900 (Sat, 28 Oct 2017) | 4 lines `th` -> `ec` for rb_vm_rewind_cfp. * vm.c (rb_vm_rewind_cfp): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60506 | ko1 | 2017-10-28 19:35:55 +0900 (Sat, 28 Oct 2017) | 4 lines `th` -> `ec` for vm_exec(). * vm.c (vm_exec): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60505 | eregon | 2017-10-28 19:32:45 +0900 (Sat, 28 Oct 2017) | 1 line Add specs for [Feature #13983] Rational and Complex should be frozen ------------------------------------------------------------------------ r60504 | ko1 | 2017-10-28 19:23:58 +0900 (Sat, 28 Oct 2017) | 8 lines `th` -> `ec` for vm_set_*_stack. * vm.c: `th` -> `ec` for the following functions: * vm_set_top_stack * vm_set_eval_stack * vm_set_main_stack * vm_cref_new_toplevel ------------------------------------------------------------------------ r60503 | ko1 | 2017-10-28 19:01:54 +0900 (Sat, 28 Oct 2017) | 7 lines move fields from `th` to `ec`. * vm_core.h: move rb_thread_t::passed_block_handler to rb_execution_context_t::passed_block_handler. Also move rb_thread_t::passed_bmethod_me to rb_execution_context_t::passed_bmethod_me. ------------------------------------------------------------------------ r60502 | ktsj | 2017-10-28 18:22:45 +0900 (Sat, 28 Oct 2017) | 1 line iseq.c: fix a typo ------------------------------------------------------------------------ r60501 | ktsj | 2017-10-28 18:22:44 +0900 (Sat, 28 Oct 2017) | 1 line iseq.c: show all call flags ------------------------------------------------------------------------ r60500 | a_matsuda | 2017-10-28 15:49:50 +0900 (Sat, 28 Oct 2017) | 13 lines Fix example that trace method is called outside block [ci skip] `TracePoint` doesn't have the `line` method. Therefore, this example will raise `NoMethodError`. But since it does not seem to be the intended error, use the existing `lineno` method instead. Patch by: yuuji.yaginuma <yuuji.yaginuma@gmail.com> https://github.com/ruby/ruby/pull/1731 [Fix GH-1731] ------------------------------------------------------------------------ r60499 | ko1 | 2017-10-28 14:36:48 +0900 (Sat, 28 Oct 2017) | 7 lines skip machine stack marking for current ec. * vm.c (rb_execution_context_mark): At the beggining of GC marking, mark_current_machine_context() marks running machine stack so that rb_execution_context_mark() should not mark machine stack if it is current ec. ------------------------------------------------------------------------ r60498 | a_matsuda | 2017-10-28 10:05:17 +0900 (Sat, 28 Oct 2017) | 7 lines Invalid TracePoint#disable example (without block) Patch by: Johan <djo.went@hotmail.com> https://github.com/ruby/ruby/pull/1727 [Fix GH-1727] [ci skip] ------------------------------------------------------------------------ r60497 | ko1 | 2017-10-28 09:45:43 +0900 (Sat, 28 Oct 2017) | 4 lines fix compile error. * compile.c (iseq_compile_each): fix declaration because VC shows compile error. ------------------------------------------------------------------------ r60496 | normal | 2017-10-28 08:26:48 +0900 (Sat, 28 Oct 2017) | 18 lines socket: fix BasicSocket#*_nonblock buffering bugs from r58400 IO#read_nonblock and IO#write_nonblock take into account buffered data, so the Linux-only BasicSocket#read_nonblock and BasicSocket#write_nonblock methods must, too. This bug was only introduced in r58400 ("socket: avoid fcntl for read/write_nonblock on Linux") and does not affect any stable release. * ext/socket/basicsocket.c (rsock_init_basicsocket): * ext/socket/init.c (rsock_s_recvfrom_nonblock): * ext/socket/init.c (rsock_init_socket_init): * ext/socket/lib/socket.rb (def read_nonblock): * ext/socket/lib/socket.rb (def write_nonblock): * ext/socket/rubysocket.h (static inline void rsock_maybe_wait_fd): * test/socket/test_basicsocket.rb (def test_read_write_nonblock): [Feature #13362] ------------------------------------------------------------------------ r60495 | nobu | 2017-10-28 06:08:37 +0900 (Sat, 28 Oct 2017) | 1 line node.c: removed duplicate node_buffer_t definition ------------------------------------------------------------------------ r60494 | nobu | 2017-10-28 06:08:35 +0900 (Sat, 28 Oct 2017) | 1 line compile.c: make node arguments invariant ------------------------------------------------------------------------ r60493 | ko1 | 2017-10-28 04:16:51 +0900 (Sat, 28 Oct 2017) | 4 lines catch up recent changes for call threaded code VM. Fix compile errors for OPT_CALL_THREADED_CODE (in vm_opts.h). ------------------------------------------------------------------------ r60492 | ko1 | 2017-10-28 04:08:31 +0900 (Sat, 28 Oct 2017) | 8 lines `th` -> `ec` for `rb_insn_func_t`. * vm_core.h (rb_insn_func_t): accepts `ec` instead of `th`. * vm_insnhelper.c (rb_vm_opt_struct_aref): ditto. * vm_insnhelper.c (rb_vm_opt_struct_aset): ditto. ------------------------------------------------------------------------ r60491 | ko1 | 2017-10-28 03:55:28 +0900 (Sat, 28 Oct 2017) | 1 line skip tests temporarily ------------------------------------------------------------------------ r60490 | normal | 2017-10-28 03:37:23 +0900 (Sat, 28 Oct 2017) | 10 lines io.c: fix IO.copy_stream on O_APPEND destination on Linux Linux copy_file_range(2) fails with EBADF if the destination FD has O_APPEND set. Preserve existing (Ruby <= 2.4) behavior by falling back to alternative copy mechanisms if this is the case (instead of raising Errno::EBADF). * io.c (nogvl_copy_file_range): do not raise on O_APPEND dst * test/ruby/test_io.rb (test_copy_stream_append): new test [Feature #13867] ------------------------------------------------------------------------ r60489 | mame | 2017-10-28 02:06:06 +0900 (Sat, 28 Oct 2017) | 1 line parse.y: Need to mark the third element of `NODE_HEREDOC` ------------------------------------------------------------------------ r60488 | mame | 2017-10-28 01:44:57 +0900 (Sat, 28 Oct 2017) | 4 lines Revert "Revert "Manage AST NODEs out of GC"" This re-introduces r60485. This reverts commit 5a176b75b1187cbd3861c387bde65ff66396a07c. ------------------------------------------------------------------------ r60487 | mame | 2017-10-28 01:34:57 +0900 (Sat, 28 Oct 2017) | 3 lines compile.c: stop modifying NODE tree This fixes some modification remained in r60479 ------------------------------------------------------------------------ r60486 | mame | 2017-10-28 01:02:34 +0900 (Sat, 28 Oct 2017) | 3 lines Revert "Manage AST NODEs out of GC" This reverts commit 620ba74778bfdbdc34ffbb142d49ce84a0ef58e9. ------------------------------------------------------------------------ r60485 | mame | 2017-10-28 00:59:02 +0900 (Sat, 28 Oct 2017) | 33 lines Manage AST NODEs out of GC NODEs in AST are no longer objects managed by GC. This change will remove the restriction imposed by the GC. For example, a NODE can use more than five words (this is my primary purpose; we want to store the position data for each NODE, for coverage library), or even a NODE can have variable length (some kinds of NODEs have unused fields). To do this, however, we need more work, since Ripper still uses T_NODE objects managed by the GC. The life time of NODEs is more obvious than other kinds of objects; they are created at parsing, and they become disused immediately after compilation. This change releases all NODEs by a few `xfree`s after compilation, so performance will be improved a bit. In extreme example, `eval("x=1;" * 10000000)` runs much faster (40 sec. -> 7.8 sec. on my machine). The most important part of this change is `ast_t` struct, which has three contents: (1) NODE buffer (malloc'ed memory), (2) a reference to the root NODE, and (3) an array that contains objects that must be marked during parsing (such as literal objects). Some functions that had received `NODE*` arguments, must now receive `ast_t*`. * node.c, node.h: defines `ast_t` struct and related operations. * gc.c, internal.h: defines `imemo_ast`. * parse.y: makes `parser_params` struct have a reference to `ast_t`. Instead of `rb_node_newnode`, use `rb_ast_newnode` to create a NODE. * iseq.c, load.c, ruby.c, template/prelude.c.tmpl: modifies some functions to handle `ast_t*` instead of `NODE*`. * test/ruby/test_gc.rb: ad-hoc fix for a failed test. The test assumes GC eden is increased at startup by NODE object creation. However, this change now create no NODE object, so GC eden is not necessarily increased. ------------------------------------------------------------------------ r60484 | kazu | 2017-10-28 00:14:02 +0900 (Sat, 28 Oct 2017) | 1 line Fix parameter name ------------------------------------------------------------------------ r60483 | kazu | 2017-10-28 00:13:59 +0900 (Sat, 28 Oct 2017) | 1 line Remove duplicated include ------------------------------------------------------------------------ r60482 | svn | 2017-10-28 00:06:39 +0900 (Sat, 28 Oct 2017) | 1 line * 2017-10-28 ------------------------------------------------------------------------ r60481 | mame | 2017-10-28 00:06:38 +0900 (Sat, 28 Oct 2017) | 4 lines Add explicit markers for literal objects generated in parse.y This is just a preparation to manage AST NODEs out of GC. Currently `add_mark_object` does nothing. ------------------------------------------------------------------------ r60480 | watson1978 | 2017-10-27 23:55:03 +0900 (Fri, 27 Oct 2017) | 24 lines string.c: Improve String#prepend performance if only one argument is given * string.c (rb_str_prepend_multi): Prepend the string without generating temporary String object if only one argument is given. This is very similar with https://github.com/ruby/ruby/pull/1634 String#prepend -> 47.5 % up [Fix GH-1670] [ruby-core:82195] [Bug #13773] * Before String#prepend 1.517M ({U+00B1} 1.8%) i/s - 7.614M in 5.019819s * After String#prepend 2.236M ({U+00B1} 3.4%) i/s - 11.234M in 5.029716s * Test code require 'benchmark/ips' Benchmark.ips do |x| x.report "String#prepend" do |loop| loop.times { "!".prepend("hello") } end end ------------------------------------------------------------------------ r60479 | nobu | 2017-10-27 21:00:38 +0900 (Fri, 27 Oct 2017) | 1 line compile.c, iseq.c: consitfied NODE pointers ------------------------------------------------------------------------ r60478 | naruse | 2017-10-27 17:40:40 +0900 (Fri, 27 Oct 2017) | 5 lines Revert "Dir.glob with FNM_EXTGLOB is optimized [Feature #13873]" This reverts commit r60341,r60342,r60344,r60345. Breaking compabitility of the order of result breaks many tests. To avoid such effort to fix tests, the order should be kept. ------------------------------------------------------------------------ r60477 | ko1 | 2017-10-27 15:21:50 +0900 (Fri, 27 Oct 2017) | 6 lines vm_exec_core() accepts `ec` instead of `th`. * vm_exec.c (vm_exec_core): accepts `ec` instead of `th`. * vm_args.c (vm_caller_setup_arg_block): also accepts `ec`. ------------------------------------------------------------------------ r60476 | ko1 | 2017-10-27 15:06:31 +0900 (Fri, 27 Oct 2017) | 27 lines `th` -> `ec` for block related functions. * vm.c: the following functions accept `ec` instead of `th`. * invoke_block * invoke_bmethod * invoke_iseq_block_from_c * invoke_block_from_c_bh * check_block_handler * vm_yield_with_cref * vm_yield * vm_yield_with_block * vm_yield_force_blockarg * invoke_block_from_c_proc * vm_invoke_proc * vm_invoke_bmethod * rb_vm_invoke_proc * vm_insnhelper.c: ditto. * vm_yield_with_cfunc * vm_yield_with_symbol * vm_callee_setup_block_arg * vm_yield_setup_args * vm_invoke_iseq_block * vm_invoke_symbol_block * vm_invoke_ifunc_block * vm_invoke_block ------------------------------------------------------------------------ r60475 | ko1 | 2017-10-27 15:01:21 +0900 (Fri, 27 Oct 2017) | 5 lines should use `th`. * signal.c (check_stack_overflow): ruby_stack_overflowed_p() should accept `th`. ------------------------------------------------------------------------ r60474 | ko1 | 2017-10-27 14:33:33 +0900 (Fri, 27 Oct 2017) | 6 lines `ec` -> `th` * vm_exec.h (VM_SP_CNT): accepts `ec` instead of `th`. * vm_insnhelper.c (vm_stack_consistency_error): ditto. ------------------------------------------------------------------------ r60473 | ko1 | 2017-10-27 14:30:05 +0900 (Fri, 27 Oct 2017) | 4 lines vm_defined() accepts `ec` instead of `th`. * vm_insnhelper.c (vm_defined): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60472 | ko1 | 2017-10-27 14:27:25 +0900 (Fri, 27 Oct 2017) | 5 lines remove duplicated definition. * vm_insnhelper.c (vm_block_handler_to_proc): removed because it is same functionality of rb_vm_bh_to_procval(). Use rb_vm_bh_to_procval(). ------------------------------------------------------------------------ r60471 | ko1 | 2017-10-27 14:22:24 +0900 (Fri, 27 Oct 2017) | 6 lines vm_search_super_method() accepts `ec` instead of `th`. * vm_insnhelper.c (vm_search_super_method): accepts `ec` instead of `th`. Surprisingly, it doesn't use `th` (now `ec`) so this patch is for the future extension. ------------------------------------------------------------------------ r60470 | ko1 | 2017-10-27 14:18:58 +0900 (Fri, 27 Oct 2017) | 4 lines vm_get_ev_const() accepts `ec` instead of `th`. * vm_insnhelper.c (vm_get_ev_const): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60469 | a_matsuda | 2017-10-27 12:55:09 +0900 (Fri, 27 Oct 2017) | 6 lines Fix typo Patch by: 284km <k.furuhashi10@gmail.com> https://github.com/ruby/ruby/pull/1729 [Fix GH-1729] ------------------------------------------------------------------------ r60468 | ko1 | 2017-10-27 11:49:30 +0900 (Fri, 27 Oct 2017) | 44 lines `vm_call_handler` and related functions accept `ec` instead of `th`. * vm_core.h (vm_call_handler): fix to accept `ec` instead of `th`. * vm_args.c: the following functions accept `ec` instead of `th`. * raise_argument_error * argument_arity_error * argument_kw_error * setup_parameters_complex * vm_eval.c: ditto. * vm_call0 * vm_call0_cfunc_with_frame * vm_call0_cfunc * vm_call0_body * vm_insnhelper.c: ditto * vm_call_iseq_setup_tailcall_0start * vm_call_iseq_setup_normal_0start * vm_callee_setup_arg * vm_call_iseq_setup * vm_call_iseq_setup_2 * vm_call_iseq_setup_normal * vm_call_iseq_setup_tailcall * vm_cfp_consistent_p * vm_call_cfunc_with_frame * vm_call_cfunc * vm_call_ivar * vm_call_attrset * vm_call_bmethod_body * vm_call_bmethod * vm_call_opt_send * vm_call_opt_call * vm_call_method_missing * vm_call_zsuper * current_method_entry * vm_call_method_each_type * vm_call_method_nome * vm_call_method * vm_call_general * vm_call_super_method * tool/mk_call_iseq_optimized.rb: ditto. ------------------------------------------------------------------------ r60467 | ko1 | 2017-10-27 10:35:12 +0900 (Fri, 27 Oct 2017) | 4 lines vm_throw* accept `ec` instead of `th`. * vm_insnhelper.c (vm_throw*): accept `ec` instead of `th`. ------------------------------------------------------------------------ r60466 | ko1 | 2017-10-27 10:31:15 +0900 (Fri, 27 Oct 2017) | 12 lines ec->th for vm_cref_push() and constify. * vm_insnhelper.c (vm_cref_push): accepts `ec` instead of `th`. * vm_insnhelper.c: consitfy the first parameter (ec): * lep_svar * lep_svar_write * lep_svar_get * lep_svar_set * vm_getspecial and added vm_cref_push. ------------------------------------------------------------------------ r60465 | ko1 | 2017-10-27 10:22:01 +0900 (Fri, 27 Oct 2017) | 9 lines Some functions accept `ec` instead of `th`. * vm_insnhelper.c: The following functions accept `ec` instead of `th`. * lep_svar * lep_svar_write * lep_svar_get * lep_svar_set * vm_getspecial ------------------------------------------------------------------------ r60464 | ko1 | 2017-10-27 10:13:35 +0900 (Fri, 27 Oct 2017) | 6 lines refactoring (rb_|)threadptr_stack_overflow. * vm_insnhelper.c (ec_stack_overflow): renamed from threadptr_stack_overflow and also rb_ec_stack_overflow is from rb_threadptr_stack_overflow because they accept `ec` instead of `th`. ------------------------------------------------------------------------ r60463 | ko1 | 2017-10-27 09:46:11 +0900 (Fri, 27 Oct 2017) | 6 lines vm_get_ruby_level_caller_cfp() accepts `ec` instead of `th`. * vm.c (vm_get_ruby_level_caller_cfp): accepts `ec` instead of `th`. * vm.c (vm_collect_local_variables_in_heap): don't need `th` anymore. ------------------------------------------------------------------------ r60462 | ko1 | 2017-10-27 09:31:59 +0900 (Fri, 27 Oct 2017) | 4 lines move decl. * proc.c: move declaration of rb_vm_bh_to_procval() to vm_core.h. ------------------------------------------------------------------------ r60461 | mame | 2017-10-27 09:25:57 +0900 (Fri, 27 Oct 2017) | 3 lines Restore the prototype declaration of rb_vm_bh_to_procval Fixes r60460 ------------------------------------------------------------------------ r60460 | ko1 | 2017-10-27 08:33:59 +0900 (Fri, 27 Oct 2017) | 4 lines rb_vm_bh_to_procval() accepts `ec` instead of `th`. * vm_insnhelper.c (rb_vm_bh_to_procval): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60459 | hsbt | 2017-10-27 08:02:18 +0900 (Fri, 27 Oct 2017) | 3 lines Removed obsoleted gitignore for test dependency. Follow up r60458. ------------------------------------------------------------------------ r60458 | usa | 2017-10-27 02:16:30 +0900 (Fri, 27 Oct 2017) | 2 lines Ignore .bundle ------------------------------------------------------------------------ r60457 | usa | 2017-10-27 02:14:16 +0900 (Fri, 27 Oct 2017) | 5 lines Quote with double quotes for Windows * common.mk (test-bundled-gems-prepare): single quote cannot quote shell meta characters on Windows. ------------------------------------------------------------------------ r60456 | svn | 2017-10-27 00:29:37 +0900 (Fri, 27 Oct 2017) | 1 line * 2017-10-27 ------------------------------------------------------------------------ r60455 | naruse | 2017-10-27 00:29:36 +0900 (Fri, 27 Oct 2017) | 1 line Host header should add branckets to IPv6 address [Bug #12642] ------------------------------------------------------------------------ r60454 | ko1 | 2017-10-26 23:44:09 +0900 (Thu, 26 Oct 2017) | 2 lines replace `GET_THREAD()->ec` to `GET_EC()`. ------------------------------------------------------------------------ r60453 | ko1 | 2017-10-26 23:38:22 +0900 (Thu, 26 Oct 2017) | 7 lines make root fiber at switching. * cont.c (fiber_switch): make sure the root fiber object is available before the first switching. * test/ruby/test_fiber.rb: remove "skip". ------------------------------------------------------------------------ r60452 | ko1 | 2017-10-26 23:28:43 +0900 (Thu, 26 Oct 2017) | 1 line skip test_fiber_transfer_segv because it cause error with previous commit ------------------------------------------------------------------------ r60451 | ko1 | 2017-10-26 23:21:31 +0900 (Thu, 26 Oct 2017) | 11 lines fix freeing `th->ec` bugs. * vm.c (thread_free): simply call rb_threadptr_root_fiber_release(). * cont.c (rb_threadptr_root_fiber_release): release th->ec (ec->fiber) iff root_fiber is NULL. If root_fiber is available, then ignore it and root fiber object will free th->ec too. * cont.c (rb_threadptr_root_fiber_setup): do not set th->root_fiber. th->root_fiber will be set if a root fiber object is created. ------------------------------------------------------------------------ r60450 | ko1 | 2017-10-26 20:02:13 +0900 (Thu, 26 Oct 2017) | 13 lines introduce EC_*_TAG() instead of TH_*_TAG() * eval_intern.h: introduce EC_*_TAG() macros instead of TH_*_TAG() macros. * TH_PUSH_TAG() -> EC_PUSH_TAG() * TH_POP_TAG() -> EC_POP_TAG() * TH_TMPPOP_TAG() -> EC_TMPPOP_TAG() * TH_REPUSH_TAG() -> EC_REPUSH_TAG() * TH_EXEC_TAG() -> EC_EXEC_TAG() * TH_JUMP_TAG() -> EC_JUMP_TAG() rb_threadptr_tag_state() , rb_ec_tag_jump() also accept `ec` instead of `th`. ------------------------------------------------------------------------ r60449 | ko1 | 2017-10-26 19:57:16 +0900 (Thu, 26 Oct 2017) | 4 lines backtrace_each() accepts `ec` instead of `th`. * vm_backtrace.c (backtrace_each): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60448 | ko1 | 2017-10-26 19:55:24 +0900 (Thu, 26 Oct 2017) | 4 lines vm_pop_frame() accepts `ec` instead of `th`. * vm_insnhelper.c (vm_pop_frame): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60447 | ko1 | 2017-10-26 19:53:42 +0900 (Thu, 26 Oct 2017) | 4 lines vm_push_frame() accepts `ec` instead of `th`. * vm_insnhelper.c (vm_push_frame): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60446 | ko1 | 2017-10-26 19:52:05 +0900 (Thu, 26 Oct 2017) | 4 lines use GET_EC() * vm.c (vm_ep_in_heap_p_): use GET_EC() instead of GET_THREAD(). ------------------------------------------------------------------------ r60445 | ko1 | 2017-10-26 19:50:45 +0900 (Thu, 26 Oct 2017) | 4 lines A function accepts `ec` instead of `th`. * vm.c (VM_CFP_IN_HEAP_P): accepts `ec` instead of `th`. ------------------------------------------------------------------------ r60444 | ko1 | 2017-10-26 19:49:33 +0900 (Thu, 26 Oct 2017) | 4 lines A function accepts `ec` instead of `th`. * vm.c (rb_vm_search_cf_from_ep): accept `ec` instead of `th`. ------------------------------------------------------------------------ r60443 | mame | 2017-10-26 17:45:14 +0900 (Thu, 26 Oct 2017) | 3 lines Expand the definition of rb_imemo_new in rb_imemo_alloc_new per ko1's comment ------------------------------------------------------------------------ r60442 | ko1 | 2017-10-26 17:42:44 +0900 (Thu, 26 Oct 2017) | 1 line fix comments ------------------------------------------------------------------------ r60441 | ko1 | 2017-10-26 17:41:34 +0900 (Thu, 26 Oct 2017) | 18 lines some functions accept `ec` instead of `th`. * vm.c (vm_make_env_object): accepts `ec`. * vm.c (rb_vm_get_ruby_level_next_cfp): ditto. * vm.c (rb_vm_make_proc): ditto. * vm.c (rb_vm_make_proc_lambda): ditto. * vm_core.h: some macros accept ec instead of th (and make them inline functions): * RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW * RUBY_VM_END_CONTROL_FRAME * RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P * eval.c (frame_func_id): constify for the first parameter. ------------------------------------------------------------------------ r60440 | ko1 | 2017-10-26 17:32:49 +0900 (Thu, 26 Oct 2017) | 21 lines Use rb_execution_context_t instead of rb_thread_t to represent execution context [Feature #14038] * vm_core.h (rb_thread_t): rb_thread_t::ec is now a pointer. There are many code using `th` to represent execution context (such as cfp, VM stack and so on). To access `ec`, they need to use `th->ec->...` (adding one indirection) so that we need to replace them by passing `ec` instead of `th`. * vm_core.h (GET_EC()): introduced to access current ec. Also remove `ruby_current_thread` global variable. * cont.c (rb_context_t): introduce rb_context_t::thread_ptr instead of rb_context_t::thread_value. * cont.c (ec_set_vm_stack): added to update vm_stack explicitly. * cont.c (ec_switch): added to switch ec explicitly. * cont.c (rb_fiber_close): added to terminate fibers explicitly. ------------------------------------------------------------------------ r60439 | nobu | 2017-10-26 16:36:23 +0900 (Thu, 26 Oct 2017) | 4 lines test_env.rb: fix one-off bug * test/ruby/test_env.rb (TestEnv#test_win32_blocksize): count the terminator byte too. ------------------------------------------------------------------------ r60438 | nobu | 2017-10-26 16:23:23 +0900 (Thu, 26 Oct 2017) | 10 lines common conversion functions * array.c (rb_to_array_type): make public to share common code internally. * hash.c (rb_to_hash_type): make public to share common code internally. * symbol.c (rb_to_symbol_type): make public to share common code internally. ------------------------------------------------------------------------ r60437 | marcandre | 2017-10-26 15:58:09 +0900 (Thu, 26 Oct 2017) | 1 line TracePoint#enable, #disable: Don't yield any argument. [Bug #14057] ------------------------------------------------------------------------ r60436 | nobu | 2017-10-26 10:36:52 +0900 (Thu, 26 Oct 2017) | 6 lines common.mk: quote pipes on Windows * common.mk (update-gems, update-bundled_gems): quote pipes by double qoutes instead of single quotes, to escape them on Windows. wildcard characters `*?[{` still need to be quoted by single quotes to get rid of globbing. ------------------------------------------------------------------------ r60435 | nobu | 2017-10-26 09:59:15 +0900 (Thu, 26 Oct 2017) | 4 lines common.mk: test-bundled-gem [ci skip] * common.mk (test-bundled-gems): moved from Makefile.in so it might work on nmake too. ------------------------------------------------------------------------ r60434 | nobu | 2017-10-26 09:59:13 +0900 (Thu, 26 Oct 2017) | 4 lines common.mk: test-bundler [ci skip] * common.mk (test-bundler): moved from Makefile.in so it might work on nmake too. ------------------------------------------------------------------------ r60433 | kazu | 2017-10-26 08:45:33 +0900 (Thu, 26 Oct 2017) | 1 line test/ostruct: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r60432 | svn | 2017-10-26 08:35:47 +0900 (Thu, 26 Oct 2017) | 1 line * 2017-10-26 ------------------------------------------------------------------------ r60431 | nobu | 2017-10-26 08:35:46 +0900 (Thu, 26 Oct 2017) | 4 lines test-bundled-gems-fetch * tool/fetch-bundled_gems.rb: get rid of tool/git-refresh which requries Bourne shell. ------------------------------------------------------------------------ r60430 | nobu | 2017-10-25 23:25:39 +0900 (Wed, 25 Oct 2017) | 1 line common.mk: remove old gems at update-gems ------------------------------------------------------------------------ r60429 | mame | 2017-10-25 22:38:53 +0900 (Wed, 25 Oct 2017) | 1 line Refactoring by adding `rb_imemo_alloc_new` to create imemo_alloc buffer ------------------------------------------------------------------------ r60428 | usa | 2017-10-25 22:29:27 +0900 (Wed, 25 Oct 2017) | 8 lines Get rid of a test error on Windows caused by r60417 * test/testunit/test_parallel.rb (teardown): this code seems to allow `Errno::EPIPE` from @worker_in. in such case, `close` may also raise the same exception. I'm not confident in this conclusion and still doubt that we should revert r60417 instead of this commit or not. ------------------------------------------------------------------------ r60427 | mame | 2017-10-25 22:19:45 +0900 (Wed, 25 Oct 2017) | 6 lines Make imemo_alloc writebarrier-unprotected imemo_alloc provides a memory buffer whose contents are marked by GC. C code can access imemo_alloc buffer freely, so imemo_alloc must be considered writebarrier-unprotected. But T_IMEMO is writebarrier- protected by default, which caused a GC bug. ------------------------------------------------------------------------ r60426 | kazu | 2017-10-25 21:57:34 +0900 (Wed, 25 Oct 2017) | 3 lines Fix `shadowing outer local variable` warning [ci skip] ref https://github.com/rurema/doctree/pull/697 ------------------------------------------------------------------------ r60425 | nobu | 2017-10-25 21:33:42 +0900 (Wed, 25 Oct 2017) | 1 line io.c: let rb_p use writev ------------------------------------------------------------------------ r60424 | nobu | 2017-10-25 21:31:30 +0900 (Wed, 25 Oct 2017) | 4 lines test_io.rb: skip writev test * test/ruby/test_io.rb (TestIO#test_puts_parallel): skip a test needs writev which is not portable. [Feature #14042] ------------------------------------------------------------------------ r60423 | nobu | 2017-10-25 21:04:53 +0900 (Wed, 25 Oct 2017) | 4 lines io.c: warn old write * io.c (rb_io_puts): warn if write method accepts just one argument. [ruby-core:83529] [Feature #14042] ------------------------------------------------------------------------ r60422 | hsbt | 2017-10-25 18:24:37 +0900 (Wed, 25 Oct 2017) | 3 lines Regenerate slack token on Travis CI. The previous token did not work on our slack team. ------------------------------------------------------------------------ r60421 | nobu | 2017-10-25 17:37:17 +0900 (Wed, 25 Oct 2017) | 4 lines win32.c: unknown reparse tags * win32/win32.c (rb_w32_read_reparse_point): skip unknown reparse tags. [ruby-core:83539] [Bug #14047] ------------------------------------------------------------------------ r60420 | nobu | 2017-10-25 16:28:22 +0900 (Wed, 25 Oct 2017) | 4 lines securerandom.rb: fix an example of choose [ci skip] * lib/securerandom.rb (Random::Formatter#choose): [DOC] fix an example, `n` is not optional. ------------------------------------------------------------------------ r60419 | hsbt | 2017-10-25 16:03:11 +0900 (Wed, 25 Oct 2017) | 1 line Update power_assert-1.1.1. It support `test-bundled-gems`. ------------------------------------------------------------------------ r60418 | hsbt | 2017-10-25 15:58:24 +0900 (Wed, 25 Oct 2017) | 3 lines Fixed conflicted variables. v is already used another condition. [Misc #14050][ruby-core:83553] ------------------------------------------------------------------------ r60417 | nobu | 2017-10-25 14:44:38 +0900 (Wed, 25 Oct 2017) | 5 lines io.c: write a newline together * io.c (rb_io_puts): write a newline together at once for each argument. based on the patch by rohitpaulk (Rohit Kuruvilla) at [ruby-core:83508]. [Feature #14042] ------------------------------------------------------------------------ r60416 | nobu | 2017-10-25 14:23:54 +0900 (Wed, 25 Oct 2017) | 6 lines range.c: use rb_check_funcall * range.c (rb_range_values): use rb_check_funcall instead of calling rb_respond_to then rb_funcall, and allow `begin` and `end` to be private as well as other internal conversions. [ruby-core:83541] [Bug #14048] ------------------------------------------------------------------------ r60415 | hsbt | 2017-10-25 14:04:24 +0900 (Wed, 25 Oct 2017) | 1 line Added development dependency for power_assert. ------------------------------------------------------------------------ r60414 | hsbt | 2017-10-25 12:38:02 +0900 (Wed, 25 Oct 2017) | 3 lines Update rake-12.2.1 for bundled gems. rake-12.2.0 broke Capistrano 3 task. 12.2.1 fixed this regression. ------------------------------------------------------------------------ r60413 | nobu | 2017-10-25 11:41:47 +0900 (Wed, 25 Oct 2017) | 5 lines Fix Mock.verify_call to mock_respond_to? * spec/mspec/lib/mspec/mocks/mock.rb (Mock.verify_call): should pass arguments to as given, not packed in an array. mock_respond_to? expects 2 or 3 arguments. ------------------------------------------------------------------------ r60412 | nobu | 2017-10-25 10:45:28 +0900 (Wed, 25 Oct 2017) | 4 lines compile.c: refine error messages * compile.c (rb_iseq_compile_node): raise compile error with exact iseq type name. ------------------------------------------------------------------------ r60411 | nobu | 2017-10-25 10:40:15 +0900 (Wed, 25 Oct 2017) | 6 lines range.c: check if exclude_end? is defined * range.c (rb_range_values): should raise TypeError if necessary method is not defined, not NoMethodError, when trying to tell if the object is a Range and extract info. [ruby-core:83541] [Bug #14048] ------------------------------------------------------------------------ r60410 | hsbt | 2017-10-25 10:13:35 +0900 (Wed, 25 Oct 2017) | 4 lines Update latest bundled_gems. * rake-12.2.0 * test-unit-3.2.6 ------------------------------------------------------------------------ r60409 | nobu | 2017-10-25 09:33:29 +0900 (Wed, 25 Oct 2017) | 4 lines debug.c: RSymbol info * debug.c (ruby_dummy_gdb_enums): force to include struct RSymbol info. ------------------------------------------------------------------------ r60408 | normal | 2017-10-25 08:35:52 +0900 (Wed, 25 Oct 2017) | 6 lines file.c: fix possible alignment bugs in r60386 * file.c (struct apply_filename): split out from struct apply_arg * file.c (apply2files): use offsetof for flex array size calculation * file.c (apply2files): avoid redundant marking with ALLOCV [ruby-core:83535] ------------------------------------------------------------------------ r60407 | nobu | 2017-10-25 08:19:57 +0900 (Wed, 25 Oct 2017) | 5 lines debug.c: imemo_mask * .gdbinit (rp, rp_imemo, rb_ps_thread): update imemo_mask. * debug.c (ruby_dummy_gdb_enums): include imemo_types. ------------------------------------------------------------------------ r60406 | marcandre | 2017-10-25 03:08:15 +0900 (Wed, 25 Oct 2017) | 3 lines lib/ostruct.rb: Use frozen literals. Patch adapted from Espartaco Palma. [GH-1714] [Bug #14000] ------------------------------------------------------------------------ r60405 | svn | 2017-10-25 03:08:01 +0900 (Wed, 25 Oct 2017) | 1 line * 2017-10-25 ------------------------------------------------------------------------ r60404 | marcandre | 2017-10-25 03:08:00 +0900 (Wed, 25 Oct 2017) | 1 line lib/weakref: Remove incorrect example [DOC] [Bug #14031] ------------------------------------------------------------------------ r60403 | ko1 | 2017-10-24 22:59:59 +0900 (Tue, 24 Oct 2017) | 1 line add NEWS entry about [Feature #14045] ------------------------------------------------------------------------ r60402 | nobu | 2017-10-24 22:48:08 +0900 (Tue, 24 Oct 2017) | 10 lines sysconfdir on Windows * ext/etc/etc.c (etc_sysconfdir): mentioned special case on Windows. [ruby-core:43110] [Bug #6121] * ext/etc/extconf.rb: define SYSCONFDIR only if sysconfdir is set in RbConfig::CONFIG and not empty. * win32/Makefile.sub (config.status): sysconfdir is not used on Windows. ------------------------------------------------------------------------ r60401 | kazu | 2017-10-24 21:10:32 +0900 (Tue, 24 Oct 2017) | 5 lines Update call-seq of ARGF.read_nonblock ARGF.read_nonblock supports `exception: false' like IO#read_nonblock since 2.3.0. [Feature #11358] ------------------------------------------------------------------------ r60400 | nobu | 2017-10-24 20:24:19 +0900 (Tue, 24 Oct 2017) | 1 line Test for r60396 ------------------------------------------------------------------------ r60399 | naruse | 2017-10-24 20:15:20 +0900 (Tue, 24 Oct 2017) | 5 lines Revert "sysconfdir on Windows" This reverts commit r60279. This breaks mswin build: https://ci.appveyor.com/project/ruby/ruby/build/1.0.5571 ------------------------------------------------------------------------ r60398 | svn | 2017-10-24 20:13:50 +0900 (Tue, 24 Oct 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60397 | ko1 | 2017-10-24 20:13:49 +0900 (Tue, 24 Oct 2017) | 32 lines Lazy Proc allocation for block parameters [Feature #14045] * insns.def (getblockparam, setblockparam): add special access instructions for block parameters. getblockparam checks VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM and if it is not set this instruction creates a Proc object from a given blcok and set VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM. setblockparam is similar to setlocal, but set VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM. * compile.c: use get/setblockparm instead get/setlocal instructions. Note that they are used for method local block parameters (def m(&b)), not for block local method parameters (iter{|&b|). * proc.c (get_local_variable_ptr): creates Proc object for Binding#local_variable_get/set. * safe.c (safe_setter): we need to create Proc objects for postponed block parameters when $SAFE is changed. * vm_args.c (args_setup_block_parameter): used only for block local blcok parameters. * vm_args.c (vm_caller_setup_arg_block): if called with VM_CALL_ARGS_BLOCKARG_BLOCKPARAM flag then passed block values should be a block handler. * test/ruby/test_optimization.rb: add tests. * benchmark/bm_vm1_blockparam*: added. ------------------------------------------------------------------------ r60396 | nobu | 2017-10-24 20:09:41 +0900 (Tue, 24 Oct 2017) | 4 lines ruby.c: fix r60393 * ruby.c (load_file_internal): set loop options after parsing shebang line. ------------------------------------------------------------------------ r60395 | nobu | 2017-10-24 17:13:13 +0900 (Tue, 24 Oct 2017) | 4 lines vm_eval.c: all value type cases * vm_eval.c (rb_type_str): ensure all value types are covered. missed types would be warned by -Wswitch option of gcc. ------------------------------------------------------------------------ r60394 | nobu | 2017-10-24 17:00:36 +0900 (Tue, 24 Oct 2017) | 6 lines Removed NODE_OPT_N * node.h (NODE_OPT_N): removed. * parse.y (parser_append_options): expand -n option loop to while gets loop. ------------------------------------------------------------------------ r60393 | nobu | 2017-10-24 16:41:48 +0900 (Tue, 24 Oct 2017) | 7 lines parse.y: rb_parser_set_options * parse.y (yycompile0): append top-level addenda before appending prelude nodes. * parse.y (rb_parser_set_options): set top-level addendum options before parsing. ------------------------------------------------------------------------ r60392 | nobu | 2017-10-24 16:17:36 +0900 (Tue, 24 Oct 2017) | 5 lines vm_eval.c: uncallable_object * vm_eval.c (uncallable_object): extract error case as a no-return function. split successive ?-marks not to get confused with a trigraph. ------------------------------------------------------------------------ r60391 | mame | 2017-10-24 15:27:58 +0900 (Tue, 24 Oct 2017) | 5 lines Avoid many type casts The idiom `rb_gc_force_recycle((VALUE)...)` was used heavily. This change defines `rb_discard_nod(NODE*)` and allows C compiler to typecheck. ------------------------------------------------------------------------ r60390 | mame | 2017-10-24 15:16:31 +0900 (Tue, 24 Oct 2017) | 5 lines Remove dynamic NODE allocation out of parser A temporary NODE object was allocated to create iseq. Instead, this patch allocates a dummy NODE as auto variable, and discard it soon. This change is intended as a preparation to manage AST NODEs out of GC. ------------------------------------------------------------------------ r60389 | mame | 2017-10-24 14:54:30 +0900 (Tue, 24 Oct 2017) | 5 lines Remove special handling for (NODE*)1 The magic number was used to mark NODE_ATTRASGN when its receiver is self. But the hack was refactored at r46366. So the remaining code fragments are no longer needed. ------------------------------------------------------------------------ r60388 | normal | 2017-10-24 10:22:08 +0900 (Tue, 24 Oct 2017) | 16 lines net/http: use require_relative to reduce syscalls require_relative speeds up loading of files by reducing path lookups. On a clean install with RubyGems-enabled, "ruby -rnet/http -e exit" shows a reduction in failed open(2) syscalls from 410 to 350 (x86-64 GNU/Linux). I could not measure a time difference on my Linux-based machines, however this should be noticeable to users of other kernels with worse syscall and VFS performance than Linux. Further use of require_relative will reduce lookups in other places. * lib/net/http.rb: use require_relative [ruby-core:78285] [Feature #12973] ------------------------------------------------------------------------ r60387 | svn | 2017-10-24 10:20:05 +0900 (Tue, 24 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60386 | normal | 2017-10-24 10:20:04 +0900 (Tue, 24 Oct 2017) | 35 lines file.c: apply2files releases GVL This means File.chmod, File.lchmod, File.chown, File.lchown, File.unlink, and File.utime operations on slow filesystems no longer hold up other threads. The platform-specific utime_failed changes is compile-tested using a new UTIME_EINVAL macro This hurts performance on fast filesystem, but these methods are unlikely to be performance bottlenecks and (IMHO) avoiding pathological slowdowns and stalls are more important. benchmark results: minimum results in each 3 measurements. Execution time (sec) name trunk built file_chmod 0.591 0.801 Speedup ratio: compare with the result of `trunk' (greater is better) name built file_chmod 0.737 * file.c (UTIME_EINVAL): new macro to ease compile-testing * file.c (struct apply_arg): new struct * file.c (no_gvl_apply2files): new function * file.c (apply2files): release GVL * file.c (chmod_internal): adjust for apply2files changes * file.c (lchmod_internal): ditto * file.c (chown_internal): ditto * file.c (lchown_internal): ditto * file.c (utime_failed): ditto * file.c (utime_internal): ditto * file.c (unlink_internal): ditto [ruby-core:83200] [Feature #13996] ------------------------------------------------------------------------ r60385 | svn | 2017-10-24 06:50:10 +0900 (Tue, 24 Oct 2017) | 1 line * 2017-10-24 ------------------------------------------------------------------------ r60384 | normal | 2017-10-24 06:50:08 +0900 (Tue, 24 Oct 2017) | 10 lines thread_pthread: do not corrupt stack This fixes stuck test/ruby/test_io.rb with FIBER_USE_NATIVE=0 on GNU/Linux because linked-list pointers used by glibc get corrupted when fiber stacks are copied. Thanks to wanabe for finding the bug and original patch. * thread_pthread (native_thread_init_stack): fix stack corruption [ruby-core:82737] [Bug #13387] ------------------------------------------------------------------------ r60383 | nobu | 2017-10-23 23:05:07 +0900 (Mon, 23 Oct 2017) | 4 lines multiple arguments to write Make write methods of IO-like objects accept multiple arguments, as well as IO#write. ------------------------------------------------------------------------ r60382 | yui-knk | 2017-10-23 22:25:59 +0900 (Mon, 23 Oct 2017) | 4 lines Add test cases for branch coverage * test/coverage/test_coverage.rb (test_branch_coverage_for_while_statement): Add test cases for modifier while/until. ------------------------------------------------------------------------ r60381 | kazu | 2017-10-23 21:59:05 +0900 (Mon, 23 Oct 2017) | 1 line Fix a typo [ci skip] ------------------------------------------------------------------------ r60380 | naruse | 2017-10-23 17:28:05 +0900 (Mon, 23 Oct 2017) | 4 lines OpenSSL may show the different error message https://github.com/ruby/ruby/commit/d02211c9da608742b09aec768db79442007eabc0#commitcomment-25119729 From: MSP-Greg <MSP-Greg@users.noreply.github.com> ------------------------------------------------------------------------ r60379 | nobu | 2017-10-23 16:06:12 +0900 (Mon, 23 Oct 2017) | 3 lines zlib.c: multiple arguments to write * ext/zlib/zlib.c (rb_gzwriter_write): accepts multiple arguments. ------------------------------------------------------------------------ r60378 | nobu | 2017-10-23 15:42:37 +0900 (Mon, 23 Oct 2017) | 4 lines error.c: warning to write multiple arguments * error.c (warning_write): accepts multiple arguments to merge multiple warning messages. ------------------------------------------------------------------------ r60377 | nobu | 2017-10-23 15:25:39 +0900 (Mon, 23 Oct 2017) | 4 lines stringio.c: write multiple arguments * ext/stringio/stringio.c (strio_write_m): make StringIO#write accept multiple arguments, as well as IO#write. ------------------------------------------------------------------------ r60376 | nobu | 2017-10-23 15:05:46 +0900 (Mon, 23 Oct 2017) | 1 line NEWS: add [Feature #9323] [ci skip] ------------------------------------------------------------------------ r60375 | hsbt | 2017-10-23 14:58:59 +0900 (Mon, 23 Oct 2017) | 1 line Removed empty dir. ------------------------------------------------------------------------ r60374 | hsbt | 2017-10-23 14:56:25 +0900 (Mon, 23 Oct 2017) | 8 lines Drop to support NaCl platform. Because NaCl and PNaCl are already sunset status. see https://bugs.chromium.org/p/chromium/issues/detail?id=239656#c160 configure.ac: Patch for this file was provided by @nobu. [Feature #14041][ruby-core:83497][fix GH-1726] ------------------------------------------------------------------------ r60373 | nobu | 2017-10-23 14:28:12 +0900 (Mon, 23 Oct 2017) | 4 lines io.c: fix infinite retry * io.c (io_binwritev): fix infinite retry when flushing buffered data. [Feature #9323] ------------------------------------------------------------------------ r60372 | nobu | 2017-10-23 14:09:35 +0900 (Mon, 23 Oct 2017) | 4 lines io.c: fix buffered output * io.c (io_binwritev): append to buffered data, not overwriting. [Feature #9323] ------------------------------------------------------------------------ r60371 | nobu | 2017-10-23 14:09:34 +0900 (Mon, 23 Oct 2017) | 3 lines io.c: fix total * io.c (io_writev): total may be a bignum. [Feature #9323] ------------------------------------------------------------------------ r60370 | nobu | 2017-10-23 11:25:58 +0900 (Mon, 23 Oct 2017) | 4 lines io.c: no restriction * io.c (io_write_m): remove argc restriction upto IOV_MAX-1. [Feature #9323] ------------------------------------------------------------------------ r60369 | sonots | 2017-10-23 01:57:16 +0900 (Mon, 23 Oct 2017) | 1 line common.mk: add install-capi to make help ------------------------------------------------------------------------ r60368 | svn | 2017-10-23 01:03:58 +0900 (Mon, 23 Oct 2017) | 1 line * 2017-10-23 ------------------------------------------------------------------------ r60367 | kou | 2017-10-23 01:03:57 +0900 (Mon, 23 Oct 2017) | 27 lines rss itunes: fix a bug that <itunes:explicit> value isn't fully supported Fix GH-1725 <itunes:explicit> accepts "explicit", "yes", "true", "clean", "no" and "false" as valid values. Here is the <itunes:explicit>'s description in https://help.apple.com/itc/podcasts_connect/#/itcb54353390: > The <itunes:explicit> tag indicates whether your podcast contains > explicit material. You can specify the following values: > > * Yes | Explicit | True. If you specify yes, explicit, or true, > indicating the presence of explicit content, the iTunes Store > displays an Explicit parental advisory graphic for your podcast. > > * Clean | No | False. If you specify clean, no, or false, indicating > that none of your podcast episodes contain explicit language or > adult content, the iTunes Store displays a Clean parental > advisory graphic for your podcast. I don't know whether <itunes:explicit> value is case sensitive or insensitive. But the current implementation is case insensitive. Reported by Valerie Woolard Srinivasan. Thanks!!! ------------------------------------------------------------------------ r60366 | yui-knk | 2017-10-22 23:13:50 +0900 (Sun, 22 Oct 2017) | 4 lines Add test cases for branch coverage * test/coverage/test_coverage.rb (test_branch_coverage_for_if_statement): Add a test case for ternary operator. ------------------------------------------------------------------------ r60365 | yui-knk | 2017-10-22 22:58:55 +0900 (Sun, 22 Oct 2017) | 4 lines Add test cases for branch coverage * test/coverage/test_coverage.rb (test_branch_coverage_for_if_statement): Add test cases for modifier if/unless. ------------------------------------------------------------------------ r60364 | yui-knk | 2017-10-22 22:49:41 +0900 (Sun, 22 Oct 2017) | 4 lines Add test cases for branch coverage * test/coverage/test_coverage.rb (test_branch_coverage_for_if_statement): Add test cases for if/unless without else clauses. ------------------------------------------------------------------------ r60363 | yui-knk | 2017-10-22 22:34:24 +0900 (Sun, 22 Oct 2017) | 1 line test/coverage/test_coverage.rb: Use `<<~` to ease to calculate column of target codes ------------------------------------------------------------------------ r60362 | yui-knk | 2017-10-22 22:18:40 +0900 (Sun, 22 Oct 2017) | 12 lines Add column numbers to branch coverage * compile.c (DECL_BRANCH_BASE, ADD_TRACE_BRANCH_COVERAGE): Add column to arguments. * compile.c (compile_if, compile_case, compile_when, compile_loop, iseq_compile_each0): Pass column numbers to macros. * ext/coverage/coverage.c (branch_coverage): Add column numbers to a return value. * test/coverage/test_coverage.rb: Follow-up these changes. ------------------------------------------------------------------------ r60361 | knu | 2017-10-22 21:26:21 +0900 (Sun, 22 Oct 2017) | 1 line Mention `Set#reset` ------------------------------------------------------------------------ r60360 | knu | 2017-10-22 21:25:34 +0900 (Sun, 22 Oct 2017) | 4 lines Add `Set#reset` This method resets the internal state of a set after modification to existing elements, reindexing and deduplicating them. [Feature #6589] ------------------------------------------------------------------------ r60359 | hsbt | 2017-10-22 20:27:06 +0900 (Sun, 22 Oct 2017) | 3 lines Fixed misspelling words. These are detected by https://github.com/client9/misspell ------------------------------------------------------------------------ r60358 | kazu | 2017-10-22 18:16:54 +0900 (Sun, 22 Oct 2017) | 1 line Use `\A` and `\z` instead of `^` and `$` ------------------------------------------------------------------------ r60357 | kazu | 2017-10-22 18:16:51 +0900 (Sun, 22 Oct 2017) | 1 line Fix a typo [ci skip] ------------------------------------------------------------------------ r60356 | rhe | 2017-10-22 16:18:55 +0900 (Sun, 22 Oct 2017) | 3 lines gdbm, dbm, sdbm: remove unnecessary conditions The dfree and dsize callback functions are never called with NULL. ------------------------------------------------------------------------ r60355 | rhe | 2017-10-22 16:18:54 +0900 (Sun, 22 Oct 2017) | 5 lines gdbm, dbm, sdbm: prevent memory leak in #initialize Have the allocator function allocate struct dbmdata too. #initialize should not call ALLOC() after opening a file since it can fail with NoMemoryError, leaking the opened file. ------------------------------------------------------------------------ r60354 | yui-knk | 2017-10-22 16:04:00 +0900 (Sun, 22 Oct 2017) | 6 lines Fix a target method of a test * test/ruby/test_string.rb (test_delete): I guess this line should be a test case which asserts coderange is handled correctly when a result of String#delete has non-ASCII characters. ------------------------------------------------------------------------ r60353 | kazu | 2017-10-22 16:01:57 +0900 (Sun, 22 Oct 2017) | 5 lines Update doc of Hash#slice [ci skip] - Add arguments to call-seq - Add sample of multiple keys - Add sample: hash does not contain key ------------------------------------------------------------------------ r60352 | kazu | 2017-10-22 15:30:47 +0900 (Sun, 22 Oct 2017) | 1 line Fix indent and comment [ci skip] ------------------------------------------------------------------------ r60351 | nobu | 2017-10-22 15:22:50 +0900 (Sun, 22 Oct 2017) | 4 lines io.c: fix local variables * io.c (io_writev): fix local variable declarations, when writev(2) is not available. [Feature #9323] ------------------------------------------------------------------------ r60350 | yui-knk | 2017-10-22 15:11:01 +0900 (Sun, 22 Oct 2017) | 1 line parse.y (new_scope_gen): adjust indent ------------------------------------------------------------------------ r60349 | nobu | 2017-10-22 15:01:07 +0900 (Sun, 22 Oct 2017) | 4 lines Add missing `buf` parameter to `recv_nonblock` doc [ci skip] [Fix GH-1725] From: yuuji.yaginuma <yuuji.yaginuma@gmail.com> ------------------------------------------------------------------------ r60348 | nobu | 2017-10-22 14:36:49 +0900 (Sun, 22 Oct 2017) | 4 lines objspace.c: missing types * ext/objspace/objspace.c (count_nodes): added recently added node types that were missing. ------------------------------------------------------------------------ r60347 | nobu | 2017-10-22 14:13:57 +0900 (Sun, 22 Oct 2017) | 4 lines remove NODE_DREGX_ONCE * node.h (enum node_type): remove NODE_DREGX_ONCE which is not used anymore. ------------------------------------------------------------------------ r60346 | rhe | 2017-10-22 13:19:03 +0900 (Sun, 22 Oct 2017) | 3 lines doc/syntax/methods.rdoc: fix a misleading example As a bonus, wrap a long line added by r60295. ------------------------------------------------------------------------ r60345 | nobu | 2017-10-22 13:06:23 +0900 (Sun, 22 Oct 2017) | 1 line dir.c: adjust indent [ci skip] ------------------------------------------------------------------------ r60344 | naruse | 2017-10-22 11:19:52 +0900 (Sun, 22 Oct 2017) | 1 line sort test result ------------------------------------------------------------------------ r60343 | glass | 2017-10-22 11:11:07 +0900 (Sun, 22 Oct 2017) | 4 lines Make IO#write accept multiple arguments io.c: make IO#write accept multiple arguments. it uses writev(2) if possible. ------------------------------------------------------------------------ r60342 | naruse | 2017-10-22 11:08:46 +0900 (Sun, 22 Oct 2017) | 1 line sort the test result ------------------------------------------------------------------------ r60341 | naruse | 2017-10-22 11:03:49 +0900 (Sun, 22 Oct 2017) | 3 lines Dir.glob with FNM_EXTGLOB is optimized [Feature #13873] The order of resulted array is changed in some cases. ------------------------------------------------------------------------ r60340 | nobu | 2017-10-22 10:46:43 +0900 (Sun, 22 Oct 2017) | 5 lines compile.c: optimize local variable assignments * compile.c (iseq_peephole_optimize): eliminate simple self assignments of a local variable when the result is used. follow-up of r60322. ------------------------------------------------------------------------ r60339 | nobu | 2017-10-22 10:37:36 +0900 (Sun, 22 Oct 2017) | 4 lines parse.y: workaround for warnings * parse.y (mark_lvar_used): enable workaround to suppress unused local variables. [ruby-core:82656] [Bug #13872] ------------------------------------------------------------------------ r60338 | nobu | 2017-10-22 10:13:57 +0900 (Sun, 22 Oct 2017) | 3 lines fix up r60224 * parse.y (match_op_gen): fix optimization at DREGX_ONCE. ------------------------------------------------------------------------ r60337 | glass | 2017-10-22 09:57:46 +0900 (Sun, 22 Oct 2017) | 4 lines hash.c: optimize Hash#compare_by_identity hash.c (rb_hash_compare_by_id): avoid unnecessary allocation of st_table. formerly, st_table created in rb_hash_modify() was not used and replaced immediately. ------------------------------------------------------------------------ r60336 | yui-knk | 2017-10-22 09:45:05 +0900 (Sun, 22 Oct 2017) | 6 lines Remove not used node_type NODE_BMETHOD * ext/objspace/objspace.c (count_nodes): This node_type has not been used since r24128. * node.c (dump_node): ditto * node.h (node_type, NEW_BMETHOD): ditto ------------------------------------------------------------------------ r60335 | glass | 2017-10-22 09:38:05 +0900 (Sun, 22 Oct 2017) | 3 lines Add arity check into Hash#flatten * hash.c (rb_hash_flatten): add arity check ------------------------------------------------------------------------ r60334 | yui-knk | 2017-10-22 09:29:40 +0900 (Sun, 22 Oct 2017) | 6 lines Remove not used node_type NODE_BLOCK_ARG * ext/objspace/objspace.c (count_nodes): This node_type has not been used since r11840. * node.c (dump_node, rb_gc_mark_node): ditto * node.h (node_type, NEW_BLOCK_ARG): ditto ------------------------------------------------------------------------ r60333 | nobu | 2017-10-22 09:19:12 +0900 (Sun, 22 Oct 2017) | 4 lines vm_insnhelper.c: array aref optimization * vm_insnhelper.c (vm_opt_aref): optimize on other than fixnum argument too. ------------------------------------------------------------------------ r60332 | yui-knk | 2017-10-22 09:17:39 +0900 (Sun, 22 Oct 2017) | 6 lines Remove not used node_type NODE_TO_ARY * ext/objspace/objspace.c (count_nodes): This node_type has not been used since r13236. * node.c (dump_node, rb_gc_mark_node): ditto * node.h (node_type, NEW_TO_ARY): ditto ------------------------------------------------------------------------ r60331 | nobu | 2017-10-22 09:00:41 +0900 (Sun, 22 Oct 2017) | 1 line string.c: comment layout [ci skip] ------------------------------------------------------------------------ r60330 | suke | 2017-10-22 08:57:10 +0900 (Sun, 22 Oct 2017) | 3 lines ext/win32ole/win32ole.c (fole_missing): set receiver in NoMethodError. test/win32ole/test_win32ole.rb: ditto. ------------------------------------------------------------------------ r60329 | svn | 2017-10-22 08:49:36 +0900 (Sun, 22 Oct 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60328 | sonots | 2017-10-22 08:49:35 +0900 (Sun, 22 Oct 2017) | 6 lines * string.c: [DOC] Split rdoc of String#<< and String#concat [ci skip] Split String#<< and String#concat docs to reflect single and multiple arguments patched by MSP-Greg [fix GH-1614] ------------------------------------------------------------------------ r60327 | sonots | 2017-10-22 08:44:15 +0900 (Sun, 22 Oct 2017) | 11 lines * object.c: Improve documentation of Kernel#Array Array(arg) does more than just call to_ary or to_a on the argument. It also falls back to returning [arg] if neither method is available. This patch extends the description and adds a few examples of how it handles common types of arguments, including an integer (which does not implement to_ary or to_a). Extend Kernel#Array doc to mention TypeError patched by ragesoss (Sage Ross) [fix GH-1663] ------------------------------------------------------------------------ r60326 | sonots | 2017-10-22 08:38:17 +0900 (Sun, 22 Oct 2017) | 8 lines * doc/regexp.rdoc: In regexp doc, two backslashes match one literally In the "Metacharacters and Escapes" section of regexp.rdoc, it said that to match a backslash literally, it must be backslash-escaped, but the rendered HTML showed three backslashes (\\\). There should only be two backslashes (\\). patched by jlmuir (J. Lewis Muir) [fix GH-1677] ------------------------------------------------------------------------ r60325 | sonots | 2017-10-22 08:36:53 +0900 (Sun, 22 Oct 2017) | 2 lines * doc/regexp.rdoc: Fix regexp doc syntax highlighting patched by jlmuir (J. Lewis Muir) [fix GH-1678] ------------------------------------------------------------------------ r60324 | sonots | 2017-10-22 08:35:40 +0900 (Sun, 22 Oct 2017) | 2 lines * string.c: Remove errant "the" in gsub documentation patched by jlmuir (J. Lewis Muir) [fix GH-1679] ------------------------------------------------------------------------ r60323 | sonots | 2017-10-22 08:32:57 +0900 (Sun, 22 Oct 2017) | 4 lines Fix typo in comment * test/ruby/test_transcode.rb: fix typo in comment patched by larskanis (Lars Kanis) [GH-1681] ------------------------------------------------------------------------ r60322 | nobu | 2017-10-22 08:30:39 +0900 (Sun, 22 Oct 2017) | 4 lines compile.c: optimize local variable assignments * compile.c (iseq_peephole_optimize): eliminate repeated assignments and copy from/to a same local variable. ------------------------------------------------------------------------ r60321 | akr | 2017-10-22 08:23:05 +0900 (Sun, 22 Oct 2017) | 3 lines reference Socket.getaddrinfo to Addrinfo.getaddrinfo. ------------------------------------------------------------------------ r60320 | nobu | 2017-10-22 08:21:05 +0900 (Sun, 22 Oct 2017) | 58 lines Improve performance of string interpolation This patch will add pre-allocation in string interpolation. By this, unecessary capacity resizing is avoided. For small strings, optimized `rb_str_resurrect` operation is faster, so pre-allocation is done only when concatenated strings are large. `MIN_PRE_ALLOC_SIZE` was decided by experimenting with local machine (x86_64-apple-darwin 16.5.0, Apple LLVM version 8.1.0 (clang - 802.0.42)). String interpolation will be faster around 72% when large string is created. * Before ``` Calculating ------------------------------------- Large string interpolation 1.276M ({U+00B1} 5.9%) i/s - 6.358M in 5.002022s Small string interpolation 5.156M ({U+00B1} 5.5%) i/s - 25.728M in 5.005731s ``` * After ``` Calculating ------------------------------------- Large string interpolation 2.201M ({U+00B1} 5.8%) i/s - 11.063M in 5.043724s Small string interpolation 5.192M ({U+00B1} 5.7%) i/s - 25.971M in 5.020516s ``` * Test code ```ruby require 'benchmark/ips' Benchmark.ips do |x| x.report "Large string interpolation" do |t| a = "Hellooooooooooooooooooooooooooooooooooooooooooooooooooo" b = "Wooooooooooooooooooooooooooooooooooooooooooooooooooorld" t.times do "#{a}, #{b}!" end end x.report "Small string interpolation" do |t| a = "Hello" b = "World" t.times do "#{a}, #{b}!" end end end ``` [Fix GH-1626] From: Nao Minami <south37777@gmail.com> ------------------------------------------------------------------------ r60319 | akr | 2017-10-22 08:19:47 +0900 (Sun, 22 Oct 2017) | 23 lines deprecate TCPSocket.gethostbyname. TCPSocket.gethostbyname has problems similar to Socket.gethostbyname. An example of the problem which only the address family of the first address is returned: ``` pp TCPSocket.gethostbyname("www.wide.ad.jp") #=> ["www.wide.ad.jp", [], 10, "2001:200:dff:fff1:216:3eff:fe4b:651c", "203.178.137.58"] ``` The address family of the first address, AF_INET6 (10), is returned but the address family of the second address, AF_INET, is not returned. ------------------------------------------------------------------------ r60318 | rhe | 2017-10-22 05:26:26 +0900 (Sun, 22 Oct 2017) | 7 lines openssl: merge test fix from upstream Merge a commit from upstream: d1cbf6d75280 test/test_ssl_session: skip tests for session_remove_cb Tests using SSL::SSLContext#session_remove_cb= are now skipped. ------------------------------------------------------------------------ r60317 | knu | 2017-10-22 02:03:40 +0900 (Sun, 22 Oct 2017) | 6 lines Avoid use of `self.class.new(self)` in Set#collect! That prevents infinite recursion when a subclass of Set uses `collect!` in its constructor. This should fix [Bug #12437]. ------------------------------------------------------------------------ r60316 | naruse | 2017-10-22 01:44:56 +0900 (Sun, 22 Oct 2017) | 1 line ignore server side error ------------------------------------------------------------------------ r60315 | naruse | 2017-10-22 01:44:56 +0900 (Sun, 22 Oct 2017) | 3 lines Revert "ignore server side error" This reverts commit r60314. ------------------------------------------------------------------------ r60314 | naruse | 2017-10-22 01:43:54 +0900 (Sun, 22 Oct 2017) | 1 line ignore server side error ------------------------------------------------------------------------ r60313 | naruse | 2017-10-22 01:34:34 +0900 (Sun, 22 Oct 2017) | 1 line fic expected error message ------------------------------------------------------------------------ r60312 | knu | 2017-10-22 01:28:52 +0900 (Sun, 22 Oct 2017) | 4 lines Fix comparison methods of Set to check if `@hash` is actually comparable This should fix comparison of rbtree backed SortedSet instances. [Bug #12072] ------------------------------------------------------------------------ r60311 | naruse | 2017-10-22 01:25:22 +0900 (Sun, 22 Oct 2017) | 3 lines Introduce Net::HTTP#min_version/max_version [Feature #9450] Set SSL minimum/maximum version. ------------------------------------------------------------------------ r60310 | naruse | 2017-10-22 01:25:19 +0900 (Sun, 22 Oct 2017) | 1 line fix OpenSSL::SSL::SSLContext#min_version doesn't work ------------------------------------------------------------------------ r60309 | akr | 2017-10-22 01:12:46 +0900 (Sun, 22 Oct 2017) | 2 lines less random generations in Random::Formatter#choose. ------------------------------------------------------------------------ r60308 | hsbt | 2017-10-22 01:11:58 +0900 (Sun, 22 Oct 2017) | 5 lines Add documentation for `chomp` option. https://github.com/ruby/ruby/pull/1717 Patch by @ksss [fix GH-1717] ------------------------------------------------------------------------ r60307 | yui-knk | 2017-10-22 01:09:51 +0900 (Sun, 22 Oct 2017) | 7 lines Remove not used node_type NODE_CVDECL * compile.c (defined_expr0): This node_type has not been used since r11614. * ext/objspace/objspace.c (count_nodes): ditto * node.c (dump_node): ditto * node.h (node_type, NEW_CVDECL): ditto ------------------------------------------------------------------------ r60306 | hsbt | 2017-10-22 01:05:01 +0900 (Sun, 22 Oct 2017) | 1 line Handle Errno::EADDRNOTAVAIL with Raspberry Pi environment. ------------------------------------------------------------------------ r60305 | k0kubun | 2017-10-22 01:01:48 +0900 (Sun, 22 Oct 2017) | 1 line erb.1: add missing option in detailed description ------------------------------------------------------------------------ r60304 | knu | 2017-10-22 00:57:32 +0900 (Sun, 22 Oct 2017) | 3 lines Use a mutex to make SortedSet.setup thread-safe This should fix [Bug #13735]. ------------------------------------------------------------------------ r60303 | knu | 2017-10-22 00:57:26 +0900 (Sun, 22 Oct 2017) | 1 line Remove redundant use of module_eval ------------------------------------------------------------------------ r60302 | yui-knk | 2017-10-22 00:56:03 +0900 (Sun, 22 Oct 2017) | 8 lines Remove not used node_type NODE_IASGN2 * compile.c (compile_massign_opt, iseq_compile_each0): This node_type has not been used since r11813. * ext/objspace/objspace.c (count_nodes): ditto * node.c (dump_node, rb_gc_mark_node): ditto * node.h (node_type, NEW_IASGN2): ditto * parse.y (node_assign_gen): ditto ------------------------------------------------------------------------ r60301 | k0kubun | 2017-10-22 00:45:32 +0900 (Sun, 22 Oct 2017) | 1 line driver.rb: allow executing driver.rb directly ------------------------------------------------------------------------ r60300 | usa | 2017-10-22 00:43:05 +0900 (Sun, 22 Oct 2017) | 9 lines The encoding of __FILE__ and __dir__ should be same * ruby.c (process_options): convert the real path of the script to locale encoding if its encoding is not locale (maybe UTF-8) on Windows/OS X. this change makes the encoding of __dir__ to the same encoding of __FILE__ when the script name is passed from commandline. * test/ruby/test_options.rb (test___dir__encoding): test for this change. ------------------------------------------------------------------------ r60299 | k0kubun | 2017-10-22 00:39:35 +0900 (Sun, 22 Oct 2017) | 3 lines driver.rb: add option to specify target with rbenv [close GH-1724] ------------------------------------------------------------------------ r60298 | knu | 2017-10-22 00:38:38 +0900 (Sun, 22 Oct 2017) | 1 line Allow a SortedSet to be frozen and still functional [Bug #12091] ------------------------------------------------------------------------ r60297 | akr | 2017-10-22 00:21:26 +0900 (Sun, 22 Oct 2017) | 13 lines SecureRandom.alphanumeric implemented. [ruby-core:68098] [Feature #10849] proposed by Andrew Butterfield. SecureRandom.choose and SecureRandom.graph is not included. (The implementation has SecureRandom.choose but it is private.) I feel the method name, SecureRandom.choose, doesn't represent the behavior well. The actual use cases of SecureRandom.graph is not obvious. ------------------------------------------------------------------------ r60296 | svn | 2017-10-22 00:19:46 +0900 (Sun, 22 Oct 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60295 | hsbt | 2017-10-22 00:19:45 +0900 (Sun, 22 Oct 2017) | 5 lines Clarify return value for assignment methods. https://github.com/ruby/ruby/pull/1682 Patch by @sos4nt [fix GH-1682] ------------------------------------------------------------------------ r60294 | hsbt | 2017-10-22 00:16:54 +0900 (Sun, 22 Oct 2017) | 6 lines Clarify the behavior of IO.write without offset in write mode. https://github.com/ruby/ruby/pull/1571 Patch by @takanabe [fix GH-1571] [Bug #11638][ruby-core:71277] ------------------------------------------------------------------------ r60293 | k0kubun | 2017-10-22 00:02:46 +0900 (Sun, 22 Oct 2017) | 15 lines erb.rb: specify frozen_string_literal: true for compilation performance. $ ruby ./benchmark/driver.rb -e "trunk::/Users/k0kubun/.rbenv/versions/trunk/bin/ruby;modified::/Users/k0kubun/.rbenv/versions/modified/bin/ruby" -d ./benchmark -p app_erb ----------------------------------------------------------- benchmark results: Execution time (sec) name trunk modified app_erb 1.911 1.885 Speedup ratio: compare with the result of `trunk' (greater is better) name modified app_erb 1.014 ------------------------------------------------------------------------ r60292 | svn | 2017-10-22 00:02:26 +0900 (Sun, 22 Oct 2017) | 1 line * 2017-10-22 ------------------------------------------------------------------------ r60291 | hsbt | 2017-10-22 00:02:25 +0900 (Sun, 22 Oct 2017) | 9 lines Update some words on README.md. * Remove space on double spaces. * Capitalization of "Ruby". * Use macOS instead of OS X. https://github.com/ruby/ruby/pull/1610 Patch by @bunkrich [fix GH-1610] ------------------------------------------------------------------------ r60290 | hsbt | 2017-10-21 23:55:22 +0900 (Sat, 21 Oct 2017) | 5 lines Added explicitly require to example code. https://github.com/ruby/ruby/pull/1666 Patch by @guilherme [fix GH-1666] ------------------------------------------------------------------------ r60289 | yui-knk | 2017-10-21 23:51:07 +0900 (Sat, 21 Oct 2017) | 4 lines Do not pass a not used argument * parse.y (new_op_assign_gen): new_op_assign_gen for ripper does not need column information. ------------------------------------------------------------------------ r60288 | kazu | 2017-10-21 23:40:03 +0900 (Sat, 21 Oct 2017) | 1 line Use caller with length to reduce unused strings ------------------------------------------------------------------------ r60287 | ko1 | 2017-10-21 23:35:19 +0900 (Sat, 21 Oct 2017) | 1 line fix r60281 ------------------------------------------------------------------------ r60286 | yui-knk | 2017-10-21 23:32:32 +0900 (Sat, 21 Oct 2017) | 4 lines Define the macro separately for ruby parser and for ripper * parse.y (new_op_assign): Define the macro separately for ruby parser and for ripper. ------------------------------------------------------------------------ r60285 | sonots | 2017-10-21 23:31:21 +0900 (Sat, 21 Oct 2017) | 5 lines Add doxygen comments * include/ruby/ruby.h (enum ruby_value_type): add doxygen comments * internal.h (enum imemo_type, struct vm_svar): add doxygen comments * method.h (rb_method_type_t, rb_method_iseq_t): add doxygen comments ------------------------------------------------------------------------ r60284 | glass | 2017-10-21 23:25:46 +0900 (Sat, 21 Oct 2017) | 4 lines io.c: introduce copy offload to IO.copy_stream io.c (rb_io_s_copy_stream): add copy offload feature (by using copy_file_range(2) if available) to IO.copy_stream ------------------------------------------------------------------------ r60283 | kosaki | 2017-10-21 23:22:12 +0900 (Sat, 21 Oct 2017) | 1 line test_pathname.rb#test_open should care about umask ------------------------------------------------------------------------ r60282 | kazu | 2017-10-21 23:22:04 +0900 (Sat, 21 Oct 2017) | 1 line Fix r60271 ------------------------------------------------------------------------ r60281 | kosaki | 2017-10-21 23:21:56 +0900 (Sat, 21 Oct 2017) | 1 line test_cp_preserve_permissions should care about umask ------------------------------------------------------------------------ r60280 | akr | 2017-10-21 23:21:52 +0900 (Sat, 21 Oct 2017) | 9 lines Describe recommended-methods. Addrinfo.getaddrinfo is recommended instead of Socket.gethostbyname. Addrinfo#getnameinfo is recommended instead of Socket.gethostbyaddr. ------------------------------------------------------------------------ r60279 | nobu | 2017-10-21 23:19:23 +0900 (Sat, 21 Oct 2017) | 7 lines sysconfdir on Windows * ext/etc/etc.c (etc_sysconfdir): mentioned special case on Windows. [ruby-core:43110] [Bug #6121] * win32/Makefile.sub (config.status): sysconfdir is not used on Windows. ------------------------------------------------------------------------ r60278 | hsbt | 2017-10-21 23:11:08 +0900 (Sat, 21 Oct 2017) | 5 lines Removed obsoleted safe level checks on irb. https://github.com/ruby/ruby/pull/1713 Patch by @y-yagi [fix GH-1713] ------------------------------------------------------------------------ r60277 | nobu | 2017-10-21 23:06:22 +0900 (Sat, 21 Oct 2017) | 4 lines fix up r60243 * tool/vcs.rb (VCS::GIT.get_revisions): use last revision also as changed revision when the head does not have svn ID. ------------------------------------------------------------------------ r60276 | svn | 2017-10-21 22:58:32 +0900 (Sat, 21 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60275 | hsbt | 2017-10-21 22:58:31 +0900 (Sat, 21 Oct 2017) | 5 lines Fixed unexpected behavior of `Resolv::MDNS#each_address` when given ".local" address. https://github.com/ruby/ruby/pull/1425 Patch by @elct9620 [fix GH-1484] ------------------------------------------------------------------------ r60274 | hsbt | 2017-10-21 22:49:39 +0900 (Sat, 21 Oct 2017) | 5 lines Improve docs for `File.delete` exceptions. https://github.com/ruby/ruby/pull/1505 Patch by @mrtazz [fix GH-1505] ------------------------------------------------------------------------ r60273 | hsbt | 2017-10-21 22:40:12 +0900 (Sat, 21 Oct 2017) | 5 lines Added sample code of merge! method in hash.c. https://github.com/ruby/ruby/pull/1652 Patch by @selmertsx [fix GH-1652] ------------------------------------------------------------------------ r60272 | knu | 2017-10-21 22:38:03 +0900 (Sat, 21 Oct 2017) | 1 line Fix the issue reference to [Bug #13769], handled in r60270 ------------------------------------------------------------------------ r60271 | knu | 2017-10-21 22:34:22 +0900 (Sat, 21 Oct 2017) | 1 line Add a new test case for ipaddr 1.2.0 + drb/acl ------------------------------------------------------------------------ r60270 | knu | 2017-10-21 22:34:19 +0900 (Sat, 21 Oct 2017) | 8 lines Import ipaddr 1.2.0 - Add IPAddr#prefix - Add IPAddr#loopback? - Add IPAddr#private? [Feature #11666] - Add IPAddr#link_local? [Feature #10912] - Reject invalid address mask [Bug #13399] - Warn that IPAddr#ipv4_compat and #ipv4_compat? are deprecated [#Bug 13769] ------------------------------------------------------------------------ r60269 | hsbt | 2017-10-21 22:17:54 +0900 (Sat, 21 Oct 2017) | 3 lines Rename spec/rspec to .bundle. It used without rspec installation for test-* task. ------------------------------------------------------------------------ r60268 | kosaki | 2017-10-21 22:15:23 +0900 (Sat, 21 Oct 2017) | 8 lines kill "discards 'const' qualifier" warning Kill following warning. ../../../ext/psych/yaml/emitter.c: In function 'yaml_emitter_write_block_scalar_hints': ../../../ext/psych/yaml/emitter.c:2196:20: warning: assignment discards 'const' qualifier from pointer target type [enabled by default] chomp_hint = "-"; ^ ------------------------------------------------------------------------ r60267 | kosaki | 2017-10-21 22:15:11 +0900 (Sat, 21 Oct 2017) | 8 lines kill "discards 'const' qualifier" warning Kill following warning. ../../../ext/psych/yaml/emitter.c: In function 'yaml_emitter_write_folded_scalar': ../../../ext/psych/yaml/emitter.c:2283:5: warning: passing argument 2 of 'yaml_emitter_write_indicator' discards 'const' qualifier from pointer target type [enabled by default] if (!yaml_emitter_write_indicator(emitter, ">", 1, 0, 0)) ^ ------------------------------------------------------------------------ r60266 | akr | 2017-10-21 22:13:02 +0900 (Sat, 21 Oct 2017) | 46 lines Deprecation document for gethostbyname,gethostbyaddr. [Feature #13097] I confirmed current ruby (Ruby 2.4 and trunk) uses gethostbyname() and gethostbyaddr(). Socket.gethostbyname uses getaddrinfo() and gethostbyname(). Socket.gethostbyaddr uses gethostbyaddr(). Socket.gethostbyname uses gethostbyname() to obtain alias hostnames. RFC 3493 defines getaddrinfo()/getnameinfo() and describes the problems of gethostbyname()/gethostbyaddr(). The problems are difficult protocol handling and thread-unsafety. Since Ruby has GVL, the thread-unsafety doesn't cause wrong result. But it may block other threads until finishing DNS query. Socket.gethostbyname has the protocol handling problem. It returns only one address family: ``` % ruby -rpp -rsocket -e 'pp Socket.gethostbyname("www.wide.ad.jp")' ["www.wide.ad.jp", [], 10, " \x01\x02\x00\r\xFF\xFF\xF1\x02\x16>\xFF\xFEKe\x1C", "\xCB\xB2\x89:"] ``` www.wide.ad.jp has one IPv6 address and one IPv4 address. But Socket.gethostbyname returns only one address family, 10 (AF_INET6), which is the address family of the first address. Also, Socket.gethostbyname and Socket.gethostbyaddr uses 4-bytes binary IPv4 address and 16-bytes binary IPv6 address. This is not usual in other socket API in Ruby. (Most socket API uses binary sockaddr string or Addrinfo object) I think Socket.gethostbyname and Socket.gethostbyaddr are too far from recommendable API. So, I added deprecation description for documents for them. ------------------------------------------------------------------------ r60265 | yui-knk | 2017-10-21 22:06:36 +0900 (Sat, 21 Oct 2017) | 4 lines node.h: Remove a not used function prototype * node.h (rb_node_newnode_longlife): The definition of this function was deleted r24490. ------------------------------------------------------------------------ r60264 | kosaki | 2017-10-21 22:02:04 +0900 (Sat, 21 Oct 2017) | 8 lines kill "value computed is not used" warning Currently, gcc claims your coding style is not good. Shut it up. ../../../ext/psych/yaml/emitter.c: In function 'yaml_emitter_write_plain_scalar': ../../../ext/psych/yaml/emitter.c:28:6: warning: value computed is not used [-Wunused-value] && ((emitter->line_break == YAML_CR_BREAK ? \ ^ ------------------------------------------------------------------------ r60263 | kosaki | 2017-10-21 22:01:51 +0900 (Sat, 21 Oct 2017) | 8 lines kill variable set but not used warning Currently, dummy_mark variable makes following warnings. Let's fix it. ../../../ext/psych/yaml/parser.c: In function 'yaml_parser_parse_block_sequence_entry': ../../../ext/psych/yaml/parser.c:762:21: warning: variable 'dummy_mark' set but not used [-Wunused-but-set-variable] yaml_mark_t dummy_mark; /* Used to eliminate a compiler warning. */ ^ ------------------------------------------------------------------------ r60262 | kosaki | 2017-10-21 21:57:14 +0900 (Sat, 21 Oct 2017) | 7 lines kill "variable set but not used" warning Currently, scanner.c makes following warning. Fix it. ../../../ext/psych/yaml/scanner.c: In function 'yaml_parser_decrease_flow_level': ../../../ext/psych/yaml/scanner.c:1189:23: warning: variable 'dummy_key' set but not used [-Wunused-but-set-variable] yaml_simple_key_t dummy_key; /* Used to eliminate a compiler warning. */ ------------------------------------------------------------------------ r60261 | nobu | 2017-10-21 21:34:13 +0900 (Sat, 21 Oct 2017) | 7 lines Fix bug about String#scanf("%a") * lib/scanf.rb (extract_float, initialize): allow to omit a sign on the binary exponent. [ruby-core:82435] [Bug #13833] [Fix GH-1689] From: tarotaro0 <tarousann11922960@yahoo.co.jp> ------------------------------------------------------------------------ r60260 | akr | 2017-10-21 21:22:46 +0900 (Sat, 21 Oct 2017) | 2 lines add example for Socket.gethostbyaddr. ------------------------------------------------------------------------ r60259 | nobu | 2017-10-21 21:18:38 +0900 (Sat, 21 Oct 2017) | 1 line gc.c (rb_raw_obj_info): suppress a warning ------------------------------------------------------------------------ r60258 | nobu | 2017-10-21 21:18:35 +0900 (Sat, 21 Oct 2017) | 1 line gc.c (rb_raw_obj_info): adjust indent ------------------------------------------------------------------------ r60257 | usa | 2017-10-21 21:12:52 +0900 (Sat, 21 Oct 2017) | 6 lines Treat REG_NONE just like REG_BINARY * ext/win32/lib/win32/registry.rb (read, write): treat REG_NONE just like REG_BINARY when reading and writing. cf. [Bug #7526] ------------------------------------------------------------------------ r60256 | kazu | 2017-10-21 20:59:08 +0900 (Sat, 21 Oct 2017) | 2 lines Sync svn:ignore [ci skip] ------------------------------------------------------------------------ r60255 | naruse | 2017-10-21 19:44:13 +0900 (Sat, 21 Oct 2017) | 3 lines Revert "Dir.glob with FNM_EXTGLOB is optimized [Feature #13873]" This reverts commit r60253 because it causes on error on Linux. ------------------------------------------------------------------------ r60254 | sonots | 2017-10-21 19:33:25 +0900 (Sat, 21 Oct 2017) | 2 lines * string.c (deleted_prefix_length, deleted_suffix_length): Add doxygen comment. ------------------------------------------------------------------------ r60253 | naruse | 2017-10-21 19:28:34 +0900 (Sat, 21 Oct 2017) | 3 lines Dir.glob with FNM_EXTGLOB is optimized [Feature #13873] The order of resulted array is changed in some cases. ------------------------------------------------------------------------ r60252 | tarui | 2017-10-21 19:26:31 +0900 (Sat, 21 Oct 2017) | 3 lines fix comment abount IMEMO_FL_USHIFT ------------------------------------------------------------------------ r60251 | ko1 | 2017-10-21 19:23:59 +0900 (Sat, 21 Oct 2017) | 1 line do not need to clear by NULL because of last commit ------------------------------------------------------------------------ r60250 | ko1 | 2017-10-21 19:21:31 +0900 (Sat, 21 Oct 2017) | 5 lines imemo_mask (enum) -> IMEMO_MASK (immediate value). * internal.h: imemo_mask is not a valid imemo type but switch statements show warnings. ------------------------------------------------------------------------ r60249 | knu | 2017-10-21 18:53:52 +0900 (Sat, 21 Oct 2017) | 4 lines Make ACL::ACLEntry not suppress IPAddr::InvalidPrefixError This is because it would be a user error because a pattern containing a slash shouldn't be a host name pattern but an IP address pattern. ------------------------------------------------------------------------ r60248 | svn | 2017-10-21 18:50:37 +0900 (Sat, 21 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60247 | hsbt | 2017-10-21 18:50:36 +0900 (Sat, 21 Oct 2017) | 4 lines [EXPERIMENTAL] Added test-bundled-gems task. `test-bundled-gems` invoke test suite of bundled gems with build environment. ------------------------------------------------------------------------ r60246 | nobu | 2017-10-21 18:25:05 +0900 (Sat, 21 Oct 2017) | 4 lines common.mk: preserve rest fields of bundled_gems * common.mk (update-bundled_gems): preserve rest fields other than names and versions, for more extensions. ------------------------------------------------------------------------ r60245 | ko1 | 2017-10-21 18:24:59 +0900 (Sat, 21 Oct 2017) | 9 lines add RUNRUBY_USE_GDB envvar for runruby.rb. * tool/runruby.rb: add RUNRUBY_USE_GDB environment variable. If RUNRUBY_USE_GDB=true then use 'gdb --args'. If there is 'run.gdb' file (made by 'make run.gdb') on current directory, run gdb with this file ('gdb -x run.gdb --args'). This envval is useful when you want to run test-all (and so on) with gdb. ------------------------------------------------------------------------ r60244 | nobu | 2017-10-21 18:10:42 +0900 (Sat, 21 Oct 2017) | 6 lines fix up imemo_alloc * internal.h (rb_imemo_alloc_struct), gc.c (gc_mark_imemo): turned next into the pointer to chain. * parse.y (NEWHEAP): needs a cast. ------------------------------------------------------------------------ r60243 | nobu | 2017-10-21 17:56:58 +0900 (Sat, 21 Oct 2017) | 1 line vcs.rb: try to extract revision number from tags ------------------------------------------------------------------------ r60242 | akr | 2017-10-21 17:44:56 +0900 (Sat, 21 Oct 2017) | 2 lines RbConfig::LIMITS is provided by rbconfig/sizeof. ------------------------------------------------------------------------ r60241 | akr | 2017-10-21 17:41:59 +0900 (Sat, 21 Oct 2017) | 5 lines declare variables once for each line in pathname.c. This ease adding/deleting variables. ------------------------------------------------------------------------ r60240 | usa | 2017-10-21 17:41:22 +0900 (Sat, 21 Oct 2017) | 8 lines Use GetSystemTimePreciseAsFileTime on recent Windows * win32/win32.c (gettiemeofday, wutime): use GetSystemTimePreciseAsFileTime instead of GetSystemTimeAsFileTime if it is available. This patch is based on Takehiro Kubo <kubo@jiubao.org> 's one (change only the name of wrapper function). Thanks! and sorry to late [ruby-dev:50167] [Feature #13732] ------------------------------------------------------------------------ r60239 | mame | 2017-10-21 17:40:28 +0900 (Sat, 21 Oct 2017) | 1 line Replace NODE_ALLOCA with T_IMEMO (imemo_alloc) ------------------------------------------------------------------------ r60238 | akr | 2017-10-21 17:34:49 +0900 (Sat, 21 Oct 2017) | 4 lines Pathname#glob method implemented. [ruby-core:49373] [Feature #7360] proposed by Alexander E. Fischer. ------------------------------------------------------------------------ r60237 | usa | 2017-10-21 16:44:11 +0900 (Sat, 21 Oct 2017) | 5 lines File.symlink is not potable * test/fileutils/test_fileutils.rb: skip tests using File.symlink if it's not available. this problem is reported by ko1. ------------------------------------------------------------------------ r60236 | akr | 2017-10-21 16:00:58 +0900 (Sat, 21 Oct 2017) | 7 lines lib/open3.rb: accept IO-like object for :stdin_data argument. Open3.capture3, Open3.capture2, Open3.capture2e accepts IO-like object for :stdin_data argument. [ruby-core:80936] [Feature #13527] proposed by janko. ------------------------------------------------------------------------ r60235 | k0kubun | 2017-10-21 15:57:04 +0900 (Sat, 21 Oct 2017) | 6 lines vm.c, vm_insnhelper.h: export symbols of VM serials This change is for future JIT compiler introduction. See r60231 for the purpose. [close GH-1721] ------------------------------------------------------------------------ r60234 | naruse | 2017-10-21 15:51:01 +0900 (Sat, 21 Oct 2017) | 1 line [Feature #13712] String#start_with? supports regexp ------------------------------------------------------------------------ r60233 | akr | 2017-10-21 15:45:41 +0900 (Sat, 21 Oct 2017) | 2 lines [DOC] describe methods used for src and dst argument. ------------------------------------------------------------------------ r60232 | akr | 2017-10-21 15:22:53 +0900 (Sat, 21 Oct 2017) | 2 lines lib/open-uri.rb: accept :encoding option as well as encoding in mode string. ------------------------------------------------------------------------ r60231 | k0kubun | 2017-10-21 15:22:43 +0900 (Sat, 21 Oct 2017) | 10 lines vm_core.h: export symbols of shared variables vm_insnhelper.h: ditto. All changes are for reducing changes required to introduce JIT compiler. Unlike functions that can be inlined by header, those variables should be shared with JIT-ed code. This will help reducing cost of rebase against upstream. [close GH-1720] ------------------------------------------------------------------------ r60230 | glass | 2017-10-21 15:11:01 +0900 (Sat, 21 Oct 2017) | 1 line Update NEWS for Hash#slice ------------------------------------------------------------------------ r60229 | glass | 2017-10-21 15:08:33 +0900 (Sat, 21 Oct 2017) | 3 lines hash.c: Add Hash#slice * hash.c (rb_hash_slice): add Hash#slice [Feature #8499] ------------------------------------------------------------------------ r60228 | knu | 2017-10-21 14:18:40 +0900 (Sat, 21 Oct 2017) | 1 line Replace `to_a[1..-1]` on a MatchData with `captures` ------------------------------------------------------------------------ r60227 | knu | 2017-10-21 14:18:38 +0900 (Sat, 21 Oct 2017) | 1 line Remove redundant calls of String#chr ------------------------------------------------------------------------ r60226 | nobu | 2017-10-21 12:18:46 +0900 (Sat, 21 Oct 2017) | 1 line assertion for r60225 ------------------------------------------------------------------------ r60225 | yui-knk | 2017-10-21 11:50:38 +0900 (Sat, 21 Oct 2017) | 17 lines Do not literal_flush if float is read correctly * parse.y (parse_numeric): Do not literal_flush if float is read correctly. This will fix the first column of float. before: ``` 1.2i1.1 ^ ``` after: ``` 1.2i1.1 ^~~ ``` ------------------------------------------------------------------------ r60224 | nobu | 2017-10-21 10:06:25 +0900 (Sat, 21 Oct 2017) | 1 line moved node generation for dregex_once to parse.y ------------------------------------------------------------------------ r60223 | yui-knk | 2017-10-21 09:14:32 +0900 (Sat, 21 Oct 2017) | 4 lines Fix build on Windows * parse.y (new_cdecl_gen): Rename local variable name from cdecl to nd_cdecl. We can not use cdecl on Windows. ------------------------------------------------------------------------ r60222 | svn | 2017-10-21 01:22:24 +0900 (Sat, 21 Oct 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60221 | svn | 2017-10-21 01:22:24 +0900 (Sat, 21 Oct 2017) | 1 line * 2017-10-21 ------------------------------------------------------------------------ r60220 | yui-knk | 2017-10-21 01:22:22 +0900 (Sat, 21 Oct 2017) | 14 lines Store token first column number on RNode * node.c (A_NODE_HEADER): Print column number. * node.h (nd_column, nd_set_column): Define getter/setter macros for column number of RNode. * parse.y: Set first column number of tokens. Notes: * Use `@n` to get the location of token in parse.y. * When we use `@n`, arguments of yyerror and yylex are changed. * Initialize column of nodes with -1 to make it easy to detect nodes which we forget to set a column number. ------------------------------------------------------------------------ r60219 | hsbt | 2017-10-20 18:03:37 +0900 (Fri, 20 Oct 2017) | 3 lines Merge rubygems master(ddbf3203f3857649abe95c73edefc7de7e6ecff4). It fixed: https://github.com/rubygems/rubygems/issues/2041 ------------------------------------------------------------------------ r60218 | hsbt | 2017-10-20 16:03:11 +0900 (Fri, 20 Oct 2017) | 4 lines Overwrite destination symlink file if `remove_destination` is set. [Bug #13914][ruby-core:82846] Patch by @mzp https://github.com/ruby/fileutils/pull/9 ------------------------------------------------------------------------ r60217 | svn | 2017-10-20 10:03:19 +0900 (Fri, 20 Oct 2017) | 1 line * 2017-10-20 ------------------------------------------------------------------------ r60216 | nobu | 2017-10-20 10:03:18 +0900 (Fri, 20 Oct 2017) | 9 lines Make Time.parse respect timezone offset seconds DateTime.parse handles them correctly, and DateTime.parse.to_time results in the correct time. Time.parse doesn't handle them correctly because Time.zone_offset uses a different regexp that only considers hours and minutes, not seconds. [ruby-core:83400] [Bug #14034] From: Jeremy Evans <code@jeremyevans.net> ------------------------------------------------------------------------ r60215 | nobu | 2017-10-19 20:24:03 +0900 (Thu, 19 Oct 2017) | 5 lines ruby.c: reject NUL in $0 * ruby.c (ruby_setproctitle): raise if the argument contains NUL char. process title is a NUL-terminated string. [ruby-core:82425] [Bug #13829] ------------------------------------------------------------------------ r60214 | nobu | 2017-10-19 19:58:08 +0900 (Thu, 19 Oct 2017) | 7 lines freeze Complex and Rational * complex.c (nucomp_s_new_internal, nucomp_loader): Complex instances are always frozen now. [Feature #13983] * rational.c (nurat_s_new_internal, nurat_loader): Rational instances are always frozen now. [Feature #13983] ------------------------------------------------------------------------ r60213 | nobu | 2017-10-19 14:10:38 +0900 (Thu, 19 Oct 2017) | 4 lines parse.y: indent at '#' * parse.y (parser_here_document): update indent at '#', which is not a space. [ruby-core:83368] [Bug #14032] ------------------------------------------------------------------------ r60212 | nobu | 2017-10-19 13:25:30 +0900 (Thu, 19 Oct 2017) | 5 lines lexer.rb: no dedent strings in middle * ext/ripper/lib/ripper/lexer.rb (on_heredoc_dedent): dedent only strings at the beginning, not strings in middle. [ruby-core:83343] [Bug #14027] ------------------------------------------------------------------------ r60211 | normal | 2017-10-19 08:34:02 +0900 (Thu, 19 Oct 2017) | 6 lines webrick: fix up r60172 and r60210 Thanks to MSP-Greg (Greg L) for helping with this. * lib/webrick/server.rb (start_thread): properly fix non-local return introduced in r60208 and r60210 ------------------------------------------------------------------------ r60210 | normal | 2017-10-19 08:23:33 +0900 (Thu, 19 Oct 2017) | 6 lines webrick: fix up r60172 and r60208 Thanks to MSP-Greg (Greg L) for helping with this. * lib/webrick/server.rb (start_thread): fix non-local return introduced in r60208 ------------------------------------------------------------------------ r60209 | svn | 2017-10-19 06:45:35 +0900 (Thu, 19 Oct 2017) | 1 line * 2017-10-19 ------------------------------------------------------------------------ r60208 | normal | 2017-10-19 06:45:34 +0900 (Thu, 19 Oct 2017) | 9 lines webrick: fix up r60172 and revert r60189 Thanks to MSP-Greg (Greg L) for helping with this. * lib/webrick/server.rb (start_thread): ignore ECONNRESET, ECONNABORTED, EPROTO, and EINVAL on TLS negotiation errors the same way they were ignored before r60172 in the accept_client method of the main acceptor thread. [Bug #14013] [Bug #14005] ------------------------------------------------------------------------ r60207 | nobu | 2017-10-18 22:08:53 +0900 (Wed, 18 Oct 2017) | 4 lines parse.y: serial comparisons * parse.y (rel_expr): warn sequence of comparisons, which would be probably unintentional. [EXPERIMENTAL] ------------------------------------------------------------------------ r60206 | nobu | 2017-10-18 22:08:53 +0900 (Wed, 18 Oct 2017) | 3 lines parse.y: relop * parse.y (relop): extract to simplify comparisons. ------------------------------------------------------------------------ r60205 | svn | 2017-10-18 13:35:27 +0900 (Wed, 18 Oct 2017) | 1 line * 2017-10-18 ------------------------------------------------------------------------ r60204 | nobu | 2017-10-18 13:35:25 +0900 (Wed, 18 Oct 2017) | 1 line Get rid of shadowing local variables ------------------------------------------------------------------------ r60203 | nobu | 2017-10-17 21:40:00 +0900 (Tue, 17 Oct 2017) | 4 lines tempfile.rb: [DOC] all arguments [ci skip] * lib/tempfile.rb (Tempfile.create): mention the other arguments too. [ruby-core:83321] [Misc #14019] ------------------------------------------------------------------------ r60202 | nobu | 2017-10-17 21:30:12 +0900 (Tue, 17 Oct 2017) | 4 lines node.c: all node types * node.c (dump_node): moved rb_bug for unknown node outside to let unhandled node types be warned. ------------------------------------------------------------------------ r60201 | nobu | 2017-10-17 21:30:11 +0900 (Tue, 17 Oct 2017) | 1 line node.c: adjust indent ------------------------------------------------------------------------ r60200 | nobu | 2017-10-17 21:05:32 +0900 (Tue, 17 Oct 2017) | 3 lines compile.c: compile_for * compile.c (compile_for): extract from iseq_compile_each. ------------------------------------------------------------------------ r60199 | nobu | 2017-10-17 21:05:30 +0900 (Tue, 17 Oct 2017) | 3 lines compile.c: compile_iter * compile.c (compile_iter): extract from iseq_compile_each. ------------------------------------------------------------------------ r60198 | kazu | 2017-10-17 20:58:51 +0900 (Tue, 17 Oct 2017) | 3 lines Fix warning: assigned but unused variable [Bug #14020][ruby-core:83313] ------------------------------------------------------------------------ r60197 | mame | 2017-10-17 20:38:16 +0900 (Tue, 17 Oct 2017) | 1 line Improve some annotation names of output of parsetree-with-comment ------------------------------------------------------------------------ r60196 | yui-knk | 2017-10-17 20:13:53 +0900 (Tue, 17 Oct 2017) | 3 lines node.c: Add NODE_OP_CDECL to dump node list. * node.c (dump_node): Add NODE_OP_CDECL to dump node list. ------------------------------------------------------------------------ r60195 | mame | 2017-10-17 16:41:04 +0900 (Tue, 17 Oct 2017) | 1 line Fix the leak in `TestRDocGeneratorDarkfish#test_generated_method_with_html_tag_yield` ------------------------------------------------------------------------ r60194 | mame | 2017-10-17 16:41:03 +0900 (Tue, 17 Oct 2017) | 12 lines Suppress leak of file descriptors `Bundler.ui=` in `Gem::TestCase#setup` creates `Bundler::UI::RGProxy` which inherites `::Gem::SilentUI` whose `initialize` opens `/dev/null`, and assigns it to `Gem::DefaultUserInteraction.ui`. After that, `Gem::TestCase#setup` forces to overwrite `Gem::DefaultUserInteraction.ui` with a mock. Thus, the instance of `::Gem::SilentUI` is not closed, which leads to the leak. This commit keeps `Gem::DefaultUserInteraction.ui` and manually close it in `teardown`. ------------------------------------------------------------------------ r60193 | nobu | 2017-10-17 08:11:40 +0900 (Tue, 17 Oct 2017) | 7 lines Layout fixes in rdoc of lib/tempfile.rb [ci skip] RDoc doesn't understand an asterisk inside the plus markers. Moving them out of the markers looks better. [Fix GH-1716] From: Herwin Weststrate <herwinw@herwinw.nl> ------------------------------------------------------------------------ r60192 | svn | 2017-10-17 04:42:34 +0900 (Tue, 17 Oct 2017) | 1 line * 2017-10-17 ------------------------------------------------------------------------ r60191 | normal | 2017-10-17 04:42:33 +0900 (Tue, 17 Oct 2017) | 3 lines spec/ruby/optional/capi/io_spec.rb: speling fics * spec/ruby/optional/capi/io_spec.rb: speling: s/writeable/writable/ ------------------------------------------------------------------------ r60190 | nobu | 2017-10-16 14:00:21 +0900 (Mon, 16 Oct 2017) | 4 lines configure.ac: fix SOEXT on Windows * configure.ac (SOEXT): shoud be "dll" on Windows. [ruby-core:83208] [Bug #14002] ------------------------------------------------------------------------ r60189 | normal | 2017-10-16 13:33:53 +0900 (Mon, 16 Oct 2017) | 14 lines webrick: fix up r60172 By making the socket non-blocking in r60172, TLS/SSL negotiation via the SSL_accept function must handle non-blocking sockets properly and retry on SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE. OpenSSL::SSL::SSLSocket#accept cannot do that properly with a non-blocking socket, so it must use non-blocking logic of OpenSSL::SSL::SSLSocket#accept_nonblock. Thanks to MSP-Greg (Greg L) for finding this. * lib/webrick/server.rb (start_thread): use SSL_accept properly with non-blocking socket. [Bug #14013] [Bug #14005] ------------------------------------------------------------------------ r60188 | nobu | 2017-10-16 13:19:48 +0900 (Mon, 16 Oct 2017) | 5 lines test_complex.rb: NaN Complex * test/ruby/test_complex.rb (test_finite_p): assertions for NaN Complex. NaN is not an infinite nor a finite number. [ruby-core:83272] [Bug #14014] ------------------------------------------------------------------------ r60187 | nobu | 2017-10-16 13:15:19 +0900 (Mon, 16 Oct 2017) | 7 lines fix missing variables in ruby.pc * configure.ac (LIBRUBY_SO): get rid of referrence to LIBRUBY_SONAME which is not present in ruby.pc. * template/ruby.pc.in (RUBY_API_VERSION, SOEXT): add new variables. [ruby-core:83208] [Bug #14002] ------------------------------------------------------------------------ r60186 | svn | 2017-10-16 01:05:07 +0900 (Mon, 16 Oct 2017) | 1 line * 2017-10-16 ------------------------------------------------------------------------ r60185 | nobu | 2017-10-16 01:05:06 +0900 (Mon, 16 Oct 2017) | 4 lines error.c: [DOC] fix typo [ci skip] * error.c (RuntimeError): example code uses Kernel#raise instance method, not Kernel.raise singleton method. ------------------------------------------------------------------------ r60184 | nobu | 2017-10-15 11:31:29 +0900 (Sun, 15 Oct 2017) | 5 lines configure.ac: fix SONAME * configure.ac (RUBY_SO_NAME): revert $(RUBY_API_VERSION:.=) to $(MAJOR)$(MINOR), as a string in middle is not replaced. [ruby-core:83208] [Bug #14002] ------------------------------------------------------------------------ r60183 | nobu | 2017-10-15 11:20:20 +0900 (Sun, 15 Oct 2017) | 4 lines envutil.rb: precommand in invoke_ruby [ci skip] * test/lib/envutil.rb (invoke_ruby): add precommand option to invoke ruby via some other commands, e.g., sudo. ------------------------------------------------------------------------ r60182 | nobu | 2017-10-15 00:55:14 +0900 (Sun, 15 Oct 2017) | 5 lines configure.ac: link Foundation framework * configure.ac (XLDFLAGS): link against Foundation framework and let __NSPlaceholderDictionary initialize, to get rid of crash after fork on macOS High Sierra. [ruby-core:83239] [Bug #14009] ------------------------------------------------------------------------ r60181 | svn | 2017-10-15 00:35:06 +0900 (Sun, 15 Oct 2017) | 1 line * 2017-10-15 ------------------------------------------------------------------------ r60180 | nobu | 2017-10-15 00:35:05 +0900 (Sun, 15 Oct 2017) | 5 lines configure.ac: LIBRUBY_SONAME * configure.ac (LIBRUBY_SONAME): add new variable for the name of the library name with compatibility version. [ruby-core:83208] [Bug #14002] ------------------------------------------------------------------------ r60179 | nobu | 2017-10-14 11:17:07 +0900 (Sat, 14 Oct 2017) | 6 lines distinguish pass and fail by highlight [ci skip] * tool/colorize.rb: remove highlight attribute from "pass" to make distinguishable from "fail" by other than red-green colors. * tool/ifchange: ditto. ------------------------------------------------------------------------ r60178 | svn | 2017-10-14 10:59:48 +0900 (Sat, 14 Oct 2017) | 1 line * 2017-10-14 ------------------------------------------------------------------------ r60177 | nobu | 2017-10-14 10:59:47 +0900 (Sat, 14 Oct 2017) | 5 lines configure.ac: no _objc_msgSend trick * configure.ac (XLDFLAGS): _objc_msgSend is no longer needed to link CoreFoundation, that framework is always used for CFString functions. ------------------------------------------------------------------------ r60176 | nobu | 2017-10-13 17:29:52 +0900 (Fri, 13 Oct 2017) | 3 lines defines.h: warn EXTERN * include/ruby/defines.h (EXTERN): warn as deprecated. ------------------------------------------------------------------------ r60175 | nobu | 2017-10-13 10:34:52 +0900 (Fri, 13 Oct 2017) | 6 lines error.c: infinite recursion at Warning#warn * error.c (rb_warn_m): write the message to rb_stderr directly, to get rid of infinite recursion when called on Warning module itself, by super in redefined Warning#warn. [ruby-dev:50293] [Bug #14006] ------------------------------------------------------------------------ r60174 | nobu | 2017-10-13 10:26:51 +0900 (Fri, 13 Oct 2017) | 4 lines rbinstall.rb: fix for --cmd-type=cmd * tool/rbinstall.rb (PROLOG_SCRIPT): fix wrapper code for cmd script. [Bug#13997] ------------------------------------------------------------------------ r60173 | svn | 2017-10-13 03:50:08 +0900 (Fri, 13 Oct 2017) | 1 line * 2017-10-13 ------------------------------------------------------------------------ r60172 | normal | 2017-10-13 03:50:07 +0900 (Fri, 13 Oct 2017) | 20 lines webrick: do not hang acceptor on slow TLS connections OpenSSL::SSL::SSLSocket#accept may block indefinitely on clients which negotiate the TCP connection, but fail (or are slow) to negotiate the subsequent TLS handshake. This prevents the multi-threaded WEBrick server from accepting other connections. Since the TLS handshake (via OpenSSL::SSL::SSLSocket#accept) consists of normal read/write traffic over TCP, handle it in the per-client thread, instead. Furthermore, using non-blocking accept() is useful for non-TLS sockets anyways because spurious wakeups are possible from select(2). * lib/webrick/server.rb (accept_client): use TCPServer#accept_nonblock and remove OpenSSL::SSL::SSLSocket#accept call * lib/webrick/server.rb (start_thread): call OpenSSL::SSL::SSLSocket#accept * test/webrick/test_ssl_server.rb (test_slow_connect): new test [ruby-core:83221] [Bug #14005] ------------------------------------------------------------------------ r60171 | nobu | 2017-10-12 16:27:16 +0900 (Thu, 12 Oct 2017) | 4 lines rbinstall.rb: shell code as comments * tool/rbinstall.rb (PROLOG_SCRIPT): wrap shell code by =begin/=end as comments. [ruby-core:83202] [Bug#13997] ------------------------------------------------------------------------ r60170 | svn | 2017-10-12 10:38:07 +0900 (Thu, 12 Oct 2017) | 1 line * 2017-10-12 ------------------------------------------------------------------------ r60169 | hsbt | 2017-10-12 10:38:07 +0900 (Thu, 12 Oct 2017) | 3 lines Removed unnecessary gem locking for avoiding test warnings. It causes test failure: http://ci.rvm.jp/results/trunk@P895/111404 ------------------------------------------------------------------------ r60167 | kazu | 2017-10-11 21:07:39 +0900 (Wed, 11 Oct 2017) | 2 lines Sync .gitignore and svn:ignore [ci skip] ------------------------------------------------------------------------ r60166 | sonots | 2017-10-11 20:39:15 +0900 (Wed, 11 Oct 2017) | 4 lines * .gitignore: ignore exe/ruby and exe/.time instead of bin/ruby because bin/ruby was renamed as exe/ruby at r59937. follow-up: [Bug #13911] ------------------------------------------------------------------------ r60165 | nobu | 2017-10-11 17:14:50 +0900 (Wed, 11 Oct 2017) | 1 line NEWS: refine the entry about RDoc [ci skip] ------------------------------------------------------------------------ r60164 | ko1 | 2017-10-11 17:11:16 +0900 (Wed, 11 Oct 2017) | 6 lines revert a part of r60163. * test/ruby/test_settracefunc.rb (test_trace_point_binding_in_ifunc): do not need other threads because this script is invoked by another ruby process (and also remove typo). ------------------------------------------------------------------------ r60163 | ko1 | 2017-10-11 16:49:03 +0900 (Wed, 11 Oct 2017) | 5 lines check a thread on TracePoint. * test/ruby/test_settracefunc.rb: skip if TracePoint probes are invoked by non-main thread. ------------------------------------------------------------------------ r60162 | nobu | 2017-10-11 15:16:04 +0900 (Wed, 11 Oct 2017) | 5 lines socket.c: null byte at Socket.getnameinfo * ext/socket/socket.c (sock_s_getnameinfo): check null byte. patched by tommy (Masahiro Tomita) in [ruby-dev:50286]. [Bug #13994] ------------------------------------------------------------------------ r60161 | nobu | 2017-10-11 15:16:03 +0900 (Wed, 11 Oct 2017) | 4 lines process.c: null byte at initgroups * process.c (proc_initgroups): check null byte. patched by tommy (Masahiro Tomita) in [ruby-dev:50287]. [Bug #13995] ------------------------------------------------------------------------ r60160 | nobu | 2017-10-11 14:34:24 +0900 (Wed, 11 Oct 2017) | 4 lines parse.y: token info with BOM * parse.y (parser_prepare): set token_info_enabled flag first, before returning at BOM. [ruby-dev:50288] [Bug #13998] ------------------------------------------------------------------------ r60159 | nobu | 2017-10-11 13:45:08 +0900 (Wed, 11 Oct 2017) | 4 lines file.c: ALT_SEPARATOR on cygwin * file.c (file_alt_separator): define only on DOSISH platforms. File::ALT_SEPARATOR is nil on cygwin. ------------------------------------------------------------------------ r60158 | svn | 2017-10-11 12:44:36 +0900 (Wed, 11 Oct 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60157 | svn | 2017-10-11 12:44:36 +0900 (Wed, 11 Oct 2017) | 1 line * 2017-10-11 ------------------------------------------------------------------------ r60156 | hsbt | 2017-10-11 12:44:35 +0900 (Wed, 11 Oct 2017) | 1 line Added news entries of RDoc and Rubygems. ------------------------------------------------------------------------ r60155 | nobu | 2017-10-10 21:30:42 +0900 (Tue, 10 Oct 2017) | 4 lines io.c: encoding of ARGF.inplace_mode * io.c (argf_next_argv): encode inplace mode suffix to the path encoding. ------------------------------------------------------------------------ r60154 | nobu | 2017-10-10 19:42:52 +0900 (Tue, 10 Oct 2017) | 4 lines io.c: path name conversion at ARGF * io.c (argf_next_argv): the standard conversion to path name should take place. ------------------------------------------------------------------------ r60150 | svn | 2017-10-10 17:58:23 +0900 (Tue, 10 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60149 | hsbt | 2017-10-10 17:58:22 +0900 (Tue, 10 Oct 2017) | 3 lines Merge rubygems-2.6.14 changes. It fixed http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html ------------------------------------------------------------------------ r60148 | hsbt | 2017-10-10 13:54:49 +0900 (Tue, 10 Oct 2017) | 3 lines Removed obsoleted test for RubyToken. [Bug #13991][ruby-core:83188] Patch by MSP-Greg. ------------------------------------------------------------------------ r60147 | svn | 2017-10-10 11:01:01 +0900 (Tue, 10 Oct 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r60146 | hsbt | 2017-10-10 11:01:00 +0900 (Tue, 10 Oct 2017) | 6 lines Merge rdoc-6.0.0.beta3. * It version introduced did you mean? feature for ri command: https://github.com/ruby/rdoc/pull/533 * Removed obbsoleted ruby_token.rbb. [Bug #13990][ruby-core:83180] ------------------------------------------------------------------------ r60145 | svn | 2017-10-10 04:00:23 +0900 (Tue, 10 Oct 2017) | 1 line * 2017-10-10 ------------------------------------------------------------------------ r60144 | normal | 2017-10-10 04:00:22 +0900 (Tue, 10 Oct 2017) | 5 lines webrick: avoid needless wakeup from IO.select Since r51231 ("webrick/server.rb: stop immediately"), there is no need to poll on the @status change every two seconds. ------------------------------------------------------------------------ r60143 | kazu | 2017-10-09 20:20:00 +0900 (Mon, 09 Oct 2017) | 3 lines Remove unused test files related `$SAFE>=2` unused since r14024 ------------------------------------------------------------------------ r60142 | svn | 2017-10-09 12:08:03 +0900 (Mon, 09 Oct 2017) | 1 line * 2017-10-09 ------------------------------------------------------------------------ r60141 | nobu | 2017-10-09 12:08:02 +0900 (Mon, 09 Oct 2017) | 5 lines verconf.h.tmpl: site and vendor directories * template/verconf.h.tmpl: disable site and vendor directories when removed. based on the path by arnoldwald (arnold w) at [ruby-core:81563]. [Bug #13631] ------------------------------------------------------------------------ r60140 | hsbt | 2017-10-08 18:13:03 +0900 (Sun, 08 Oct 2017) | 3 lines Removed unnecessary json loading. It causes test fail on http://ci.rvm.jp/results/trunk-test@frontier/101990 ------------------------------------------------------------------------ r60139 | kazu | 2017-10-08 16:00:01 +0900 (Sun, 08 Oct 2017) | 1 line Remove unnecessary `require 'thread'` ------------------------------------------------------------------------ r60138 | nobu | 2017-10-08 15:00:57 +0900 (Sun, 08 Oct 2017) | 4 lines parse.y: fix a typo * parse.y (f_kw): fix typo. needs the argument value, not the label twice. [ruby-core:83174] [Bug #13987] ------------------------------------------------------------------------ r60137 | nobu | 2017-10-08 14:14:18 +0900 (Sun, 08 Oct 2017) | 5 lines .gdbinit: newline at rp_id [ci skip] * .gdbinit (rp_id): add a newline. * .gdbinit (print_id): should not print a newline here. ------------------------------------------------------------------------ r60136 | svn | 2017-10-08 10:32:22 +0900 (Sun, 08 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60135 | svn | 2017-10-08 10:32:22 +0900 (Sun, 08 Oct 2017) | 1 line * remove trailing spaces, append newline at EOF. ------------------------------------------------------------------------ r60134 | svn | 2017-10-08 10:32:20 +0900 (Sun, 08 Oct 2017) | 1 line * 2017-10-08 ------------------------------------------------------------------------ r60133 | hsbt | 2017-10-08 10:32:18 +0900 (Sun, 08 Oct 2017) | 4 lines Merge rubygems master. This is RC version of Rubygems 2.7.0. https://github.com/rubygems/rubygems/commit/688fb7e83c13c3fe7c2bb03c49a2db4c82852aee ------------------------------------------------------------------------ r60132 | svn | 2017-10-07 11:23:28 +0900 (Sat, 07 Oct 2017) | 1 line * 2017-10-07 ------------------------------------------------------------------------ r60131 | nobu | 2017-10-07 11:23:27 +0900 (Sat, 07 Oct 2017) | 5 lines zlib.c: ensure to free * ext/zlib/zlib.c (zlib_gunzip): gz0 is a structure variable on the stack, no longer valid after exit by an exception. ensure to free instead. [Bug #13982] ------------------------------------------------------------------------ r60130 | nobu | 2017-10-06 22:41:37 +0900 (Fri, 06 Oct 2017) | 4 lines zlib.c: memory leak in gunzip * ext/zlib/zlib.c (zlib_gunzip): clear zstream to fix memory leak. [ruby-core:83162] [Bug #13982] ------------------------------------------------------------------------ r60129 | naruse | 2017-10-06 20:17:38 +0900 (Fri, 06 Oct 2017) | 6 lines configure.ac: detect mandoc and set MANTYPE=doc OpenBSD uses mandoc [Feature #13981] [ruby-core:83146] Note: AC_PATH_PROGS_FEATURE_CHECK is autoconf 2.62 feature, but current CRuby declares AC_PREREQ(2.67); it's safe to use. Patched by kernigh (George Koehler) ------------------------------------------------------------------------ r60128 | nobu | 2017-10-06 15:11:25 +0900 (Fri, 06 Oct 2017) | 6 lines .gdbinit: print_id in rp_id [ci skip] * .gdbinit (rp_id): use print_id instead of calling lookup_id_str() in a debugger context. * symbol.c (ID_ENTRY_UNIT): made visible to debuggers. ------------------------------------------------------------------------ r60127 | nobu | 2017-10-06 14:55:11 +0900 (Fri, 06 Oct 2017) | 7 lines proc.c: super_method of included method * proc.c (method_super_method): search the next super method along the included ancestor chain. [ruby-core:83114] [Bug #13973] * vm_method.c (rb_callable_method_entry_without_refinements): return the defined class. ------------------------------------------------------------------------ r60126 | nobu | 2017-10-06 14:55:10 +0900 (Fri, 06 Oct 2017) | 1 line proc.c: prefer name method result to inspect ------------------------------------------------------------------------ r60125 | nobu | 2017-10-06 09:15:08 +0900 (Fri, 06 Oct 2017) | 4 lines No more ubygems in trunk [Fix GH-1711] Author: MSP-Greg <MSP-Greg@users.noreply.github.com> ------------------------------------------------------------------------ r60124 | svn | 2017-10-06 06:53:54 +0900 (Fri, 06 Oct 2017) | 1 line * 2017-10-06 ------------------------------------------------------------------------ r60123 | normal | 2017-10-06 06:53:54 +0900 (Fri, 06 Oct 2017) | 7 lines webrick: avoid unnecessary IO#sync= call Sockets and pipes are always created with FMODE_SYNC flag already set (otherwise many things would be broken). * lib/webrick/server.rb (accept_client): remove unnecessary IO#sync= call ------------------------------------------------------------------------ r60122 | hsbt | 2017-10-05 17:32:01 +0900 (Thu, 05 Oct 2017) | 8 lines Fixed broken `bundle gem` command. This patch is provided by @gyugyu (Yusuke Yagyu) * Remove README* entry from no_install that there is no README* files except README.md.tt * Rename .travis.yml.tt to travis.yml.tt like gitignore.tt [Bug #13975][ruby-dev:50278][fix GH-1710] ------------------------------------------------------------------------ r60121 | nobu | 2017-10-05 11:35:58 +0900 (Thu, 05 Oct 2017) | 5 lines io.c: [DOC] about buffering [ci skip] * io.c (rb_file_initialize): [DOC] stated that non-tty file is buffered by the default, and added links to related methods. [ruby-core:83081] [Bug #13965] ------------------------------------------------------------------------ r60120 | nobu | 2017-10-05 10:53:22 +0900 (Thu, 05 Oct 2017) | 4 lines parse.y: fix KWD2EID * parse.y (KWD2EID): should respect the previous callback result for keywords. [ruby-core:83106] [Bug #13971] ------------------------------------------------------------------------ r60119 | hsbt | 2017-10-05 10:43:47 +0900 (Thu, 05 Oct 2017) | 1 line Fixed invalid gemspec. ------------------------------------------------------------------------ r60118 | svn | 2017-10-05 10:30:09 +0900 (Thu, 05 Oct 2017) | 1 line * 2017-10-05 ------------------------------------------------------------------------ r60117 | hsbt | 2017-10-05 10:30:08 +0900 (Thu, 05 Oct 2017) | 3 lines Followed up [ruby-core:83093]. Update gemspec attributes. Added metadata for rubygems.org. ------------------------------------------------------------------------ r60116 | nobu | 2017-10-04 15:47:29 +0900 (Wed, 04 Oct 2017) | 13 lines parse.y: fix var_field * parse.y (mlhs_node): dispatch var_field as well as lhs. * parse.y (lhs, var_hs): dispatch var_field before assignable check so it is inside assign_error at a wrong assignment, as well as backref_assign_error. * parse.y (var_field_gen): wrap var_field value with the variable ID. * parse.y (assignable_gen, const_decl_gen): return the callback result on a syntax error. ------------------------------------------------------------------------ r60115 | nobu | 2017-10-04 14:48:33 +0900 (Wed, 04 Oct 2017) | 4 lines parse.y: reserved words as <id> * parse.y (reswords): declare reserved words as <id> to remove extra cast. ------------------------------------------------------------------------ r60114 | nobu | 2017-10-04 14:30:44 +0900 (Wed, 04 Oct 2017) | 4 lines test_sexp.rb: test for fname * test/ripper/test_sexp.rb (test_def_fname): test for fname in def statement. [ruby-core:83089] [Bug #13967] ------------------------------------------------------------------------ r60113 | nobu | 2017-10-04 13:43:00 +0900 (Wed, 04 Oct 2017) | 4 lines parse.y: Revert r60102 * parse.y (op): do not set event ID here to dispatch on_op. [ruby-core:83089] [Bug #13967] ------------------------------------------------------------------------ r60112 | svn | 2017-10-04 09:04:52 +0900 (Wed, 04 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60111 | normal | 2017-10-04 09:04:51 +0900 (Wed, 04 Oct 2017) | 23 lines Dir.empty? releases GVL This converts all slow syscalls in the Dir.empty? implementation to release GVL. We avoid unnecessarily GVL release and reacquire for each slow call (opendir, readdir, closedir) and instead only release and acquire the GVL once in the common case. Benchmark results show a small degradation in single-threaded performance: Execution time (sec) name trunk built dir_empty_p 0.689 0.758 Speedup ratio: compare with the result of `trunk' (greater is better) name built dir_empty_p 0.909 * dir.c (rb_gc_for_fd_with_gvl): new function (nogvl_dir_empty_p): ditto (dir_s_empty_p): use new functions to release GVL * benchmark/bm_dir_empty_p.rb: new benchmark [ruby-core:83071] [Feature #13958] ------------------------------------------------------------------------ r60110 | normal | 2017-10-04 08:47:53 +0900 (Wed, 04 Oct 2017) | 17 lines file.c: release GVL around lstat(2) Like stat(2), lstat(2) can be expensive on slow filesystems and should not block other threads. There should be a minor, but not significant slowdowns in single-threaded performance similar to benchmarks around the more-portable stat(2): [ruby-core:83012] [Bug #13941] * file.c (no_gvl_lstat): new function for rb_thread_call_without_gvl (lstat_without_gvl): new wrapper to replace lstat(2) calls (rb_file_s_lstat): s/lstat/&_without_gvl/ (rb_file_lstat): ditto (rb_file_symlink_p): ditto (rb_file_s_ftype): ditto (rb_file_expand_path_internal): ditto (realpath_rec): ditto [ruby-core:83075] [Feature #13963] ------------------------------------------------------------------------ r60109 | svn | 2017-10-04 08:47:30 +0900 (Wed, 04 Oct 2017) | 1 line * 2017-10-04 ------------------------------------------------------------------------ r60108 | normal | 2017-10-04 08:47:29 +0900 (Wed, 04 Oct 2017) | 3 lines file.c: release GVL in File.{setuid?,setgid?,sticky?} * file.c (check3rdbyte): use rb_stat to release GVL ------------------------------------------------------------------------ r60107 | kazu | 2017-10-03 21:06:14 +0900 (Tue, 03 Oct 2017) | 1 line Fix leaked file descriptor ------------------------------------------------------------------------ r60106 | nobu | 2017-10-03 16:51:37 +0900 (Tue, 03 Oct 2017) | 1 line test_parser_events.rb: backref_assign_error ------------------------------------------------------------------------ r60105 | nobu | 2017-10-03 13:56:23 +0900 (Tue, 03 Oct 2017) | 5 lines parse.y: extract callback results * parse.y: stripping wrapping NODEs from ripper callback results, when storing in Array objects. NODEs must not appear in Ruby level. ------------------------------------------------------------------------ r60104 | nobu | 2017-10-03 13:47:13 +0900 (Tue, 03 Oct 2017) | 1 line parse.y: set ripper event IDs to keyword variables ------------------------------------------------------------------------ r60103 | svn | 2017-10-03 10:38:54 +0900 (Tue, 03 Oct 2017) | 1 line * 2017-10-03 ------------------------------------------------------------------------ r60102 | nobu | 2017-10-03 10:38:52 +0900 (Tue, 03 Oct 2017) | 1 line parse.y: set ripper event ID symbols to operators ------------------------------------------------------------------------ r60101 | nobu | 2017-10-02 21:23:17 +0900 (Mon, 02 Oct 2017) | 1 line use rb_hash_new_with_size() ------------------------------------------------------------------------ r60100 | nobu | 2017-10-02 20:43:36 +0900 (Mon, 02 Oct 2017) | 5 lines test_call.rb: refine test_safe_call * test/ruby/test_call.rb (test_safe_call): rhs should not be evaluated when the receiver is nil. simplified the assertion for [Bug #13964]. ------------------------------------------------------------------------ r60099 | nobu | 2017-10-02 17:33:30 +0900 (Mon, 02 Oct 2017) | 5 lines compile.c: fix stack consitency error * compile.c (iseq_compile_each0): fix stack consitency error on attr-assign with safe navigation operator when the receiver is nil, should pop it too. [ruby-core:83078] [Bug #13964] ------------------------------------------------------------------------ r60098 | glass | 2017-10-02 16:51:27 +0900 (Mon, 02 Oct 2017) | 3 lines Revert "vm_eval.c: add rb_yield_assoc_or_values()" This reverts commit r60095 to prevent performance degradation. ------------------------------------------------------------------------ r60097 | nobu | 2017-10-02 15:46:42 +0900 (Mon, 02 Oct 2017) | 5 lines io.c: check null char * io.c (ruby_set_inplace_mode): check if null is contained. based on the patch by tommy (Masahiro Tomita) in [ruby-dev:50272]. [Bug #13960] ------------------------------------------------------------------------ r60096 | nobu | 2017-10-02 15:46:41 +0900 (Mon, 02 Oct 2017) | 7 lines test_argf.rb: indent here docs * test/ruby/test_argf.rb (assert_src_expected): default line number to caller's location. * test/ruby/test_argf.rb (test_lineno, test_lineno2): get rid of a bug of wrong indentation after $. in Emacs 25.3 ruby-mode.el ------------------------------------------------------------------------ r60095 | glass | 2017-10-02 14:29:11 +0900 (Mon, 02 Oct 2017) | 11 lines vm_eval.c: add rb_yield_assoc_or_values() The new function rb_yield_assoc_or_values() will reduce branching. * vm_eval.c: add rb_yield_assoc_or_values() * internal.h: ditto * hash.c: use rb_yield_assoc_or_values() * struct.c: ditto ------------------------------------------------------------------------ r60094 | nobu | 2017-10-02 13:06:55 +0900 (Mon, 02 Oct 2017) | 1 line ruby-additional.el: shorten here-doc markers ------------------------------------------------------------------------ r60093 | ko1 | 2017-10-02 10:57:27 +0900 (Mon, 02 Oct 2017) | 5 lines use `ra` instead of new variables. * file.c (rb_file_s_rename): `struct rename_args ra` already has members which contain C ptrs. Pointed by MSP-Greg. Thanks! ------------------------------------------------------------------------ r60092 | ko1 | 2017-10-02 10:22:11 +0900 (Mon, 02 Oct 2017) | 4 lines catch up r60088 for DOSISH. * file.c (rb_file_s_rename): src and dst are used only on DOSISH env. ------------------------------------------------------------------------ r60091 | normal | 2017-10-02 06:29:27 +0900 (Mon, 02 Oct 2017) | 5 lines NEWS: entries for GVL release in File and Dir (more to come) * NEWS: updates for [Bug #13941] and [Feature #13951] ------------------------------------------------------------------------ r60090 | svn | 2017-10-02 06:19:25 +0900 (Mon, 02 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60089 | svn | 2017-10-02 06:19:25 +0900 (Mon, 02 Oct 2017) | 1 line * 2017-10-02 ------------------------------------------------------------------------ r60088 | normal | 2017-10-02 06:19:24 +0900 (Mon, 02 Oct 2017) | 23 lines File#rename releases GVL rename(2) requires two pathname resolution operations which can take considerable time on slow filesystems, release the GVL so operations on other threads may proceed. On fast, local filesystems, this change results in some slowdown as shown by the new benchmark. I consider the performance trade off acceptable as cases are avoided. benchmark results: minimum results in each 3 measurements. Execution time (sec) name trunk built file_rename 2.648 2.804 Speedup ratio: compare with the result of `trunk' (greater is better) name built file_rename 0.944 * file.c (no_gvl_rename): new function (rb_file_s_rename): release GVL for renames * benchmark/bm_file_rename.rb: new benchmark ------------------------------------------------------------------------ r60087 | svn | 2017-10-01 22:44:50 +0900 (Sun, 01 Oct 2017) | 1 line * properties. ------------------------------------------------------------------------ r60086 | glass | 2017-10-01 22:44:49 +0900 (Sun, 01 Oct 2017) | 7 lines string.c: avoid unnecessary call of str_strlen() * string.c (rb_strseq_index): refactor and avoid call of str_strlen() when offset == 0. it will improve performance of String#index and #include? * benchmark/bm_string_index.rb: benchmark for this change ------------------------------------------------------------------------ r60085 | glass | 2017-10-01 13:26:25 +0900 (Sun, 01 Oct 2017) | 9 lines use rb_hash_new_with_size() * hash.c: use rb_hash_new_with_size(). * marshal.c: ditto * struct.c: ditto * vm_args.c: ditto ------------------------------------------------------------------------ r60084 | nobu | 2017-10-01 12:46:59 +0900 (Sun, 01 Oct 2017) | 1 line common.mk (UNICODE_DOWNLOAD): set cache directory ------------------------------------------------------------------------ r60083 | nobu | 2017-10-01 11:39:22 +0900 (Sun, 01 Oct 2017) | 3 lines generic_erb.rb: -i option * tool/generic_erb.rb: -i option to merge multiple template files. ------------------------------------------------------------------------ r60082 | nobu | 2017-10-01 11:24:11 +0900 (Sun, 01 Oct 2017) | 5 lines test_refinement.rb: test for r59946 * test/ruby/test_refinement.rb (test_dsym_literal): test for r59946, interning dynamic symbol should not be affected by refinements too. ------------------------------------------------------------------------ r60081 | normal | 2017-10-01 10:44:47 +0900 (Sun, 01 Oct 2017) | 12 lines file.c: remove unnecessary volatile use For apply2files, all callers use the `path' VALUE for generating exceptions, so there is no need to guard it. In realpath_rec, RB_GC_GUARD is already used on link_orig. In rb_check_realpath_internal, RB_GC_GUARD is necessary and preferable (see Appendix E. of doc/extension.rdoc) * file.c (apply2files): remove unnecessary volatile (realpath_rec): ditto (rb_check_realpath_internal): ditto, and add RB_GC_GUARD ------------------------------------------------------------------------ r60080 | svn | 2017-10-01 06:50:42 +0900 (Sun, 01 Oct 2017) | 1 line * 2017-10-01 ------------------------------------------------------------------------ r60079 | normal | 2017-10-01 06:50:42 +0900 (Sun, 01 Oct 2017) | 6 lines thread_pthread.c: do not wakeup inside child processes * thread_pthread.c (rb_thread_wakeup_timer_thread): check ownership before incrementing (rb_thread_wakeup_timer_thread_low): ditto [Bug #13794] [ruby-core:83064] ------------------------------------------------------------------------ r60078 | glass | 2017-09-30 22:14:09 +0900 (Sat, 30 Sep 2017) | 1 line hash.c: use rb_hash_new_with_size() ------------------------------------------------------------------------ r60077 | nobu | 2017-09-30 21:26:23 +0900 (Sat, 30 Sep 2017) | 4 lines eval.c: check type * eval.c (ignored_block): check argument type, which must be Module. [ruby-dev:50270] [Bug #13956] ------------------------------------------------------------------------ r60076 | glass | 2017-09-30 20:58:33 +0900 (Sat, 30 Sep 2017) | 9 lines hash.c: remove special treatments on deletion st.c was improved in r56650 that it permits deletion during iteration. In this commit, special treatments for previous implementation are removed. * hash.c: don't use *_check and *_safe functions in st.c * internal.h: remove HASH_DELETED flag ------------------------------------------------------------------------ r60075 | nobu | 2017-09-30 20:50:14 +0900 (Sat, 30 Sep 2017) | 1 line dbm.c: suppress unused-but-set-variable warning ------------------------------------------------------------------------ r60074 | nobu | 2017-09-30 20:06:05 +0900 (Sat, 30 Sep 2017) | 1 line gdbm.c: use the default external encoding ------------------------------------------------------------------------ r60073 | glass | 2017-09-30 18:27:30 +0900 (Sat, 30 Sep 2017) | 4 lines configure.ac: remove --enable-pthread option. * configure.ac: remove --enable-pthread option. it was obsoleted in 2009. ------------------------------------------------------------------------ r60072 | nobu | 2017-09-30 18:07:13 +0900 (Sat, 30 Sep 2017) | 1 line dbm.c: removed useless assignments ------------------------------------------------------------------------ r60071 | nobu | 2017-09-30 17:35:23 +0900 (Sat, 30 Sep 2017) | 3 lines ext: check if null byte is contained [ruby-dev:50267] [Bug #13953] ------------------------------------------------------------------------ r60070 | glass | 2017-09-30 15:45:24 +0900 (Sat, 30 Sep 2017) | 1 line configure.ac: remove unused macro ------------------------------------------------------------------------ r60069 | nobu | 2017-09-30 15:42:24 +0900 (Sat, 30 Sep 2017) | 1 line ripper/lexer.rb: remove double quotes ------------------------------------------------------------------------ r60068 | glass | 2017-09-30 15:30:44 +0900 (Sat, 30 Sep 2017) | 4 lines configure.ac: use m4_version_prereq * configure.ac: use m4_version_prereq to check running autoconf version. ------------------------------------------------------------------------ r60067 | ktsj | 2017-09-30 12:31:32 +0900 (Sat, 30 Sep 2017) | 4 lines test_find.rb: improve branch coverage * test/test_find.rb (test_to_path): add a test for to_path conversion. ------------------------------------------------------------------------ r60066 | nobu | 2017-09-30 09:01:23 +0900 (Sat, 30 Sep 2017) | 5 lines string.c: fix ASCII-only on succ * string.c (str_succ): clear coderange cache when no alpha-numeric character case, carried part may become ASCII-only. [ruby-core:83062] [Bug #13952] ------------------------------------------------------------------------ r60065 | nobu | 2017-09-30 08:41:19 +0900 (Sat, 30 Sep 2017) | 4 lines sizes.c.tmpl: prototype * template/sizes.c.tmpl (Init_limits): turned a K&R style declaration into a prototype declaration. ------------------------------------------------------------------------ r60064 | svn | 2017-09-30 02:19:38 +0900 (Sat, 30 Sep 2017) | 1 line * 2017-09-30 ------------------------------------------------------------------------ r60063 | sonots | 2017-09-30 02:19:37 +0900 (Sat, 30 Sep 2017) | 5 lines test_etc.rb: fix test_getgrnam for duplicated group names * test/etc/test_etc.rb: Etc.getgrnam would not return the first entry in the order of Etc.group for duplicated group names. follow-up: [Bug #6935] ------------------------------------------------------------------------ r60062 | nobu | 2017-09-29 22:21:17 +0900 (Fri, 29 Sep 2017) | 8 lines configure.ac * configure.ac: renamed configure.in. [Feature #13946] * Makefile.in, common.mk, ext/rbconfig/sizeof/depend: use configure.ac. * README.ja.md, README.md: update document for configure.ac. ------------------------------------------------------------------------ r60061 | kazu | 2017-09-29 20:00:00 +0900 (Fri, 29 Sep 2017) | 3 lines Use unpack1 instead of unpack and `[0]` [Feature #13943][ruby-core:83027] ------------------------------------------------------------------------ r60060 | nobu | 2017-09-29 17:15:50 +0900 (Fri, 29 Sep 2017) | 4 lines string.c: ASCII-incompatible is not ASCII only * string.c (tr_trans): ASCII-incompatible encoding strings cannot be ASCII-only even if valid. [ruby-core:83056] [Bug #13950] ------------------------------------------------------------------------ r60059 | nobu | 2017-09-29 17:00:47 +0900 (Fri, 29 Sep 2017) | 4 lines pack.c: unpack "M" may be ASCII only * pack.c (pack_unpack_internal): set ASCII only properly on "M", may be ASCII only. [ruby-core:83055] [Bug #13949] ------------------------------------------------------------------------ r60058 | svn | 2017-09-29 16:43:23 +0900 (Fri, 29 Sep 2017) | 1 line * 2017-09-29 ------------------------------------------------------------------------ r60057 | nobu | 2017-09-29 16:43:22 +0900 (Fri, 29 Sep 2017) | 47 lines array.c: improve operations on small arrays [Feature #13884] Reduce number of memory allocations for "and", "or" and "diff" operations on small arrays Very often, arrays are used to filter parameters and to select interesting items from 2 collections and very often these collections are small enough, for example: ```ruby SAFE_COLUMNS = [:id, :title, :created_at] def columns @all_columns & SAFE_COLUMNS end ``` In this patch, I got rid of unnecessary memory allocations for small arrays when "and", "or" and "diff" operations are performed. name | HEAD | PATCH -----------------+------:+------: array_small_and | 0.615 | 0.263 array_small_diff | 0.676 | 0.282 array_small_or | 0.953 | 0.463 name | PATCH -----------------+------: array_small_and | 2.343 array_small_diff | 2.392 array_small_or | 2.056 name | HEAD | PATCH -----------------+------:+------: array_small_and | 1.429 | 1.005 array_small_diff | 1.493 | 0.878 array_small_or | 1.672 | 1.152 name | PATCH -----------------+------: array_small_and | 1.422 array_small_diff | 1.700 array_small_or | 1.452 Author: Dmitry Bochkarev <dimabochkarev@gmail.com> ------------------------------------------------------------------------ r60056 | shirosaki | 2017-09-28 22:55:48 +0900 (Thu, 28 Sep 2017) | 6 lines test_dln.rb: fix path separator on MinGW * test/-ext-/win32/test_dln.rb (TestDln#test_check_imported): RbConfig::CONFIG["PATH_SEPARATOR"] is : which is a separator on msys2 shell building ruby. Use File::PATH_SEPARATOR ; on test. [Bug #13642] [ruby-core:81623] ------------------------------------------------------------------------ r60055 | shirosaki | 2017-09-28 22:43:21 +0900 (Thu, 28 Sep 2017) | 9 lines io.c: fix segfault with closing socket on Windows * io.c (fptr_finalize_flush): add an argument to keep GVL. * io.c (fptr_finalize): adjust for above change. * io.c (io_close_fptr): closing without GVL causes another exception while raising exception in another thread. This causes segfault on Windows. Keep GVL while closing when another thread raises. [Bug #13856] [ruby-core:82602] ------------------------------------------------------------------------ r60054 | naruse | 2017-09-28 19:51:37 +0900 (Thu, 28 Sep 2017) | 1 line Net::HTTP.new: Support no_proxy parameter [Feature #11195] ------------------------------------------------------------------------ r60053 | naruse | 2017-09-28 19:51:31 +0900 (Thu, 28 Sep 2017) | 3 lines URI::Generic: Separate no_proxy handling To share with Net::HTTP. see #11195 ------------------------------------------------------------------------ r60052 | svn | 2017-09-28 18:20:00 +0900 (Thu, 28 Sep 2017) | 1 line * properties. ------------------------------------------------------------------------ r60051 | eregon | 2017-09-28 18:19:59 +0900 (Thu, 28 Sep 2017) | 1 line Update to ruby/spec@691755d ------------------------------------------------------------------------ r60050 | eregon | 2017-09-28 18:19:19 +0900 (Thu, 28 Sep 2017) | 1 line Update to ruby/mspec@c135328 ------------------------------------------------------------------------ r60049 | nobu | 2017-09-28 11:51:41 +0900 (Thu, 28 Sep 2017) | 4 lines test_io_console.rb: flush * test/io/console/test_io_console.rb: flush to ensure the second data is sent. ------------------------------------------------------------------------ r60048 | svn | 2017-09-28 06:55:33 +0900 (Thu, 28 Sep 2017) | 1 line * 2017-09-28 ------------------------------------------------------------------------ r60047 | naruse | 2017-09-28 06:55:32 +0900 (Thu, 28 Sep 2017) | 4 lines Remove DevKit path, change zlib link by MSP-Greg <MSP-Greg@users.noreply.github.com> fix https://github.com/ruby/ruby/pull/1708 ------------------------------------------------------------------------ r60046 | kazu | 2017-09-27 21:32:57 +0900 (Wed, 27 Sep 2017) | 1 line Fix exception class [ci skip] ------------------------------------------------------------------------ r60045 | duerst | 2017-09-27 16:47:13 +0900 (Wed, 27 Sep 2017) | 1 line improve grammar in documentation of Array#bsearch [ci skip] ------------------------------------------------------------------------ r60044 | nobu | 2017-09-27 14:27:07 +0900 (Wed, 27 Sep 2017) | 1 line pty.c: shrink repeated device names ------------------------------------------------------------------------ r60043 | nobu | 2017-09-27 14:27:06 +0900 (Wed, 27 Sep 2017) | 1 line objspace_dump.c: remove unnecessary break ------------------------------------------------------------------------ r60042 | nobu | 2017-09-27 14:08:53 +0900 (Wed, 27 Sep 2017) | 1 line ext: adjust indent [ci skip] ------------------------------------------------------------------------ r60041 | nobu | 2017-09-27 11:55:03 +0900 (Wed, 27 Sep 2017) | 4 lines complex.c: no overflow * complex.c (rb_complex_infinite_p): get rid of overflow and unnecessary multiplication. ------------------------------------------------------------------------ r60040 | nobu | 2017-09-27 11:38:51 +0900 (Wed, 27 Sep 2017) | 4 lines complex.c: no overflow * complex.c (rb_complex_finite_p): get rid of overflow and unnecessary multiplication. ------------------------------------------------------------------------ r60039 | svn | 2017-09-27 10:01:27 +0900 (Wed, 27 Sep 2017) | 1 line * 2017-09-27 ------------------------------------------------------------------------ r60038 | nobu | 2017-09-27 10:01:26 +0900 (Wed, 27 Sep 2017) | 1 line * complex.c: fix Complex#infinite? return value. Because nucomp_abs never returns negative value. ------------------------------------------------------------------------ r60037 | nobu | 2017-09-27 08:28:07 +0900 (Wed, 27 Sep 2017) | 4 lines Show rb_data_type_t definition [ci skip] [Fix GH-1707] Author: hkdnet <hkdnet@users.noreply.github.com> ------------------------------------------------------------------------ r60036 | nobu | 2017-09-27 08:28:06 +0900 (Wed, 27 Sep 2017) | 4 lines Fix a reference [ci skip] [Fix GH-1706] Author: hkdnet <hkdnet@users.noreply.github.com> ------------------------------------------------------------------------ r60035 | naruse | 2017-09-26 23:00:25 +0900 (Tue, 26 Sep 2017) | 4 lines Make retries for Net::HTTP configurable [Feature #10674] by stereobooster fix https://github.com/ruby/ruby/pull/1654 ------------------------------------------------------------------------ r60034 | nobu | 2017-09-26 22:40:14 +0900 (Tue, 26 Sep 2017) | 1 line parse.y: moved duplicate conditions ------------------------------------------------------------------------ r60033 | nobu | 2017-09-26 21:21:51 +0900 (Tue, 26 Sep 2017) | 1 line Suppress warnings by other than self-assignments ------------------------------------------------------------------------ r60032 | k0kubun | 2017-09-26 20:50:07 +0900 (Tue, 26 Sep 2017) | 13 lines erb.rb: drop unreachable method This seems to be unreachable from first introduction at r21286. In ERB implementation, `#empty?` is only called for each member of return value of `String#scan`, and `ERB::Compiler::PercentLine` is never returned from `String#scan`. Also, in `ERB::Compiler#compile`, as it's yielded only when stag is nil, methods called to `ERB::Compiler::PercentLine` object yielded from `ERB::Compiler::TrimScanner#scan` are only: `#nil?`, `#==`, `to_s`. Thus `ERB::Compiler::PercentLine#empty?` is never used. ------------------------------------------------------------------------ r60031 | k0kubun | 2017-09-26 20:30:45 +0900 (Tue, 26 Sep 2017) | 1 line test_erb.rb: add test cases for uncovered methods ------------------------------------------------------------------------ r60030 | k0kubun | 2017-09-26 19:45:14 +0900 (Tue, 26 Sep 2017) | 3 lines test_features.rb: fix unused variable warning test/csv/test_features.rb:357: warning: assigned but unused variable - csv ------------------------------------------------------------------------ r60029 | mame | 2017-09-26 13:59:39 +0900 (Tue, 26 Sep 2017) | 1 line run-lcov.rb: support overwritten tmpdir path ------------------------------------------------------------------------ r60028 | mame | 2017-09-26 13:51:09 +0900 (Tue, 26 Sep 2017) | 1 line tool/run-lcov.rb: Filter tmp files out ------------------------------------------------------------------------ r60027 | nobu | 2017-09-26 13:13:37 +0900 (Tue, 26 Sep 2017) | 28 lines Release gvl while doing (f)stat At the moment rb_stat function is blocking. This patch changes the behaviour to release the gvl while waiting for OS to return from f(stat). There is behaviour impact, but not significant (times are for 100000 iterations): $ ~/releaseruby_patch/bin/ruby bench.rb Rehearsal ------------------------------------------------ File.exist?: 0.036412 0.056616 0.093028 ( 0.093075) --------------------------------------- total: 0.093028sec user system total real File.exist?: 0.042953 0.049783 0.092736 ( 0.092804) $ ~/releaseruby_no_patch/bin/ruby bench.rb Rehearsal ------------------------------------------------ File.exist?: 0.056094 0.026293 0.082387 ( 0.082389) --------------------------------------- total: 0.082387sec user system total real File.exist?: 0.037250 0.046702 0.083952 ( 0.083956) Based on the patch by Wolf <wolf@wolfsden.cz> at [ruby-core:83012], with using `rb_thread_io_blocking_region` for `fstat`. [Bug #13941] ------------------------------------------------------------------------ r60026 | nobu | 2017-09-26 09:07:41 +0900 (Tue, 26 Sep 2017) | 5 lines test_drb.rb: removed extra spaces * test/drb/test_drb.rb (TestDRbLarge#test_02_large_ary): removed unnecessary extra spaces which make the following parentheses an expression. ------------------------------------------------------------------------ r60025 | nobu | 2017-09-26 06:52:00 +0900 (Tue, 26 Sep 2017) | 4 lines vm.c: unused function * vm.c (rb_vm_jump_tag_but_local_jump): no longer used since r51292. ------------------------------------------------------------------------ r60024 | nobu | 2017-09-26 06:51:56 +0900 (Tue, 26 Sep 2017) | 5 lines vm.c: fetch retval iff necessary * vm.c (rb_vm_make_jump_tag_but_local_jump): get rid of fetching retval when it is not used. it is necessary for local jump state only. ------------------------------------------------------------------------ r60023 | svn | 2017-09-26 02:38:43 +0900 (Tue, 26 Sep 2017) | 1 line * 2017-09-26 ------------------------------------------------------------------------ r60022 | naruse | 2017-09-26 02:38:42 +0900 (Tue, 26 Sep 2017) | 4 lines Switch Build to use 2.4 with certs files patched by MSP-Greg <MSP-Greg@users.noreply.github.com> fix https://github.com/ruby/ruby/pull/1702 ------------------------------------------------------------------------ r60021 | naruse | 2017-09-25 23:28:53 +0900 (Mon, 25 Sep 2017) | 1 line HTTPHeader#add_field should allow binary [Bug #13926] ------------------------------------------------------------------------ r60020 | mame | 2017-09-25 23:04:59 +0900 (Mon, 25 Sep 2017) | 3 lines tool/run-lcov.rb: Filter test files out And refactoring. ------------------------------------------------------------------------ r60019 | naruse | 2017-09-25 17:19:10 +0900 (Mon, 25 Sep 2017) | 7 lines Fix overflow detection for LLP64 arch [Bug #13748] FIXNUMs are expected to fit into a long type, but the test is about a VALUE type. Since long is < than VALUE on LLP64, the overflow is not detected. As a result "2**31" evaluates to "-2147483648" on Windows with gcc-7.1.0. patched by Lars Kanis <lars@greiz-reinsdorf.de> ------------------------------------------------------------------------ r60018 | nobu | 2017-09-25 15:31:38 +0900 (Mon, 25 Sep 2017) | 6 lines configure.in: install_name without teeny * configure.in (RUBY_API_VERSION): remove teeny from install_name to allow link extension libraries for the same minor version. patched by kimuraw (Wataru Kimura) at [ruby-dev:50262]. [Bug #13931] ------------------------------------------------------------------------ r60017 | naruse | 2017-09-25 15:20:10 +0900 (Mon, 25 Sep 2017) | 1 line Time#at receives 3rd argument which specifies the unit of 2nd argument [Feature #13919] ------------------------------------------------------------------------ r60016 | sonots | 2017-09-25 15:05:52 +0900 (Mon, 25 Sep 2017) | 3 lines thread.c: Use 'Class.new' instead of 'Class::new' in doc codes. patched by Herwin [Fix GH-1700] ------------------------------------------------------------------------ r60015 | yui-knk | 2017-09-25 09:09:44 +0900 (Mon, 25 Sep 2017) | 8 lines test/ruby/test_iseq.rb: Skip test_safe_call_chain if Coverage is running. Follow up to r59990. When Coverage is running, trace2 instructions are inserted to take branch coverages for safe method invocations. This insertion makes safe call chains unable to be optimized and breaks this test case. So we test it only when Coverage is not running. ------------------------------------------------------------------------ r60014 | svn | 2017-09-25 01:26:23 +0900 (Mon, 25 Sep 2017) | 1 line * 2017-09-25 ------------------------------------------------------------------------ r60013 | rhe | 2017-09-25 01:26:22 +0900 (Mon, 25 Sep 2017) | 32 lines openssl: import e72d960db262 Sync with master branch of ruby/openssl.git to import changes in v2.1.0.beta1..v2.0.6. The commit log since v2.1.0.beta1 which was imported by r59734 can be found at: https://github.com/ruby/openssl/compare/v2.1.0.beta1...e72d960db262 ---------------------------------------------------------------- Kazuki Yamaguchi (16): test/test_pair: fix test_write_nonblock{,_no_exceptions} x509name: fix a typo in docs test/test_fips: skip if setting FIPS mode fails test/test_asn1: fix possible failure in test_utctime test/test_ssl: suppress warning in test_alpn_protocol_selection_cancel test/test_pair: disable compression test/test_ssl: skip tmp_ecdh_callback test for LibreSSL >= 2.6.1 test/test_ssl: do not run NPN tests for LibreSSL >= 2.6.1 tool/ruby-openssl-docker: update test/test_pair: replace sleep with IO.select ssl: prevent SSLSocket#sysread* from leaking uninitialized data ossl.c: use struct CRYPTO_dynlock_value for non-dynamic locks ossl.c: make legacy locking callbacks reentrant test/test_engine: suppress stderr test/test_engine: check if RC4 is supported Ruby/OpenSSL 2.0.6 SHIBATA Hiroshi (1): To use upstream url of github nobu (1): ruby.h: unnormalized Fixnum value ------------------------------------------------------------------------ r60012 | nobu | 2017-09-24 19:07:21 +0900 (Sun, 24 Sep 2017) | 3 lines common.mk: force link exe/ruby * common.mk (exe/ruby): force link exe/ruby with miniruby. ------------------------------------------------------------------------ r60011 | nobu | 2017-09-24 18:44:26 +0900 (Sun, 24 Sep 2017) | 4 lines test_gc.rb: relax criterion * test/ruby/test_gc.rb (TestGc#test_expand_heap): relax the criterion and compare by epsilon. ------------------------------------------------------------------------ r60010 | nobu | 2017-09-24 18:35:09 +0900 (Sun, 24 Sep 2017) | 4 lines gem.rb: load rubygems.rb * test/rubygems/test_gem.rb: load rubygems.rb explicitly, for the case configured as --disable-rubygems. ------------------------------------------------------------------------ r60009 | hsbt | 2017-09-24 17:10:08 +0900 (Sun, 24 Sep 2017) | 1 line Added NEWS entry for r60008 ------------------------------------------------------------------------ r60008 | hsbt | 2017-09-24 16:52:25 +0900 (Sun, 24 Sep 2017) | 5 lines Removed ubygems.rb. rubygems.rb is always loaded now. * tool/sync_default_gems.rb: removed ubygems.rb from sync target. * test/rubygems/test_gem.rb: only enable "-rubygems" option when running under the Ruby 1.9. ------------------------------------------------------------------------ r60007 | nobu | 2017-09-24 14:22:23 +0900 (Sun, 24 Sep 2017) | 4 lines load.c: fix rb_load_protect condition * load.c (rb_load_protect): fix the condition to load the found file. fixup of r59155. ------------------------------------------------------------------------ r60006 | nobu | 2017-09-24 10:48:25 +0900 (Sun, 24 Sep 2017) | 6 lines ruby-runner.c: RUBYLIB * ruby-runner.c (insert_env_path): extracted the function which insert path list to an environment variable. * ruby-runner.c (main): append library paths to RUBYLIB. ------------------------------------------------------------------------ r60005 | nobu | 2017-09-24 09:15:02 +0900 (Sun, 24 Sep 2017) | 4 lines common.mk: link exe/ruby * common.mk (exe/ruby): make fixed name symbolic link exe/ruby to exe/$(PROGRAM), to run hardcoded bundler tests. ------------------------------------------------------------------------ r60004 | svn | 2017-09-24 08:58:25 +0900 (Sun, 24 Sep 2017) | 1 line * 2017-09-24 ------------------------------------------------------------------------ r60003 | mame | 2017-09-24 08:58:24 +0900 (Sun, 24 Sep 2017) | 4 lines test/coverage/test_coverage.rb: Refactor coverage tests. Add `assert_coverage` to invoke Ruby script under coverage measurement and to compare the result with an expected value. ------------------------------------------------------------------------ r60002 | nobu | 2017-09-23 16:09:07 +0900 (Sat, 23 Sep 2017) | 6 lines dup String#split return value * string.c (rb_str_split): return duplicated receiver, when no splits. patched by tompng (tomoya ishida) in [ruby-core:82911], and the test case by Seiei Miyagi <hanachin@gmail.com>. [Bug#13925] [Fix GH-1705] ------------------------------------------------------------------------ r60001 | nobu | 2017-09-23 16:09:06 +0900 (Sat, 23 Sep 2017) | 6 lines dup String#rpartition return value * string.c (rb_str_rpartition): return duplicated receiver, when no splits. [ruby-core:82911] [Bug#13925] Author: Seiei Miyagi <hanachin@gmail.com> ------------------------------------------------------------------------ r60000 | nobu | 2017-09-23 16:09:05 +0900 (Sat, 23 Sep 2017) | 6 lines dup String#partition return value * string.c (rb_str_partition): return duplicated receiver, when no splits. [ruby-core:82911] [Bug#13925] Author: Seiei Miyagi <hanachin@gmail.com> ------------------------------------------------------------------------ r59999 | nobu | 2017-09-23 15:49:35 +0900 (Sat, 23 Sep 2017) | 5 lines parse.y: token type by identifer ID type * parse.y (parse_ident): leave identifier type decision (local or const) to rb_enc_symname_type, and set the token type by ID type. ------------------------------------------------------------------------ r59998 | nobu | 2017-09-23 15:49:34 +0900 (Sat, 23 Sep 2017) | 3 lines parse.y: missing semicolon * parse.y (stmt_or_begin): fix missing semicolon. ------------------------------------------------------------------------ r59997 | hsbt | 2017-09-23 13:37:58 +0900 (Sat, 23 Sep 2017) | 3 lines removed bin/bundle_ruby, It was ignored upstream gemspec. * spec/bundler/other/*: Marked exclude tags for ruby repository. ------------------------------------------------------------------------ r59996 | hsbt | 2017-09-23 11:57:12 +0900 (Sat, 23 Sep 2017) | 1 line update section styles for psych, rubygems, bundler. ------------------------------------------------------------------------ r59995 | hsbt | 2017-09-23 11:55:07 +0900 (Sat, 23 Sep 2017) | 4 lines Added sections of pysch library to LEGAL. * ext/psych/yaml/LICENSE: Integrate libyaml license to LEGAL and removed this file from repository. ------------------------------------------------------------------------ r59994 | hsbt | 2017-09-23 11:37:55 +0900 (Sat, 23 Sep 2017) | 1 line Added bundler's license to LEGAL. ------------------------------------------------------------------------ r59993 | hsbt | 2017-09-23 11:26:10 +0900 (Sat, 23 Sep 2017) | 1 line Added missing "ubygems.rb" file of rubygems to LEGAL. ------------------------------------------------------------------------ r59992 | hsbt | 2017-09-23 11:24:27 +0900 (Sat, 23 Sep 2017) | 1 line Integrate LICENSE file of rubygems to LEGAL. ------------------------------------------------------------------------ r59991 | svn | 2017-09-23 09:17:36 +0900 (Sat, 23 Sep 2017) | 1 line * 2017-09-23 ------------------------------------------------------------------------ r59990 | yui-knk | 2017-09-23 09:17:35 +0900 (Sat, 23 Sep 2017) | 1 line Enable to take branch coverages for safe method invocations ------------------------------------------------------------------------ r59989 | nobu | 2017-09-22 20:21:34 +0900 (Fri, 22 Sep 2017) | 8 lines Update trick2013/yhara for Ruby 2.4 I need to raise LocalJumpError here (for the first "J" of the output "JUST ANOTHER RUBY HACKER"), but this `return` does not raise error in Ruby 2.4. [Fix GH-1703] Author: Yutaka HARA <yutaka.hara+github@gmail.com> ------------------------------------------------------------------------ r59988 | nobu | 2017-09-22 13:56:24 +0900 (Fri, 22 Sep 2017) | 4 lines numeric.c: reduced repeated calls * numeric.c (rb_num2ll, rb_num2ull, fix_pow): turn repeated RFLOAT_VALUE calls into local variables. ------------------------------------------------------------------------ r59987 | svn | 2017-09-22 12:05:03 +0900 (Fri, 22 Sep 2017) | 1 line * 2017-09-22 ------------------------------------------------------------------------ r59986 | nobu | 2017-09-22 12:05:02 +0900 (Fri, 22 Sep 2017) | 5 lines numeric.c: use NUM2DBL * numeric.c (fix_fdiv_double), bignum.c (rb_big_fdiv_double): use NUM2DBL on unknown object. RFLOAT_VALUE is only appliicable to T_FLOAT object. [ruby-core:82924] [Bug #13928] ------------------------------------------------------------------------ r59985 | nobu | 2017-09-21 21:26:16 +0900 (Thu, 21 Sep 2017) | 4 lines gmake.mk: order test-bundler * defs/gmake.mk (ORDERED_TEST_TARGETS): order test-bundler too to get rid of mixing outputs. ------------------------------------------------------------------------ r59984 | nobu | 2017-09-21 16:29:20 +0900 (Thu, 21 Sep 2017) | 5 lines load.c: real path to load * load.c (rb_construct_expanded_load_path): expand load paths to real paths to get rid of duplicate loading from symbolic-linked directories. [Feature #10222] ------------------------------------------------------------------------ r59983 | nobu | 2017-09-21 16:29:16 +0900 (Thu, 21 Sep 2017) | 5 lines file.c: rb_check_realpath * file.c (rb_check_realpath): returns real path which has no symbolic links. similar to rb_realpath except for returning Qnil if any parts did not exist. ------------------------------------------------------------------------ r59982 | eregon | 2017-09-21 07:02:10 +0900 (Thu, 21 Sep 2017) | 4 lines check_funcall_missing() should call respond_to_missing?(name, priv=true) * Improve spec rather than constrain implementation. * Coercion ignores visibility in Ruby. ------------------------------------------------------------------------ r59981 | eregon | 2017-09-21 06:50:14 +0900 (Thu, 21 Sep 2017) | 5 lines Prefer adapting specs to complicating library code * lib/net/ftp.rb (Net::FTP#initialize): simplify as per the original intent. * spec/ruby/library/net/ftp/initialize_spec.rb: adapt specs. ------------------------------------------------------------------------ r59980 | eregon | 2017-09-21 05:19:54 +0900 (Thu, 21 Sep 2017) | 4 lines Adapt tools to follow spec/rubyspec => spec/ruby rename * [Misc #13792] [ruby-core:82287] * Prefer test-spec over test-rubyspec in spec/README. ------------------------------------------------------------------------ r59979 | eregon | 2017-09-21 05:18:52 +0900 (Thu, 21 Sep 2017) | 4 lines Move spec/rubyspec to spec/ruby for consistency * Other ruby implementations use the spec/ruby directory. [Misc #13792] [ruby-core:82287] ------------------------------------------------------------------------ r59978 | svn | 2017-09-21 04:45:20 +0900 (Thu, 21 Sep 2017) | 1 line * properties. ------------------------------------------------------------------------ r59977 | eregon | 2017-09-21 04:45:19 +0900 (Thu, 21 Sep 2017) | 1 line Update to ruby/spec@e3b6811 ------------------------------------------------------------------------ r59976 | svn | 2017-09-21 03:47:15 +0900 (Thu, 21 Sep 2017) | 1 line * 2017-09-21 ------------------------------------------------------------------------ r59975 | normal | 2017-09-21 03:47:14 +0900 (Thu, 21 Sep 2017) | 11 lines process: block/unblock signals around fork As with forking for execve(2) in `spawn', we must block signals to ensure they are handled correctly in a freshly `fork'-ed child. * process.c (retry_fork_ruby): block/unblock signals around fork (rb_fork_ruby): re-enable signals in forked child * test/ruby/test_process.rb (test_forked_child_signal): new test [ruby-core:82883] [Bug #13916] Thanks to Russell Davis for the bug report and test case. ------------------------------------------------------------------------ r59974 | nobu | 2017-09-20 17:38:52 +0900 (Wed, 20 Sep 2017) | 4 lines parse.y: literal term lex_state * parse.y (parser_string_term, parser_parse_string): move setting lex_state operations from parser_yylex per each token types. ------------------------------------------------------------------------ r59973 | sonots | 2017-09-20 14:01:09 +0900 (Wed, 20 Sep 2017) | 1 line ruby.c: show help messages of --dump ------------------------------------------------------------------------ r59972 | nobu | 2017-09-20 11:32:55 +0900 (Wed, 20 Sep 2017) | 4 lines fix up r59949 * ext/ripper/lib/ripper/lexer.rb (List#inspect): splat self data to local variables same as members of Elem. ------------------------------------------------------------------------ r59971 | shugo | 2017-09-20 10:40:53 +0900 (Wed, 20 Sep 2017) | 3 lines Add MonitorMinx#mon_locked? and #mon_owned? to check states of objects Patched by Satoshi "Moris" Tagomori <tagomoris@gmail.com>. [Fix GH-1699] ------------------------------------------------------------------------ r59970 | nobu | 2017-09-20 09:53:47 +0900 (Wed, 20 Sep 2017) | 5 lines ruby.c: paragraph mode by -00 * ruby.c (proc_options): set to paragraph mode, if -00 is given, as well as perl and -R0 option in 0.49. [ruby-core:81987] [Bug #13736] ------------------------------------------------------------------------ r59969 | svn | 2017-09-20 08:09:11 +0900 (Wed, 20 Sep 2017) | 1 line * 2017-09-20 ------------------------------------------------------------------------ r59968 | nobu | 2017-09-20 08:09:10 +0900 (Wed, 20 Sep 2017) | 1 line adjust indent ------------------------------------------------------------------------ r59967 | nagachika | 2017-09-19 23:56:03 +0900 (Tue, 19 Sep 2017) | 3 lines fix a typo in NEWS at r59966. * NEWS: fix a typo. ------------------------------------------------------------------------ r59966 | knu | 2017-09-19 17:45:12 +0900 (Tue, 19 Sep 2017) | 5 lines Alias Set#=== to #include? * set.rb (Set#===): Added via [Feature #13801] by davidarnold. Closes #1673. ------------------------------------------------------------------------ r59965 | normal | 2017-09-19 17:39:22 +0900 (Tue, 19 Sep 2017) | 5 lines webrick: handle EAGAIN/EWOULDBLOCK on proxy connections * lib/webrick/httpproxy.rb (do_CONNECT): high-level IO methods [ruby-core:82861] [Bug #12130] Patch by: Keisuke NISHI ------------------------------------------------------------------------ r59964 | hsbt | 2017-09-19 14:01:02 +0900 (Tue, 19 Sep 2017) | 5 lines Fixup r59961. Use http for libffi downloading. A few environments couldn't handle https download. * https://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20170919T032511Z.fail.html.gz * https://rubyci.org/logs/www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20170919T040500Z.fail.html.gz ------------------------------------------------------------------------ r59963 | nobu | 2017-09-19 11:42:08 +0900 (Tue, 19 Sep 2017) | 4 lines thread.c: report then abort * thread.c (thread_start_func_2): report then abort on exception, if both are set. [ruby-core:79280] [Bug #13163] ------------------------------------------------------------------------ r59962 | hsbt | 2017-09-19 11:39:40 +0900 (Tue, 19 Sep 2017) | 4 lines Added documentation Added documentaiton for installation of bundled gems. [Bug #13724][ruby-core:81938] ------------------------------------------------------------------------ r59961 | hsbt | 2017-09-19 11:25:16 +0900 (Tue, 19 Sep 2017) | 1 line Use https instead of ftp for libffi downloading. ------------------------------------------------------------------------ r59960 | hsbt | 2017-09-19 10:54:28 +0900 (Tue, 19 Sep 2017) | 3 lines Define the MIME type for JSON in WEBrick::HTTPUtils::DefaultMimeTypes. [Feature #10798][ruby-core:67879] ------------------------------------------------------------------------ r59959 | hsbt | 2017-09-19 09:37:38 +0900 (Tue, 19 Sep 2017) | 4 lines Enabled temporary disabled examples of bundler rspec. These are fails when merging at r59779. But these are working now. ------------------------------------------------------------------------ r59958 | svn | 2017-09-19 09:22:57 +0900 (Tue, 19 Sep 2017) | 1 line * 2017-09-19 ------------------------------------------------------------------------ r59957 | nobu | 2017-09-19 09:22:56 +0900 (Tue, 19 Sep 2017) | 4 lines parse.y: lex by lvar * parse.y (parse_ident): disable tLPAREN_ARG state by local variable. [ruby-list:50578] ------------------------------------------------------------------------ r59956 | ktsj | 2017-09-18 17:21:08 +0900 (Mon, 18 Sep 2017) | 5 lines vm.c: fix `cfp consistency error' which occurs when raising exception in bmethod call event * vm.c (invoke_bmethod): set FINISH flag just before calling vm_exec. [ruby-dev:50162] [Bug #13705] ------------------------------------------------------------------------ r59955 | nobu | 2017-09-18 17:05:53 +0900 (Mon, 18 Sep 2017) | 10 lines error.c: KeyError#receiver and KeyError#key * error.c: new method KeyError#receiver and KeyError#key. [Feature #12063] * hash.c: make KeyError object with receiver and key. * sprintf.c: ditto. Author: ksss <co000ri@gmail.com> ------------------------------------------------------------------------ r59954 | nobu | 2017-09-18 16:52:58 +0900 (Mon, 18 Sep 2017) | 1 line configure.in: use newer libtool only ------------------------------------------------------------------------ r59953 | rhe | 2017-09-18 14:37:29 +0900 (Mon, 18 Sep 2017) | 3 lines re.c: remove unused rb_memcmp() function It is no longer used or exported as of r13641. ------------------------------------------------------------------------ r59952 | yui-knk | 2017-09-18 14:17:21 +0900 (Mon, 18 Sep 2017) | 5 lines thread.c: Clear an array for method coverage * thread.c (reset_coverage_i): Clear an array for method coverage just like line coverage and branch coverage. ------------------------------------------------------------------------ r59951 | nobu | 2017-09-18 14:16:37 +0900 (Mon, 18 Sep 2017) | 4 lines intern instruction * insns.def (intern): new instruction to turn string into symbol. opt_call_c_function can not dump. ------------------------------------------------------------------------ r59950 | nobu | 2017-09-18 11:27:13 +0900 (Mon, 18 Sep 2017) | 11 lines refinements in string interpolation * compile.c (iseq_compile_each0): insert to_s method call, so that refinements activated at the caller should take place. [Feature #13812] * insns.def (tostring): fix up converted object to a string, infect and fallback. * insns.def (branchiftype): new instruction for conversion. branches if TOS is an instance of the given type. ------------------------------------------------------------------------ r59949 | nobu | 2017-09-18 09:08:19 +0900 (Mon, 18 Sep 2017) | 7 lines parse.y: ripper_lex_state_name * parse.y (ripper_lex_state_name): represent lex_state as OR-ed form. * ext/ripper/lib/ripper/lexer.rb (Ripper::Lexer::Elem#to_a): lex_state for inspection. ------------------------------------------------------------------------ r59948 | svn | 2017-09-18 08:56:38 +0900 (Mon, 18 Sep 2017) | 1 line * 2017-09-18 ------------------------------------------------------------------------ r59947 | mame | 2017-09-18 08:56:37 +0900 (Mon, 18 Sep 2017) | 3 lines ext/objspace/objspace.c: remove unneeded code clones. `setup_hash` have already performed nil check and empty check. ------------------------------------------------------------------------ r59946 | nobu | 2017-09-17 18:28:58 +0900 (Sun, 17 Sep 2017) | 7 lines literal symbol by intern * compile.c (iseq_compile_each0): literal symbol should not be affected by redefinition of String#intern method. * vm_insnhelper.c (rb_vm_str_intern): intern a string into a symbol directly. ------------------------------------------------------------------------ r59945 | nobu | 2017-09-17 18:21:47 +0900 (Sun, 17 Sep 2017) | 6 lines compile.c: optimize unnecessary concatstrings * compile.c (iseq_peephole_optimize): optimize away unnecessary concatenation of single string, following tostring which always puts a String instance. https://github.com/ruby/ruby/pull/1626#discussion_r139285653 ------------------------------------------------------------------------ r59944 | mame | 2017-09-17 17:04:34 +0900 (Sun, 17 Sep 2017) | 3 lines ext/io/console/lib/console/size.rb: Fix the context of method definition `console_size` is not a instance method but a class method. ------------------------------------------------------------------------ r59943 | yui-knk | 2017-09-17 16:19:20 +0900 (Sun, 17 Sep 2017) | 5 lines node.h: Remove a not used macro * node.h (nd_refinements_): nd_refinements_ was introduced on r49894. But this macro has not been used since r49897. ------------------------------------------------------------------------ r59942 | nobu | 2017-09-17 15:50:31 +0900 (Sun, 17 Sep 2017) | 4 lines make-snapshot: after-update * tool/make-snapshot (package): fix missing after-update for libffi and so on. [ruby-dev:50244] [Bug #13897] ------------------------------------------------------------------------ r59941 | nobu | 2017-09-17 14:51:15 +0900 (Sun, 17 Sep 2017) | 3 lines suppress warnings * compile.c: suppress maybe-uninitialized warnings by gcc7. ------------------------------------------------------------------------ r59940 | mame | 2017-09-17 13:30:30 +0900 (Sun, 17 Sep 2017) | 4 lines run-lcov.rb: wrongly used unique ID as lineno The second value of key of branch/method coverage is unique ID, not lineno. ------------------------------------------------------------------------ r59939 | rhe | 2017-09-17 13:26:51 +0900 (Sun, 17 Sep 2017) | 5 lines ext/date/extconf.rb: check for timezone and altzone Instead of in configure.in. As of r28592 the HAVE_VAR_TIMEZONE and HAVE_VAR_ALTZONE macros are only used by ext/date. ext/date doesn't care whether they are int or long, so just check for the existence. ------------------------------------------------------------------------ r59938 | rhe | 2017-09-17 13:26:48 +0900 (Sun, 17 Sep 2017) | 4 lines configure.in: don't check for existence of timezone() HAVE_TIMEZONE and TIMEZONE_VOID macros are not used anymore as of r28592 ("strftime.c: unused declarations removed.", 2010-07-09). ------------------------------------------------------------------------ r59937 | nobu | 2017-09-17 13:14:51 +0900 (Sun, 17 Sep 2017) | 5 lines Rename bin/ruby as exe/ruby * common.mk, configure.in: rename the bin directory to run build executable as exe, to get rid of overwriting true files at the installation. [ruby-dev:50250] [Bug #13911] ------------------------------------------------------------------------ r59936 | svn | 2017-09-17 07:40:10 +0900 (Sun, 17 Sep 2017) | 1 line * 2017-09-17 ------------------------------------------------------------------------ r59935 | nobu | 2017-09-17 07:40:09 +0900 (Sun, 17 Sep 2017) | 1 line test_fileutils.rb: rmdir should fail on nonexistent directory ------------------------------------------------------------------------ r59934 | nobu | 2017-09-16 20:59:47 +0900 (Sat, 16 Sep 2017) | 4 lines fileutils.rb: error at rmdir * lib/fileutils.rb (rmdir): should not ignore errors first, except for parent directories. [ruby-dev:50236] [Bug #13889] ------------------------------------------------------------------------ r59933 | nobu | 2017-09-16 20:50:56 +0900 (Sat, 16 Sep 2017) | 5 lines file.c: [DOC] separators at dirname and basename * file.c (rb_file_s_basename, rb_file_s_dirname): [DOC] state that trailing separators will be stripped first, like as basename(1) and dirname(1). [ruby-core:82828] [Bug #13908] ------------------------------------------------------------------------ r59932 | nobu | 2017-09-16 20:50:55 +0900 (Sat, 16 Sep 2017) | 1 line common.mk: make bin directory ------------------------------------------------------------------------ r59931 | hsbt | 2017-09-16 08:46:46 +0900 (Sat, 16 Sep 2017) | 3 lines To use github url for gemspec. [Bug #13906][ruby-core:82817] ------------------------------------------------------------------------ r59930 | nobu | 2017-09-16 04:25:46 +0900 (Sat, 16 Sep 2017) | 1 line ruby-runner.c: reduce duplicate code ------------------------------------------------------------------------ r59929 | nobu | 2017-09-16 04:25:45 +0900 (Sat, 16 Sep 2017) | 1 line Makefile.in: make wrappers for each name ------------------------------------------------------------------------ r59928 | nobu | 2017-09-16 02:47:50 +0900 (Sat, 16 Sep 2017) | 1 line fixup r59927 ------------------------------------------------------------------------ r59927 | nobu | 2017-09-16 02:42:00 +0900 (Sat, 16 Sep 2017) | 5 lines rename ruby-runner as bin/ruby * Makefile.in, configure.in, tool/runruby.rb: rename ruby-runner executable file as $(RUBY_INSTALL_NAME) under bin, to mimic dirty `#!/usr/bin/env` hack. ------------------------------------------------------------------------ r59926 | naruse | 2017-09-16 02:00:49 +0900 (Sat, 16 Sep 2017) | 13 lines Find.find -> Use Dir.children instead of Dir.entries Dir.children is available since Feature #11302. Find.find can use of the new list (having no '.' neither '..' entries), making now superflous an if statement. This change can improve the performance of Find.find when the path has lots of entries (thousands?). https://bugs.ruby-lang.org/issues/11302 patched by Espartaco Palma <esparta@gmail.com> https://github.com/ruby/ruby/pull/1697 fix GH-1697 [Feature #13896] ------------------------------------------------------------------------ r59925 | naruse | 2017-09-16 01:56:16 +0900 (Sat, 16 Sep 2017) | 4 lines Fix test code of kconv patched by tbpgr <tbpgr@tbpgr.jp> https://github.com/ruby/ruby/pull/1696 fix GH-1696 ------------------------------------------------------------------------ r59924 | svn | 2017-09-16 01:53:56 +0900 (Sat, 16 Sep 2017) | 1 line * 2017-09-16 ------------------------------------------------------------------------ r59923 | naruse | 2017-09-16 01:53:55 +0900 (Sat, 16 Sep 2017) | 4 lines include query parameters in Net::HTTP.post patched by Samuel Giddins <segiddins@segiddins.me> https://github.com/ruby/ruby/pull/1686 fix GH-1686 ------------------------------------------------------------------------ r59922 | kazu | 2017-09-15 21:03:42 +0900 (Fri, 15 Sep 2017) | 1 line Fix typos [ci skip] ------------------------------------------------------------------------ r59921 | kazu | 2017-09-15 21:03:41 +0900 (Fri, 15 Sep 2017) | 1 line Remove needless splat array ------------------------------------------------------------------------ r59920 | nobu | 2017-09-15 17:47:46 +0900 (Fri, 15 Sep 2017) | 4 lines parse.y: use SET_LEX_STATE * parse.y (f_arglist, parser_yylex): set lex_state via SET_LEX_STATE macro for yydebug messages. ------------------------------------------------------------------------ r59919 | nobu | 2017-09-15 11:01:59 +0900 (Fri, 15 Sep 2017) | 6 lines object.c: fix conversion failure message * object.c (convert_type_with_id): fix failure message for explicit conversion. rb_convert_type_with_id and rb_check_convert_type_with_id are not only for implicit conversions. ------------------------------------------------------------------------ r59918 | nobu | 2017-09-15 09:59:35 +0900 (Fri, 15 Sep 2017) | 4 lines rubyspec: jobserver fd may not be available * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): rescue possible EBADF as jobserver fd may not be available. ------------------------------------------------------------------------ r59917 | nobu | 2017-09-15 09:59:34 +0900 (Fri, 15 Sep 2017) | 4 lines rubyspec: use mock directory * spec/rubyspec/core/dir/mkdir_spec.rb: the source directory may be on a read-only filesystem. ------------------------------------------------------------------------ r59916 | nobu | 2017-09-15 09:59:32 +0900 (Fri, 15 Sep 2017) | 9 lines rubyspec: fix types * spec/rubyspec/optional/capi/ext/fixnum_spec.c: FIX2INT and FXI2UINT return long, in spite of their names. * spec/rubyspec/optional/capi/ext/range_spec.c: err is int. * spec/rubyspec/optional/capi/ext/st_spec.c: st_index_t is larger than int. ------------------------------------------------------------------------ r59915 | yui-knk | 2017-09-15 09:40:38 +0900 (Fri, 15 Sep 2017) | 5 lines ext/coverage/coverage.c (rb_coverage_start): Ensure `opt` is a hash Ensure `opt` is a hash before using `rb_hash_lookup` to `opt`. This will prevent SEGV when an inappropriate object (i.e. an array) is passed to `opt`. ------------------------------------------------------------------------ r59911 | eregon | 2017-09-15 00:56:33 +0900 (Fri, 15 Sep 2017) | 1 line Update to ruby/spec@a4bc1d8 ------------------------------------------------------------------------ r59910 | svn | 2017-09-15 00:56:10 +0900 (Fri, 15 Sep 2017) | 1 line * 2017-09-15 ------------------------------------------------------------------------ r59909 | eregon | 2017-09-15 00:56:09 +0900 (Fri, 15 Sep 2017) | 1 line Update to ruby/mspec@5bd9409 ------------------------------------------------------------------------ r59908 | eregon | 2017-09-14 23:54:29 +0900 (Thu, 14 Sep 2017) | 1 line time.c (Time#-): Fix documentation. ------------------------------------------------------------------------ r59897 | mame | 2017-09-14 20:16:23 +0900 (Thu, 14 Sep 2017) | 4 lines lib/webrick/log.rb: sanitize any type of logs It had failed to sanitize some type of exception messages. Reported and patched by Yusuke Endoh (mame) at https://hackerone.com/reports/223363 ------------------------------------------------------------------------ r59896 | nobu | 2017-09-14 19:53:47 +0900 (Thu, 14 Sep 2017) | 8 lines ripper: add states of scanner * parse.y (ripper_state): add states of scanner to tokens from Ripper.lex and Ripper::Filter#on_*. based on the patch by aycabta (Code Ahss) at [ruby-core:81789]. [Feature #13686] * ext/ripper/tools/preproc.rb (prelude, usercode): generate EXPR_* constants from enums. ------------------------------------------------------------------------ r59895 | nobu | 2017-09-14 19:49:29 +0900 (Thu, 14 Sep 2017) | 1 line parse.y: [DOC] fix call-seq [ci skip] ------------------------------------------------------------------------ r59894 | mame | 2017-09-14 19:45:04 +0900 (Thu, 14 Sep 2017) | 5 lines ext/coverage/coverage.c: use long instead of int for coverage site id Coverage generates unique ID numbers for each branch and each method. Use long instead of int for the IDs. I don't want to see 2^32 branches and methods in one file, but just in case... ------------------------------------------------------------------------ r59893 | naruse | 2017-09-14 18:21:48 +0900 (Thu, 14 Sep 2017) | 1 line fix the case High Sierra's mincore(2) may return -128 [Bug #13895] ------------------------------------------------------------------------ r59892 | nobu | 2017-09-14 17:04:30 +0900 (Thu, 14 Sep 2017) | 4 lines compile.c: iseq_pop_newarray * compile.c (iseq_pop_newarray): optimize array literal in condition. ------------------------------------------------------------------------ r59891 | mame | 2017-09-14 16:45:17 +0900 (Thu, 14 Sep 2017) | 1 line ext/coverage/coverage.c (method_coverage): `id` was used uninitialized ------------------------------------------------------------------------ r59890 | mame | 2017-09-14 15:07:05 +0900 (Thu, 14 Sep 2017) | 10 lines Measure branch and method coverage for `make test-all` To measure coverage of C code: `./configure --enable-gcov && make && make exam && make lcov` To measure coverage of Ruby code: `./configure && make && make exam COVERAGE=true && make lcov` To measure coverage of both languages at a time: `./configure --enable-gcov && make && make exam COVERAGE=true && make lcov` ------------------------------------------------------------------------ r59889 | mame | 2017-09-14 14:27:02 +0900 (Thu, 14 Sep 2017) | 4 lines Introduce NODE_UNLESS for branch coverage `unless` statement was a syntactic sugar for `if` statement, which made the result of branch coverage hard to understand. ------------------------------------------------------------------------ r59888 | mame | 2017-09-14 14:12:34 +0900 (Thu, 14 Sep 2017) | 1 line Add method coverage ------------------------------------------------------------------------ r59887 | hsbt | 2017-09-14 14:04:38 +0900 (Thu, 14 Sep 2017) | 8 lines added workaround for APFS file format. * TestFileExhaustive#test_atime: It fails with nano-sec precise. I changed to use unixtime for this assertion for APFS. * TestFileExhaustive#test_expand_path: skip assertion when given invalid charactor on APFS. [Bug #13816][ruby-core:82383] ------------------------------------------------------------------------ r59886 | mame | 2017-09-14 13:42:23 +0900 (Thu, 14 Sep 2017) | 1 line Fix the lineno of case statement that has no expression ------------------------------------------------------------------------ r59885 | mame | 2017-09-14 13:32:58 +0900 (Thu, 14 Sep 2017) | 1 line Add branch coverage for case-when statement ------------------------------------------------------------------------ r59878 | hsbt | 2017-09-14 12:57:22 +0900 (Thu, 14 Sep 2017) | 1 line Removed needless operator. ------------------------------------------------------------------------ r59877 | mame | 2017-09-14 12:36:05 +0900 (Thu, 14 Sep 2017) | 1 line Add branch coverage for while and until statements ------------------------------------------------------------------------ r59876 | mame | 2017-09-14 12:25:36 +0900 (Thu, 14 Sep 2017) | 1 line Add branch coverage for if statement ------------------------------------------------------------------------ r59875 | mame | 2017-09-14 11:53:54 +0900 (Thu, 14 Sep 2017) | 1 line ext/coverage/coverage.c: Fix the condition for non-experimental mode ------------------------------------------------------------------------ r59874 | mame | 2017-09-14 11:36:26 +0900 (Thu, 14 Sep 2017) | 24 lines [EXPERIMENTAL] Extend the API of `Coverage.start` and `result` The old API: Coverage.start load "foo.rb" p Coverage.result #=> {"foo.rb" => [1, 2, nil]} The new API: ENV["COVERAGE_EXPERIMENTAL_MODE"] = "true" Coverage.start(lines: true) load "foo.rb" p Coverage.result #=> {"foo.rb" => {:lines => [1, 2, nil]}} This new API allows us to add other measuring target types. Notes: * To keep compatibility, the old interface is still remained; passing no optional argument makes `Coverage.result` return the old format. * This feature is still experimental. So, to enable the new API, the environment variable `COVERAGE_EXPERIMENTAL_MODE` must be set. I plan to activate this feature by Ruby 2.5. ------------------------------------------------------------------------ r59873 | hsbt | 2017-09-14 11:01:36 +0900 (Thu, 14 Sep 2017) | 4 lines Update gemspec for gem released versions. * These are dbm, fcntl, io-console, sdbm, stringio, strscan, zlib, cmath, scanf. ------------------------------------------------------------------------ r59872 | ko1 | 2017-09-14 10:55:59 +0900 (Thu, 14 Sep 2017) | 3 lines remove an unused variable (sometimes it fails test). ------------------------------------------------------------------------ r59871 | mame | 2017-09-14 10:55:30 +0900 (Thu, 14 Sep 2017) | 4 lines Add a new instruction `trace2` for hooking with custom data This is needed for passing to the hook function the measuring target type (line/branch/method) and the site of coverage event fired. ------------------------------------------------------------------------ r59870 | nobu | 2017-09-14 02:07:19 +0900 (Thu, 14 Sep 2017) | 6 lines test_rubyoptions.rb: keep paths if necessary * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_search): PATH must keep library loading paths on a platform where it is used for that purpose, for extra libraries. [ruby-core:81178] [Bug #13569] [Fix GH-1616] ------------------------------------------------------------------------ r59869 | svn | 2017-09-14 00:28:17 +0900 (Thu, 14 Sep 2017) | 1 line * 2017-09-14 ------------------------------------------------------------------------ r59868 | nobu | 2017-09-14 00:28:16 +0900 (Thu, 14 Sep 2017) | 4 lines LIBPATHENV on Windows * configure.in, win32/Makefile.sub: set LIBPATHENV to PATH on Windows, for extra DLLs. ------------------------------------------------------------------------ r59867 | suke | 2017-09-13 22:24:59 +0900 (Wed, 13 Sep 2017) | 3 lines test/win32ole/test_word.rb: word quit without confirmation dialog to save files. [Bug #13894] Thanks to h.shirosaki. ------------------------------------------------------------------------ r59866 | kazu | 2017-09-13 21:46:13 +0900 (Wed, 13 Sep 2017) | 3 lines Random.urandom raises RuntimeError instead of returning nil [ci skip] ------------------------------------------------------------------------ r59865 | hsbt | 2017-09-13 18:06:34 +0900 (Wed, 13 Sep 2017) | 1 line Removed needless magic-comment for encodings. ------------------------------------------------------------------------ r59864 | hsbt | 2017-09-13 18:06:05 +0900 (Wed, 13 Sep 2017) | 1 line Fixup r59856. Added workaround for JRuby. ------------------------------------------------------------------------ r59863 | hsbt | 2017-09-13 11:36:46 +0900 (Wed, 13 Sep 2017) | 3 lines Added executable to bundler template. It's same as upstream permission. ------------------------------------------------------------------------ r59862 | hsbt | 2017-09-13 11:21:02 +0900 (Wed, 13 Sep 2017) | 1 line Fix a typo. ------------------------------------------------------------------------ r59861 | ko1 | 2017-09-13 08:15:34 +0900 (Wed, 13 Sep 2017) | 13 lines Use mutable strings for mutation tests. * test/fiddle/test_func.rb (test_string): this test break String buffer by `strcpy` ("000" -> "123"). However, the string literal "000" with `frozen_string_literal: true` returns a string object from frozen string pool. So that after this test "000" from fstring pool becomes "123" (modified string). 'test/date/' uses "000" (as fstring) and tests are fails (we could check with `make test-all TESTS='fiddle date'`). * test/fiddle/test_function.rb: ditto. * test/fiddle/test_import.rb: ditto. ------------------------------------------------------------------------ r59860 | svn | 2017-09-13 03:41:06 +0900 (Wed, 13 Sep 2017) | 1 line * 2017-09-13 ------------------------------------------------------------------------ r59859 | normal | 2017-09-13 03:41:05 +0900 (Wed, 13 Sep 2017) | 3 lines cont.c: update comment to match r59776 [ci skip] * cont.c (fiber_switch): th->fiber => th->ec.fiber in comment ------------------------------------------------------------------------ r59858 | mame | 2017-09-12 22:57:36 +0900 (Tue, 12 Sep 2017) | 3 lines Random.urandom raises an exception instead of returning nil when failed Early failure looks better in this case. Refs [Bugs #13885]. ------------------------------------------------------------------------ r59857 | rhe | 2017-09-12 22:52:51 +0900 (Tue, 12 Sep 2017) | 10 lines openssl: merge test fixes from upstream, part 2 This is a combined patch of the following two commits in maint: a09d8c78dd30 test/test_ssl: suppress warning in test_alpn_protocol_selection_cancel de965374ee85 test/test_pair: disable compression This hopefully fixes the RubyCI gentoo failure: http://rubyci.s3.amazonaws.com/gentoo/ruby-trunk/log/20170912T033004Z.fail.html.gz ------------------------------------------------------------------------ r59856 | hsbt | 2017-09-12 21:51:43 +0900 (Tue, 12 Sep 2017) | 5 lines Partly reverted r59845. All of environments on Ruby CI are fails rdoc generation. It may be caused by https://github.com/ruby/rdoc/commit/8cfa11d6f1cc7e74e45e42fd8d1d76c5a0646a6e ------------------------------------------------------------------------ r59855 | naruse | 2017-09-12 21:49:38 +0900 (Tue, 12 Sep 2017) | 1 line output some strings without quotes ------------------------------------------------------------------------ r59854 | hsbt | 2017-09-12 20:52:23 +0900 (Tue, 12 Sep 2017) | 6 lines Merge fiddle-1.0.0.beta2 from upstream. * ext/fiddle/closure.c: use directly declaration for standalone gem without internal.h. * Specify frozen string literal is true. * Update gemspec configuration for release version. ------------------------------------------------------------------------ r59853 | kazu | 2017-09-12 20:15:27 +0900 (Tue, 12 Sep 2017) | 1 line Add *.gemspec to .editorconfig [ci skip] ------------------------------------------------------------------------ r59852 | kazu | 2017-09-12 20:15:26 +0900 (Tue, 12 Sep 2017) | 1 line Sort properties in .editorconfig [ci skip] ------------------------------------------------------------------------ r59851 | kazu | 2017-09-12 20:15:25 +0900 (Tue, 12 Sep 2017) | 1 line Fix problem when open in emacs [ci skip] ------------------------------------------------------------------------ r59850 | hsbt | 2017-09-12 19:40:58 +0900 (Tue, 12 Sep 2017) | 1 line Fixed copy option for bundler sync ------------------------------------------------------------------------ r59849 | hsbt | 2017-09-12 17:38:06 +0900 (Tue, 12 Sep 2017) | 4 lines Merge csv-0.1.0 from upstream. * csv.gemspec: Update release version. * lib/csv.rb: Remove superfluous private clause. ------------------------------------------------------------------------ r59848 | hsbt | 2017-09-12 14:19:20 +0900 (Tue, 12 Sep 2017) | 3 lines Fixed install error with rdoc.gemspec "lib/rdoc" is only workds on rdoc repository structure. ------------------------------------------------------------------------ r59847 | svn | 2017-09-12 12:42:56 +0900 (Tue, 12 Sep 2017) | 1 line * properties. ------------------------------------------------------------------------ r59846 | svn | 2017-09-12 12:42:55 +0900 (Tue, 12 Sep 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r59845 | hsbt | 2017-09-12 12:42:54 +0900 (Tue, 12 Sep 2017) | 4 lines Merge rdoc-6.0.0.beta2 from upstream. * This version changed lexer used Ripper from lexer based IRB. see details: https://github.com/ruby/rdoc/pull/512 ------------------------------------------------------------------------ r59844 | nobu | 2017-09-12 05:10:34 +0900 (Tue, 12 Sep 2017) | 4 lines console.c: set winsize on Windows * ext/io/console/console.c (console_set_winsize): retry shrinking window and screen buffer. [ruby-core:82741] [Bug #13888] ------------------------------------------------------------------------ r59843 | svn | 2017-09-12 05:10:34 +0900 (Tue, 12 Sep 2017) | 1 line * 2017-09-12 ------------------------------------------------------------------------ r59842 | nobu | 2017-09-12 05:10:33 +0900 (Tue, 12 Sep 2017) | 5 lines test_io_console.rb: test_set_winsize_console * test/io/console/test_io_console.rb (test_set_winsize_console): split from test_get_winsize_console and enable the case when attached to a console already ------------------------------------------------------------------------ r59840 | mame | 2017-09-11 21:44:51 +0900 (Mon, 11 Sep 2017) | 9 lines lib/securerandom.rb: test one byte to determine urandom or openssl `SecureRandom#gen_random` determines whether urandom is available or not by trying `Random.urandom(n)`. But, when n = 0, `Random.urandom(0)` always succeeds even if urandom is not available, which leads to a wrong decision. When failed, `Random.urandom` returns nil instead of returning a shorter string than required. So the check for `ret.length != n` is not needed. ------------------------------------------------------------------------ r59839 | hsbt | 2017-09-11 18:44:29 +0900 (Mon, 11 Sep 2017) | 6 lines Backport test_realworld_default_gem test from Rubygems-2.6.13. But this test is always fail on ruby core repository. Because default gems is only availabled after installation of Ruby. I ignored this test at https://github.com/rubygems/rubygems/pull/1986 ------------------------------------------------------------------------ r59838 | naruse | 2017-09-11 17:50:08 +0900 (Mon, 11 Sep 2017) | 1 line Follow latest VM changes ------------------------------------------------------------------------ r59837 | naruse | 2017-09-11 17:50:07 +0900 (Mon, 11 Sep 2017) | 1 line suppress unused argument warning ------------------------------------------------------------------------ r59836 | hsbt | 2017-09-11 15:12:40 +0900 (Mon, 11 Sep 2017) | 3 lines Remove commented out code of URI::HTTP.new. [Misc #13871][ruby-core:82655] Patch by @aycabta ------------------------------------------------------------------------ r59835 | hsbt | 2017-09-11 15:11:37 +0900 (Mon, 11 Sep 2017) | 3 lines Remove commented out code of SecureRandom.random_number. [Misc #13870][ruby-core:82654] Patch by @aycabta. ------------------------------------------------------------------------ r59834 | hsbt | 2017-09-11 12:05:07 +0900 (Mon, 11 Sep 2017) | 1 line Fixed unterminated backquote for bundler sync task. ------------------------------------------------------------------------ r59833 | hsbt | 2017-09-11 11:29:11 +0900 (Mon, 11 Sep 2017) | 3 lines Update bundled gems. * rake-12.1.0 from 12.0.0 ------------------------------------------------------------------------ r59832 | hsbt | 2017-09-11 10:33:46 +0900 (Mon, 11 Sep 2017) | 1 line Added [Feature #12733] to NEWS entry. ------------------------------------------------------------------------ r59831 | ko1 | 2017-09-11 04:00:08 +0900 (Mon, 11 Sep 2017) | 13 lines store ec instead of thread in rb_context_t. * cont.c (rb_context_t): introduce saved_ec instaad of saved_thread. We only need to transfer ec data (not all of thread data). Introduce `thread_value` field to point creation thread. To acccess this field, `cont_thread_value()` is introduced. * vm.c (rb_execution_context_mark): remove `static` and use it from cont.c (use this function instead of `rb_thread_mark`). * vm_insnhelper.c (rb_vm_push_frame): accept ec instead of th. ------------------------------------------------------------------------ r59830 | ko1 | 2017-09-11 03:37:55 +0900 (Mon, 11 Sep 2017) | 7 lines avoid false positive on fiber_verify(). * cont.c (fiber_store): move `cont_save_machine_stack()` timing to avoid `fiber_verify()` false positive on `FIBER_USE_NATIVE == 0` and `GC.stress = true`. This patch is very dirty and it should be removed soon. ------------------------------------------------------------------------ r59829 | ko1 | 2017-09-11 02:30:16 +0900 (Mon, 11 Sep 2017) | 7 lines clear `stack_end`. * cont.c (cont_save_thread): clear only `stack_end`. Clearing tells GC mark function to ignore this macine stack (not allocated yet). `stack_start` will be used by machine stack store/restore phase (on FIBER_USE_NATIVE == 0), so that only `stack_end` is cleared. ------------------------------------------------------------------------ r59828 | nobu | 2017-09-11 01:19:40 +0900 (Mon, 11 Sep 2017) | 4 lines compile.c: pop coverage trace * compile.c (iseq_compile_each0): pop trace for coverage only and clear its corresponding line. [ruby-core:82726] [Bug #13886] ------------------------------------------------------------------------ r59827 | nobu | 2017-09-11 01:19:39 +0900 (Mon, 11 Sep 2017) | 1 line cont.c: fix typo [ci skip] ------------------------------------------------------------------------ r59826 | svn | 2017-09-11 00:49:46 +0900 (Mon, 11 Sep 2017) | 1 line * 2017-09-11 ------------------------------------------------------------------------ r59825 | ko1 | 2017-09-11 00:49:45 +0900 (Mon, 11 Sep 2017) | 18 lines move th->machine to ec->machine. * vm_core.h: move rb_thread_t::machine to rb_execution_context_t::machine. * vm_core.h, gc.c (rb_gc_mark_machine_stack): accept ec instead of th. it enables to call this func from rb_execution_context_mark() in vm.c. * cont.c (fiber_setcontext): catch up this fix. fiber_restore_thread() restores machine stack information too. * gc.c: catch up structure layout changes. * thread.c: ditto. * thread_pthread.c: ditto. * thread_win32.c: ditto. ------------------------------------------------------------------------ r59824 | nobu | 2017-09-10 21:35:06 +0900 (Sun, 10 Sep 2017) | 3 lines merger.rb: separate logs * tool/merger.rb: separate each commit logs by an empty line. ------------------------------------------------------------------------ r59821 | nobu | 2017-09-10 20:52:56 +0900 (Sun, 10 Sep 2017) | 6 lines cli_spec.rb: prefer BUNDLE_RUBY * spec/bundler/bundler/cli_spec.rb: prefer BUNDLE_RUBY over env hack. on macOS 10.11 or later, some system commands, e.g. /bin/sh and /usr/bin/env, clear DYLD_LIBRARY_PATH environment variable which is necessary to run not-yet installed command. ------------------------------------------------------------------------ r59810 | hsbt | 2017-09-10 12:21:58 +0900 (Sun, 10 Sep 2017) | 5 lines BUNDLER_SPECS rquires a relative path with srcdir. default targets are all of bundler specs. if you run only commands/add_spec.rb spec: make test-bundler BUNDLER_SPECS=commands/add_spec.rb ------------------------------------------------------------------------ r59804 | nobu | 2017-09-10 07:08:01 +0900 (Sun, 10 Sep 2017) | 3 lines runruby.rb: set envvars for bundler * tool/runruby.rb: set gem and bundler environment variables. ------------------------------------------------------------------------ r59803 | mame | 2017-09-10 00:19:19 +0900 (Sun, 10 Sep 2017) | 3 lines Add a note to Random.urandom The method may return nil for some reasons. ------------------------------------------------------------------------ r59802 | svn | 2017-09-10 00:12:11 +0900 (Sun, 10 Sep 2017) | 1 line * 2017-09-10 ------------------------------------------------------------------------ r59801 | mame | 2017-09-10 00:12:10 +0900 (Sun, 10 Sep 2017) | 5 lines Update a test of SecureRandom according to r57384 SecureRandom uses urandom by default. So the test for a case where openssl is unavailable makes no sense. Instead, a simple test for a case where urandom is unavailable is added. ------------------------------------------------------------------------ r59794 | mame | 2017-09-09 22:09:21 +0900 (Sat, 09 Sep 2017) | 8 lines Support LCOV visualization for both C and Ruby code `./configure --enable-gcov && make exam && make lcov` will create `lcov-c-out/index.html` for coverage of C code of the interpreter. `make exam COVERAGE=true && make lcov` will create `lcov-rb-out/index.html` for coverage of Ruby stdlib code. Using both `--enable-gcov` and `COVERAGE=true` will create `lcov-out/index.html` for total coverage. ------------------------------------------------------------------------ r59792 | nobu | 2017-09-09 20:30:32 +0900 (Sat, 09 Sep 2017) | 10 lines spec/bundler/support: paths for ruby core * spec/bundler/support/path.rb (Spec::Path#for_ruby_core?): helper method to tell whether running in Ruby Core or not. * spec/bundler/support/helpers.rb (Spec::Helpers#bundle): use Path.bindir for ruby core case. * spec/bundler/support/rubygems_ext.rb (Spec::Rubygems.setup): ditto. ------------------------------------------------------------------------ r59791 | nobu | 2017-09-09 20:30:31 +0900 (Sat, 09 Sep 2017) | 4 lines Makefile.in: test-bundler-prepare * Makefile.in (test-bundler-prepare): install with --install-dir option instead of GEM_HOME and GEM_PATH environment variables. ------------------------------------------------------------------------ r59790 | nobu | 2017-09-09 19:20:38 +0900 (Sat, 09 Sep 2017) | 4 lines rubygems_ext.rb: use BUNDLE_GEM * spec/bundler/support/rubygems_ext.rb (install_gems): use BUNDLE_GEM set in Makefile.in instead of the installed command. ------------------------------------------------------------------------ r59789 | nobu | 2017-09-09 18:16:59 +0900 (Sat, 09 Sep 2017) | 4 lines sprintf.c: NULL as str * sprintf.c (ruby_vsnprintf, ruby_snprintf): allow NULL as str, just count the expected buffer size. ------------------------------------------------------------------------ r59788 | nobu | 2017-09-09 18:16:56 +0900 (Sat, 09 Sep 2017) | 4 lines compile.c: replaced switch by TYPE * compile.c (int_param): prefer FIXNUM_P and NIL_P to switch by TYPE. ------------------------------------------------------------------------ r59787 | kazu | 2017-09-09 11:34:30 +0900 (Sat, 09 Sep 2017) | 2 lines Sync .gitignore and svn:ignore and cleanup [ci skip] ------------------------------------------------------------------------ r59786 | svn | 2017-09-09 08:51:15 +0900 (Sat, 09 Sep 2017) | 1 line * 2017-09-09 ------------------------------------------------------------------------ r59785 | normal | 2017-09-09 08:51:14 +0900 (Sat, 09 Sep 2017) | 9 lines fiber: fix machine stack marking when FIBER_USE_NATIVE is 0 * cont.c (cont_mark): mark Fiber machine stack correctly when FIBER_USE_NATIVE is 0 * test/ruby/test_fiber.rb (test_mark_fiber): new test [Bug #13875] [ruby-core:82681] This bug appears to be introduced with r59557. ("refactoring Fiber status") ------------------------------------------------------------------------ r59781 | hsbt | 2017-09-08 17:50:57 +0900 (Fri, 08 Sep 2017) | 3 lines Rollback to v1.15.4 version. In r59779, it contains current master version of bundler repository. ------------------------------------------------------------------------ r59780 | svn | 2017-09-08 17:45:47 +0900 (Fri, 08 Sep 2017) | 1 line * properties. ------------------------------------------------------------------------ r59779 | hsbt | 2017-09-08 17:45:41 +0900 (Fri, 08 Sep 2017) | 15 lines Merge bundler to standard libraries. rubygems 2.7.x depends bundler-1.15.x. This is preparation for rubygems and bundler migration. * lib/bundler.rb, lib/bundler/*: files of bundler-1.15.4 * spec/bundler/*: rspec examples of bundler-1.15.4. I applied patches. * https://github.com/bundler/bundler/pull/6007 * Exclude not working examples on ruby repository. * Fake ruby interpriter instead of installed ruby. * Makefile.in: Added test task named `test-bundler`. This task is only working macOS/linux yet. I'm going to support Windows environment later. * tool/sync_default_gems.rb: Added sync task for bundler. [Feature #12733][ruby-core:77172] ------------------------------------------------------------------------ r59778 | nobu | 2017-09-08 17:03:18 +0900 (Fri, 08 Sep 2017) | 7 lines configure.in: moved flags * configure.in (-DRUBY_DEVEL): moved from debugflags to XCFLAGS. this flags should be applied to the ruby core only. * configure.in (-fno-fast-math): moved from optflags to CFLAGS. this flag is not for optimization. ------------------------------------------------------------------------ r59777 | nobu | 2017-09-08 16:22:47 +0900 (Fri, 08 Sep 2017) | 1 line fix up r59776 ------------------------------------------------------------------------ r59776 | ko1 | 2017-09-08 15:21:30 +0900 (Fri, 08 Sep 2017) | 5 lines move th->fiber to ec->fiber. * vm_core.h (rb_thread_t::fiber): move fiber field to rb_execution_context_t::fiber. ------------------------------------------------------------------------ r59775 | hsbt | 2017-09-08 14:33:12 +0900 (Fri, 08 Sep 2017) | 4 lines Update latest bundled-gems. * minitest 5.10.3 * test-unit 3.2.5 ------------------------------------------------------------------------ r59774 | hsbt | 2017-09-08 14:18:18 +0900 (Fri, 08 Sep 2017) | 3 lines fix a label for bundled gems. "bundle gems" is a wrong name. ------------------------------------------------------------------------ r59773 | usa | 2017-09-08 02:45:34 +0900 (Fri, 08 Sep 2017) | 5 lines the working directory may not be srcdir * test/runner.rb (COVERAGE): should use require_relative instead of require, because the working directory may not be srcdir. ------------------------------------------------------------------------ r59772 | svn | 2017-09-08 00:40:30 +0900 (Fri, 08 Sep 2017) | 1 line * properties. ------------------------------------------------------------------------ r59771 | svn | 2017-09-08 00:40:30 +0900 (Fri, 08 Sep 2017) | 1 line * 2017-09-08 ------------------------------------------------------------------------ r59770 | mame | 2017-09-08 00:40:29 +0900 (Fri, 08 Sep 2017) | 20 lines Measure the test coverage without SimpleCov Now `make test-all COVERAGE=true` measures the test coverage by using `coverage.so` directly, and visualize the result by simplecov-html. There has been some problems in coverage measurement with SimpleCov. (They are not SimpleCov's fault, though.) (1) It is difficult to extract the measured data as a machine-readable format, such as Marshal. I want to visualize the coverage data with other coverage tools, such as LCOV and Cobertura. (I know we can use SimpleCov's formatter mechanism, but I don't want to depend upon SimpleCov so much.) (2) SimpleCov seems to miss some coverage data. For example, `lib/cgi.rb` and `lib/ostruct.rb` are dropped. I don't know why. (3) I have a plan to enhance `coverage.so` with branch coverage. It would be difficult to continue to only use SimpleCov as is. This is the most important reason. ------------------------------------------------------------------------ r59769 | mame | 2017-09-07 21:36:01 +0900 (Thu, 07 Sep 2017) | 11 lines Remove unneeded trace instruction for coverage When no instruction is emitted in `iseq_compile_each0` (i.e., when the line has no significant code), trace instruction for `RUBY_EVENT_LINE` has been optimized out. But trace for `RUBY_EVENT_COVERAGE` has not been removed. Now, it is also removed. `TestISeq#test_to_a_lines` has failed a long time under coverage measurement (`make test-all COVERAGE=true`). This change makes it pass. ------------------------------------------------------------------------ r59768 | kazu | 2017-09-07 21:31:50 +0900 (Thu, 07 Sep 2017) | 1 line Use `%i`-literal instead of array of symbols ------------------------------------------------------------------------ r59767 | nobu | 2017-09-07 17:25:13 +0900 (Thu, 07 Sep 2017) | 4 lines common.mk: fix golf * common.mk (golf): MAINOBJ must be single object file name, so moved golf_prelude to EXTOBJS. [ruby-dev:50214] [Bug #13854] ------------------------------------------------------------------------ r59766 | svn | 2017-09-07 12:24:09 +0900 (Thu, 07 Sep 2017) | 1 line * 2017-09-07 ------------------------------------------------------------------------ r59765 | nobu | 2017-09-07 12:24:08 +0900 (Thu, 07 Sep 2017) | 4 lines ruby.h: unnormalized Fixnum value * include/ruby/ruby.h (ST2FIX): fix unnormalized Fixnum value bug on mingw/mswin. [ruby-core:82687] [Bug #13877] ------------------------------------------------------------------------ r59764 | kazu | 2017-09-06 22:46:31 +0900 (Wed, 06 Sep 2017) | 1 line Fix a typo [ci skip] ------------------------------------------------------------------------ r59763 | nobu | 2017-09-06 22:11:44 +0900 (Wed, 06 Sep 2017) | 5 lines string.c: fix false coderange * string.c (rb_enc_str_scrub): enc can differ from the actual encoding of the string, the cached coderange is useless then. [ruby-core:82674] [Bug #13874] ------------------------------------------------------------------------ r59762 | nobu | 2017-09-06 21:50:10 +0900 (Wed, 06 Sep 2017) | 4 lines string.c: optimize enumerate_grapheme_clusters * string.c (rb_str_enumerate_grapheme_clusters): optimize when single byte only. ------------------------------------------------------------------------ r59761 | duerst | 2017-09-06 17:19:12 +0900 (Wed, 06 Sep 2017) | 3 lines add mention of upgrade to Unicode 10.0.0 to NEWS file (this completes [Feature #13685]; [ci skip]) ------------------------------------------------------------------------ r59760 | duerst | 2017-09-06 17:12:02 +0900 (Wed, 06 Sep 2017) | 3 lines remove Unicode 9.0.0-related files We don't need these files anymore because we upgraded to Unicode 10.0.0. ------------------------------------------------------------------------ r59759 | duerst | 2017-09-06 16:56:41 +0900 (Wed, 06 Sep 2017) | 6 lines update Ruby to Unicode 10.0.0 - In common.mk, set UNICODE_VERSION to 10.0.0 - Generate and add enc/unicode/10.0.0/casefold.h and enc/unicode/10.0.0/name2ctype.h - Update lib/unicode_normalize/tables.rb ------------------------------------------------------------------------ r59758 | mame | 2017-09-06 16:46:31 +0900 (Wed, 06 Sep 2017) | 4 lines Update SimpleCov version (v0.10.0 -> v0.15.0) To suppress warnings of Fixnum. Also simplecov-html updated (v0.10.0 -> v0.10.2). ------------------------------------------------------------------------ r59757 | hsbt | 2017-09-06 12:53:25 +0900 (Wed, 06 Sep 2017) | 3 lines Fixed compilationn error with VMDEBUG=3. [fix GH-1690] Patch from @musaprg(Kotaro Inoue) ------------------------------------------------------------------------ r59756 | ko1 | 2017-09-06 12:39:26 +0900 (Wed, 06 Sep 2017) | 9 lines accept ec instead of th. * vm.c: VM_EP_IN_HEAP_P() and vm_ep_in_heap_p_() only requires ec pointed from th. * vm.c (rb_execution_context_mark): GET_THREAD() returns current running thread and we need to use marking thread here. Pass marking thread's ec instead of current thread. ------------------------------------------------------------------------ r59755 | ko1 | 2017-09-06 12:18:19 +0900 (Wed, 06 Sep 2017) | 1 line th is not defined ------------------------------------------------------------------------ r59754 | ko1 | 2017-09-06 11:51:34 +0900 (Wed, 06 Sep 2017) | 1 line thread_context -> execution_context ------------------------------------------------------------------------ r59753 | svn | 2017-09-06 11:47:00 +0900 (Wed, 06 Sep 2017) | 1 line * 2017-09-06 ------------------------------------------------------------------------ r59752 | ko1 | 2017-09-06 11:46:59 +0900 (Wed, 06 Sep 2017) | 4 lines rb_execution_context_mark. * vm.c (rb_execution_context_mark): separate from thread_mark(). ------------------------------------------------------------------------ r59751 | rhe | 2017-09-05 18:47:59 +0900 (Tue, 05 Sep 2017) | 8 lines openssl: merge test fixes from upstream Fix platform-dependent or fragile test cases added by r59734. This is a combined patch of the three commits below: 4fc17977350a test/test_fips: skip if setting FIPS mode fails b25179fbeebf test/test_asn1: fix possible failure in test_utctime 8ed81ff4b0a8 test/test_pair: fix test_write_nonblock{,_no_exceptions} ------------------------------------------------------------------------ r59750 | hsbt | 2017-09-05 17:25:26 +0900 (Tue, 05 Sep 2017) | 1 line Update credentials for Travis/Slack integration. ------------------------------------------------------------------------ r59749 | mame | 2017-09-05 17:15:54 +0900 (Tue, 05 Sep 2017) | 3 lines Hide NotImplementedError for windows https://github.com/ruby/ruby/commit/440dc6b7e0b3b74db221eed81871516e301d4b3e#commitcomment-24074203 ------------------------------------------------------------------------ r59748 | nobu | 2017-09-05 16:52:08 +0900 (Tue, 05 Sep 2017) | 4 lines st.c: fix num_entries * st.c (st_insert2): should manage num_entries when the key is undefined, as well as st_insert(). ------------------------------------------------------------------------ r59747 | nobu | 2017-09-05 16:50:13 +0900 (Tue, 05 Sep 2017) | 6 lines st.c: fix false assertions * st.c: split assertion conditions. * st.c (rb_hash_bulk_insert): the number of arguments should be even. ------------------------------------------------------------------------ r59746 | shyouhei | 2017-09-05 13:49:01 +0900 (Tue, 05 Sep 2017) | 7 lines optimize rb_hash_bulk_insert to generally outperform 2.4. Specialized routine for small linear-probling hash instances to boost creation of such things [Bug #13861] Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org> ------------------------------------------------------------------------ r59745 | svn | 2017-09-05 13:48:19 +0900 (Tue, 05 Sep 2017) | 1 line * 2017-09-05 ------------------------------------------------------------------------ r59744 | shyouhei | 2017-09-05 13:48:19 +0900 (Tue, 05 Sep 2017) | 9 lines add rb_hash_new_with_size() Sometimes, size of a hash can be calcluated a priori. By providing such info to the constructor we can avoid unnecessary internal re- allocations. This can boost for instance creation of hash literals. [Bug #13861] Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org> ------------------------------------------------------------------------ r59743 | nobu | 2017-09-04 23:04:54 +0900 (Mon, 04 Sep 2017) | 4 lines string.c: grapheme clusters on frozen string * string.c (rb_str_enumerate_grapheme_clusters): enumerate on shared frozen string. ------------------------------------------------------------------------ r59742 | nobu | 2017-09-04 23:04:50 +0900 (Mon, 04 Sep 2017) | 4 lines string.c: enumerator_element * string.c (enumerator_element): push or yield elements, and return 1 if needs checks. ------------------------------------------------------------------------ r59741 | mame | 2017-09-04 22:25:01 +0900 (Mon, 04 Sep 2017) | 3 lines Improve line covearge of ext/io/nonblock/nonblock.c from 54.5% to 95.5% Not so good test, but it would be better than nothing, I guess... ------------------------------------------------------------------------ r59740 | svn | 2017-09-04 21:15:07 +0900 (Mon, 04 Sep 2017) | 1 line * 2017-09-04 ------------------------------------------------------------------------ r59739 | kazu | 2017-09-04 21:15:06 +0900 (Mon, 04 Sep 2017) | 4 lines gc.c: fix typo: nubmer -> number Signed-off-by: Antonio Terceiro <terceiro@softwarelivre.org> [Bug #13862] ------------------------------------------------------------------------ r59738 | mame | 2017-09-03 23:26:06 +0900 (Sun, 03 Sep 2017) | 8 lines Refactor the internal data format for coverage measurement To prepare new measuring targets: branch and method coverages. So far, iseq->coverage was an array of counts executed for line coverage. Now, it is a three-element array for each measuring target, whose first element is an array for line coverage. The second element is planned for branch coverage, and the third will be for method coverage. ------------------------------------------------------------------------ r59737 | rhe | 2017-09-03 22:31:34 +0900 (Sun, 03 Sep 2017) | 3 lines ext/.document: follow-up r59734 ext/openssl/ossl_pkcs5.c has been renamed to ossl_kdf.c. ------------------------------------------------------------------------ r59736 | nobu | 2017-09-03 22:21:07 +0900 (Sun, 03 Sep 2017) | 4 lines string.c: make array in WANTARRAY * string.c (WANTARRAY): make array for the result in method functions and pass it to enumerator functions. ------------------------------------------------------------------------ r59735 | svn | 2017-09-03 21:35:29 +0900 (Sun, 03 Sep 2017) | 1 line * properties. ------------------------------------------------------------------------ r59734 | rhe | 2017-09-03 21:35:27 +0900 (Sun, 03 Sep 2017) | 112 lines openssl: import v2.1.0.beta1 Import Ruby/OpenSSL 2.1.0.beta1. The full commit log since v2.0.5 (imported by r59567) can be found at: https://github.com/ruby/openssl/compare/v2.0.5...v2.1.0.beta1 ---------------------------------------------------------------- Antonio Terceiro (1): test/test_ssl: explicitly accept TLS 1.1 in corresponding test Colby Swandale (1): document using secure protocol to fetch git master in Bundler Colton Jenkins (1): Add fips_mode_get to return fips_mode Kazuki Yamaguchi (85): Start preparing for 2.1.0 Remove support for OpenSSL 0.9.8 and 1.0.0 bn: refine tests bn: implement unary {plus,minus} operators for OpenSSL::BN bn: implement OpenSSL::BN#negative? Don't define main() when built with --enable-debug test: let OpenSSL::TestCase include OpenSSL::TestUtils test: prepare test PKey instances on demand Add OpenSSL.print_mem_leaks Enable OSSL_MDEBUG on CI builds ssl: move default DH parameters from OpenSSL::PKey::DH Make exceptions with the same format regardless of OpenSSL.debug ssl: show reason of 'certificate verify error' in exception message ssl: remove OpenSSL::ExtConfig::TLS_DH_anon_WITH_AES_256_GCM_SHA384 ssl: do not confuse different ex_data index registries ssl: assume SSL/SSL_CTX always have a valid reference to the Ruby object Fix RDoc markup ssl: suppress compiler warning ext/openssl/deprecation.rb: remove broken-apple-openssl extconf.rb: print informative message if OpenSSL can't be found Rakefile: compile the extension before test kdf: introduce OpenSSL::KDF module ossl.h: add NUM2UINT64T() macro kdf: add scrypt Expand rb_define_copy_func() macro Expand FPTR_TO_FD() macro Remove SafeGet*() macros cipher: rename GetCipherPtr() to ossl_evp_get_cipherbyname() digest: rename GetDigestPtr() to ossl_evp_get_digestbyname() Add ossl_str_new(), an exception-safe rb_str_new() bio: simplify ossl_membio2str() using ossl_str_new() Remove unused functions and macros Drop support for LibreSSL 2.3 ocsp: add OpenSSL::OCSP::Request#signed? asn1: infinite length -> indefinite length asn1: rearrange tests ssl: remove a needless NULL check in SSL::SSLContext#ciphers ssl: return nil in SSL::SSLSocket#cipher if session is not started asn1: remove an unnecessary function prototype asn1: require tag information when instantiating generic type asn1: initialize 'unused_bits' attribute of BitString with 0 asn1: check for illegal 'unused_bits' value of BitString asn1: disallow NULL to be passed to asn1time_to_time() asn1: avoid truncating OID in OpenSSL::ASN1::ObjectId#oid asn1: allow constructed encoding with definite length form asn1: prohibit indefinite length form for primitive encoding asn1: allow tag number to be >= 32 for universal tag class asn1: use ossl_asn1_tag() asn1: clean up OpenSSL::ASN1::Constructive#to_der asn1: harmonize OpenSSL::ASN1::*#to_der asn1: prevent EOC octets from being in the middle of the content asn1: do not treat EOC octets as part of content octets x509name: add 'loc' and 'set' kwargs to OpenSSL::X509::Name#add_entry ssl: do not call session_remove_cb during GC Backport "Merge branch 'topic/test-memory-leak'" to maint cipher: update the documentation for Cipher#auth_tag= Rakefile: let sync:to_ruby know about test/openssl/fixtures test: fix formatting test/utils: remove OpenSSL::TestUtils.silent test/utils: add SSLTestCase#tls12_supported? test/utils: have start_server yield only the port number test/utils: do not set ecdh_curves in start_server test/utils: let server_loop close socket test/utils: improve error handling in start_server test/utils: add OpenSSL::TestUtils.openssl? and .libressl? test/utils: do not use DSA certificates in SSL tests test/test_ssl: remove test_invalid_shutdown_by_gc test/test_ssl: move test_multibyte_read_write to test_pair test/test_ssl_session: rearrange tests test/test_pair, test/test_ssl: fix for TLS 1.3 ssl: remove useless call to rb_thread_wait_fd() ssl: fix NPN support ssl: mark OpenSSL::SSL::SSLContext::DEFAULT_{1024,2048} as private ssl: use 2048-bit group in the default tmp_dh_cb ssl: ensure that SSL option flags are non-negative ssl: update OpenSSL::SSL::OP_* flags ssl: prefer TLS_method() over SSLv23_method() ssl: add SSLContext#min_version= and #max_version= ssl: rework SSLContext#ssl_version= test/test_x509name: change script encoding to ASCII-8BIT x509name: refactor OpenSSL::X509::Name#to_s x509name: add OpenSSL::X509::Name#to_utf8 x509name: add OpenSSL::X509::Name#inspect x509name: update regexp in OpenSSL::X509::Name.parse Ruby/OpenSSL 2.1.0.beta1 Marcus Stollsteimer (1): Fix rdoc for core Integer class nobu (4): [DOC] {read,write}_nonblock with exception: false [DOC] keyword argument _exception_ [DOC] mark up literals Revert r57690 except for read_nonblock ------------------------------------------------------------------------ r59733 | rhe | 2017-09-03 21:35:25 +0900 (Sun, 03 Sep 2017) | 4 lines vm_insnhelper.c: fix opt_regexpmatch2 instruction A fix-up for r58390 ("split insns.def into functions", 2017-04-18) which accidentally swapped the arguments. ------------------------------------------------------------------------ r59732 | nobu | 2017-09-03 11:08:55 +0900 (Sun, 03 Sep 2017) | 4 lines string.c: enumerator_wantarray * string.c (enumerator_wantarray): show warnings at method functions for proper method names. ------------------------------------------------------------------------ r59731 | nobu | 2017-09-03 10:47:19 +0900 (Sun, 03 Sep 2017) | 4 lines string.c: fix for non-Unicode encodings * string.c (rb_str_enumerate_grapheme_clusters): should enumerate chars for non-Unicode encodings. [Feature #13780] ------------------------------------------------------------------------ r59730 | nobu | 2017-09-03 09:39:23 +0900 (Sun, 03 Sep 2017) | 4 lines string.c: suppress a warning * string.c (rb_str_enumerate_grapheme_clusters): suppress a maybe-uninitialized warning by old gcc. ------------------------------------------------------------------------ r59729 | nobu | 2017-09-03 09:32:27 +0900 (Sun, 03 Sep 2017) | 4 lines default.mspec: suppress warnings * spec/default.mspec: suppress tons of useless use of == in void context warnings. ------------------------------------------------------------------------ r59728 | nobu | 2017-09-03 09:25:01 +0900 (Sun, 03 Sep 2017) | 4 lines test_io.rb: suppress a warning * test/ruby/test_io.rb (test_single_exception_on_close): suppress ambiguous first argument warning with RUBYOPT=-w. ------------------------------------------------------------------------ r59727 | nobu | 2017-09-03 09:13:15 +0900 (Sun, 03 Sep 2017) | 7 lines test_coverage.rb: suppress warnings * test/coverage/test_coverage.rb (test_nonpositive_linenumber): suppress method redefinition warnings. * test/coverage/test_coverage.rb (test_eval): suppress literal in void context warning. ------------------------------------------------------------------------ r59726 | svn | 2017-09-03 09:02:24 +0900 (Sun, 03 Sep 2017) | 1 line * 2017-09-03 ------------------------------------------------------------------------ r59725 | nobu | 2017-09-03 09:02:23 +0900 (Sun, 03 Sep 2017) | 6 lines test_coverage.rb: use real path * test/coverage/test_coverage.rb (test_restarting_coverage): use real directory path for the case $TMPDIR contains symlinks. on macOS, it is defaulted to a path under /var which is a symlink to /private/var. ------------------------------------------------------------------------ r59724 | mame | 2017-09-02 22:55:12 +0900 (Sat, 02 Sep 2017) | 12 lines test/coverage/test_coverage.rb: run the tests in separated processes The tests had been disabled under coverage measurement (during `ENV['COVERAGE']`), since they call `Coverage.result` which stops coverage measurement. So, we couldn't measure both C-level and Ruby-level coverage of Ruby simultaneously. In short, `./configure --enable-gcov && make exam COVERAGE=true` misses some coverages. Now, the test runs in another process. They does not stop coverage measurement, so we can now enable the tests under coverage measurement. ------------------------------------------------------------------------ r59723 | rhe | 2017-09-02 15:17:52 +0900 (Sat, 02 Sep 2017) | 1 line proc.c: [DOC] fixup r59720 ------------------------------------------------------------------------ r59722 | nobu | 2017-09-02 11:05:34 +0900 (Sat, 02 Sep 2017) | 4 lines getoptlong.rb: multiline regexps * lib/getoptlong.rb: make regexps multiline safe. [ruby-core:82627] [Bug #13858] ------------------------------------------------------------------------ r59721 | nobu | 2017-09-02 10:47:43 +0900 (Sat, 02 Sep 2017) | 4 lines cont.c: fix root fiber to_s * cont.c (fiber_to_s): fix Fiber#to_s on root fibers which have no procs. [ruby-core:82629] [Bug #13859] ------------------------------------------------------------------------ r59720 | nobu | 2017-09-02 10:41:14 +0900 (Sat, 02 Sep 2017) | 6 lines Add Method#original_name code example [ci skip] * proc.c (method_original_name): [DOC] add code example. [Fix GH-1693] Author: Seiei Miyagi <hanachin@gmail.com> ------------------------------------------------------------------------ r59719 | nobu | 2017-09-02 10:08:27 +0900 (Sat, 02 Sep 2017) | 6 lines Update Hash#compact! documentation [ci skip] * hash.c (rb_hash_compact_bang): [DOC] update the case if no changes were made. [ruby-core:82591] [Bug #13855] [Fix GH-1692] Author: Lucas Buchala <lucasbuchala@gmail.com> ------------------------------------------------------------------------ r59718 | svn | 2017-09-02 09:26:38 +0900 (Sat, 02 Sep 2017) | 1 line * 2017-09-02 ------------------------------------------------------------------------ r59717 | suke | 2017-09-02 09:26:37 +0900 (Sat, 02 Sep 2017) | 3 lines * ext/win32ole/win32ole.c (fole_initialize): fix typo. thanks to Gray Wolf. [Feature #13828] ------------------------------------------------------------------------ r59716 | mame | 2017-09-01 23:58:52 +0900 (Fri, 01 Sep 2017) | 5 lines ext/coverage/coverage.c: add Coverage.enabled? * ext/coverage/coverage.c (rb_coverage_running): add to quickly check if coverage is enabled. patched by Burke Libbey <burke AT libbey.me> in [ruby-core:81726]. [Feature #13667] ------------------------------------------------------------------------ r59715 | duerst | 2017-09-01 19:22:09 +0900 (Fri, 01 Sep 2017) | 4 lines replace copyrights by explanatory text in data files for GB2312/GB12345 mappings Replace the copyrights and explanatory texts in the data files used for mapping GB2312/GB12345 to/from Unicode with short explanatory texts. [Bug #12598] [ci skip] ------------------------------------------------------------------------ r59714 | rhe | 2017-09-01 17:16:38 +0900 (Fri, 01 Sep 2017) | 4 lines object.c: fix potential oob write in rb_str_to_dbl() Ensure space for the terminating NUL byte. Note that this code path is reachable only when Ruby is compiled with SHARABLE_MIDDLE_SUBSTRING=1. ------------------------------------------------------------------------ r59713 | hsbt | 2017-09-01 12:34:18 +0900 (Fri, 01 Sep 2017) | 4 lines Exclude Changelog files from documentation. Patch from larskanis (Lars Kanis). [Misc #13704][ruby-core:81878] ------------------------------------------------------------------------ r59712 | ko1 | 2017-09-01 11:09:02 +0900 (Fri, 01 Sep 2017) | 2 lines skip unless PLATFORM is darwin. ------------------------------------------------------------------------ r59711 | svn | 2017-09-01 10:13:54 +0900 (Fri, 01 Sep 2017) | 1 line * properties. ------------------------------------------------------------------------ r59710 | naruse | 2017-09-01 10:13:53 +0900 (Fri, 01 Sep 2017) | 3 lines Fix C level backtrace on Darwin SEGV caused by invalid instruction call. ------------------------------------------------------------------------ r59709 | nobu | 2017-09-01 09:58:52 +0900 (Fri, 01 Sep 2017) | 4 lines compile.c: fix loading pathobj * compile.c (ibf_load_iseq_each): location.pathobj may not be a mere string now. ------------------------------------------------------------------------ r59708 | nobu | 2017-09-01 09:43:00 +0900 (Fri, 01 Sep 2017) | 4 lines compile.c: ensure after toplevel return * compile.c (iseq_compile_each0): toplevel returns should fire ensures. [ruby-core:82492] [Bug #13844] ------------------------------------------------------------------------ r59707 | svn | 2017-09-01 00:41:55 +0900 (Fri, 01 Sep 2017) | 1 line * 2017-09-01 ------------------------------------------------------------------------ r59706 | sorah | 2017-09-01 00:41:54 +0900 (Fri, 01 Sep 2017) | 7 lines Skip test_open_tempfile_path on EINVAL Looks like File::Constants::TMPFILE could be defined even when not supported on system. Just skip the test when we get EINVAL on open(2). * test/ruby/test_file.rb(test_open_tempfile_path): Skip when EINVAL occured on File.open. ------------------------------------------------------------------------ r59705 | sorah | 2017-08-31 20:22:15 +0900 (Thu, 31 Aug 2017) | 1 line add NEWS entry for [Feature #13568] r59704 ------------------------------------------------------------------------ r59704 | sorah | 2017-08-31 20:14:36 +0900 (Thu, 31 Aug 2017) | 24 lines File#path: Raise IOError when a file is O_TMPFILE File#path for a file opened with O_TMPFILE has no meaning. A filepath returned by this method isn't guarranteed about its accuracy, but files opened with O_TMPFILE are known its recorded path has no meaning. So let them not to return any pathname. After a discussion in ruby-core, just returning Qnil makes guessing the root cause difficult. Instead, this patch makes the method to raise an error. Other consideration is calling fnctl(2) on rb_file_path, but it adds a overhead, and it's difficult to determine O_TMPFILE status after fd has been closed. [Feature #13568] * io.c(rb_file_open_generic): Set Qnil to fptr->pathv when opening a file using O_TMPFILE * file.c(rb_file_path): Raise IOError when fptr->pathv is Qnil * file.c(rb_file_path): [DOC] Update for the new behavior ------------------------------------------------------------------------ r59703 | naruse | 2017-08-31 17:33:35 +0900 (Thu, 31 Aug 2017) | 1 line Added NEWS for r59702 ------------------------------------------------------------------------ r59702 | naruse | 2017-08-31 17:29:38 +0900 (Thu, 31 Aug 2017) | 3 lines Add Socket::Ifaddr.vhid on supported platforms [Feature #13803] patched by Alan Somers ------------------------------------------------------------------------ r59701 | nobu | 2017-08-31 17:21:46 +0900 (Thu, 31 Aug 2017) | 6 lines io.c: shrink read buffer * io.c (io_setstrbuf): return true if the buffer is newly created. * io.c (io_set_read_length): shrink the read buffer if it is a new object and is too large. [ruby-core:81370] [Bug #13597] ------------------------------------------------------------------------ r59700 | nobu | 2017-08-31 17:07:59 +0900 (Thu, 31 Aug 2017) | 4 lines string.c: adjust indent [ci skip] * string.c (rb_str_enumerate_grapheme_clusters): adjust indent. [Feature #13780] ------------------------------------------------------------------------ r59699 | nobu | 2017-08-31 17:04:49 +0900 (Thu, 31 Aug 2017) | 4 lines test_syntax.rb: suppress warnings * test/ruby/test_syntax.rb (TestSyntax#test_return_toplevel): suppress unreachable statement warnings. ------------------------------------------------------------------------ r59698 | naruse | 2017-08-31 15:35:28 +0900 (Thu, 31 Aug 2017) | 3 lines String#each_grapheme_cluster and String#grapheme_clusters added to enumerate grapheme clusters [Feature #13780] ------------------------------------------------------------------------ r59697 | nobu | 2017-08-31 12:06:05 +0900 (Thu, 31 Aug 2017) | 4 lines test_syntax.rb: assert output * test/ruby/test_syntax.rb (TestSyntax#test_return_toplevel): assert expected output if given. ------------------------------------------------------------------------ r59696 | kazu | 2017-08-31 09:05:29 +0900 (Thu, 31 Aug 2017) | 3 lines `$=` is no longer effective. [ci skip] * doc/globals.rdoc: [DOC] `$=` is no longer effective. ------------------------------------------------------------------------ r59695 | ko1 | 2017-08-31 07:23:45 +0900 (Thu, 31 Aug 2017) | 4 lines to_str -> to_s * lib/net/http/header.rb (set_field): `val` can not have `to_str`. ------------------------------------------------------------------------ r59694 | svn | 2017-08-31 02:24:05 +0900 (Thu, 31 Aug 2017) | 1 line * 2017-08-31 ------------------------------------------------------------------------ r59693 | naruse | 2017-08-31 02:24:05 +0900 (Thu, 31 Aug 2017) | 1 line A HTTP Header value must not contain CR or LF. ------------------------------------------------------------------------ r59692 | nobu | 2017-08-30 17:26:16 +0900 (Wed, 30 Aug 2017) | 4 lines array.c: refine binomial_coefficient * array.c (binomial_coefficient): get rid of bignums by division after each multiplications. ------------------------------------------------------------------------ r59691 | nobu | 2017-08-30 16:55:19 +0900 (Wed, 30 Aug 2017) | 3 lines array.c: refine descending_factorial * array.c (descending_factorial): reduce factorial multipication. ------------------------------------------------------------------------ r59690 | svn | 2017-08-30 14:37:00 +0900 (Wed, 30 Aug 2017) | 1 line * 2017-08-30 ------------------------------------------------------------------------ r59689 | nobu | 2017-08-30 14:36:59 +0900 (Wed, 30 Aug 2017) | 10 lines array.c: integer calculations * array.c (rb_ary_cycle_size, descending_factorial): use rb_int_mul instead of rb_funcallv. * array.c (binomial_coefficient): use rb_int_idiv instead of rb_funcallv. * array.c (rb_ary_repeated_permutation_size): use rb_int_positive_pow. ------------------------------------------------------------------------ r59688 | nobu | 2017-08-29 21:13:37 +0900 (Tue, 29 Aug 2017) | 3 lines array.c: use rb_check_array_type * array.c (ary_join_1): simplified by rb_check_array_type. ------------------------------------------------------------------------ r59687 | svn | 2017-08-29 20:52:52 +0900 (Tue, 29 Aug 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r59686 | hsbt | 2017-08-29 20:52:50 +0900 (Tue, 29 Aug 2017) | 4 lines Merge rdoc-6.0.0.beta1. This version fixed strange behavior of ruby code parser. We will list all of impromovement to Changelog when 6.0.0 releasing. ------------------------------------------------------------------------ r59685 | nobu | 2017-08-29 20:35:35 +0900 (Tue, 29 Aug 2017) | 4 lines array.c: nested encoding * array.c (ary_join_1): ignore encodings in nested arrays as an initial encoding. ------------------------------------------------------------------------ r59684 | nobu | 2017-08-29 19:49:40 +0900 (Tue, 29 Aug 2017) | 4 lines array.c: join encoding * array.c (ary_join_1): copy the encoding of the converted string of the first element by to_str too, as an initial encoding. ------------------------------------------------------------------------ r59683 | hsbt | 2017-08-29 19:22:47 +0900 (Tue, 29 Aug 2017) | 3 lines Partly reverted r59642. Because IO#close is idempotent since Ruby 2.3. Reported by Eric Wong. Thank you. ------------------------------------------------------------------------ r59682 | nobu | 2017-08-29 16:11:52 +0900 (Tue, 29 Aug 2017) | 1 line test/ruby: tweaked heredocs ------------------------------------------------------------------------ r59681 | ko1 | 2017-08-29 16:01:27 +0900 (Tue, 29 Aug 2017) | 1 line fix error message. ------------------------------------------------------------------------ r59680 | sonots | 2017-08-29 15:24:31 +0900 (Tue, 29 Aug 2017) | 4 lines .gitignore: ignore run.gdb * .gitignore: ignore run.gdb which is assumed to be generated by make gdb and customized manually during development ------------------------------------------------------------------------ r59679 | glass | 2017-08-29 13:58:29 +0900 (Tue, 29 Aug 2017) | 1 line resolv.rb: remove unnecessary require statement ------------------------------------------------------------------------ r59678 | nobu | 2017-08-29 08:25:56 +0900 (Tue, 29 Aug 2017) | 5 lines win32.c: fix function pointer * win32/win32.c (rb_w32_set_thread_description): fix the condition if the API function pointer is found. [ruby-core:82494] [Bug #13845] ------------------------------------------------------------------------ r59677 | svn | 2017-08-29 01:05:11 +0900 (Tue, 29 Aug 2017) | 1 line * 2017-08-29 ------------------------------------------------------------------------ r59676 | naruse | 2017-08-29 01:05:11 +0900 (Tue, 29 Aug 2017) | 5 lines Increase STACKFRAME_FOR_CALL_CFUNC On below env, miniruby requires 568 and ruby requires 838 to pass. * ruby -v: ruby 2.5.0dev (2017-08-28 trunk 59670) [x86_64-freebsd10.3] * gcc8 (FreeBSD Ports Collection) 8.0.0 20170828 (experimental) ------------------------------------------------------------------------ r59675 | nobu | 2017-08-28 23:21:40 +0900 (Mon, 28 Aug 2017) | 3 lines compile.c: compile_if * compile.c (compile_if): extract from iseq_compile_each. ------------------------------------------------------------------------ r59674 | kazu | 2017-08-28 20:20:08 +0900 (Mon, 28 Aug 2017) | 1 line [DOC] Fix typo in rdoc of `transform_values!` [ci skip] ------------------------------------------------------------------------ r59673 | glass | 2017-08-28 19:55:37 +0900 (Mon, 28 Aug 2017) | 4 lines string.c: fix potential bug in String#split * string.c (rb_str_split_m): fix potential bug when rb_memsearch() matches a octet in the middle of a multi-byte character sequence. ------------------------------------------------------------------------ r59672 | hsbt | 2017-08-28 17:31:28 +0900 (Mon, 28 Aug 2017) | 4 lines Merge rubygems-2.6.13. see details for this update: http://blog.rubygems.org/2017/08/27/2.6.13-released.html ------------------------------------------------------------------------ r59671 | glass | 2017-08-28 16:54:00 +0900 (Mon, 28 Aug 2017) | 3 lines lib/csv.rb: refactor and optimize. This change includes the patch from marshall-lee. close #1168 ------------------------------------------------------------------------ r59670 | nobu | 2017-08-28 01:18:17 +0900 (Mon, 28 Aug 2017) | 3 lines compile.c: compile_ensure * compile.c (compile_ensure): extract from iseq_compile_each. ------------------------------------------------------------------------ r59669 | nobu | 2017-08-28 01:15:19 +0900 (Mon, 28 Aug 2017) | 3 lines compile.c: compile_resbody * compile.c (compile_resbody): extract from iseq_compile_each. ------------------------------------------------------------------------ r59668 | svn | 2017-08-28 01:04:27 +0900 (Mon, 28 Aug 2017) | 1 line * 2017-08-28 ------------------------------------------------------------------------ r59667 | nobu | 2017-08-28 01:04:26 +0900 (Mon, 28 Aug 2017) | 3 lines compile.c: compile_rescue * compile.c (compile_rescue): extract from iseq_compile_each. ------------------------------------------------------------------------ r59666 | shugo | 2017-08-27 15:32:00 +0900 (Sun, 27 Aug 2017) | 4 lines lib/net/imap.rb: Accept continuation requests without response text The IMAP server of DOCOMO returns such continuation requests. [ruby-list:50558] ------------------------------------------------------------------------ r59665 | suke | 2017-08-27 08:39:43 +0900 (Sun, 27 Aug 2017) | 2 lines * ext/win32ole/win32ole.c (fole_initialize): support licensed COM server. Thanks to Gray Wolf. [Feature :#13828] ------------------------------------------------------------------------ r59664 | nobu | 2017-08-27 06:02:23 +0900 (Sun, 27 Aug 2017) | 3 lines vcs.rb: refresh after dcommit * tool/vcs.rb (VCS::GIT#commit): refresh until sync after dcommit. ------------------------------------------------------------------------ r59663 | svn | 2017-08-27 05:55:32 +0900 (Sun, 27 Aug 2017) | 1 line * 2017-08-27 ------------------------------------------------------------------------ r59662 | nobu | 2017-08-27 05:55:31 +0900 (Sun, 27 Aug 2017) | 1 line NEWS: Thread#name= on Windows [ci skip] ------------------------------------------------------------------------ r59661 | nobu | 2017-08-26 23:22:31 +0900 (Sat, 26 Aug 2017) | 4 lines win32.c: fix return value * win32/win32.c (rb_w32_set_thread_description_str): return the result when name is nil. ------------------------------------------------------------------------ r59660 | nobu | 2017-08-26 09:30:03 +0900 (Sat, 26 Aug 2017) | 7 lines thread_win32.c: set thread name * thread_win32.c (native_set_another_thread_name): set thread name by SetThreadDescription. * win32/win32.c (rb_w32_set_thread_description): dynamically try SetThreadDescription. ------------------------------------------------------------------------ r59659 | svn | 2017-08-26 00:47:05 +0900 (Sat, 26 Aug 2017) | 1 line * 2017-08-26 ------------------------------------------------------------------------ r59658 | kazu | 2017-08-26 00:47:04 +0900 (Sat, 26 Aug 2017) | 3 lines `$IGNORECASE` is no longer effective. [ci skip] * lib/English.rb: [DOC] `$IGNORECASE` is no longer effective. ------------------------------------------------------------------------ r59657 | glass | 2017-08-25 17:13:32 +0900 (Fri, 25 Aug 2017) | 7 lines csv.rb: optimize CSV::Table#to_a and #to_csv * lib/csv.rb (CSV::Table#to_a, #to_csv): use Array#push instead of Array#concat for performance improvement. This performance improvement is proposed by zdennis <zach.dennis@gmail.com>. The patch is from Mau Magnaguagno <maumagnaguagno@gmail.com>. close #946 ------------------------------------------------------------------------ r59656 | nobu | 2017-08-25 12:41:43 +0900 (Fri, 25 Aug 2017) | 4 lines compile.c: unreachable chunk * compile.c (iseq_peephole_optimize): remove unreachable chunk which appeared by useless jump elimination. ------------------------------------------------------------------------ r59655 | nobu | 2017-08-25 12:33:32 +0900 (Fri, 25 Aug 2017) | 4 lines compile.c: useless jump elimination * compile.c (iseq_peephole_optimize): eliminate useless if/unless just before jump. ------------------------------------------------------------------------ r59654 | svn | 2017-08-25 11:37:39 +0900 (Fri, 25 Aug 2017) | 1 line * 2017-08-25 ------------------------------------------------------------------------ r59653 | nobu | 2017-08-25 11:37:38 +0900 (Fri, 25 Aug 2017) | 4 lines compile.c: moved comments [ci skip] * compile.c (iseq_peephole_optimize): moved comments inside proper blocks. ------------------------------------------------------------------------ r59652 | nobu | 2017-08-24 16:31:56 +0900 (Thu, 24 Aug 2017) | 4 lines compile.c: show failed instructions * compile.c (iseq_set_sequence): show failed instructions at adjuststack mismatch. ------------------------------------------------------------------------ r59651 | svn | 2017-08-24 16:26:06 +0900 (Thu, 24 Aug 2017) | 1 line * 2017-08-24 ------------------------------------------------------------------------ r59650 | nobu | 2017-08-24 16:26:05 +0900 (Thu, 24 Aug 2017) | 1 line compile.c: free before adjust error ------------------------------------------------------------------------ r59649 | nobu | 2017-08-23 13:01:39 +0900 (Wed, 23 Aug 2017) | 4 lines gc.c: restore cfp at finalizer * gc.c (run_finalizer): restore cfp for the case an exception raised in a finalizer. [ruby-core:82432] [Bug #13832] ------------------------------------------------------------------------ r59648 | nobu | 2017-08-23 12:14:05 +0900 (Wed, 23 Aug 2017) | 1 line skip unless finalizers run ------------------------------------------------------------------------ r59647 | nobu | 2017-08-23 11:26:02 +0900 (Wed, 23 Aug 2017) | 4 lines gc.c: run all finalizers * gc.c (run_finalizer): revert r59155 partially. finalizing loop should continue even after an exception is rescued. ------------------------------------------------------------------------ r59646 | svn | 2017-08-23 11:23:48 +0900 (Wed, 23 Aug 2017) | 1 line * 2017-08-23 ------------------------------------------------------------------------ r59645 | ko1 | 2017-08-23 11:23:47 +0900 (Wed, 23 Aug 2017) | 3 lines remove debug code. ------------------------------------------------------------------------ r59644 | nobu | 2017-08-22 22:21:18 +0900 (Tue, 22 Aug 2017) | 4 lines parse.y: primary should not be 0 * parse.y (primary): should not be 0, since it can be a receiver. [ruby-core:82447] [Bug #13836] ------------------------------------------------------------------------ r59643 | hsbt | 2017-08-22 15:57:00 +0900 (Tue, 22 Aug 2017) | 3 lines Fixed regression to convert blank value at r45497. [Bug #11126][ruby-core:69088] ------------------------------------------------------------------------ r59642 | hsbt | 2017-08-22 15:40:59 +0900 (Tue, 22 Aug 2017) | 3 lines Gracefully handle CSV IO when file descriptor closed. [Bug #10504][ruby-core:66240] ------------------------------------------------------------------------ r59641 | hsbt | 2017-08-22 15:34:27 +0900 (Tue, 22 Aug 2017) | 3 lines Fixed equality method fails when given the object that doesn't support table method. [Bug #12422][ruby-core:75707] ------------------------------------------------------------------------ r59640 | hsbt | 2017-08-22 15:17:42 +0900 (Tue, 22 Aug 2017) | 3 lines Fixed to write_headers option behavior when given no rows. [Bug #9988][ruby-core:63375] ------------------------------------------------------------------------ r59639 | hsbt | 2017-08-22 14:32:34 +0900 (Tue, 22 Aug 2017) | 5 lines Escape skip_lines string before convert to Regexp. It ignored all of lines when given Regexp special characters. [Feature #9147][ruby-core:58549] ------------------------------------------------------------------------ r59638 | nobu | 2017-08-22 13:40:16 +0900 (Tue, 22 Aug 2017) | 1 line pack insn_operand_info and insn_len_info ------------------------------------------------------------------------ r59637 | nobu | 2017-08-22 13:37:08 +0900 (Tue, 22 Aug 2017) | 1 line pack insns_name_info ------------------------------------------------------------------------ r59636 | nobu | 2017-08-22 13:22:01 +0900 (Tue, 22 Aug 2017) | 1 line tool/instruction.rb: move logics to templates ------------------------------------------------------------------------ r59635 | nobu | 2017-08-22 12:07:01 +0900 (Tue, 22 Aug 2017) | 4 lines insns.inc.tmpl: ensure info size * template/insns.inc.tmpl (ASSERT_VM_INSTRUCTION_SIZE): static assertion for VM instruction info tables. ------------------------------------------------------------------------ r59634 | nobu | 2017-08-22 11:46:16 +0900 (Tue, 22 Aug 2017) | 4 lines signal.c: fatal stack * signal.c (check_stack_overflow): raise fatal when the last tag is in danger zone. ------------------------------------------------------------------------ r59633 | nobu | 2017-08-22 11:42:23 +0900 (Tue, 22 Aug 2017) | 1 line signal.c: removed raise_stack_overflow: ------------------------------------------------------------------------ r59632 | svn | 2017-08-22 09:41:25 +0900 (Tue, 22 Aug 2017) | 1 line * 2017-08-22 ------------------------------------------------------------------------ r59631 | ko1 | 2017-08-22 09:41:24 +0900 (Tue, 22 Aug 2017) | 5 lines split out struct cont_saved_vm_stack. * cont.c: introduce `struct cont_saved_vm_stack` which was part of `struct rb_context_struct`. ------------------------------------------------------------------------ r59630 | nobu | 2017-08-21 23:15:31 +0900 (Mon, 21 Aug 2017) | 7 lines prevent stack overflow * gc.c: enable PREVENT_STACK_OVERFLOW. * vm.c (invoke_iseq_block_from_c): prevent stack overflow. * vm_eval.c (stack_check): raise preallocated exception instance. ------------------------------------------------------------------------ r59629 | yui-knk | 2017-08-21 22:38:35 +0900 (Mon, 21 Aug 2017) | 6 lines Remove a meaningless local variable assignment * iseq.c (rb_iseq_disasm_insn): Remove a meaningless local variable assignment. `insn` is never changed in this function, so a result of `insn_op_types(insn)` is also never changed. ------------------------------------------------------------------------ r59628 | svn | 2017-08-21 15:46:47 +0900 (Mon, 21 Aug 2017) | 1 line * 2017-08-21 ------------------------------------------------------------------------ r59627 | nobu | 2017-08-21 15:46:46 +0900 (Mon, 21 Aug 2017) | 7 lines vm_core.h: ruby_error_stackfatal * vm_core.h (ruby_special_exceptions): rename sysstack_gc as stackfatal. * eval.c (Init_eval): modified the message for stackfatal error as "critical region". ------------------------------------------------------------------------ r59626 | nobu | 2017-08-20 15:08:25 +0900 (Sun, 20 Aug 2017) | 6 lines non-keywords hash * class.c (rb_scan_args), include/ruby/ruby.h (rb_scan_args_set): return non-keywords elements only in the last hash when keyword arguments are extracted from it, as well as methods defined in ruby level. [ruby-core:82427] [Bug #13830] ------------------------------------------------------------------------ r59625 | svn | 2017-08-20 08:39:04 +0900 (Sun, 20 Aug 2017) | 1 line * 2017-08-20 ------------------------------------------------------------------------ r59624 | nobu | 2017-08-20 08:39:03 +0900 (Sun, 20 Aug 2017) | 7 lines ruby.h: fix rb_scan_args_trail_idx * include/ruby/ruby.h (rb_scan_args_trail_idx): fix the case both of optional and rest arguments are defined. [ruby-core:82427] [Bug #13830] * include/ruby/ruby.h (rb_scan_args_n_trail): ditto. ------------------------------------------------------------------------ r59623 | ktsj | 2017-08-19 19:02:57 +0900 (Sat, 19 Aug 2017) | 1 line gems/bundled_gems: Update to power_assert 1.1.0 ------------------------------------------------------------------------ r59622 | nobu | 2017-08-19 10:04:15 +0900 (Sat, 19 Aug 2017) | 4 lines class.c: check kw hash * class.c (rb_keyword_error_new): get rid of an intermediate string and check if keys are symbols. ------------------------------------------------------------------------ r59621 | svn | 2017-08-19 09:45:23 +0900 (Sat, 19 Aug 2017) | 1 line * 2017-08-19 ------------------------------------------------------------------------ r59620 | nobu | 2017-08-19 09:45:22 +0900 (Sat, 19 Aug 2017) | 1 line class.c: call rb_hash_keys directly ------------------------------------------------------------------------ r59619 | nobu | 2017-08-18 21:44:30 +0900 (Fri, 18 Aug 2017) | 4 lines vm_insnhelper.c: vm_cfp_consistent_p * vm_insnhelper.c (vm_cfp_consistent_p): extracted the conditions for cfp consistency. ------------------------------------------------------------------------ r59618 | nobu | 2017-08-18 21:17:59 +0900 (Fri, 18 Aug 2017) | 4 lines vm_insnhelper.c: raise ruby_error_sysstack_gc * vm_insnhelper.c (rb_threadptr_stack_overflow): rb_fatal is not available during GC. raise the preallocated fatal error. ------------------------------------------------------------------------ r59617 | shugo | 2017-08-18 14:16:05 +0900 (Fri, 18 Aug 2017) | 3 lines test/net/imap/test_imap.rb: Use Addrinfo.tcp in case localhost is ::1. [ruby-dev:50208] [Bug #13825] ------------------------------------------------------------------------ r59616 | nobu | 2017-08-18 08:31:41 +0900 (Fri, 18 Aug 2017) | 4 lines Revert r59612 * method.h (rb_method_definition_t): rb_method_type_t should be unsigned as it needs 5bits at least for signed extension. ------------------------------------------------------------------------ r59615 | svn | 2017-08-18 01:34:40 +0900 (Fri, 18 Aug 2017) | 1 line * 2017-08-18 ------------------------------------------------------------------------ r59614 | naruse | 2017-08-18 01:34:40 +0900 (Fri, 18 Aug 2017) | 36 lines Add optimization for creating zerofill string ``` require 'benchmark' n = 1 * 1024 * 1024 * 1024 Benchmark.bmbm do |x| x.report("*") { 0.chr * n } x.report("ljust") { String.new(capacity: n).ljust(n, "\0") } end ``` Before ```% ./ruby test.rb Rehearsal ----------------------------------------- * 0.358396 0.392753 0.751149 ( 1.134231) ljust 0.203277 0.389223 0.592500 ( 0.594816) -------------------------------- total: 1.343649sec user system total real * 0.282647 0.304600 0.587247 ( 0.589205) ljust 0.201834 0.283801 0.485635 ( 0.487617) ``` After ```% ./ruby test.rb Rehearsal ----------------------------------------- * 0.000522 0.000021 0.000543 ( 0.000534) ljust 0.208551 0.321030 0.529581 ( 0.542083) -------------------------------- total: 0.530124sec user system total real * 0.000069 0.000006 0.000075 ( 0.000069) ljust 0.206698 0.301032 0.507730 ( 0.517674) ``` ------------------------------------------------------------------------ r59613 | nobu | 2017-08-17 23:58:11 +0900 (Thu, 17 Aug 2017) | 5 lines vm_method.c: alias warning at refined method * vm_method.c (rb_method_entry_make): suppress a warning at refined method which will not be redefined. [ruby-core:82385] [Bug #13817] ------------------------------------------------------------------------ r59612 | nobu | 2017-08-17 23:36:57 +0900 (Thu, 17 Aug 2017) | 4 lines method.h: enum rb_method_definition_t::type * method.h (rb_method_definition_t): define type as an enum for debugging. ------------------------------------------------------------------------ r59611 | nobu | 2017-08-17 21:33:41 +0900 (Thu, 17 Aug 2017) | 4 lines parse.y: unexpected tINTEGER message * parse.y (parser_number_literal_suffix): keep token after numeric suffix to show the value in an error message. ------------------------------------------------------------------------ r59610 | svn | 2017-08-17 21:31:11 +0900 (Thu, 17 Aug 2017) | 1 line * 2017-08-17 ------------------------------------------------------------------------ r59609 | kazu | 2017-08-17 21:31:10 +0900 (Thu, 17 Aug 2017) | 4 lines Use `*` instead of `**` in .editorconfig It seems `**` is same as `*` when no `/` exist. [ci skip] ------------------------------------------------------------------------ r59608 | hsbt | 2017-08-16 18:45:58 +0900 (Wed, 16 Aug 2017) | 3 lines Extract files variables of ipaddr.gemspec for non git environment. [Bug #13808][ruby-core:82358] ------------------------------------------------------------------------ r59607 | hsbt | 2017-08-16 18:37:03 +0900 (Wed, 16 Aug 2017) | 4 lines Added gemspec of digest library. standalone repository is https://github.com/ruby/digest [Misc #13771][ruby-core:82179] ------------------------------------------------------------------------ r59606 | nobu | 2017-08-16 16:18:45 +0900 (Wed, 16 Aug 2017) | 5 lines vm_insnhelper.c: cfp error at stack overflow * vm_insnhelper.c (threadptr_stack_overflow): set stack overflow flag until handling execptions, to get rid of cfp consistency error when exec tag was rewound. [ruby-core:80618] [Bug #13412] ------------------------------------------------------------------------ r59605 | naruse | 2017-08-16 06:39:38 +0900 (Wed, 16 Aug 2017) | 3 lines Partially revert "suppress warning: assigned but unused variable - line" revert unexpected changes ------------------------------------------------------------------------ r59604 | naruse | 2017-08-16 06:36:16 +0900 (Wed, 16 Aug 2017) | 1 line suppress warning: assigned but unused variable - line ------------------------------------------------------------------------ r59603 | svn | 2017-08-16 06:33:44 +0900 (Wed, 16 Aug 2017) | 1 line * 2017-08-16 ------------------------------------------------------------------------ r59602 | naruse | 2017-08-16 06:33:43 +0900 (Wed, 16 Aug 2017) | 1 line High Sierra's APFS cannot use invalid filenames [Bug #13816] ------------------------------------------------------------------------ r59601 | nobu | 2017-08-15 22:53:38 +0900 (Tue, 15 Aug 2017) | 4 lines parse.y: removed useless check * parse.y (singleton): literal nodes are always value expressions, no check is necessary. ------------------------------------------------------------------------ r59600 | yui-knk | 2017-08-15 22:12:39 +0900 (Tue, 15 Aug 2017) | 6 lines Remove not exist arguments from comments of insns is_local argument was introduced on r11639 and removed on r11813. * insns.def (getinstancevariable, setinstancevariable): Remove a not exist argument. ------------------------------------------------------------------------ r59599 | naruse | 2017-08-15 22:05:18 +0900 (Tue, 15 Aug 2017) | 1 line suppress warning: assigned but unused variable - line ------------------------------------------------------------------------ r59598 | nobu | 2017-08-15 10:05:50 +0900 (Tue, 15 Aug 2017) | 4 lines ftp.rb: fix example format [ci skip] * lib/uri/ftp.rb: [DOC] fix format of example URLs. patched by aycabta (Code Ahss) at [ruby-core:82379]. [Bug #13814] ------------------------------------------------------------------------ r59597 | nobu | 2017-08-15 09:50:22 +0900 (Tue, 15 Aug 2017) | 5 lines ripper.rb: fix License format [ci skip] * ext/ripper/lib/ripper.rb: [DOC] fix format of the License description and the author. patched by aycabta (Code Ahss) at [ruby-core:82376]. [Bug #13813] ------------------------------------------------------------------------ r59596 | nobu | 2017-08-15 09:45:14 +0900 (Tue, 15 Aug 2017) | 3 lines compile.c: compile_retry * compile.c (compile_retry): extract from iseq_compile_each. ------------------------------------------------------------------------ r59595 | nobu | 2017-08-15 09:45:13 +0900 (Tue, 15 Aug 2017) | 3 lines compile.c: compile_redo * compile.c (compile_redo): extract from iseq_compile_each. ------------------------------------------------------------------------ r59594 | nobu | 2017-08-15 09:18:47 +0900 (Tue, 15 Aug 2017) | 3 lines compile.c: compile_next * compile.c (compile_next): extract from iseq_compile_each. ------------------------------------------------------------------------ r59593 | nobu | 2017-08-15 08:55:34 +0900 (Tue, 15 Aug 2017) | 3 lines compile.c: compile_break * compile.c (compile_break): extract from iseq_compile_each. ------------------------------------------------------------------------ r59592 | svn | 2017-08-15 01:04:36 +0900 (Tue, 15 Aug 2017) | 1 line * 2017-08-15 ------------------------------------------------------------------------ r59591 | duerst | 2017-08-15 01:04:35 +0900 (Tue, 15 Aug 2017) | 2 lines fix documentation of REXML::Formatters::Default (id_hack -> ie_hack) [ci skip] ------------------------------------------------------------------------ r59590 | nobu | 2017-08-14 23:25:27 +0900 (Mon, 14 Aug 2017) | 3 lines compile.c: compile_loop * compile.c (compile_loop): extract from iseq_compile_each. ------------------------------------------------------------------------ r59589 | nobu | 2017-08-14 23:18:29 +0900 (Mon, 14 Aug 2017) | 1 line type is invariant inside this block ------------------------------------------------------------------------ r59588 | svn | 2017-08-14 22:26:38 +0900 (Mon, 14 Aug 2017) | 1 line * 2017-08-14 ------------------------------------------------------------------------ r59587 | yui-knk | 2017-08-14 22:26:37 +0900 (Mon, 14 Aug 2017) | 5 lines Fix a class of a returned value * ext/objspace/object_tracing.c (allocation_sourceline): Fix a class of a returned value. allocation_sourceline returns an integer. ------------------------------------------------------------------------ r59586 | nobu | 2017-08-13 22:43:36 +0900 (Sun, 13 Aug 2017) | 6 lines script.rb: skip empty directories * spec/mspec/lib/mspec/utils/script.rb (entries): skip empty directories so that at least one file would run. Merged https://github.com/ruby/spec/issues/459 ------------------------------------------------------------------------ r59585 | nobu | 2017-08-13 22:34:26 +0900 (Sun, 13 Aug 2017) | 8 lines parse.y: set used flag in gettable * parse.y (dvar_defined_ref, dvar_defined): rename macros. only gettable uses the former. assignable should not set LVAR_USED flag. * parse.y (gettable_gen): set used flag on local/dynamic variables instead of setting in lexer. [ruby-core:82368] [Bug #13809] ------------------------------------------------------------------------ r59584 | kou | 2017-08-13 21:14:24 +0900 (Sun, 13 Aug 2017) | 6 lines REXML: Fix a bug that unexpected methods can be called as a XPath function [HackerOne:249295] Reported by Andrea Jegher. Thanks!!! ------------------------------------------------------------------------ r59583 | nobu | 2017-08-13 16:53:04 +0900 (Sun, 13 Aug 2017) | 4 lines stringio.c: suppress a warning [ci skip] * ext/stringio/stringio.c (strio_read): suppress an implicit-fallthrough warning. ------------------------------------------------------------------------ r59582 | nobu | 2017-08-13 16:31:49 +0900 (Sun, 13 Aug 2017) | 4 lines stringio.c: encoding at empty chomped result * ext/stringio/stringio.c (strio_gets): should return string with the external encoding, at empty chomped result . ------------------------------------------------------------------------ r59581 | nobu | 2017-08-13 16:21:13 +0900 (Sun, 13 Aug 2017) | 4 lines stringio.c: encoding at empty result * ext/stringio/stringio.c (strio_gets): should return string with the external encoding, at empty result. ------------------------------------------------------------------------ r59580 | svn | 2017-08-13 02:41:49 +0900 (Sun, 13 Aug 2017) | 1 line * 2017-08-13 ------------------------------------------------------------------------ r59579 | naruse | 2017-08-13 02:41:48 +0900 (Sun, 13 Aug 2017) | 1 line Suppress warning: shadowing outer local variable - klass ------------------------------------------------------------------------ r59578 | nobu | 2017-08-12 10:47:09 +0900 (Sat, 12 Aug 2017) | 5 lines stringio.c: encoding at EOF * ext/stringio/stringio.c (strio_read): should return string with the external encoding, at EOF too. [ruby-core:82349] [Bug #13806] ------------------------------------------------------------------------ r59577 | svn | 2017-08-12 10:34:14 +0900 (Sat, 12 Aug 2017) | 1 line * 2017-08-12 ------------------------------------------------------------------------ r59576 | nobu | 2017-08-12 10:34:13 +0900 (Sat, 12 Aug 2017) | 4 lines test_stringio.rb: more assertions * test/stringio/test_stringio.rb (test_read): add assertions of return value of read with a buffer string. ------------------------------------------------------------------------ r59575 | nobu | 2017-08-11 11:44:30 +0900 (Fri, 11 Aug 2017) | 1 line enum.c: make constant argument static ------------------------------------------------------------------------ r59574 | nobu | 2017-08-11 11:05:24 +0900 (Fri, 11 Aug 2017) | 4 lines re.c: options for sub-regexp * re.c (rb_reg_to_s): needs embedded options to check syntax of sub-regexp. [ruby-core:82328] [Bug #13798] ------------------------------------------------------------------------ r59573 | svn | 2017-08-11 10:27:25 +0900 (Fri, 11 Aug 2017) | 1 line * 2017-08-11 ------------------------------------------------------------------------ r59572 | nobu | 2017-08-11 10:27:24 +0900 (Fri, 11 Aug 2017) | 6 lines separate hash literal and keyword arguments * compile.c (compile_array_keyword_arg): separate keyword splat inside hash literal from argument list. * parse.y (rparen): flag hash literal. ------------------------------------------------------------------------ r59571 | yui-knk | 2017-08-10 23:46:51 +0900 (Thu, 10 Aug 2017) | 5 lines Fix types of function argument * doc/extension.ja.rdoc: Fix types of rb_ary_aref argument * doc/extension.rdoc: ditto ------------------------------------------------------------------------ r59570 | nagachika | 2017-08-10 21:57:07 +0900 (Thu, 10 Aug 2017) | 3 lines fix a typo in comment. * cont.c (typedef struct rb_context_struct): fix a typo in comment. ------------------------------------------------------------------------ r59569 | knu | 2017-08-10 21:37:04 +0900 (Thu, 10 Aug 2017) | 3 lines Import ruby-electric.el version 2.3.1 from upstream It now supports [enh-ruby-mode](https://github.com/zenspider/enhanced-ruby-mode). ------------------------------------------------------------------------ r59568 | nobu | 2017-08-10 20:40:49 +0900 (Thu, 10 Aug 2017) | 4 lines vm_core.h: unreachable VM_UNREACHABLE * vm_core.h (VM_UNREACHABLE): tell unreachable if possible. suppress an invalid-noreturn warning at rb_fiber_start. ------------------------------------------------------------------------ r59567 | rhe | 2017-08-10 18:23:45 +0900 (Thu, 10 Aug 2017) | 26 lines openssl: import v2.0.5 Import Ruby/OpenSSL 2.0.5. The full commit history since v2.0.4 (imported at r59081) can be found at: https://github.com/ruby/openssl/compare/v2.0.4...v2.0.5 This will fix the test failure on latest Debian sid and the "no OPENSSL_Applink" issue on mswin. ---------------------------------------------------------------- Kazuki Yamaguchi (11): test/test_ssl: allow 3DES cipher suites in test_sslctx_set_params bio: prevent possible GC issue in ossl_obj2bio() bio: do not use the FILE BIO method in ossl_obj2bio() Rakefile: install_dependencies: install only when needed appveyor.yml: test against Ruby 2.4 ossl_pem_passwd_cb: relax passphrase length constraint ossl_pem_passwd_cb: do not check for taintedness ossl_pem_passwd_cb: handle nil from the block explicitly ssl: remove unsupported TLS versions from SSLContext::METHODS ssl: fix compile error with OpenSSL 1.0.0 Ruby/OpenSSL 2.0.5 Lars Kanis (1): Add msys2 library dependency tag in gem metadata ------------------------------------------------------------------------ r59566 | ko1 | 2017-08-10 15:26:52 +0900 (Thu, 10 Aug 2017) | 2 lines use VM_UNREACHABLE() instead of rb_bug(). ------------------------------------------------------------------------ r59565 | ko1 | 2017-08-10 15:01:57 +0900 (Thu, 10 Aug 2017) | 6 lines introduce fiber_restore_thread. * cont.c (fiber_restore_thread): added (separate from cont_restore_thread). * cont.c (fiber_setcontext): call fiber_restore_thread() directly. ------------------------------------------------------------------------ r59564 | nobu | 2017-08-10 14:54:56 +0900 (Thu, 10 Aug 2017) | 5 lines ruby.c: ignore non-option in shebang line * ruby.c (moreswitches): process all words as options only in an environment variable, but not in a shebang line. [ruby-core:82267] [Bug #13786] ------------------------------------------------------------------------ r59563 | ko1 | 2017-08-10 13:55:12 +0900 (Thu, 10 Aug 2017) | 6 lines rename rb_execution_context_t::stack(_size) to vm_stack(_size). * vm_core.h: Ruby processes run with two stacks, a machine stack and a VM stack. To make it clear, this fix renames rb_execution_context_t::stack(_size) to vm_stack(_size). ------------------------------------------------------------------------ r59562 | nobu | 2017-08-10 13:03:48 +0900 (Thu, 10 Aug 2017) | 1 line cont.c: fix up r59557 for !FIBER_USE_NATIVE ------------------------------------------------------------------------ r59561 | ko1 | 2017-08-10 12:34:25 +0900 (Thu, 10 Aug 2017) | 3 lines constify some variables. ------------------------------------------------------------------------ r59560 | ko1 | 2017-08-10 12:20:39 +0900 (Thu, 10 Aug 2017) | 7 lines Define Thread#to_s (as Thread#inspect) and make alias `inspect` as `to_s`. * thread.c: "Thread#to_s" is not defined without any reason. So this fix define "Thread#to_s" which returns a string with some thread information. Also this fix makes alias "inspect" which refers "to_s". This manner is same as other objects. ------------------------------------------------------------------------ r59559 | ko1 | 2017-08-10 12:09:51 +0900 (Thu, 10 Aug 2017) | 2 lines remove additional newline. ------------------------------------------------------------------------ r59558 | ko1 | 2017-08-10 11:58:36 +0900 (Thu, 10 Aug 2017) | 7 lines Fiber#to_s (#inspect) return richer information. * cont.c (fiber_to_s): return with block and status information. * proc.c (proc_to_s_): removed and introduce rb_block_to_s() function to return block information string. ------------------------------------------------------------------------ r59557 | ko1 | 2017-08-10 10:47:13 +0900 (Thu, 10 Aug 2017) | 16 lines refactoring Fiber status. * cont.c: revisit fiber status. "FIBER_RUNNING" status represents fiber is resumed or suspended. This fix separate these two status explicitly. FIBER_CREATED: Just after Fiber.new. Not resumed yet. FIBER_RESUMED (new): Fiber#resumed. Now this fiber is running. FIBER_SUSPENDED (new): Suspended by Fiber.yield. Not running. FIBER_TERMINATED: Terminated. Add sevral assertions to check consistency with these status. * cont.c (fiber_status_set): added to change status. * cont.c (FIBER_xxx_P): added to check fiber status. ------------------------------------------------------------------------ r59556 | nobu | 2017-08-10 09:50:45 +0900 (Thu, 10 Aug 2017) | 5 lines compile.c: fix KW_SPLAT flag condition * compile.c (compile_array_keyword_arg): fix the condition of KW_SPLAT flag. splat is value node only without key node, simple assoc argument is not. [ruby-core:82291] [Bug #13793] ------------------------------------------------------------------------ r59555 | svn | 2017-08-10 09:32:13 +0900 (Thu, 10 Aug 2017) | 1 line * 2017-08-10 ------------------------------------------------------------------------ r59554 | nobu | 2017-08-10 09:32:12 +0900 (Thu, 10 Aug 2017) | 5 lines vm_args.c: prefer optarg to keyword splat * vm_args.c (setup_parameters_complex): prefer optional argument to splat keyword arguments for backward compatibility. [ruby-core:82280] [Bug #13791] ------------------------------------------------------------------------ r59549 | nobu | 2017-08-09 20:03:55 +0900 (Wed, 09 Aug 2017) | 13 lines ruby.c: origarg * ruby.c (dladdr_path, ruby_set_argv): add guards for origarg. [ruby-core:82272] [Bug #13788] * ruby.c (proc_options, process_options, ruby_process_options): set origarg if not set yet. * ruby.c (process_options): prefer argv in the argument to origarg as program name. * ruby.c (ruby_sysinit): set origarg only if argc and argv seem valid. ------------------------------------------------------------------------ r59536 | svn | 2017-08-09 17:17:53 +0900 (Wed, 09 Aug 2017) | 1 line * 2017-08-09 ------------------------------------------------------------------------ r59535 | usa | 2017-08-09 17:17:52 +0900 (Wed, 09 Aug 2017) | 4 lines Missed `#` in usage * tool/generate-backport-changelog.rb (usage): missed `#` in usage ------------------------------------------------------------------------ r59529 | nobu | 2017-08-08 19:43:19 +0900 (Tue, 08 Aug 2017) | 5 lines dir.c: fix up r59527 * dir.c (glob_helper): fix up r59527, dot files other than current directory should not be included unless FNM_DOTMATCH is given. [ruby-core:82266] [Bug #13785] ------------------------------------------------------------------------ r59528 | svn | 2017-08-08 17:34:11 +0900 (Tue, 08 Aug 2017) | 1 line * 2017-08-08 ------------------------------------------------------------------------ r59527 | nobu | 2017-08-08 17:34:10 +0900 (Tue, 08 Aug 2017) | 5 lines dir.c: fix up r59481 for old kernels * dir.c (glob_helper): fix up r59481 for old kernels, which provide d_type member but just always set DT_UNKNOWN for any entries. [ruby-core:82266] [Bug #13785] ------------------------------------------------------------------------ r59526 | nobu | 2017-08-07 13:15:19 +0900 (Mon, 07 Aug 2017) | 1 line enum.c: optimize for integers ------------------------------------------------------------------------ r59525 | nobu | 2017-08-07 13:08:46 +0900 (Mon, 07 Aug 2017) | 1 line enum.c: prefer rb_funcallv to rb_funcall ------------------------------------------------------------------------ r59524 | svn | 2017-08-07 12:45:33 +0900 (Mon, 07 Aug 2017) | 1 line * 2017-08-07 ------------------------------------------------------------------------ r59523 | nobu | 2017-08-07 12:45:32 +0900 (Mon, 07 Aug 2017) | 1 line enum.c: use predefined IDs ------------------------------------------------------------------------ r59522 | svn | 2017-08-06 14:22:27 +0900 (Sun, 06 Aug 2017) | 1 line * 2017-08-06 ------------------------------------------------------------------------ r59521 | duerst | 2017-08-06 14:22:26 +0900 (Sun, 06 Aug 2017) | 1 line add some more assertions to test_ill_formed_utf_8_replace ------------------------------------------------------------------------ r59519 | nobu | 2017-08-05 15:58:44 +0900 (Sat, 05 Aug 2017) | 7 lines splat keyword hash * compile.c (compile_array_keyword_arg): set keyword splat flag if explicitly splatted. [ruby-core:68124] [Bug #10856] * vm_args.c (setup_parameters_complex): try keyword hash splat if given. ------------------------------------------------------------------------ r59518 | nobu | 2017-08-05 15:51:08 +0900 (Sat, 05 Aug 2017) | 4 lines vm_core.h: vm_call_flag_bits * vm_core.h (vm_call_flag_bits): define VM_CALL flags by using enum constants. ------------------------------------------------------------------------ r59509 | svn | 2017-08-05 02:05:44 +0900 (Sat, 05 Aug 2017) | 1 line * 2017-08-05 ------------------------------------------------------------------------ r59508 | eregon | 2017-08-05 02:05:43 +0900 (Sat, 05 Aug 2017) | 1 line * man/ruby.1: Move paragraph which is related to -S, not -s. ------------------------------------------------------------------------ r59502 | ko1 | 2017-08-04 23:57:31 +0900 (Fri, 04 Aug 2017) | 13 lines use stable sort. * lib/rubygems/resolver.rb (sort_dependencies): use stable sort. TestGemRequestSetLockfile#test_to_s_gem_dependency_non_default fails because this method return unstable results. Note that Enumerable#sort_by is unstable. I'm not sure the "stable" nature is required for RubyGems. The fact is that using stable sort, the test passed on mswin64+VS2017 where the sort results was reverse (unstable) order. Also using `-i` instead of `i` (it means forcing unstable sort) this test fails on other platform where the test successed before. ------------------------------------------------------------------------ r59499 | kazu | 2017-08-04 21:00:00 +0900 (Fri, 04 Aug 2017) | 1 line Fix `NameError: uninitialized constant Net` ------------------------------------------------------------------------ r59498 | kazu | 2017-08-04 20:59:59 +0900 (Fri, 04 Aug 2017) | 1 line Use `register_scanner` instead of `regist_scanner` ------------------------------------------------------------------------ r59497 | kazu | 2017-08-04 20:59:57 +0900 (Fri, 04 Aug 2017) | 1 line Add deprecated warning to ERB::Compiler::SimpleScanner2 ------------------------------------------------------------------------ r59496 | nobu | 2017-08-04 13:39:53 +0900 (Fri, 04 Aug 2017) | 5 lines string.c: improve String#scan * string.c (rb_str_rstrip_bang): improve the performance in 50% for a string pattern, and in 10% for a regexp pattern. get rid of making MatchData in middle, which is not used. ------------------------------------------------------------------------ r59495 | svn | 2017-08-04 13:25:13 +0900 (Fri, 04 Aug 2017) | 1 line * 2017-08-04 ------------------------------------------------------------------------ r59494 | nobu | 2017-08-04 13:25:12 +0900 (Fri, 04 Aug 2017) | 1 line benchmarks for String#scan ------------------------------------------------------------------------ r59487 | kazu | 2017-08-03 21:31:21 +0900 (Thu, 03 Aug 2017) | 1 line Use the same variable name as in dir.c ------------------------------------------------------------------------ r59486 | svn | 2017-08-03 18:39:26 +0900 (Thu, 03 Aug 2017) | 1 line * properties. ------------------------------------------------------------------------ r59485 | naruse | 2017-08-03 18:39:25 +0900 (Thu, 03 Aug 2017) | 1 line Add initial test for lldb extension ------------------------------------------------------------------------ r59484 | nobu | 2017-08-03 17:11:57 +0900 (Thu, 03 Aug 2017) | 1 line disable rdoc for internal constants [ci skip] ------------------------------------------------------------------------ r59483 | nobu | 2017-08-03 17:09:24 +0900 (Thu, 03 Aug 2017) | 5 lines ruby.h: NULL as empty array * include/ruby/ruby.h (rb_yield_values, rb_funcall): call with NULL when no arguments, for clang which defines static array when an empty array is used. ------------------------------------------------------------------------ r59482 | nobu | 2017-08-03 16:08:00 +0900 (Thu, 03 Aug 2017) | 1 line extract IDs ------------------------------------------------------------------------ r59481 | nobu | 2017-08-03 13:13:12 +0900 (Thu, 03 Aug 2017) | 5 lines dir.c: reduce syscalls * dir.c (glob_helper): utilize d_type even if no recursive pattern, to reduce stat/lstat syscalls in subsequent glob_helper. ------------------------------------------------------------------------ r59480 | nobu | 2017-08-03 12:41:50 +0900 (Thu, 03 Aug 2017) | 1 line fix typo in help [ci skip] ------------------------------------------------------------------------ r59479 | nobu | 2017-08-03 12:39:33 +0900 (Thu, 03 Aug 2017) | 4 lines dir.c: relative path Dir base * dir.c (glob_helper): fix globbing based on a relative path Dir. [Feature #13056] ------------------------------------------------------------------------ r59478 | usa | 2017-08-03 12:31:38 +0900 (Thu, 03 Aug 2017) | 4 lines Should show the entity of $PATH_SEPARATOR * win32/configure.bat (--help): should show the entity of $PATH_SEPARATOR. ------------------------------------------------------------------------ r59477 | usa | 2017-08-03 12:25:46 +0900 (Thu, 03 Aug 2017) | 4 lines Mention about `--with-opt-dir` * win32/configure.bat (--help): mention about `--with-opt-dir`. ------------------------------------------------------------------------ r59476 | nobu | 2017-08-03 11:14:51 +0900 (Thu, 03 Aug 2017) | 4 lines dir.c: relax base option * dir.c (dir_glob_options): relax base option. ignore when nil or an empty string as :base option. [Feature #13056] ------------------------------------------------------------------------ r59475 | nobu | 2017-08-03 09:53:25 +0900 (Thu, 03 Aug 2017) | 5 lines spec_helper.rb: pass jobserver fds * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): pass jobserver fds explicitly, because other specs might have set close_on_exec flags on these fds. ------------------------------------------------------------------------ r59474 | ko1 | 2017-08-03 06:48:51 +0900 (Thu, 03 Aug 2017) | 12 lines fix stack storing for root fibers. * cont.c (root_fiber_alloc): this function is called by fiber_current() and fiber_store(). fiber_current() should clear VM stack information in a fiber data because runnning thread knows stack information and has responsibility to manage it. However fiber_store() requires to remain VM stack information in a fiber data because the responsibility to manage VM stack is moved to the Fiber from the Thread (and switch to another fiber). * cont.c (root_fiber_alloc): save thread's fiber and root_fiber information. ------------------------------------------------------------------------ r59473 | kazu | 2017-08-03 00:10:43 +0900 (Thu, 03 Aug 2017) | 4 lines Fix URI::FTP.build code example typo ref https://github.com/rurema/doctree/pull/462 [ci skip] ------------------------------------------------------------------------ r59472 | kazu | 2017-08-03 00:10:42 +0900 (Thu, 03 Aug 2017) | 3 lines Fix variable name in example of net/pop [ci skip] ------------------------------------------------------------------------ r59471 | kazu | 2017-08-03 00:10:40 +0900 (Thu, 03 Aug 2017) | 4 lines Fix net/pop code example syntax error ref https://github.com/rurema/doctree/pull/455 [ci skip] ------------------------------------------------------------------------ r59470 | svn | 2017-08-03 00:10:39 +0900 (Thu, 03 Aug 2017) | 1 line * 2017-08-03 ------------------------------------------------------------------------ r59469 | kazu | 2017-08-03 00:10:38 +0900 (Thu, 03 Aug 2017) | 4 lines Fix cgi/core code example missing comma ref https://github.com/rurema/doctree/pull/448 [ci skip] ------------------------------------------------------------------------ r59468 | yugui | 2017-08-02 14:27:25 +0900 (Wed, 02 Aug 2017) | 3 lines Port more commands from .gdbinit to lldb * misc/lldb_cury.py (dump_node, SDR, rb_count_objects): added ------------------------------------------------------------------------ r59467 | nobu | 2017-08-02 12:02:22 +0900 (Wed, 02 Aug 2017) | 1 line suppress warnings when RUBY_USE_SETJMPEX ------------------------------------------------------------------------ r59466 | nobu | 2017-08-02 11:40:29 +0900 (Wed, 02 Aug 2017) | 9 lines eval.c: suppress warnings * eval.c (exc_setup_message): setup exception message as an exception instance, and a cause from a previous exception. split from setup_exception to suppress a warning when RUBY_USE_SETJMPEX is enabled. * eval.c (setup_exception): make state volatile to suppress a warning too. ------------------------------------------------------------------------ r59465 | knu | 2017-08-02 11:20:48 +0900 (Wed, 02 Aug 2017) | 1 line ipaddr is now a default gem with an upstream at: https://github.com/ruby/ipaddr ------------------------------------------------------------------------ r59464 | hsbt | 2017-08-02 11:19:04 +0900 (Wed, 02 Aug 2017) | 1 line Partly reverted email notification on travis configuration. ------------------------------------------------------------------------ r59463 | nobu | 2017-08-02 09:54:13 +0900 (Wed, 02 Aug 2017) | 4 lines eval.c: fix state type * eval.c (setup_exception): state is a raised thread flag, not for EXEC_TAG. ------------------------------------------------------------------------ r59462 | ko1 | 2017-08-02 09:50:42 +0900 (Wed, 02 Aug 2017) | 16 lines release VM stack properly. * cont.c: r55766 change the handling method of Fiber's VM stack. Resumed Fiber points NULL as VM stack and running Thread has responsibility to manage it (marking and releasing). However, thread_start_func_2()@thread.c and thread_free()@vm.c doesn't free the VM stack if corresponding root Fiber is exist. This causes memory leak. [Bug #13772] * cont.c (root_fiber_alloc): fib->cont.saved_thread.ec.stack should be NULL because running thread has responsibility to manage this stack. * vm.c (rb_thread_recycle_stack_release): assert given stack is not NULL (callers should care it). ------------------------------------------------------------------------ r59461 | svn | 2017-08-02 09:20:42 +0900 (Wed, 02 Aug 2017) | 1 line * 2017-08-02 ------------------------------------------------------------------------ r59460 | kazu | 2017-08-02 09:20:41 +0900 (Wed, 02 Aug 2017) | 3 lines Remove "make update-rubyspec" because it is no-op for compatibility ------------------------------------------------------------------------ r59459 | nobu | 2017-08-01 20:59:45 +0900 (Tue, 01 Aug 2017) | 5 lines assertions.rb: AllFailures#message encoding * test/lib/test/unit/assertions.rb (AllFailures#message): put indented messages back to the original encoding, to get rid of Encoding::CompatibilityError when key has non-ASCII characters. ------------------------------------------------------------------------ r59458 | nobu | 2017-08-01 17:32:18 +0900 (Tue, 01 Aug 2017) | 4 lines parse.y: simplify parse_ident * parse.y (parse_ident): simplified selecting identifier types by the suffix. ------------------------------------------------------------------------ r59457 | ko1 | 2017-08-01 11:10:19 +0900 (Tue, 01 Aug 2017) | 9 lines should not copy promoted flags. * include/ruby/ruby.h (rb_clone_setup): should not copy some flags (FL_PROMOTED0|FL_PROMOTED1|FL_FINALIZE). [Bug #13775] * test/ruby/test_object.rb: add a test (note that this test will fail only when RGENGC_CHECK_MODE >= 2). ------------------------------------------------------------------------ r59456 | svn | 2017-08-01 09:19:10 +0900 (Tue, 01 Aug 2017) | 1 line * 2017-08-01 ------------------------------------------------------------------------ r59455 | kazu | 2017-08-01 09:19:10 +0900 (Tue, 01 Aug 2017) | 1 line Use `&.` instead of modifier if ------------------------------------------------------------------------ r59454 | nobu | 2017-07-31 13:04:10 +0900 (Mon, 31 Jul 2017) | 5 lines configure.in: use libtool * configure.in: use libtool on macOS to suppress a warning against debug_counter.o, which has no symbols unless USE_DEBUG_COUNTER is set to non-zero. ------------------------------------------------------------------------ r59453 | svn | 2017-07-31 12:35:23 +0900 (Mon, 31 Jul 2017) | 1 line * 2017-07-31 ------------------------------------------------------------------------ r59452 | kazu | 2017-07-31 12:35:22 +0900 (Mon, 31 Jul 2017) | 3 lines Improve error message ref [Bug #13761] ------------------------------------------------------------------------ r59451 | nobu | 2017-07-30 23:59:40 +0900 (Sun, 30 Jul 2017) | 5 lines UNALIGNED_MEMBER_ACCESS only for clang * eval_intern.h (UNALIGNED_MEMBER_ACCESS): enable only on clang. gcc does not complain about pointers to member of unaligned struct. ------------------------------------------------------------------------ r59450 | nobu | 2017-07-30 23:48:45 +0900 (Sun, 30 Jul 2017) | 4 lines UNALIGNED_MEMBER_ACCESS * eval_intern.h (UNALIGNED_MEMBER_ACCESS): suppress address-of-packed-member warnings by clang 4.0. ------------------------------------------------------------------------ r59449 | nobu | 2017-07-30 11:56:30 +0900 (Sun, 30 Jul 2017) | 5 lines hash.c: refactor env_enc_str_new * hash.c (env_enc_str_new): convert to the expected encoding without intermediate string, and set econv flags if default internal encoding is set too. ------------------------------------------------------------------------ r59448 | nobu | 2017-07-30 11:56:29 +0900 (Sun, 30 Jul 2017) | 5 lines string.c: rb_str_initialize * string.c (rb_str_initialize): new function to (re)initialize a string with data and encoding. extracted from rb_external_str_new_with_enc. ------------------------------------------------------------------------ r59447 | svn | 2017-07-30 09:40:44 +0900 (Sun, 30 Jul 2017) | 1 line * 2017-07-30 ------------------------------------------------------------------------ r59446 | nobu | 2017-07-30 09:40:43 +0900 (Sun, 30 Jul 2017) | 4 lines compile.c: replace adjuststack * compile.c (iseq_set_sequence): replace adjuststack with pop, or remove if possible instead of two nops. ------------------------------------------------------------------------ r59445 | nobu | 2017-07-29 21:42:42 +0900 (Sat, 29 Jul 2017) | 7 lines visibility of inherited method * vm_insnhelper.c (vm_call_method_each_type): honor the original visibility of inherited methods when a refinement is defined but not activated. [ruby-core:82209] [Bug #13776] Author: Mon_Ouie (Mon ouie) <mon.ouie@gmail.com> ------------------------------------------------------------------------ r59444 | nobu | 2017-07-29 21:42:41 +0900 (Sat, 29 Jul 2017) | 4 lines adjust indent [ci skip] * vm_insnhelper.c (vm_call_method_each_type): adjust indent of a block in switch. ------------------------------------------------------------------------ r59443 | nobu | 2017-07-29 21:11:51 +0900 (Sat, 29 Jul 2017) | 4 lines file.c: [DOC] File.mkfifo * file.c (rb_file_s_mkfifo): enclose rdoc by ifdef so it will be generated properly. ------------------------------------------------------------------------ r59442 | nobu | 2017-07-29 11:03:11 +0900 (Sat, 29 Jul 2017) | 5 lines compile.c: fix flip-flop value * compile.c (iseq_compile_each0): as compile_flip_flop always ends with a jump instruction, successive instruction is never reached, but caused stack consistency error without peephole optimization. ------------------------------------------------------------------------ r59441 | svn | 2017-07-29 01:47:51 +0900 (Sat, 29 Jul 2017) | 1 line * 2017-07-29 ------------------------------------------------------------------------ r59440 | odaira | 2017-07-29 01:47:50 +0900 (Sat, 29 Jul 2017) | 4 lines Include sys/select.h when checking HAVE_RB_FD_INIT * configure.in: include sys/select.h for fd_mask on AIX [Feature #13637] ------------------------------------------------------------------------ r59439 | kou | 2017-07-28 23:16:17 +0900 (Fri, 28 Jul 2017) | 6 lines rexml: Remove needless document [Fix GH-1671] Patch by madblobfish. Thanks!!! ------------------------------------------------------------------------ r59438 | svn | 2017-07-28 16:46:21 +0900 (Fri, 28 Jul 2017) | 1 line * 2017-07-28 ------------------------------------------------------------------------ r59437 | glass | 2017-07-28 16:46:20 +0900 (Fri, 28 Jul 2017) | 10 lines csv.rb: fix incompatibility introduced in r59428 * lib/csv.rb: fix incompatibility introduced in r59428. CSV.new takes options as keyword arguments. * test/csv/test_features.rb: add a test to ensure it raises error againt unknown options * test/csv/test_features.rb: add a test to ensure row_sep option is properly applied ------------------------------------------------------------------------ r59436 | nobu | 2017-07-27 21:54:55 +0900 (Thu, 27 Jul 2017) | 1 line set auto-props to avoid commits setting properties ------------------------------------------------------------------------ r59435 | nobu | 2017-07-27 21:25:42 +0900 (Thu, 27 Jul 2017) | 4 lines fix type * spec/rubyspec/optional/capi/ext/io_spec.c (io_spec_rb_io_wait_readable): fix type of read(2). ------------------------------------------------------------------------ r59434 | nobu | 2017-07-27 21:17:56 +0900 (Thu, 27 Jul 2017) | 4 lines vm_core.h: shrink trap_list size * vm_core.h (rb_vm_struct): separate trap_list cmd and safe to each arrays, to shrink the size. ------------------------------------------------------------------------ r59433 | svn | 2017-07-27 21:10:42 +0900 (Thu, 27 Jul 2017) | 1 line * properties. ------------------------------------------------------------------------ r59432 | eregon | 2017-07-27 21:10:41 +0900 (Thu, 27 Jul 2017) | 1 line Update to ruby/spec@c3e6b90 ------------------------------------------------------------------------ r59431 | svn | 2017-07-27 21:10:24 +0900 (Thu, 27 Jul 2017) | 1 line * properties. ------------------------------------------------------------------------ r59430 | eregon | 2017-07-27 21:10:23 +0900 (Thu, 27 Jul 2017) | 1 line Update to ruby/mspec@353605f ------------------------------------------------------------------------ r59429 | hsbt | 2017-07-27 20:56:54 +0900 (Thu, 27 Jul 2017) | 5 lines Update configuration for slack notification. * Encrypted slack token. * Only notify when build fails and it recovered. * Only notify trunk build without pull requests. ------------------------------------------------------------------------ r59428 | glass | 2017-07-27 18:53:58 +0900 (Thu, 27 Jul 2017) | 5 lines csv.rb: use keyword parameters * lib/csv.rb: usb keyword parameters to receive options * test/csv/test_features.rb: remove a test for checking options ------------------------------------------------------------------------ r59427 | svn | 2017-07-27 15:49:28 +0900 (Thu, 27 Jul 2017) | 1 line * 2017-07-27 ------------------------------------------------------------------------ r59426 | glass | 2017-07-27 15:49:27 +0900 (Thu, 27 Jul 2017) | 3 lines csv.rb: use Array#to_h * lib/csv.rb (CSV::Row#to_hash): use Array#to_h ------------------------------------------------------------------------ r59425 | nobu | 2017-07-26 21:44:12 +0900 (Wed, 26 Jul 2017) | 4 lines vcs.rb: commit * tool/vcs.rb (commit): do commit, reset svn revision to sync git mirror. ------------------------------------------------------------------------ r59424 | shugo | 2017-07-26 16:47:34 +0900 (Wed, 26 Jul 2017) | 3 lines lib/net/imap.rb: support CHANGEDSINCE and MODSEQ Patch by plehoux (Philippe-Antoine Lehoux). [ruby-core:64272] [Feature #10119] ------------------------------------------------------------------------ r59423 | hsbt | 2017-07-26 15:06:33 +0900 (Wed, 26 Jul 2017) | 3 lines To use slack notification instead of email notification. It's easily customize configuration of test notify. ------------------------------------------------------------------------ r59422 | hsbt | 2017-07-26 14:42:27 +0900 (Wed, 26 Jul 2017) | 3 lines Removed definitions of mspec and ruby/spec. They are no longer used on ruby core repository. ------------------------------------------------------------------------ r59421 | hsbt | 2017-07-26 14:39:41 +0900 (Wed, 26 Jul 2017) | 1 line Removed Ruby 2.1 from Travis CI. It's EOL status on 2017. ------------------------------------------------------------------------ r59420 | nobu | 2017-07-26 09:56:44 +0900 (Wed, 26 Jul 2017) | 6 lines parse.y: brace after array literal arg * parse.y (parser_yylex): array is another literal. set state to END too not only ENDARG and after a literal, so that a left brace after it should be a primary block bound to the literal, which causes syntax error. [ruby-core:81037] [Bug #13547] ------------------------------------------------------------------------ r59419 | svn | 2017-07-26 09:01:27 +0900 (Wed, 26 Jul 2017) | 1 line * 2017-07-26 ------------------------------------------------------------------------ r59418 | kazu | 2017-07-26 09:01:26 +0900 (Wed, 26 Jul 2017) | 1 line Fix typos [ci skip] ------------------------------------------------------------------------ r59417 | nobu | 2017-07-25 17:30:11 +0900 (Tue, 25 Jul 2017) | 5 lines parse.y: limit codepoint length * parse.y (parser_tokadd_codepoint): limit Unicode codepoint length. too long codepoint has been split unexpectedly since r57050. ------------------------------------------------------------------------ r59416 | normal | 2017-07-25 14:55:22 +0900 (Tue, 25 Jul 2017) | 10 lines dir.c (ruby_brace_expand): RB_GC_GUARD safety The lifetime of a String VALUE must match or exceed the lifetime of its R*_PTR result; otherwise the GC can while reclaim the VALUE while the R*_PTR result is in use. * dir.c (ruby_brace_expand): add var parameter for GC guard (ruby_brace_glob_with_enc): adjust call (file_s_fnmatch): ditto (push_glob): remove misplaced GC guard ------------------------------------------------------------------------ r59415 | svn | 2017-07-25 10:08:52 +0900 (Tue, 25 Jul 2017) | 1 line * 2017-07-25 ------------------------------------------------------------------------ r59414 | nobu | 2017-07-25 10:08:51 +0900 (Tue, 25 Jul 2017) | 7 lines socket: system getaddrinfo on Windows * ext/socket/extconf.rb: use system getaddrinfo, getnameinfo, and freeaddrinfo on Windows if they are provided. they conflict with addrinfo.h and cannot compile. conftest.exe linked against msvcr90.dll segfaults when invoked in extconf.rb for unknown reason, and failed to check them. ------------------------------------------------------------------------ r59413 | svn | 2017-07-24 10:56:05 +0900 (Mon, 24 Jul 2017) | 1 line * 2017-07-24 ------------------------------------------------------------------------ r59412 | nobu | 2017-07-24 10:56:04 +0900 (Mon, 24 Jul 2017) | 5 lines optparse.rb: case-sensitive candidate * lib/optparse.rb (candidate): short options are case-sensitive by the default, should not match case-different options.. https://github.com/mernen/completion-ruby/pull/9#issuecomment-317287946 ------------------------------------------------------------------------ r59411 | svn | 2017-07-23 18:44:49 +0900 (Sun, 23 Jul 2017) | 1 line * 2017-07-23 ------------------------------------------------------------------------ r59410 | nobu | 2017-07-23 18:44:48 +0900 (Sun, 23 Jul 2017) | 4 lines sprintf.c: width too big * sprintf.c (rb_str_format): explicitly reject too big negative width, instead of an empty string. ------------------------------------------------------------------------ r59394 | svn | 2017-07-22 21:26:20 +0900 (Sat, 22 Jul 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r59393 | yugui | 2017-07-22 21:26:19 +0900 (Sat, 22 Jul 2017) | 1 line Add Doxygen comments ------------------------------------------------------------------------ r59392 | kazu | 2017-07-22 17:07:58 +0900 (Sat, 22 Jul 2017) | 1 line Fix documents ------------------------------------------------------------------------ r59391 | kazu | 2017-07-22 17:07:56 +0900 (Sat, 22 Jul 2017) | 1 line Fix typos and indent ------------------------------------------------------------------------ r59390 | svn | 2017-07-22 15:30:54 +0900 (Sat, 22 Jul 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r59389 | yugui | 2017-07-22 15:30:53 +0900 (Sat, 22 Jul 2017) | 1 line Add documents ------------------------------------------------------------------------ r59388 | nobu | 2017-07-22 15:01:38 +0900 (Sat, 22 Jul 2017) | 6 lines compile.c: COMPILE_ERROR * compile.c: raise COMPILE_ERROR instead of compile_bug which is very rarely (or never, actually) useful to debug instruction sequence. COMPILE_ERROR is usually SyntaxError, or fatal error if compile_debug is enabled, ------------------------------------------------------------------------ r59387 | nobu | 2017-07-22 07:45:13 +0900 (Sat, 22 Jul 2017) | 3 lines compile.c: dump iseq at adjust bug * compile.c (fix_sp_depth): dump instructions at adjust bug too. ------------------------------------------------------------------------ r59386 | svn | 2017-07-22 04:06:08 +0900 (Sat, 22 Jul 2017) | 1 line * 2017-07-22 ------------------------------------------------------------------------ r59385 | normal | 2017-07-22 04:06:07 +0900 (Sat, 22 Jul 2017) | 12 lines NEWS: add entries for thread_sync.c changes I'm slightly worried about some external code subclassing ConditionVariable, Queue, and SizedQueue and relying on them being Structs. However, they only started being Structs with Ruby 2.1, and were implemented in pure Ruby before that; so hopefully nobody notices that implementation detail. Also, note the Mutex change as it may affect program design when space can be saved. * NEWS: entries for [Feature #13552] and [Feature #13517] ------------------------------------------------------------------------ r59384 | nobu | 2017-07-21 22:30:46 +0900 (Fri, 21 Jul 2017) | 5 lines strscan.c: fix segfault in aref * ext/strscan/strscan.c (strscan_aref): fix segfault after get_byte or getch which do not apply regexp. [ruby-core:82116] [Bug #13759] ------------------------------------------------------------------------ r59383 | nobu | 2017-07-21 17:31:47 +0900 (Fri, 21 Jul 2017) | 4 lines optparse.rb: [DOC] fix keys * lib/optparse.rb (getopts): [DOC] parameter keys are strings, not symbols. ------------------------------------------------------------------------ r59382 | rhe | 2017-07-21 13:29:46 +0900 (Fri, 21 Jul 2017) | 12 lines ripper: add kwrest_param parser event * parse.y (f_kwrest): Dispatch kwrest_param event. This is especially useful for unnamed kwrest parameter for which we expose the internal ID currently. [ruby-core:75528] [Feature #12387] * test/ripper/dummyparser.rb (on_kwrest_param): Add handler for kwrest_param parser event. * test/ripper/test_parser_events.rb (test_params): Adapt to the change in DummyParser. (test_kwrest_param): Test that kwrest_param event handler is called. ------------------------------------------------------------------------ r59381 | kazu | 2017-07-21 08:34:03 +0900 (Fri, 21 Jul 2017) | 1 line Use `unpack1` instead of `unpack` and `[0]` ------------------------------------------------------------------------ r59380 | sonots | 2017-07-21 01:47:26 +0900 (Fri, 21 Jul 2017) | 11 lines logger.rb: Fix handling progname Because progname was memoized with ||= a logger call that involved outputting false would be nil. Example code: logger = Logger.new(STDOUT) logger.info(false) # => nil Perform an explicit nil check instead of ||= so that false will be output. patched by Gavin Miller <gavingmiller@gmail.com> [Fix GH-1667] ------------------------------------------------------------------------ r59379 | sonots | 2017-07-21 01:29:20 +0900 (Fri, 21 Jul 2017) | 1 line NEWS: Add String#delete_suffix and String#delete_suffix! ------------------------------------------------------------------------ r59378 | svn | 2017-07-21 01:29:20 +0900 (Fri, 21 Jul 2017) | 1 line * 2017-07-21 ------------------------------------------------------------------------ r59377 | sonots | 2017-07-21 01:29:19 +0900 (Fri, 21 Jul 2017) | 10 lines string.c: add String#delete_suffix and String#delete_suffix! to remove trailing suffix [Feature #13665] [Fix GH-1661] * string.c (rb_str_delete_suffix_bang): add a new method to remove suffix destuctively. * string.c (rb_str_delete_suffix): add a new method to remove suffix non-destuctively. * test/ruby/test_string.rb: add tests. ------------------------------------------------------------------------ r59376 | yugui | 2017-07-20 20:00:39 +0900 (Thu, 20 Jul 2017) | 5 lines Remove dead code * eval.c (errinfo_setter): dead for 10 years since r13091. (rb_rubylevel_errinfo): not used and not exported. usually removed or hidden by linker. ------------------------------------------------------------------------ r59375 | nobu | 2017-07-20 14:48:26 +0900 (Thu, 20 Jul 2017) | 5 lines parse.y: empty hash in defined * parse.y (command): NODE_ARRAY with NULL is invalid. traversal in defined_expr0 is simplified than iseq_compile_each0. [ruby-core:82113] [Bug #13756] ------------------------------------------------------------------------ r59374 | nobu | 2017-07-20 11:43:45 +0900 (Thu, 20 Jul 2017) | 5 lines compile.c: restore stack at return * compile.c (iseq_compile_each0): restore the stack depth after return to the previous depth, to fix the stack depth at returning from rescue iseq. [ruby-core:82108] [Bug #13755] ------------------------------------------------------------------------ r59373 | shugo | 2017-07-20 08:38:31 +0900 (Thu, 20 Jul 2017) | 3 lines lib/net/pop.rb: support timeout for TLS handshake Patch by ahorek (Pavel Rosicky). [ruby-core:80490] [Feature #13389] ------------------------------------------------------------------------ r59372 | shugo | 2017-07-20 08:08:34 +0900 (Thu, 20 Jul 2017) | 4 lines lib/net/imap.rb: Ignore trailing space for Microsoft Exchange Server Based on the patch by keysen (Jeremy Carlier). [ruby-core:81641] [Bug #13649] ------------------------------------------------------------------------ r59371 | svn | 2017-07-20 00:01:01 +0900 (Thu, 20 Jul 2017) | 1 line * 2017-07-20 ------------------------------------------------------------------------ r59370 | kazu | 2017-07-20 00:01:01 +0900 (Thu, 20 Jul 2017) | 1 line Sort entries [ci skip] ------------------------------------------------------------------------ r59369 | kazu | 2017-07-19 22:59:58 +0900 (Wed, 19 Jul 2017) | 3 lines NEWS: Add Hash#transform_keys and Hash#transform_keys! [Feature #13583] [ruby-core:81290] [ci skip] ------------------------------------------------------------------------ r59368 | nobu | 2017-07-19 12:16:58 +0900 (Wed, 19 Jul 2017) | 4 lines random.c: ensure initialized * random.c (get_rnd, try_get_rnd): ensure initialized to get rid of crash in forked processes. [ruby-core:82100] [Bug #13753] ------------------------------------------------------------------------ r59367 | nobu | 2017-07-19 12:16:08 +0900 (Wed, 19 Jul 2017) | 4 lines test_rand.rb: improved assert_fork_status * test/ruby/test_rand.rb (assert_fork_status): deal with errors from children. ------------------------------------------------------------------------ r59366 | nobu | 2017-07-19 11:28:45 +0900 (Wed, 19 Jul 2017) | 1 line st.c: adjust style ------------------------------------------------------------------------ r59365 | svn | 2017-07-19 10:35:05 +0900 (Wed, 19 Jul 2017) | 1 line * 2017-07-19 ------------------------------------------------------------------------ r59364 | normal | 2017-07-19 10:35:04 +0900 (Wed, 19 Jul 2017) | 4 lines revert r59359, r59356, r59355, r59354 These caused numerous CI failures I haven't been able to reproduce [ruby-core:82102] ------------------------------------------------------------------------ r59362 | hsbt | 2017-07-18 20:28:49 +0900 (Tue, 18 Jul 2017) | 4 lines Copy openssl library finder for ext/digest from OpenSSL extention. * ext/digest/digest_conf.rb: Support to search variaous filenames of OpenSSL/LibreSSL libraries. ------------------------------------------------------------------------ r59361 | nobu | 2017-07-18 19:49:10 +0900 (Tue, 18 Jul 2017) | 1 line fix typo ------------------------------------------------------------------------ r59360 | nobu | 2017-07-18 19:29:19 +0900 (Tue, 18 Jul 2017) | 4 lines descriptive asssertions * test/ruby/test_string.rb (test_uplus_minus): prefer more descriptive asssertions than assert_equal. ------------------------------------------------------------------------ r59359 | normal | 2017-07-18 18:52:55 +0900 (Tue, 18 Jul 2017) | 6 lines string: preserve taint flag with String#-@ (uminus) * string.c (tainted_fstr_update): move up (rb_fstring): support registering tainted strings (register_fstring_tainted): extract from rb_fstring_existing0 (rb_tainted_fstring_existing): use register_fstring_tainted instead ------------------------------------------------------------------------ r59358 | nobu | 2017-07-18 17:31:02 +0900 (Tue, 18 Jul 2017) | 10 lines vm_eval.c: rb_lambda_call * enum.c (enum_collect): make the block arity same as the given block. [Bug #13391] * internal.h (vm_ifunc): store arity instead of unused id. * proc.c (rb_vm_block_min_max_arity): return ifunc arity. * vm_eval.c (rb_lambda_call): call method with lambda block. ------------------------------------------------------------------------ r59357 | nobu | 2017-07-18 16:48:37 +0900 (Tue, 18 Jul 2017) | 4 lines proc.c: rb_block_min_max_arity * proc.c (rb_block_min_max_arity): new function to get arity range from the current block. ------------------------------------------------------------------------ r59356 | normal | 2017-07-18 16:21:05 +0900 (Tue, 18 Jul 2017) | 4 lines test/ruby/test_string.rb: ensure we do not have tainted strings Trying to figure out [ruby-core:82092] cf. https://gist.github.com/e2c899c453f3f66e7934095c32505486 ------------------------------------------------------------------------ r59355 | normal | 2017-07-18 13:30:08 +0900 (Tue, 18 Jul 2017) | 9 lines newhash insn reuses existing keys This gives the newhash VM instruction the same string reuse capabilities as rb_hash_aset. * st.c (str_key): new wrapper function to call rb_fstring_existing (rb_hash_bulk_insert): use str_key * test/ruby/test_optimization.rb (test_hash_reuse_fstring): ensure key reuse for newhash instructions ------------------------------------------------------------------------ r59354 | normal | 2017-07-18 11:29:59 +0900 (Tue, 18 Jul 2017) | 26 lines hash: keep fstrings of tainted strings for string keys The same hash keys may be loaded from tainted data sources frequently (e.g. parsing headers from socket or loading YAML data from a file). If a non-tainted fstring already exists (because the application expects the hash key), cache and deduplicate the tainted version in the new tainted_frozen_strings table. For non-embedded strings, this also allows sharing with the underlying malloc-ed data. * vm_core.h (rb_vm_struct): add tainted_frozen_strings * vm.c (ruby_vm_destruct): free tainted_frozen_strings (Init_vm_objects): initialize tainted_frozen_strings (rb_vm_tfstring_table): accessor for tainted_frozen_strings * internal.h: declare rb_fstring_existing, rb_vm_tfstring_table * hash.c (fstring_existing_str): remove (moved to string.c) (hash_aset_str): use rb_fstring_existing * string.c (rb_fstring_existing): new, based on fstring_existing_str (tainted_fstr_update): new (rb_fstring_existing0): new, based on fstring_existing_str (rb_tainted_fstring_existing): new, special case for tainted strings (rb_str_free): delete from tainted_frozen_strings table * test/ruby/test_optimization.rb (test_hash_reuse_fstring): new test [ruby-core:82012] [Bug #13737] ------------------------------------------------------------------------ r59353 | normal | 2017-07-18 11:10:50 +0900 (Tue, 18 Jul 2017) | 6 lines doc/extension.rdoc: start documenting threading and IO APIs This will hopefully be useful for folks writing C extensions. * doc/extension.rdoc: start documenting threading and IO APIs [ruby-core:82016] [Feature #13740] ------------------------------------------------------------------------ r59352 | svn | 2017-07-18 10:59:29 +0900 (Tue, 18 Jul 2017) | 1 line * 2017-07-18 ------------------------------------------------------------------------ r59351 | normal | 2017-07-18 10:59:28 +0900 (Tue, 18 Jul 2017) | 8 lines webrick: fix SNI support * lib/webrick/https.rb: check ssl context of virtual host. * lib/webrick/ssl.rb: ensure to return ssl context. * test/webrick/test_https.rb: test returned cert is correct. [Feature #13729][ruby-dev:50173] Author: Tietew <tietew@gmail.com> ------------------------------------------------------------------------ r59350 | nobu | 2017-07-17 10:16:07 +0900 (Mon, 17 Jul 2017) | 4 lines gmake.mk: extract after update gems * defs/gmake.mk (extract-gems): should wait for update-gems to finish when doing both. ------------------------------------------------------------------------ r59349 | nobu | 2017-07-17 09:11:38 +0900 (Mon, 17 Jul 2017) | 10 lines parse.y: refine literal error messages * parse.y (parser_yyerror): strip newline in error source which will not be printed, when lex_p has passed it. * parse.y (parser_tokadd_utf8): unterminated Unicode escape even after invalid Unicode escape. * parse.y (parser_parse_string): show the error source line when unterminated literal at end of file. ------------------------------------------------------------------------ r59348 | nobu | 2017-07-17 08:45:48 +0900 (Mon, 17 Jul 2017) | 7 lines parse.y: refine invalid Unicode escape message * parse.y (literal_flush): rename from numeric_literal_flush, as it is not just for numerics now. * parse.y (parser_tokadd_codepoint): show invalid character position, but not the start of Unicode escape. ------------------------------------------------------------------------ r59347 | svn | 2017-07-17 00:28:51 +0900 (Mon, 17 Jul 2017) | 1 line * 2017-07-17 ------------------------------------------------------------------------ r59346 | nobu | 2017-07-17 00:28:50 +0900 (Mon, 17 Jul 2017) | 4 lines assertions.rb: frozen string buffer * test/lib/test/unit/assertions.rb (assert_pattern_list): make frozen string literals modifiable as buffers. ------------------------------------------------------------------------ r59345 | nobu | 2017-07-16 23:32:41 +0900 (Sun, 16 Jul 2017) | 1 line parse.y (numeric_literal_flush): fix typo ------------------------------------------------------------------------ r59344 | nobu | 2017-07-16 22:39:18 +0900 (Sun, 16 Jul 2017) | 5 lines parse.y: utf-8 codepoints * parse.y (parser_tokadd_utf8): skip spaces in the current line, without advancing the line, to get rid of dangling pointer. [ruby-core:82029] [Bug #13742] ------------------------------------------------------------------------ r59343 | svn | 2017-07-16 20:35:27 +0900 (Sun, 16 Jul 2017) | 1 line * 2017-07-16 ------------------------------------------------------------------------ r59342 | nobu | 2017-07-16 20:35:27 +0900 (Sun, 16 Jul 2017) | 1 line Use assert_syntax_error ------------------------------------------------------------------------ r59341 | nobu | 2017-07-15 17:29:03 +0900 (Sat, 15 Jul 2017) | 4 lines parse.y: refine error messages * parse.y (parser_read_escape, parser_tok_hex): refine error messages. point from the backslash up to the invalid char. ------------------------------------------------------------------------ r59340 | yui-knk | 2017-07-15 16:24:12 +0900 (Sat, 15 Jul 2017) | 5 lines test_lexer.rb: require ripper directly * test/ripper/test_lexer.rb: This file does not use DummyParser, so requiring ripper directly instead of requiring dummyparser. ------------------------------------------------------------------------ r59339 | svn | 2017-07-15 13:35:19 +0900 (Sat, 15 Jul 2017) | 1 line * 2017-07-15 ------------------------------------------------------------------------ r59338 | kazu | 2017-07-15 13:35:18 +0900 (Sat, 15 Jul 2017) | 3 lines Fix warning: shadowing outer local variable - a [ci skip][Fix GH-1628] ------------------------------------------------------------------------ r59337 | nobu | 2017-07-14 22:50:00 +0900 (Fri, 14 Jul 2017) | 5 lines zlib.c: fix unnormalized Fixnum * ext/zlib/zlib.c (rb_gzfile_total_out): cast to long not to result in an unsigned long to normalized to Fixnum on LLP64 platforms. [ruby-core:81488] ------------------------------------------------------------------------ r59336 | nobu | 2017-07-14 19:53:35 +0900 (Fri, 14 Jul 2017) | 4 lines io.c: textmode if newline decorator * io.c (validate_enc_binmode): newline decorator implies text mode now. [ruby-core:80270] [Bug #13350] ------------------------------------------------------------------------ r59335 | nobu | 2017-07-14 19:31:05 +0900 (Fri, 14 Jul 2017) | 7 lines VPATH for ripper * common.mk (ripper.c): pass the build directory path for id.h which may be generated there. * ext/ripper/depend (ripper.y): search the top build directory and the top source directory. ------------------------------------------------------------------------ r59334 | rhe | 2017-07-14 18:41:05 +0900 (Fri, 14 Jul 2017) | 4 lines hash.c: fix possible crash in Hash#transform_keys! Fix up r59328. It is possible that the given block abuses ObjectSpace.each_object to shrink the temporary array. ------------------------------------------------------------------------ r59333 | naruse | 2017-07-14 18:17:55 +0900 (Fri, 14 Jul 2017) | 3 lines Zlib::GzipReader#pos underflows after calling #ungetbyte or #ungetc at start of file [Bug #13616] patched by Andrew Haines <andrew@haines.org.nz> [ruby-core:81488] ------------------------------------------------------------------------ r59332 | knu | 2017-07-14 17:46:13 +0900 (Fri, 14 Jul 2017) | 1 line Alias Set#to_s to #inspect [ruby-core:81753] [Feature #13676] ------------------------------------------------------------------------ r59331 | knu | 2017-07-14 17:46:10 +0900 (Fri, 14 Jul 2017) | 1 line Make tests for Set#inspect more straightforward ------------------------------------------------------------------------ r59330 | hsbt | 2017-07-14 16:47:21 +0900 (Fri, 14 Jul 2017) | 1 line Update gemspec for standalone gem that is ruby/date repository. ------------------------------------------------------------------------ r59329 | hsbt | 2017-07-14 16:13:17 +0900 (Fri, 14 Jul 2017) | 1 line Fixup r59327. Forgot to update version number. ------------------------------------------------------------------------ r59328 | mrkn | 2017-07-14 15:44:00 +0900 (Fri, 14 Jul 2017) | 9 lines hash.c: Add Hash#transform_keys and Hash#transform_keys! * hash.c (transform_keys_i, rb_hash_transform_keys): Add Hash#transform_keys. [Feature #13583] [ruby-core:81290] * hash.c (rb_hash_transform_keys_bang): Add Hash#transform_keys!. [Feature #13583] [ruby-core:81290] * test/ruby/test_hash.rb: Add tests for above changes. ------------------------------------------------------------------------ r59327 | hsbt | 2017-07-14 15:15:58 +0900 (Fri, 14 Jul 2017) | 6 lines Merge psych-3.0.0.beta3 from ruby/psych. * Rely on encoding tags to determine if string should be dumped as binary. https://github.com/ruby/psych/commit/8949a47b8cee31e03e21608406ba116adcf74054 * Specify "frozen_string_literal: true". * Support to binary release for mingw32 platform. ------------------------------------------------------------------------ r59326 | hsbt | 2017-07-14 14:33:15 +0900 (Fri, 14 Jul 2017) | 1 line Added psych entry to package table and fixed sync instructions. ------------------------------------------------------------------------ r59325 | nobu | 2017-07-14 13:43:16 +0900 (Fri, 14 Jul 2017) | 4 lines process.c: null bytes * process.c (rlimit_type_by_sym): prohibit null bytes in key names. [ruby-core:82033] [Bug #13744] ------------------------------------------------------------------------ r59324 | kazu | 2017-07-14 08:55:41 +0900 (Fri, 14 Jul 2017) | 1 line Use tr! instead of gsub! ------------------------------------------------------------------------ r59323 | svn | 2017-07-14 05:47:37 +0900 (Fri, 14 Jul 2017) | 1 line * 2017-07-14 ------------------------------------------------------------------------ r59322 | normal | 2017-07-14 05:47:36 +0900 (Fri, 14 Jul 2017) | 8 lines process.c: handle dynamic :rlimit_* symbols in spawn execopts * process.c (rb_execarg_addopt_rlimit): hoist out of rb_execarg_addopt (rlimit_type_by_sym): new wrapper for dynamic symbol (rb_execarg_addopt): check for dsym via rlimit_type_by_sym * test/ruby/test_process.rb (test_execopts_rlimit): check dsym w/o pindown Add extra check for bogus rlimit args, too. [ruby-core:82033] [Bug #13744] ------------------------------------------------------------------------ r59321 | hsbt | 2017-07-13 18:46:16 +0900 (Thu, 13 Jul 2017) | 7 lines Use Test::Unit::TestCase instead of MiniTest::Unit::TestCase. Because tests of fiddle already used customized assertions of ruby core. * test/fiddle/helper.rb: Use Test::Unit::TestCase for base class of testcase. * test/fiddle/test_*.rb: Use assert_raise instead of assert_raises. Remove needless includes for Test::Unit::Assertions. ------------------------------------------------------------------------ r59320 | nobu | 2017-07-13 16:00:16 +0900 (Thu, 13 Jul 2017) | 4 lines parse.y: flush debug output * parse.y (parser_compile_error): flush debug output before compile error message, to keep the order. ------------------------------------------------------------------------ r59319 | normal | 2017-07-13 03:31:07 +0900 (Thu, 13 Jul 2017) | 5 lines doc/extension.rdoc: update wikipedia link to HTTPS Avoid the latency for HTTP -> HTTPS redirect * doc/extension.rdoc: update wikipedia link to HTTPS ------------------------------------------------------------------------ r59318 | svn | 2017-07-13 00:02:10 +0900 (Thu, 13 Jul 2017) | 1 line * 2017-07-13 ------------------------------------------------------------------------ r59317 | kazu | 2017-07-13 00:02:09 +0900 (Thu, 13 Jul 2017) | 1 line Fix indent [ci skip] ------------------------------------------------------------------------ r59315 | nobu | 2017-07-12 18:44:45 +0900 (Wed, 12 Jul 2017) | 1 line disable r59314 on mswin ------------------------------------------------------------------------ r59314 | nobu | 2017-07-12 14:30:43 +0900 (Wed, 12 Jul 2017) | 5 lines gc.c: restrict RGENGC_DEBUG * gc.c (RGENGC_DEBUG_ENABLED): restrict runtime ruby_rgengc_debug level up to -RGENGC_DEBUG, to reduce runtime branches in inner loops. ------------------------------------------------------------------------ r59313 | svn | 2017-07-12 11:49:54 +0900 (Wed, 12 Jul 2017) | 1 line * 2017-07-12 ------------------------------------------------------------------------ r59312 | nobu | 2017-07-12 11:49:53 +0900 (Wed, 12 Jul 2017) | 4 lines optparse.rb: get rid of eval * lib/optparse.rb: try Float() and Integer() instead of eval, which does too much things. ------------------------------------------------------------------------ r59311 | svn | 2017-07-11 16:42:27 +0900 (Tue, 11 Jul 2017) | 1 line * 2017-07-11 ------------------------------------------------------------------------ r59310 | ko1 | 2017-07-11 16:42:27 +0900 (Tue, 11 Jul 2017) | 5 lines tainted string should be tainted. * hash.c (hash_aset_str): create frozen string for tainted objects. (should not use fsting table on this case). ------------------------------------------------------------------------ r59309 | nobu | 2017-07-10 20:42:07 +0900 (Mon, 10 Jul 2017) | 5 lines compile.c: simplify defined_expr0 * compile.c (defined_expr0): exapnd defined_expr macro. * compile.c (defined_expr0): reduce duplicate code. ------------------------------------------------------------------------ r59308 | nobu | 2017-07-10 16:37:18 +0900 (Mon, 10 Jul 2017) | 1 line test_rubyoptions.rb: assert -00 ------------------------------------------------------------------------ r59307 | takano32 | 2017-07-10 15:57:50 +0900 (Mon, 10 Jul 2017) | 7 lines a64: fix crash on register stack mark/sweep pass * thread_pthread.c: move 'register_stack_start' earlier. [ruby-core:79928] [Bug #13284] [Fix GH-1625] Author: Sergei Trofimovich <slyfox@gentoo.org> ------------------------------------------------------------------------ r59306 | nobu | 2017-07-10 09:41:21 +0900 (Mon, 10 Jul 2017) | 1 line hash.c: prefer value cast to pointer cast ------------------------------------------------------------------------ r59305 | svn | 2017-07-10 08:04:44 +0900 (Mon, 10 Jul 2017) | 1 line * 2017-07-10 ------------------------------------------------------------------------ r59304 | normal | 2017-07-10 08:04:43 +0900 (Mon, 10 Jul 2017) | 19 lines Hash#[]= deduplicates string keys if (and only if) fstring exists In typical applications, hash entries are read after being written to. Blindly writing to hashes which are never read makes little sense. So, for any hash which is read from, an fstring entry for the key should already exist for the key. We no longer blindly create fstrings if the code is blindly setting random hash keys, preventing the performance regression in the reverted r43870. Regarding <https://bugs.ruby-lang.org/issues/9188>, this has a minimum impact on the bm_so_k_nucleotide where hash keys are set and not reused, performance is within 1-2% of existing cases. * hash.c: #include gc.h for rb_objspace_garbage_object_p (hash_aset_str): do read-only check of fstring table and reuse fstring if it exists and is still alive (not garbage) [ruby-core:81942] [Feature #13725] ------------------------------------------------------------------------ r59292 | nobu | 2017-07-09 13:49:15 +0900 (Sun, 09 Jul 2017) | 5 lines downloader.rb: get rid of symlinks in dist files * tool/downloader.rb: download to the target file directly if CACHE_SAVE=no, to get rid of symlinks in dist files. [ruby-core:81887] [Bug #13709] ------------------------------------------------------------------------ r59291 | nobu | 2017-07-09 13:20:48 +0900 (Sun, 09 Jul 2017) | 4 lines make-snapshot: generate ChangeLog iff not exist * tool/make-snapshot (package): ChangeLog had existed in pre-2.4 revisions, but not doc/ChangeLog-YYYY. fix for 2..3. ------------------------------------------------------------------------ r59290 | svn | 2017-07-09 13:17:50 +0900 (Sun, 09 Jul 2017) | 1 line * 2017-07-09 ------------------------------------------------------------------------ r59289 | nobu | 2017-07-09 13:17:49 +0900 (Sun, 09 Jul 2017) | 5 lines make-snapshot: touch-unicode-files for 2.4 * tool/make-snapshot (package): fallback touch-unicode-files for 2.4, which has been introduced to reduce downloads on CI. [ruby-core:81972] [Bug #13734] ------------------------------------------------------------------------ r59288 | nobu | 2017-07-08 21:31:55 +0900 (Sat, 08 Jul 2017) | 1 line * template/exts.mk.tmpl: extract SUBMAKEOPTS from sub exts.mk files too. [Bug #13730] ------------------------------------------------------------------------ r59287 | nobu | 2017-07-08 11:22:20 +0900 (Sat, 08 Jul 2017) | 6 lines assertions.rb: syntax_check for other impl * test/lib/test/unit/assertions.rb (syntax_check): use eval instead of RubyVM::InstructionSequence.compile so that other implementations can share the tests. [ruby-core:81935] [Bug #13723] ------------------------------------------------------------------------ r59285 | nobu | 2017-07-08 11:05:55 +0900 (Sat, 08 Jul 2017) | 1 line .travis.yml: update dist to trusty ------------------------------------------------------------------------ r59284 | normal | 2017-07-08 02:59:09 +0900 (Sat, 08 Jul 2017) | 1 line NEWS: note [Feature #13517] is Linux-only (no side-effects on _*nonblock) ------------------------------------------------------------------------ r59283 | normal | 2017-07-08 02:41:08 +0900 (Sat, 08 Jul 2017) | 1 line NEWS: entry for WEBRick SNI support [Feature #13729] ------------------------------------------------------------------------ r59282 | svn | 2017-07-08 02:09:40 +0900 (Sat, 08 Jul 2017) | 1 line * properties. ------------------------------------------------------------------------ r59281 | normal | 2017-07-08 02:09:39 +0900 (Sat, 08 Jul 2017) | 7 lines webrick: add Server Name Indication (SNI) * lib/webrick/https.rb: servername_cb implementation. * lib/webrick/ssl.rb: abstract servername_cb. * test/webrick/test_https.rb: test. [ruby-dev:50165] [Feature #13729] Author: Tietew <tietew@gmail.com> ------------------------------------------------------------------------ r59280 | svn | 2017-07-08 01:53:04 +0900 (Sat, 08 Jul 2017) | 1 line * 2017-07-08 ------------------------------------------------------------------------ r59279 | normal | 2017-07-08 01:53:03 +0900 (Sat, 08 Jul 2017) | 3 lines webrick: become maintainer <CAK6HhsrshX7s3qai4usbXknTQnA4GoRThJcQ_Ea=WgTG2Gu0QA@mail.gmail.com> ------------------------------------------------------------------------ r59278 | nobu | 2017-07-07 21:25:49 +0900 (Fri, 07 Jul 2017) | 5 lines Run single downloader * common.mk (update-unicode-property-files, update-unicode-files): download in single process for each targets, not for each files in parallel, to get rid of conflicts. ------------------------------------------------------------------------ r59276 | svn | 2017-07-07 11:14:58 +0900 (Fri, 07 Jul 2017) | 1 line * 2017-07-07 ------------------------------------------------------------------------ r59275 | usa | 2017-07-07 11:14:57 +0900 (Fri, 07 Jul 2017) | 3 lines * tool/redmine-backporter.rb (show): just report and ignore if a feature ticket is specified instead of aborting. ------------------------------------------------------------------------ r59273 | nobu | 2017-07-06 20:49:03 +0900 (Thu, 06 Jul 2017) | 8 lines Fix DecimalInteger converting to octal bug Previously if the input started with a '0' then it will be converted as octal even though it has been specified as a decimal. This commit forces the number to be interpreted as a decimal. [ruby-core:81927] [Bug #13722] [Fix GH-1665] Author: william <william.mccumstie@outlook.com> ------------------------------------------------------------------------ r59272 | rhe | 2017-07-06 16:21:17 +0900 (Thu, 06 Jul 2017) | 4 lines string.c: preserve coderange in String#setbyte Fix a wrong jump so replacing a byte in an ASCII-only string with an ASCII character won't clear the coderange. ------------------------------------------------------------------------ r59271 | rhe | 2017-07-06 16:21:16 +0900 (Thu, 06 Jul 2017) | 3 lines string.c: remove dead code in str_fill_term() The length of a string never exceeds the capacity. ------------------------------------------------------------------------ r59270 | svn | 2017-07-06 13:12:52 +0900 (Thu, 06 Jul 2017) | 1 line * 2017-07-06 ------------------------------------------------------------------------ r59269 | nobu | 2017-07-06 13:12:51 +0900 (Thu, 06 Jul 2017) | 5 lines lexer.rb: ignore dedented space * ext/ripper/lib/ripper/lexer.rb (on_heredoc_dedent): replace an empty string content because of dedentation with :on_ignored_sp. an empty token makes the sorted order unstable. ------------------------------------------------------------------------ r59268 | rhe | 2017-07-05 18:05:53 +0900 (Wed, 05 Jul 2017) | 4 lines un.rb: use OpenSSL::PKey.read instead of OpenSSL::PKey::RSA.new Also, error out if --ssl-private-key option is not given, since specifying only the certificate makes no sense. [Feature #13714] ------------------------------------------------------------------------ r59266 | nobu | 2017-07-05 15:32:54 +0900 (Wed, 05 Jul 2017) | 1 line debug.c: add FMODE constants ------------------------------------------------------------------------ r59265 | nobu | 2017-07-05 15:27:43 +0900 (Wed, 05 Jul 2017) | 5 lines un.rb: support https * lib/un.rb: add https support. based on the patch by Flavio Castelli <flavio@castelli.name> in [ruby-core:81901]. [Feature #13714] ------------------------------------------------------------------------ r59264 | normal | 2017-07-05 02:27:40 +0900 (Wed, 05 Jul 2017) | 5 lines tool/mk_call_iseq_optimized.rb: fix generated comment "tool/mkcall_iseq.rb" never existed in our repo. * tool/mk_call_iseq_optimized.rb: fix generated comment ------------------------------------------------------------------------ r59263 | svn | 2017-07-05 01:02:20 +0900 (Wed, 05 Jul 2017) | 1 line * properties. ------------------------------------------------------------------------ r59262 | mame | 2017-07-05 01:02:19 +0900 (Wed, 05 Jul 2017) | 5 lines Use lcov visualizer for gcov statistics This experimental feature is only for Ruby-core team, not for casual users. Usage: `./configure --enable-gcov && make && make exam && make lcov` ------------------------------------------------------------------------ r59261 | svn | 2017-07-05 01:02:18 +0900 (Wed, 05 Jul 2017) | 1 line * 2017-07-05 ------------------------------------------------------------------------ r59260 | mame | 2017-07-05 01:02:18 +0900 (Wed, 05 Jul 2017) | 7 lines tool/run-gcov.rb: ignore rubyspec_temp directory rubyspec compiles the extension libraries for capi specs in a temporary directory, and after that, deletes the directory. gcov resurrects the directory to save coverage statistics (.gcda files). However, the source and profiling artifacts (.gcno files) have been deleted. So, we need to ignore the .gcda files. ------------------------------------------------------------------------ r59259 | nobu | 2017-07-04 14:42:04 +0900 (Tue, 04 Jul 2017) | 5 lines vm_args.c: improve keyword argument errors * vm_args.c (argument_arity_error): improve required keyword argument errors when non-keyword arguments given. [ruby-core:79439] [Bug #13196] ------------------------------------------------------------------------ r59258 | nobu | 2017-07-04 13:23:06 +0900 (Tue, 04 Jul 2017) | 6 lines time.c: preserve marshalled timezone * time.c (time_add): preserve timezone name restored by Marshal. [ruby-core:81892] [Bug #13710] * time.c (time_mload): reset localtime if having timezone. ------------------------------------------------------------------------ r59257 | svn | 2017-07-04 08:42:13 +0900 (Tue, 04 Jul 2017) | 1 line * 2017-07-04 ------------------------------------------------------------------------ r59256 | nobu | 2017-07-04 08:42:12 +0900 (Tue, 04 Jul 2017) | 4 lines win32.c: restrict cursor move * win32/win32.c (constat_apply): restrict cursor move in visible screen only. [ruby-core:81883] [Bug #13707] ------------------------------------------------------------------------ r59255 | nobu | 2017-07-03 19:56:21 +0900 (Mon, 03 Jul 2017) | 4 lines win32.c: clear relative to screen * win32/win32.c (constat_apply): clear visible screen only, not the entire buffer. [ruby-core:81883] [Bug #13707] ------------------------------------------------------------------------ r59254 | nobu | 2017-07-03 19:22:15 +0900 (Mon, 03 Jul 2017) | 4 lines win32.c: cursor relative to screen * win32/win32.c (constat_apply): move relative to visible screen, not the entire buffer. [ruby-core:81883] [Bug #13707] ------------------------------------------------------------------------ r59253 | naruse | 2017-07-03 17:08:29 +0900 (Mon, 03 Jul 2017) | 1 line Suppress warning: method redefined; discarding old == ------------------------------------------------------------------------ r59252 | svn | 2017-07-03 11:13:59 +0900 (Mon, 03 Jul 2017) | 1 line * 2017-07-03 ------------------------------------------------------------------------ r59251 | hsbt | 2017-07-03 11:13:59 +0900 (Mon, 03 Jul 2017) | 4 lines Added sync to all of default gems command. * Fix command of FileUtils sync operation. test/fileutils is a directory. * When not given gem name option, do sync all of gems. ------------------------------------------------------------------------ r59250 | ktsj | 2017-07-02 19:38:38 +0900 (Sun, 02 Jul 2017) | 6 lines Symbol#== should be able to be redefined * vm.c (vm_init_redefined_flag): set redefinition flag for Symbol#==. The bug was introduced in r58895. * test/ruby/test_symbol.rb: test for above. ------------------------------------------------------------------------ r59249 | svn | 2017-07-02 06:17:26 +0900 (Sun, 02 Jul 2017) | 1 line * 2017-07-02 ------------------------------------------------------------------------ r59248 | eregon | 2017-07-02 06:17:25 +0900 (Sun, 02 Jul 2017) | 1 line Used a fixed seed in Random#rand spec ------------------------------------------------------------------------ r59246 | nobu | 2017-07-01 11:01:05 +0900 (Sat, 01 Jul 2017) | 4 lines parse.y: f_margs parser events * parse.y (f_margs): implemented parser events for massign formal arguments. [ruby-core:81848] [Bug #13701] ------------------------------------------------------------------------ r59245 | nobu | 2017-07-01 10:51:17 +0900 (Sat, 01 Jul 2017) | 4 lines parse.y: mlhs_add_post * parse.y (mlhs_add_post): new parser event corresponding to POSTARG. ------------------------------------------------------------------------ r59244 | svn | 2017-07-01 10:29:23 +0900 (Sat, 01 Jul 2017) | 1 line * 2017-07-01 ------------------------------------------------------------------------ r59243 | nobu | 2017-07-01 10:29:22 +0900 (Sat, 01 Jul 2017) | 7 lines test_parser_events.rb: simplify * test/ripper/dummyparser.rb (DummyParser): simplified mlhs node representation. * test/ripper/test_parser_events.rb (test_mlhs_add_star): simplified assertions. ------------------------------------------------------------------------ r59213 | nobu | 2017-06-30 13:19:12 +0900 (Fri, 30 Jun 2017) | 4 lines main.c: RUBY_DEBUG_ENV in devel * main.c (RUBY_DEBUG_ENV): default to enabled in the development version. ------------------------------------------------------------------------ r59212 | nobu | 2017-06-30 11:09:42 +0900 (Fri, 30 Jun 2017) | 7 lines compile.c: dump iseq * compile.c (append_compile_error): raise a fatal error when compile_debug is enabled. * compile.c (COMPILE_ERROR): dump the disassembled instruction instruction sequence always. ------------------------------------------------------------------------ r59211 | nobu | 2017-06-30 10:56:53 +0900 (Fri, 30 Jun 2017) | 6 lines vm_insnhelper.c: dump iseq * vm_insnhelper.c (vm_stack_consistency_error): raise a fatal error with the disassembled instruction sequence, in the development version, instead of very rarely useful rb_bug in such case. ------------------------------------------------------------------------ r59210 | normal | 2017-06-30 07:40:36 +0900 (Fri, 30 Jun 2017) | 5 lines array.c: more predefined IDs * array.c (id_cmp): change to macro for OPTIMIZED_CMP (rb_ary_repeated_permutation_size): s/id_power/idPow/ (Init_Array): remove id_cmp and id_power ------------------------------------------------------------------------ r59209 | svn | 2017-06-30 07:34:19 +0900 (Fri, 30 Jun 2017) | 1 line * 2017-06-30 ------------------------------------------------------------------------ r59208 | normal | 2017-06-30 07:34:19 +0900 (Fri, 30 Jun 2017) | 8 lines remove unused rb_obj_basic_to_s_p function This hasn't been used since r36709 (2012-08-15) ("Kernel#inspect: improve consistency and do not call #to_s.") and was never part of public API in include/ruby/ * class.c (rb_obj_basic_to_s_p): remove function * internal.h (rb_obj_basic_to_s_p): remove declaration ------------------------------------------------------------------------ r59207 | svn | 2017-06-29 23:35:39 +0900 (Thu, 29 Jun 2017) | 1 line * properties. ------------------------------------------------------------------------ r59206 | svn | 2017-06-29 23:35:39 +0900 (Thu, 29 Jun 2017) | 1 line * append newline at EOF. ------------------------------------------------------------------------ r59205 | eregon | 2017-06-29 23:35:37 +0900 (Thu, 29 Jun 2017) | 1 line Update to ruby/spec@abf1700 ------------------------------------------------------------------------ r59204 | svn | 2017-06-29 23:35:11 +0900 (Thu, 29 Jun 2017) | 1 line * properties. ------------------------------------------------------------------------ r59203 | eregon | 2017-06-29 23:35:09 +0900 (Thu, 29 Jun 2017) | 1 line Update to ruby/mspec@021a119 ------------------------------------------------------------------------ r59202 | nobu | 2017-06-29 13:01:30 +0900 (Thu, 29 Jun 2017) | 6 lines compile.c: disallow next in once * compile.c (iseq_compile_each0): turned dregx context in "once" into "guarded" type from "block" type, to disallow `next`, `break`, `redo` as well as outside "once". [ruby-core:81805] [Bug #13690] ------------------------------------------------------------------------ r59201 | svn | 2017-06-29 00:25:31 +0900 (Thu, 29 Jun 2017) | 1 line * 2017-06-29 ------------------------------------------------------------------------ r59200 | ko1 | 2017-06-29 00:25:30 +0900 (Thu, 29 Jun 2017) | 8 lines introduce rb_fiber_t::first_proc. * cont.c (rb_fiber_t): add rb_fiber_t::first_proc and do not use rb_thread_t::first_proc which should be thread local. [Bug #13689] * test/ruby/test_thread.rb: test for [Bug #13689]. ------------------------------------------------------------------------ r59199 | ko1 | 2017-06-28 23:27:49 +0900 (Wed, 28 Jun 2017) | 7 lines move fields to ec. * vm_core.h (rb_thread.h): move errinfo and trace_arg to rb_execution_context_t. * cont.c (fiber_switch, rb_cont_call): do not restore "trace_arg" here. ------------------------------------------------------------------------ r59198 | svn | 2017-06-28 19:18:04 +0900 (Wed, 28 Jun 2017) | 1 line * properties. ------------------------------------------------------------------------ r59197 | hsbt | 2017-06-28 19:18:03 +0900 (Wed, 28 Jun 2017) | 1 line Added sync tool for default gems from github master. ------------------------------------------------------------------------ r59196 | nobu | 2017-06-28 15:13:00 +0900 (Wed, 28 Jun 2017) | 4 lines parse.y: fix token * parse.y (parser_parse_string): return proper token tREGEXP_END at unterminated regexp. [Bug #13363] ------------------------------------------------------------------------ r59195 | ko1 | 2017-06-28 15:09:06 +0900 (Wed, 28 Jun 2017) | 5 lines move fields to ec. * vm_core.h (rb_thread_t): move root_lep, root_svar and ensure_list to rb_execution_context_t. ------------------------------------------------------------------------ r59194 | nobu | 2017-06-28 14:38:27 +0900 (Wed, 28 Jun 2017) | 4 lines parse.y: add ellipsis * parse.y (parser_yyerror): add ellipsis properly when error line is truncated. ------------------------------------------------------------------------ r59193 | ko1 | 2017-06-28 13:57:02 +0900 (Wed, 28 Jun 2017) | 1 line fix to check thread type ------------------------------------------------------------------------ r59192 | ko1 | 2017-06-28 13:49:30 +0900 (Wed, 28 Jun 2017) | 7 lines introduce rb_thread_ptr() to replace GetThreadPtr(). * vm_core.h (rb_thread_ptr): added to replace GetThreadPtr() macro. * thread.c (in some functions: use "target_th" instead of "th" to make clear that it is not a current thread. ------------------------------------------------------------------------ r59191 | nobu | 2017-06-28 13:08:51 +0900 (Wed, 28 Jun 2017) | 4 lines parse.y: flush numeric token * parse.y (parser_number_literal_suffix, parse_numeric): flush numeric token so following unexpected token part is marked. ------------------------------------------------------------------------ r59190 | ko1 | 2017-06-28 11:50:56 +0900 (Wed, 28 Jun 2017) | 4 lines move storages to ec. * vm_core.h (rb_thread_t): move storages to rb_execution_context_t. ------------------------------------------------------------------------ r59189 | duerst | 2017-06-28 11:28:00 +0900 (Wed, 28 Jun 2017) | 1 line add two tests ------------------------------------------------------------------------ r59188 | nobu | 2017-06-28 11:02:38 +0900 (Wed, 28 Jun 2017) | 4 lines parse.y: fix parser_yyerror * parse.y (parser_yyerror): fix buffer overflow at truncation of error line. [ruby-core:81790] [Bug #13687] ------------------------------------------------------------------------ r59187 | nobu | 2017-06-28 10:49:44 +0900 (Wed, 28 Jun 2017) | 1 line parse.y: prefer enum yytokentype instead to int ------------------------------------------------------------------------ r59186 | svn | 2017-06-28 02:10:57 +0900 (Wed, 28 Jun 2017) | 1 line * 2017-06-28 ------------------------------------------------------------------------ r59185 | nobu | 2017-06-28 02:10:56 +0900 (Wed, 28 Jun 2017) | 4 lines downloader.rb: get rid of symlinks * tool/downloader.rb: do not save downloaded files to cache. [ruby-core:81780] [Bug #13684] ------------------------------------------------------------------------ r59184 | nobu | 2017-06-27 23:09:08 +0900 (Tue, 27 Jun 2017) | 5 lines fix return in toplevel ensure * compile.c (iseq_compile_each0): adjust stack after return in toplevel ensure, when the value is used. [ruby-core:81777] [Bug #13682] ------------------------------------------------------------------------ r59183 | nobu | 2017-06-27 15:57:34 +0900 (Tue, 27 Jun 2017) | 8 lines fix return in toplevel rescue/ensure * compile.c (iseq_compile_each0): throw TAG_RETURN at return in toplevel rescue/ensure to adjust VM stack properly. [ruby-core:81777] [Bug #13682] * vm_insnhelper.c (vm_throw_start): allow return in toplevel rescue/ensure. ------------------------------------------------------------------------ r59182 | svn | 2017-06-27 12:45:56 +0900 (Tue, 27 Jun 2017) | 1 line * 2017-06-27 ------------------------------------------------------------------------ r59181 | nobu | 2017-06-27 12:45:55 +0900 (Tue, 27 Jun 2017) | 6 lines vm_insnhelper.c: break in once * vm_insnhelper.c (vm_throw_start): size of catch table has been included in iseq_catch_table struct, which could be NULL, since 2.2. e.g., proc-closure in `once'. [ruby-core:81775] [Bug #13680] ------------------------------------------------------------------------ r59180 | naruse | 2017-06-26 19:37:13 +0900 (Mon, 26 Jun 2017) | 1 line webrick is _unmaintained_ ------------------------------------------------------------------------ r59179 | nobu | 2017-06-26 19:31:34 +0900 (Mon, 26 Jun 2017) | 4 lines parse.y: line number of bin op * parse.y (call_bin_op_gen): adjust line number to the receiver, instead of the rhs. ------------------------------------------------------------------------ r59178 | nobu | 2017-06-26 18:40:39 +0900 (Mon, 26 Jun 2017) | 16 lines parse.y: mark error token * parse.y (parser_yyerror): mark the whole last token which caused the error, not only the end. before: ``` if end ^ ``` after: ``` if end ^~~ ``` ------------------------------------------------------------------------ r59177 | ko1 | 2017-06-26 16:56:44 +0900 (Mon, 26 Jun 2017) | 5 lines move several fields from rb_thread_t to rb_execution_context_t. * vm_core.h (rb_thread_t): move several fields which are copied at cont.c to rb_execution_context_t. ------------------------------------------------------------------------ r59176 | ko1 | 2017-06-26 16:46:11 +0900 (Mon, 26 Jun 2017) | 4 lines copy ec on Fiber. * cont.c (cont_restore_thread): on Fiber we only need to copy ec struct. ------------------------------------------------------------------------ r59175 | ko1 | 2017-06-26 14:36:10 +0900 (Mon, 26 Jun 2017) | 4 lines add "FIBER_" prefix. * cont.c (enum fiber_status): add "FIBER_" prefix for all names. ------------------------------------------------------------------------ r59174 | ko1 | 2017-06-26 14:30:07 +0900 (Mon, 26 Jun 2017) | 7 lines Do not store/restore Thread#status on fiber switching. * cont.c (cont_restore_thread): On Fiber switching, thread status shold be THREAD_RUNNABLE so that we don't need to store/restore this field. * cont.c (cont_save_thread): ditto. ------------------------------------------------------------------------ r59173 | svn | 2017-06-26 09:59:25 +0900 (Mon, 26 Jun 2017) | 1 line * 2017-06-26 ------------------------------------------------------------------------ r59172 | nobu | 2017-06-26 09:59:24 +0900 (Mon, 26 Jun 2017) | 4 lines compile.c: fix debug print * compile.c (iseq_compile_each0): debugs/ruby_debug_printf do not support PRIsVALUE. ------------------------------------------------------------------------ r59171 | nobu | 2017-06-25 17:55:23 +0900 (Sun, 25 Jun 2017) | 4 lines compile.c: fix_sp_depth * compile.c (fix_sp_depth): separate fix-up of sp depth from code generation. ------------------------------------------------------------------------ r59170 | svn | 2017-06-25 14:10:49 +0900 (Sun, 25 Jun 2017) | 1 line * 2017-06-25 ------------------------------------------------------------------------ r59169 | nobu | 2017-06-25 14:10:48 +0900 (Sun, 25 Jun 2017) | 5 lines compile.c: toplevel return in argument * compile.c (iseq_compile_each0): adjust the stack before return in an evstr/argument (reported by Balazs <balazs@kutilovi.cz>) to fix stack consistency error. [ruby-core:81761] [Bug #13678] ------------------------------------------------------------------------ r59168 | nobu | 2017-06-24 21:01:02 +0900 (Sat, 24 Jun 2017) | 1 line Added version guards [Bug #12684] ------------------------------------------------------------------------ r59167 | nobu | 2017-06-24 12:35:29 +0900 (Sat, 24 Jun 2017) | 5 lines Delegate to `eql?` [Fix GH-1564] * lib/delegate.rb (eql?): Delegate to `eql?` of the inner object. based on the patch by giginet <giginet.net@gmail.com>. [ruby-core:76950] [Bug #12684] ------------------------------------------------------------------------ r59166 | nobu | 2017-06-24 10:44:49 +0900 (Sat, 24 Jun 2017) | 4 lines mspec.rb: keep jobserver fds * spec/mspec/lib/mspec/commands/mspec.rb (MSpecMain#run): do not close jobserver FDs for mspec-run. ------------------------------------------------------------------------ r59165 | normal | 2017-06-24 05:59:00 +0900 (Sat, 24 Jun 2017) | 7 lines thread_sync.c: fix documentation for Queue#close When Queue#closed? is true, using push/enq/<< will raise an exception, and not return nil. * thread_sync.c: fix documentation for Queue#close Thanks to John Anderson. [ruby-core:81749] [Misc #13673] ------------------------------------------------------------------------ r59164 | svn | 2017-06-24 00:08:51 +0900 (Sat, 24 Jun 2017) | 1 line * 2017-06-24 ------------------------------------------------------------------------ r59163 | nobu | 2017-06-24 00:08:50 +0900 (Sat, 24 Jun 2017) | 4 lines test_command_processor.rb: add suffix * test/shell/test_command_processor.rb (test_option_type): Windows needs a suffix to execute. ------------------------------------------------------------------------ r59162 | nobu | 2017-06-23 20:56:48 +0900 (Fri, 23 Jun 2017) | 4 lines parse.y: should not warn op method call * parse.y (void_expr_gen): should warn operator expression style calls only, but not method style calls. [Fix GH-1660] ------------------------------------------------------------------------ r59161 | nobu | 2017-06-23 20:20:29 +0900 (Fri, 23 Jun 2017) | 5 lines parse.y: check multibyte char * parse.y (parser_precise_mbclen): check invalid multibyte char at skipping strings following `?x` literal string, not to stuck in a infinite loop. [ruby-core:81746] [Bug #13672] ------------------------------------------------------------------------ r59160 | nobu | 2017-06-23 20:15:26 +0900 (Fri, 23 Jun 2017) | 5 lines vm_core.h: sandwich jmpbuf * vm_core.h (rb_vm_tag): move jmpbuf which should be stored at the last in TH_PUSH_TAG, between tag and state so ensure to be accessible. reapplied r40806. ------------------------------------------------------------------------ r59159 | ko1 | 2017-06-23 18:43:52 +0900 (Fri, 23 Jun 2017) | 5 lines move "state" to rb_vm_tag. * vm_core.h (rb_thread_t::tag_state): move to "rb_vm_tag::state". Lifetime of "state" should be same as current tag. ------------------------------------------------------------------------ r59158 | ko1 | 2017-06-23 17:48:41 +0900 (Fri, 23 Jun 2017) | 5 lines rename th->state to th->tag_state. * vm_core.h (rb_thread_t): rename rb_thread_t::state to tag_state to make it clear. ------------------------------------------------------------------------ r59157 | ko1 | 2017-06-23 17:24:54 +0900 (Fri, 23 Jun 2017) | 2 lines rb_catch_protect() accepts enum ruby_tag_type *. ------------------------------------------------------------------------ r59156 | nobu | 2017-06-23 16:53:07 +0900 (Fri, 23 Jun 2017) | 4 lines thread.c: suppress warning * thread.c (exec_recursive): rb_catch_protect() uses `int*` as well as rb_protect. ------------------------------------------------------------------------ r59155 | ko1 | 2017-06-23 16:25:52 +0900 (Fri, 23 Jun 2017) | 12 lines use "enum ruby_tag_type" and TAG_NONE. Return value of EXEC_TAG() is saved by "int state". Instead of "int", use "enum ruby_tag_type". First EXEC_TAG() value should be 0, so that define TAG_NONE (= 0) and use it. Some code used "status" instead of "state". To make them clear, rename them to state. We can change variable name from "state" to "tag_state", but this ticket doesn't contain it. ------------------------------------------------------------------------ r59154 | ko1 | 2017-06-23 14:55:12 +0900 (Fri, 23 Jun 2017) | 1 line use NULL instead of 0. ------------------------------------------------------------------------ r59153 | ko1 | 2017-06-23 14:52:28 +0900 (Fri, 23 Jun 2017) | 2 lines skip on other threads (again). ------------------------------------------------------------------------ r59152 | ko1 | 2017-06-23 14:50:35 +0900 (Fri, 23 Jun 2017) | 2 lines revert r59151 which introduce failures. ------------------------------------------------------------------------ r59151 | ko1 | 2017-06-23 14:45:50 +0900 (Fri, 23 Jun 2017) | 3 lines skip on other threads. ------------------------------------------------------------------------ r59150 | glass | 2017-06-23 13:19:53 +0900 (Fri, 23 Jun 2017) | 3 lines Revert "Allow IO#reopen to take a block" This reverts r59142. ------------------------------------------------------------------------ r59149 | nobu | 2017-06-23 10:43:39 +0900 (Fri, 23 Jun 2017) | 4 lines vm_insnhelper.c: vm_stack_consistency_error * vm_insnhelper.c (vm_stack_consistency_error): extracted from insns.def for further info in the future. ------------------------------------------------------------------------ r59148 | svn | 2017-06-23 09:29:45 +0900 (Fri, 23 Jun 2017) | 1 line * 2017-06-23 ------------------------------------------------------------------------ r59147 | nobu | 2017-06-23 09:29:45 +0900 (Fri, 23 Jun 2017) | 9 lines refinements.rdoc: [DOC] improved [Fix GH-1659] * doc/syntax/refinements.rdocrefinements.rdoc: grammatical correction and code highlighting improved * doc/syntax/refinements.rdocrefinements.rdoc: Fixnum replaced with Integer and Integer with Numeric Author: Shiva Bhusal <shivabhusal@users.noreply.github.com> ------------------------------------------------------------------------ r59146 | nobu | 2017-06-22 21:53:05 +0900 (Thu, 22 Jun 2017) | 5 lines fix mortal_dynamic_symbol count * test/objspace/test_objspace.rb (test_count_symbols): exclude a dynamic symbol which has been turned into immortal by define_method. ------------------------------------------------------------------------ r59145 | glass | 2017-06-22 19:56:49 +0900 (Thu, 22 Jun 2017) | 9 lines Fix exception type in option type checker * lib/shell/system-command.rb (SystemCommand#initialize): `def_e2message` wraps error message, but does not define new exception * test/shell/test_command_processor.rb: add a test This patch is authored by Kenichi Kamiya <kachick1@gmail.com> close #1657 ------------------------------------------------------------------------ r59144 | ko1 | 2017-06-22 17:37:53 +0900 (Thu, 22 Jun 2017) | 7 lines use --dump option for parse rule. * common.mk: use --dump=--dump=parsetree_with_comment,insns instead of tool/parse.rb. maybe nobody use this option so that I believe it is enough. previous "parse" rule doesn't run script but patched parse rule runs specified script (on miniruby). ------------------------------------------------------------------------ r59143 | ko1 | 2017-06-22 17:33:33 +0900 (Thu, 22 Jun 2017) | 7 lines try to fix symbol duplication. * test/objspace/test_objspace.rb (test_count_symbols): make more complex dynamic symbols to avoid conflict with other existing static symbols. Sometimes this test fails with "mortal_dynamic_symbol=>127". ------------------------------------------------------------------------ r59142 | glass | 2017-06-22 15:50:32 +0900 (Thu, 22 Jun 2017) | 8 lines Allow IO#reopen to take a block * io.c (rb_io_reopen): take a block and ensure the IO closed [Feature #2631] * test/ruby/test_io.rb: add a test * NEWS: add an entry for this change ------------------------------------------------------------------------ r59141 | svn | 2017-06-22 15:42:27 +0900 (Thu, 22 Jun 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r59140 | ko1 | 2017-06-22 15:42:26 +0900 (Thu, 22 Jun 2017) | 5 lines introduce heap_allocatable_pages_set(). * gc.c (heap_allocatable_pages_set): added. This function set heap_allocatable_pages and sorted_list atomically. ------------------------------------------------------------------------ r59139 | ko1 | 2017-06-22 14:51:43 +0900 (Thu, 22 Jun 2017) | 3 lines catch up frozen_string_literal: true. ------------------------------------------------------------------------ r59138 | ko1 | 2017-06-22 14:03:18 +0900 (Thu, 22 Jun 2017) | 5 lines introduce GC_ASSERT(). * gc.c (GC_ASSERT()): added. GC_ASSERT() is similar to VM_ASSERT in vm_core.h but turn on by RGENGC_CHECK_MODE. ------------------------------------------------------------------------ r59137 | svn | 2017-06-22 09:59:55 +0900 (Thu, 22 Jun 2017) | 1 line * 2017-06-22 ------------------------------------------------------------------------ r59136 | nobu | 2017-06-22 09:59:54 +0900 (Thu, 22 Jun 2017) | 4 lines gc.c: expand sorted pages * gc.c (heap_page_allocate): expand sorted pages before inserting allocated new page. [Bug #12670] ------------------------------------------------------------------------ r59135 | nobu | 2017-06-21 21:51:26 +0900 (Wed, 21 Jun 2017) | 4 lines gc.c: FL_CHECK2 * gc.c (FL_TEST2, FL_SET2, FL_UNSET2): make error messages consitent. ------------------------------------------------------------------------ r59134 | eregon | 2017-06-21 19:06:44 +0900 (Wed, 21 Jun 2017) | 1 line * NEWS: Fix typo. ------------------------------------------------------------------------ r59133 | sonots | 2017-06-21 16:43:27 +0900 (Wed, 21 Jun 2017) | 6 lines test/ruby/test_string.rb: add tests to chomp substr * test/ruby/test_string.rb (TestString#test_chomp): add tests to chomp substr * test/ruby/test_string.rb (TestString#test_chomp!): ditto ------------------------------------------------------------------------ r59132 | sonots | 2017-06-21 16:43:26 +0900 (Wed, 21 Jun 2017) | 10 lines string.c: add String#delete_prefix and String#delete_prefix! to remove leading substr [Feature #12694] [fix GH-1632] * string.c (rb_str_delete_prefix_bang): add a new method to remove prefix destuctively. * string.c (rb_str_delete_prefix): add a new method to remove prefix non-destuctively. * test/ruby/test_string.rb: add tests. ------------------------------------------------------------------------ r59131 | nobu | 2017-06-21 13:34:25 +0900 (Wed, 21 Jun 2017) | 8 lines RUBY_DEVEL flag * configure.in: define RUBY_DEVEL only in the trunk. * gc.c: enable runtime rgengc debug if RUBY_DEVEL * ruby.c (debug_option): enable RUBY_DEBUG in --debug option only if RUBY_DEVEL. ------------------------------------------------------------------------ r59130 | nobu | 2017-06-21 12:27:21 +0900 (Wed, 21 Jun 2017) | 1 line configure.in: use AS_IF ------------------------------------------------------------------------ r59129 | nobu | 2017-06-21 11:44:23 +0900 (Wed, 21 Jun 2017) | 4 lines ruby.c: debug options in command line * ruby.c (debug_option): parse options in --debug command line option same as RUBY_DEBUG env. available only in the trunk. ------------------------------------------------------------------------ r59128 | nobu | 2017-06-21 11:25:27 +0900 (Wed, 21 Jun 2017) | 6 lines Fix Enumerable#uniq with non single yield arguments * enum.c (uniq_func, uniq_iter): need packed value as the unique key. [ruby-core:81734] [Bug #13669] [Fix GH-1658] Author: Kenichi Kamiya <kachick1@gmail.com> ------------------------------------------------------------------------ r59127 | nobu | 2017-06-21 11:03:38 +0900 (Wed, 21 Jun 2017) | 1 line KNOWNBUGS.rb: hung up on linux ------------------------------------------------------------------------ r59126 | nobu | 2017-06-21 10:34:34 +0900 (Wed, 21 Jun 2017) | 1 line KNOWNBUGS.rb: deferred free ------------------------------------------------------------------------ r59125 | nobu | 2017-06-21 10:34:33 +0900 (Wed, 21 Jun 2017) | 1 line bootstraptest/runner.rb: keyword argument ------------------------------------------------------------------------ r59124 | svn | 2017-06-21 00:23:51 +0900 (Wed, 21 Jun 2017) | 1 line * 2017-06-21 ------------------------------------------------------------------------ r59123 | eregon | 2017-06-21 00:23:50 +0900 (Wed, 21 Jun 2017) | 4 lines Use a file under tmp for File.real{,dir}path specs on Windows * The source file path could have pre-existing symlinks. * See https://github.com/ruby/spec/issues/445. ------------------------------------------------------------------------ r59122 | hsbt | 2017-06-20 20:43:05 +0900 (Tue, 20 Jun 2017) | 1 line Fixed missing handling for frozen object at r59121. ------------------------------------------------------------------------ r59121 | hsbt | 2017-06-20 20:10:37 +0900 (Tue, 20 Jun 2017) | 1 line Specify frozen_string_literal: true. ------------------------------------------------------------------------ r59120 | nobu | 2017-06-20 17:23:25 +0900 (Tue, 20 Jun 2017) | 4 lines gc.c: add newline to report [ci skip] * gc.c (gc_sweep_finish): gc_report format should end with a newline, as gc_report_body does not append it. ------------------------------------------------------------------------ r59119 | svn | 2017-06-20 14:34:33 +0900 (Tue, 20 Jun 2017) | 1 line * 2017-06-20 ------------------------------------------------------------------------ r59118 | ko1 | 2017-06-20 14:34:33 +0900 (Tue, 20 Jun 2017) | 2 lines skip unresolved issue. ------------------------------------------------------------------------ r59117 | nobu | 2017-06-19 23:36:18 +0900 (Mon, 19 Jun 2017) | 1 line debug.c: rgengc debug option ------------------------------------------------------------------------ r59116 | nobu | 2017-06-19 23:36:17 +0900 (Mon, 19 Jun 2017) | 3 lines test for [Bug #12670] heap corruption by deferred free. ------------------------------------------------------------------------ r59115 | hsbt | 2017-06-19 22:03:06 +0900 (Mon, 19 Jun 2017) | 9 lines Make string literal to frozen object on gemspec of defulte gems. Added following gemspecs. * extensions: date, dbm, etc, fiddle, gdbm, sdbm, stringio, strscan, zlib * pure ruby libraries: cmath, csv, fileutils, scanf, webrick psych and rdoc is out of scope of this commit. I will merge after upstream was change to `frozen_string_literal: true`. ------------------------------------------------------------------------ r59114 | svn | 2017-06-19 22:00:13 +0900 (Mon, 19 Jun 2017) | 1 line * 2017-06-19 ------------------------------------------------------------------------ r59113 | eregon | 2017-06-19 22:00:12 +0900 (Mon, 19 Jun 2017) | 3 lines Adapt Time#zone spec to deal with differences of TZ validation on Windows * [Bug #13591] [ruby-core:81347] ------------------------------------------------------------------------ r59112 | nobu | 2017-06-18 13:38:01 +0900 (Sun, 18 Jun 2017) | 5 lines string.c: check just before modification * string.c (rb_str_chomp_bang): check if modifiable after checking an argument and just before modification, as it can get frozen during the argument conversion to String. ------------------------------------------------------------------------ r59111 | nobu | 2017-06-18 13:29:05 +0900 (Sun, 18 Jun 2017) | 4 lines test_string.rb: chomp! frozen string * test/ruby/test_string.rb (TestString#test_chomp): should raise if frozen. ------------------------------------------------------------------------ r59110 | nobu | 2017-06-18 13:29:04 +0900 (Sun, 18 Jun 2017) | 5 lines test/unit.rb: close jobserver * test/lib/test/unit.rb (Test::Unit::Parallel#flush_job_tokens): close jobserver auth fds aflter flush, not to release tokens more than acquired. ------------------------------------------------------------------------ r59109 | nobu | 2017-06-18 10:15:36 +0900 (Sun, 18 Jun 2017) | 5 lines capi/spec_helper.rb: suppress logo * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): suppress logo of nmake.exe to stderr. we want to show compiler warnings only. ------------------------------------------------------------------------ r59108 | svn | 2017-06-18 10:15:36 +0900 (Sun, 18 Jun 2017) | 1 line * 2017-06-18 ------------------------------------------------------------------------ r59107 | nobu | 2017-06-18 10:15:35 +0900 (Sun, 18 Jun 2017) | 4 lines appveyor.yml: num of jobs * appveyor.yml (test_script): stop running too many workers to get rid of sporadic NoMemoryError. ------------------------------------------------------------------------ r59106 | nobu | 2017-06-17 09:18:33 +0900 (Sat, 17 Jun 2017) | 7 lines capi/spec_helper.rb: pass jobserver fds * spec/mspec/lib/mspec/commands/mspec.rb (MSpecMain#multi_exec): do not close GNU make jobserver auth fds. * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): ditto. ------------------------------------------------------------------------ r59105 | nobu | 2017-06-17 09:10:54 +0900 (Sat, 17 Jun 2017) | 5 lines capi/spec_helper.rb: use MAKE env * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): prefer MAKE environment variable to hardcoded name if set by parent make. ------------------------------------------------------------------------ r59104 | svn | 2017-06-17 08:59:34 +0900 (Sat, 17 Jun 2017) | 1 line * 2017-06-17 ------------------------------------------------------------------------ r59103 | nobu | 2017-06-17 08:59:33 +0900 (Sat, 17 Jun 2017) | 4 lines default.mspec: limit cores * spec/default.mspec (MSpecScript::JobServer#cores): limit max number of processors, not to acquire tokens more than necessary. ------------------------------------------------------------------------ r59102 | nobu | 2017-06-16 23:44:01 +0900 (Fri, 16 Jun 2017) | 6 lines pathname.rb: UNC root pathname needs a separator * ext/pathname/lib/pathname.rb (Pathname#plus): UNC root pathname needs a separator. File.basename returns "/" on UNC root, as well as sole drive letter, even if it does not end with a separator. [ruby-core:80900] [Bug #13515] ------------------------------------------------------------------------ r59101 | hsbt | 2017-06-16 16:02:22 +0900 (Fri, 16 Jun 2017) | 9 lines Merge psych-3.0.0.beta2 from https://github.com/ruby/psych It contains following changes from 3.0.0.beta1 * Preserve time zone offset when deserializing times https://github.com/ruby/psych/pull/316 * Enable YAML serialization of Ruby delegators https://github.com/ruby/psych/pull/158 ------------------------------------------------------------------------ r59100 | ko1 | 2017-06-16 13:04:53 +0900 (Fri, 16 Jun 2017) | 4 lines require 'bigdecimal' * test/json/json_parser_test.rb: this test needs bigdecimal. ------------------------------------------------------------------------ r59099 | hsbt | 2017-06-16 12:04:46 +0900 (Fri, 16 Jun 2017) | 3 lines Merge json-2.1.0 from https://github.com/flori/json https://github.com/flori/json/blob/master/CHANGES.md#2017-04-18-210 ------------------------------------------------------------------------ r59098 | svn | 2017-06-16 10:53:16 +0900 (Fri, 16 Jun 2017) | 1 line * 2017-06-16 ------------------------------------------------------------------------ r59097 | nobu | 2017-06-16 10:53:15 +0900 (Fri, 16 Jun 2017) | 1 line removed ruby_error_print ------------------------------------------------------------------------ r59096 | usa | 2017-06-15 23:04:29 +0900 (Thu, 15 Jun 2017) | 7 lines Clear `DESTDIR` when running make * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): `DESTDIR` is the drive letter of the ruby installed path as default on mswin, but not builddir of the ruby. this causes spec errors if the drive letter is different in the installed path and builddir. ------------------------------------------------------------------------ r59095 | eregon | 2017-06-15 22:34:32 +0900 (Thu, 15 Jun 2017) | 1 line Update to ruby/spec@c730f07 ------------------------------------------------------------------------ r59094 | svn | 2017-06-15 21:48:54 +0900 (Thu, 15 Jun 2017) | 1 line * properties. ------------------------------------------------------------------------ r59093 | eregon | 2017-06-15 21:48:52 +0900 (Thu, 15 Jun 2017) | 1 line Update to ruby/spec@cd1b911 ------------------------------------------------------------------------ r59092 | eregon | 2017-06-15 21:48:26 +0900 (Thu, 15 Jun 2017) | 1 line Update to ruby/mspec@d900a49 ------------------------------------------------------------------------ r59091 | nobu | 2017-06-15 20:51:39 +0900 (Thu, 15 Jun 2017) | 1 line Revert r59084, see r57060 ------------------------------------------------------------------------ r59090 | a_matsuda | 2017-06-15 19:43:17 +0900 (Thu, 15 Jun 2017) | 10 lines Don't pollute toplevel by an IRB internal method There actually are some libraries that requires 'irb' such as byebug, and when 'irb' is required, it requires irb/src_encoding.rb, then it defines the toplevel default_src_encoding method that is visible from anywhere in the end users' apps. Here's a quick oneliner that shows what's happening. % ruby -rpry-byebug -e 'p private_methods(false)' [:include, :using, :define_method, :public, :private, :DelegateClass, :default_src_encoding] ------------------------------------------------------------------------ r59089 | ko1 | 2017-06-15 16:16:17 +0900 (Thu, 15 Jun 2017) | 4 lines Prohibit SystemStackError while GC. * vm_insnhelper.c (rb_threadptr_stack_overflow): fatal on GC [Bug #13662] ------------------------------------------------------------------------ r59088 | nobu | 2017-06-15 12:12:32 +0900 (Thu, 15 Jun 2017) | 8 lines common.mk: tweaked packages order * common.mk (dist): tweaked packages order by $(DISTPKGS). .tar.gz comes first for the hash values in downloads page, then popular .zip. * tool/make-snapshot: "all" in -packages means all of the rest package types now. ------------------------------------------------------------------------ r59087 | nobu | 2017-06-15 11:39:06 +0900 (Thu, 15 Jun 2017) | 1 line make-snapshot: colorize [ci skip] ------------------------------------------------------------------------ r59086 | nobu | 2017-06-15 11:33:57 +0900 (Thu, 15 Jun 2017) | 1 line make-snapshot: suppress output from 7z [ci skip] ------------------------------------------------------------------------ r59085 | svn | 2017-06-15 11:33:56 +0900 (Thu, 15 Jun 2017) | 1 line * 2017-06-15 ------------------------------------------------------------------------ r59084 | nobu | 2017-06-15 11:33:56 +0900 (Thu, 15 Jun 2017) | 1 line make-snapshot: prefer default commands over 7z [ci skip] ------------------------------------------------------------------------ r59083 | nobu | 2017-06-14 23:02:33 +0900 (Wed, 14 Jun 2017) | 4 lines proc.c: infect inspect result * proc.c (method_inspect): the result should be infected by the object. ------------------------------------------------------------------------ r59082 | nobu | 2017-06-14 22:08:50 +0900 (Wed, 14 Jun 2017) | 1 line test/ruby/test_method.rb: refined [ruby-core:81666] [Bug #13656] ------------------------------------------------------------------------ r59081 | rhe | 2017-06-14 18:49:09 +0900 (Wed, 14 Jun 2017) | 36 lines openssl: import v2.0.4 Import Ruby/OpenSSL 2.0.4. Only bug (and typo) fixes. The full commit history since v2.0.3 (imported at r57482) can be found at: https://github.com/ruby/openssl/compare/v2.0.3...v2.0.4 This contains the fix for [Bug #11033]. ---------------------------------------------------------------- Jun Aruga (1): Update .travis.yml and Dockerfile Kazuki Yamaguchi (9): test/test_pkey_ec: do not use dummy 0 order test/test_ssl: fix typo in test_sysread_and_syswrite ssl: check return value of SSL_set_fd() Fix typos test/test_x509store: skip OpenSSL::TestX509Store#test_set_errors tool/sync-with-trunk: 'LASY' -> 'LAST' x509store: clear error queue after calling X509_LOOKUP_load_file() extconf.rb: simplify searching libraries logic Ruby/OpenSSL 2.0.4 SHIBATA Hiroshi (1): Fix typos Vladimir Rybas (1): Fix documentation for OpenSSL::Cipher#final nobu (2): openssl: fix broken openssl check openssl: fix broken openssl check usa (1): Search SSL libraries by testing various filename patterns ------------------------------------------------------------------------ r59080 | nobu | 2017-06-14 15:03:55 +0900 (Wed, 14 Jun 2017) | 5 lines proc.c: skip prepended modules * proc.c (method_super_method): skip prepended modules and continue from the super class of the original class. [ruby-core:81666] [Bug #13656] ------------------------------------------------------------------------ r59079 | nobu | 2017-06-14 14:10:30 +0900 (Wed, 14 Jun 2017) | 4 lines compile.c: dump and error before allocation * compile.c (iseq_set_sequence): separate instruction dump and error, before allocation of sequence. ------------------------------------------------------------------------ r59078 | ko1 | 2017-06-14 13:27:14 +0900 (Wed, 14 Jun 2017) | 5 lines simply call xfree(). * compile.c (BADINSN_ERROR): mixing (void) and (int) will fail solaris compiler. [ruby-core:81668], [Bug #13658] ------------------------------------------------------------------------ r59077 | svn | 2017-06-14 11:26:19 +0900 (Wed, 14 Jun 2017) | 1 line * 2017-06-14 ------------------------------------------------------------------------ r59076 | ko1 | 2017-06-14 11:26:18 +0900 (Wed, 14 Jun 2017) | 6 lines remove OPT_CALL_CFUNC_WITHOUT_FRAME. * vm_core.h (OPT_CALL_CFUNC_WITHOUT_FRAME): removed because nobody use it. This optimization tries to call C-methods without pushing VM frames, however no big improvements compare with this complexity. ------------------------------------------------------------------------ r59075 | nobu | 2017-06-13 12:20:12 +0900 (Tue, 13 Jun 2017) | 2 lines * compile.c (dump_disasm_list_with_cursor): replace with dump_disasm_list_with_cursor_dest. ------------------------------------------------------------------------ r59074 | ko1 | 2017-06-13 11:52:33 +0900 (Tue, 13 Jun 2017) | 5 lines fix to free unallocated memory. * compile.c (iseq_set_sequence): initialize with NULL for line_info_table and generated_iseq and check NULL at BADINSN_ERROR. ------------------------------------------------------------------------ r59073 | nobu | 2017-06-13 10:31:32 +0900 (Tue, 13 Jun 2017) | 4 lines compile.c: refine error message * compile.c (insn_set_sc_state): dump the whole instructions and mark the destination when label state mismatch. ------------------------------------------------------------------------ r59072 | svn | 2017-06-13 10:04:57 +0900 (Tue, 13 Jun 2017) | 1 line * 2017-06-13 ------------------------------------------------------------------------ r59071 | nobu | 2017-06-13 10:04:56 +0900 (Tue, 13 Jun 2017) | 1 line compile.c: refine error messages ------------------------------------------------------------------------ r59070 | k0kubun | 2017-06-12 20:09:10 +0900 (Mon, 12 Jun 2017) | 5 lines array.c: [DOC] Make it clear that #<< modifies receiver This patch is sent from @selmertsx (morioka shuhei). [fix GH-1646] ------------------------------------------------------------------------ r59069 | ko1 | 2017-06-12 16:58:23 +0900 (Mon, 12 Jun 2017) | 1 line add a comment for rb_thread_mark() ------------------------------------------------------------------------ r59068 | ko1 | 2017-06-12 16:49:33 +0900 (Mon, 12 Jun 2017) | 8 lines remove rb_blocking_region_buffer::oldubf. * thread.c (rb_blocking_region_buffer): remove oldubf because ubf should be NULL just before ubf setting. * thread.c (set_unblock_function, reset_unblock_function): rename to unblock_function_set() and unblock_function_clear() respectively. ------------------------------------------------------------------------ r59067 | nobu | 2017-06-12 15:31:02 +0900 (Mon, 12 Jun 2017) | 4 lines unused functions * thread_win32.c: native_cond_signal, native_cond_wait, native_cond_initialize, native_cond_destroy are not used now. ------------------------------------------------------------------------ r59066 | ko1 | 2017-06-12 13:52:25 +0900 (Mon, 12 Jun 2017) | 15 lines remove ruby_kill() introduced for [Bug #7951]. * thread.c (rbuy_kill): removed. This function is used with SIGSEGV, SIGBUS, SIGKILL, SIGILL, SIGFPE and SIGSTOP and these signals are affect immediately. So that `kill(2)' is enough for them. * signal.c (rb_f_kill): ditto. * vm_core.h (rb_thread_t::interrupt_cond): removed because only `ruby_kill()' uses this field. * test/ruby/test_signal.rb: Without this patch sending SIGSTOP to own process wait another interrupt even if another process sends SIGCONT. ------------------------------------------------------------------------ r59065 | nobu | 2017-06-12 13:35:53 +0900 (Mon, 12 Jun 2017) | 3 lines iseq.c: preserve encoding * iseq.c (iseqw_inspect): preserve path encoding in the result. ------------------------------------------------------------------------ r59064 | nobu | 2017-06-12 13:35:52 +0900 (Mon, 12 Jun 2017) | 1 line gc.c: duplicate rb_iseq_path by RSTRING_PTR ------------------------------------------------------------------------ r59063 | ko1 | 2017-06-12 11:20:09 +0900 (Mon, 12 Jun 2017) | 7 lines * proc.c (get_local_variable_ptr): return found env ptr. Returned env will be used by write barrier at `bind_local_variable_set()'. [Bug #13605] * test/ruby/test_proc.rb: add a test for this issue. ------------------------------------------------------------------------ r59062 | svn | 2017-06-12 09:18:31 +0900 (Mon, 12 Jun 2017) | 1 line * 2017-06-12 ------------------------------------------------------------------------ r59061 | nobu | 2017-06-12 09:18:30 +0900 (Mon, 12 Jun 2017) | 4 lines win32.c: rb_dir_getwd_ospath * win32/win32.c (rb_dir_getwd_ospath): Windows implementation moved from dir.c. get rid of freeing malloced memory by xfree. ------------------------------------------------------------------------ r59060 | nobu | 2017-06-11 20:21:01 +0900 (Sun, 11 Jun 2017) | 4 lines expand ruby_sourcefile * compile.c: expand ruby_sourcefile not to evaluate twice in RSTRING_PTR. ------------------------------------------------------------------------ r59059 | svn | 2017-06-11 14:36:57 +0900 (Sun, 11 Jun 2017) | 1 line * 2017-06-11 ------------------------------------------------------------------------ r59058 | nobu | 2017-06-11 14:36:56 +0900 (Sun, 11 Jun 2017) | 1 line configure.in: link the DWARF debug information ------------------------------------------------------------------------ r59057 | svn | 2017-06-10 19:26:33 +0900 (Sat, 10 Jun 2017) | 1 line * 2017-06-10 ------------------------------------------------------------------------ r59056 | nobu | 2017-06-10 19:26:32 +0900 (Sat, 10 Jun 2017) | 7 lines enumerator.c: fix nested maps * enumerator.c (lazy_map_proc, lazy_grep_iter_proc): marks values returned by blocks are not packed in the case of nested maps, so that the result will be same as non-lazy version. based on the patch by akihikodaki (Akihiko Odaki) at [ruby-core:81638], without GCC extension. [Bug#13648] ------------------------------------------------------------------------ r59055 | nobu | 2017-06-09 23:42:15 +0900 (Fri, 09 Jun 2017) | 6 lines thread_pthread.c: workaround for valgrind on Mac * thread.c: revert r59053. * thread_pthread.c (rb_thread_create_timer_thread): needs more stack space for valgrind. ------------------------------------------------------------------------ r59054 | nobu | 2017-06-09 23:42:14 +0900 (Fri, 09 Jun 2017) | 1 line signal.c: do not disable handlers to dump core ------------------------------------------------------------------------ r59053 | nobu | 2017-06-09 22:58:09 +0900 (Fri, 09 Jun 2017) | 9 lines thread.c: workaround for valgrind on Mac OS X Without this hack, pthread_join() in rb_thread_stop_timer_thread() segfaults. ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G1510 valgrind-3.12.0 ------------------------------------------------------------------------ r59052 | nobu | 2017-06-09 22:02:13 +0900 (Fri, 09 Jun 2017) | 4 lines signal.c: no sigsegv handler with valgrind * signal.c: disable handling signals to dump core, if installing unreserved signals failed, not valgrind to hang on Mac OS. ------------------------------------------------------------------------ r59051 | nobu | 2017-06-09 17:30:24 +0900 (Fri, 09 Jun 2017) | 1 line signal.c: warn at unresserved signals ------------------------------------------------------------------------ r59050 | hsbt | 2017-06-09 12:20:03 +0900 (Fri, 09 Jun 2017) | 5 lines Update bundled gems to latest versions. * did_you_mean 1.1.2 * minitest 5.10.2 * xmlrpc 0.3.0 ------------------------------------------------------------------------ r59049 | a_matsuda | 2017-06-09 10:31:36 +0900 (Fri, 09 Jun 2017) | 7 lines Fix typo. Patch by: Sarah Duve Signed-off-by: Akira Matsuda <ronnie@dio.jp> [Fix GH-1643] [ci skip] ------------------------------------------------------------------------ r59048 | svn | 2017-06-09 05:58:04 +0900 (Fri, 09 Jun 2017) | 1 line * 2017-06-09 ------------------------------------------------------------------------ r59047 | normal | 2017-06-09 05:58:03 +0900 (Fri, 09 Jun 2017) | 13 lines tool/runruby.rb: test with smallest possible machine stack Lets ensure none of our C functions use too much stack space and fix all excessive stack usage before releasing the next version. Reducing C stack usage should reduce conservative GC scanning time and improve performance. If there are platform-dependent test failures; excessive stack usage should be fixed; rather than increasing minimum values or removing these envs from testing. * tool/runruby.rb: use smallest possible machine stack size [ruby-core:81597] [Feature #13637] ------------------------------------------------------------------------ r59046 | nobu | 2017-06-08 16:41:38 +0900 (Thu, 08 Jun 2017) | 6 lines signal.c: relax installation failure * signal.c (install_sighandler): ignore failure at unreserved signals. e.g., SIGUSR2 fails under valgrind. * signal.c (install_sighandler_fail): refine [BUG] message. ------------------------------------------------------------------------ r59045 | ko1 | 2017-06-08 14:22:49 +0900 (Thu, 08 Jun 2017) | 5 lines vm_block_handler_verify() should not return any value. * vm_core.h (vm_block_handler_verify): this function only checks the given block handler with VM_ASSERT(). No need to return any value. ------------------------------------------------------------------------ r59044 | svn | 2017-06-08 13:13:52 +0900 (Thu, 08 Jun 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r59043 | ko1 | 2017-06-08 13:13:51 +0900 (Thu, 08 Jun 2017) | 18 lines check break target correctly. * compile.c (iseq_compile_each0): save target child_iseq in the catch-table for break. This iseq is not for continuation, but for search key at vm_throw_start(). * vm_insnhelper.c (vm_throw_start): check saved iseq first. * iseq.h: add comment for it. * test/ruby/test_iterator.rb (test_ljump): add a test for the issue: def call b; b.call; end call(Proc.new{break}){} #=> (1) should raise LocalJumpError call(Proc.new{break}) #=> (2) shoudd raies LocalJumpError, too. but (1) doesn't raise LocalJumpError. This issue is reported by Matz. ------------------------------------------------------------------------ r59042 | ko1 | 2017-06-08 13:06:07 +0900 (Thu, 08 Jun 2017) | 5 lines use NULL instead of 0. * compile.c: use NULL instead of 0 for ADD_CATCH_ENTRY() to specify don't pass iseq. ------------------------------------------------------------------------ r59041 | nobu | 2017-06-08 11:07:42 +0900 (Thu, 08 Jun 2017) | 4 lines ruby.c: script name in UTF-8 * ruby.c (process_options): keep script name in UTF-8 if UTF8_PATH to get rid of loss by conversion. ------------------------------------------------------------------------ r59040 | nobu | 2017-06-08 10:58:44 +0900 (Thu, 08 Jun 2017) | 6 lines file.c: realpath in OS path encoding * dir.c (rb_dir_getwd_ospath): return cwd path in the OS path encoding. * file.c (rb_realpath_internal): work in the OS path encoding ------------------------------------------------------------------------ r59039 | nobu | 2017-06-08 10:58:42 +0900 (Thu, 08 Jun 2017) | 1 line appveyor.yml: show encodings [ci skip] ------------------------------------------------------------------------ r59038 | nobu | 2017-06-08 10:19:44 +0900 (Thu, 08 Jun 2017) | 1 line appveyor.yml: enable exam on AppVeyor ------------------------------------------------------------------------ r59037 | svn | 2017-06-08 07:25:24 +0900 (Thu, 08 Jun 2017) | 1 line * 2017-06-08 ------------------------------------------------------------------------ r59036 | odaira | 2017-06-08 07:25:23 +0900 (Thu, 08 Jun 2017) | 2 lines * tool/make-snapshot: prefer to use a make command set in the MAKE or make env variable. ------------------------------------------------------------------------ r59035 | nobu | 2017-06-07 23:36:18 +0900 (Wed, 07 Jun 2017) | 4 lines load.c: get rid of side effects * load.c (rb_f_load, rb_require_internal): DTrace hooks should not have side effects, i.e., conversion to String. ------------------------------------------------------------------------ r59034 | svn | 2017-06-07 22:01:28 +0900 (Wed, 07 Jun 2017) | 1 line * properties. ------------------------------------------------------------------------ r59033 | kou | 2017-06-07 22:01:28 +0900 (Wed, 07 Jun 2017) | 6 lines rexml: add close tag check on end of document to StreamParser [ruby-core:81593] [Bug #13636] Reported by Anton Sivakov. Thanks!!! ------------------------------------------------------------------------ r59032 | normal | 2017-06-07 09:32:07 +0900 (Wed, 07 Jun 2017) | 7 lines common.mk: update dependencies after r58978 Using "tool/update-deps --fix" * common.mk (file.$(OBJEXT)): depend on id.h (rational.$(OBJEXT)): ditto (string.$(OBJEXT)): sort alphabetically ------------------------------------------------------------------------ r59031 | svn | 2017-06-07 09:32:03 +0900 (Wed, 07 Jun 2017) | 1 line * properties. ------------------------------------------------------------------------ r59030 | normal | 2017-06-07 09:32:02 +0900 (Wed, 07 Jun 2017) | 10 lines thread.c: avoid busy looping on rb_thread_fd_close We no longer use it this function, but extensions do, and we need to ensure it continues to work for them. * thread.c (rb_thread_fd_close): schedule other threads in loop * ext/-test-/thread_fd_close/thread_fd_close.c: new file * ext/-test-/thread_fd_close/depend: ditto * ext/-test-/thread_fd_close/extconf.rb: ditto * test/-ext-/thread_fd_close/test_thread_fd_close.rb: new test ------------------------------------------------------------------------ r59029 | svn | 2017-06-07 07:55:36 +0900 (Wed, 07 Jun 2017) | 1 line * 2017-06-07 ------------------------------------------------------------------------ r59028 | normal | 2017-06-07 07:55:35 +0900 (Wed, 07 Jun 2017) | 17 lines IO#close: do not enqueue redundant interrupts (take #2) Enqueuing multiple errors for one event causes spurious errors down the line, as reported by Nikolay Vashchenko in https://bugs.ruby-lang.org/issues/13632 This should fix bad interactions with test_race_gets_and_close in test/ruby/test_io.rb since we ensure rb_notify_fd_close continues returning the busy flag after enqueuing the interrupt. Backporting changes to 2.4 and earlier releases will be more challenging... * thread.c (rb_notify_fd_close): do not enqueue multiple interrupts [ruby-core:81581] [Bug #13632] * test/ruby/test_io.rb (test_single_exception_on_close): new test based on script from Nikolay ------------------------------------------------------------------------ r59027 | nobu | 2017-06-06 21:30:17 +0900 (Tue, 06 Jun 2017) | 1 line debug.c: fix breaking condtions ------------------------------------------------------------------------ r59026 | duerst | 2017-06-06 19:34:10 +0900 (Tue, 06 Jun 2017) | 10 lines add test_ill_formed_utf_8_replace to test recommended number of \uFFFD Add test method test_ill_formed_utf_8_replace to test/ruby/test_transcode.rb to check for the recommended number of \uFFFD replacement characters. This is the first part, using ill-formed prefixes, with suffixes up to the length of the original UTF-8 structure (including overlongs and the full 31-bit space.) For more details, see Unicode 9.0.0, Section 3.9, Best Practices for Using U+FFFD. ------------------------------------------------------------------------ r59025 | ko1 | 2017-06-06 16:11:28 +0900 (Tue, 06 Jun 2017) | 1 line re-revert r59020 ------------------------------------------------------------------------ r59024 | ko1 | 2017-06-06 16:10:19 +0900 (Tue, 06 Jun 2017) | 1 line revert r59023 because it contans unrelated developping code ------------------------------------------------------------------------ r59023 | ko1 | 2017-06-06 15:58:54 +0900 (Tue, 06 Jun 2017) | 1 line revert r59020 because it may fail some tests sometimes on some environment (http://ci.rvm.jp/). This revert is to check the reason of failures. ------------------------------------------------------------------------ r59022 | nobu | 2017-06-06 12:45:02 +0900 (Tue, 06 Jun 2017) | 1 line debug.c: parse locale and filesystem codepages ------------------------------------------------------------------------ r59021 | svn | 2017-06-06 09:13:48 +0900 (Tue, 06 Jun 2017) | 1 line * 2017-06-06 ------------------------------------------------------------------------ r59020 | normal | 2017-06-06 09:13:47 +0900 (Tue, 06 Jun 2017) | 10 lines IO#close: do not enqueue redundant interrupts Enqueuing multiple errors for one event causes spurious errors down the line, as reported by Nikolay Vashchenko in https://bugs.ruby-lang.org/issues/13632 * thread.c (rb_notify_fd_close): do not enqueue multiple interrupts [ruby-core:81581] [Bug #13632] * test/ruby/test_io.rb (test_single_exception_on_close): new test based on script from Nikolay ------------------------------------------------------------------------ r59019 | nobu | 2017-06-05 16:26:15 +0900 (Mon, 05 Jun 2017) | 4 lines win32.c: no locale * win32/win32.c (skipspace, w32_cmdvector): get rid of iswspace(), which is locale dependent. ------------------------------------------------------------------------ r59018 | ko1 | 2017-06-05 16:03:27 +0900 (Mon, 05 Jun 2017) | 1 line revert r59017 it fails ruby/test_lambda.rb ------------------------------------------------------------------------ r59017 | ko1 | 2017-06-05 15:57:20 +0900 (Mon, 05 Jun 2017) | 5 lines do not inform ``is_lambda". * vm_eval.c (yield_under): do not inform Proc is lambda or not. After that invoke_block_from_c_bh() checks it. ------------------------------------------------------------------------ r59016 | ko1 | 2017-06-05 15:15:28 +0900 (Mon, 05 Jun 2017) | 18 lines rename functions and clean parameters. * internal.h (rb_yield_lambda): rename to rb_yield_force_blockarg() because this function prohibt lambda arg setup (strict setup). * vm.c (invoke_iseq_block_from_c): remove splattable argument because it is not used. * vm.c (invoke_block_from_c_splattable): rename to invoke_block_from_c_bh() because `splattable` doesn't make sense on current this function. Also accept `force_blockarg' parameter instead of `splattable` parameter. It is more clear. * vm.c (invoke_block_from_c_unsplattable): rename to invoke_block_from_c_proc() and accept `proc` instead of `block'. This function is used only by proc block invocation. ------------------------------------------------------------------------ r59015 | svn | 2017-06-05 14:43:59 +0900 (Mon, 05 Jun 2017) | 1 line * 2017-06-05 ------------------------------------------------------------------------ r59014 | ko1 | 2017-06-05 14:43:58 +0900 (Mon, 05 Jun 2017) | 5 lines remove arg_setup_lambda. * vm_args.c (enum arg_setup_type): remove arg_setup_lambda because it is same as arg_setup_method. ------------------------------------------------------------------------ r59013 | nobu | 2017-06-04 16:29:52 +0900 (Sun, 04 Jun 2017) | 1 line load.c: encode to OS path outside PUSH_TAG ------------------------------------------------------------------------ r59012 | nobu | 2017-06-04 15:24:04 +0900 (Sun, 04 Jun 2017) | 6 lines test_require.rb: fix expected path * test/ruby/test_require.rb (test_require_with_unc): remove extra slash. the result of File.expand_path has a slash just follows the drive letter. https://github.com/ruby/ruby/commit/4ef849bd9014746821402e21053a53ea61b3690d#commitcomment-22391133 ------------------------------------------------------------------------ r59011 | stomar | 2017-06-04 05:17:00 +0900 (Sun, 04 Jun 2017) | 5 lines array.c: docs for Array#{sort,sort!} * array.c: [DOC] make example in the docs for Array#{sort,sort!} match the call-seq and description by using the same block vars. Based on a patch by Roque Pinel (repinel). [Fix GH-1628] ------------------------------------------------------------------------ r59010 | svn | 2017-06-04 02:11:44 +0900 (Sun, 04 Jun 2017) | 1 line * 2017-06-04 ------------------------------------------------------------------------ r59009 | nobu | 2017-06-04 02:11:43 +0900 (Sun, 04 Jun 2017) | 5 lines test_require.rb: ignore EPERM at UNC * test/ruby/test_require.rb (test_require_with_unc): ignore EPERM. GetFileAttributes and CreateFile with backup semantics fail at a symlink in a shared folder to another shared folder. ------------------------------------------------------------------------ r59008 | nobu | 2017-06-03 23:40:05 +0900 (Sat, 03 Jun 2017) | 4 lines file.c: preserve encoding * file.c (path_check_0): preserve encoding of path name in warning message. ------------------------------------------------------------------------ r59007 | nobu | 2017-06-03 21:47:11 +0900 (Sat, 03 Jun 2017) | 4 lines ruby.c: dladdr_path is not used on cygwin * ruby.c (dladdr_path): dladdr is provided on recent cygwin, but GetModuleFileNameW is used instead of it. ------------------------------------------------------------------------ r59006 | ko1 | 2017-06-03 19:07:44 +0900 (Sat, 03 Jun 2017) | 7 lines * vm_core.h: remove VM_FRAME_MAGIC_LAMBDA and introduce VM_FRAME_FLAG_LAMBDA. So that lambda block frame is VM_FRAME_MAGIC_BLOCK | VM_FRAME_FLAG_LAMBDA. * vm_core.h: remvoe VM_FRAME_MAGIC_PROC because nobody uses it. ------------------------------------------------------------------------ r59005 | nobu | 2017-06-03 18:35:43 +0900 (Sat, 03 Jun 2017) | 1 line test/ruby/test_require.rb: remove duplicate assertion ------------------------------------------------------------------------ r59004 | nobu | 2017-06-03 18:18:44 +0900 (Sat, 03 Jun 2017) | 5 lines test_require.rb: untouch default internal encoding * test/ruby/test_require.rb (assert_require_insecure_path): get rid of setting Encoding.default_internal, which affects load path conversion. ------------------------------------------------------------------------ r59003 | normal | 2017-06-03 10:04:30 +0900 (Sat, 03 Jun 2017) | 11 lines test: attempt to reduce failures in assert_cpu_usage_low Try to make this test less fragile by taking into account the worst case kernel timing resolution. [ruby-core:81540] * test/lib/test/unit/assertions.rb (assert_cpu_usage_low): clamp measurement to minimum measurable time and warn about tests being too short to measure * test/ruby/test_io.rb (test_copy_stream_no_busy_wait): remove pct kwarg and rely on assert_cpu_usage_low defaults ------------------------------------------------------------------------ r59002 | stomar | 2017-06-03 06:29:27 +0900 (Sat, 03 Jun 2017) | 5 lines string.c: docs for String#split * string.c: [DOC] clarify docs for String#split when called with limit and capture groups. Reported by Cichol Tsai. [ruby-core:81505] [Bug #13621] ------------------------------------------------------------------------ r59001 | svn | 2017-06-03 00:38:29 +0900 (Sat, 03 Jun 2017) | 1 line * 2017-06-03 ------------------------------------------------------------------------ r59000 | nobu | 2017-06-03 00:38:28 +0900 (Sat, 03 Jun 2017) | 1 line common.mk: show locale ------------------------------------------------------------------------ r58999 | nobu | 2017-06-02 23:52:49 +0900 (Fri, 02 Jun 2017) | 4 lines test_require.rb: assert_require_insecure_path * test/ruby/test_require.rb (assert_require_insecure_path): more tests for loading insecure path. ------------------------------------------------------------------------ r58998 | nobu | 2017-06-02 13:32:47 +0900 (Fri, 02 Jun 2017) | 4 lines test_require.rb: fallback encoding * test/ruby/test_require.rb (assert_require_nonascii_path): fallback when LANG=C. ------------------------------------------------------------------------ r58997 | nobu | 2017-06-02 13:10:36 +0900 (Fri, 02 Jun 2017) | 4 lines test_require.rb: filesystem encoding * test/ruby/test_require.rb (assert_require_nonascii_path): the path in error message is converted to filesystem encoding. ------------------------------------------------------------------------ r58996 | nobu | 2017-06-02 12:54:19 +0900 (Fri, 02 Jun 2017) | 4 lines file.c: preserve encoding * file.c (rb_find_file_safe): preserve encoding of path in SecurityError messages. ------------------------------------------------------------------------ r58995 | eregon | 2017-06-02 02:26:12 +0900 (Fri, 02 Jun 2017) | 1 line Fix DRb.start_service to use any available port ------------------------------------------------------------------------ r58994 | eregon | 2017-06-02 02:26:00 +0900 (Fri, 02 Jun 2017) | 4 lines Remove bad spec which cannot behave nicely in a multi-process environment * A system port might be taken by another process at any time. * There are no useful expectations in this spec. ------------------------------------------------------------------------ r58993 | eregon | 2017-06-02 02:25:48 +0900 (Fri, 02 Jun 2017) | 1 line Remove empty files in drb specs ------------------------------------------------------------------------ r58992 | eregon | 2017-06-02 02:08:59 +0900 (Fri, 02 Jun 2017) | 3 lines Create the file in the File::TMPFILE spec in its own directory * Avoids failing the spec if rubyspec_temp is not empty. ------------------------------------------------------------------------ r58991 | eregon | 2017-06-02 02:08:47 +0900 (Fri, 02 Jun 2017) | 4 lines Open files in binary modes for copying in MSpec's #cp * See https://bugs.ruby-lang.org/issues/13570. * Found by MSP-Greg (Greg L). ------------------------------------------------------------------------ r58990 | ko1 | 2017-06-02 00:18:51 +0900 (Fri, 02 Jun 2017) | 5 lines make Dir object WB protected. * dir.c (dir_data_type): set RUBY_TYPED_WB_PROTECTED. Insert WBs for dir_data::path. ------------------------------------------------------------------------ r58989 | svn | 2017-06-02 00:12:15 +0900 (Fri, 02 Jun 2017) | 1 line * 2017-06-02 ------------------------------------------------------------------------ r58988 | ko1 | 2017-06-02 00:12:14 +0900 (Fri, 02 Jun 2017) | 5 lines make Binding object WB protected. * proc.c (ruby_binding_data_type): set RUBY_TYPED_WB_PROTECTED. Insert write barriers (WBs) to all of writes. ------------------------------------------------------------------------ r58987 | nobu | 2017-06-01 22:05:54 +0900 (Thu, 01 Jun 2017) | 4 lines load.c: convert by rb_get_path_check * load.c (rb_require_internal): convert to path name with the given safe level, without setting global safe level. ------------------------------------------------------------------------ r58986 | nobu | 2017-06-01 21:58:02 +0900 (Thu, 01 Jun 2017) | 1 line file.c: rb_check_funcall_default for fallback value ------------------------------------------------------------------------ r58985 | nobu | 2017-06-01 17:02:41 +0900 (Thu, 01 Jun 2017) | 7 lines vm_eval.c: fix rb_check_funcall_default * vm_eval.c (check_funcall_missing): revert r58984. should call method_missing if respond_to_missing is not redefined. * vm_eval.c (rb_check_funcall_default): return the default value if respond_to_missing and method_missing are not defined. ------------------------------------------------------------------------ r58984 | nobu | 2017-06-01 16:46:22 +0900 (Thu, 01 Jun 2017) | 4 lines vm_eval.c: fix for rb_check_funcall_default * vm_eval.c (check_funcall_missing): basic_obj_respond_to_missing returns Qundef if respond_to_missing is not redefined. ------------------------------------------------------------------------ r58983 | ko1 | 2017-06-01 13:48:05 +0900 (Thu, 01 Jun 2017) | 1 line fix failure on r58981 ------------------------------------------------------------------------ r58982 | nobu | 2017-06-01 13:43:03 +0900 (Thu, 01 Jun 2017) | 4 lines debug.c: more enums * debug.c (ruby_dummy_gdb_enums): add enums for RObject, RModule, RString, RArray. ------------------------------------------------------------------------ r58981 | duerst | 2017-06-01 13:38:03 +0900 (Thu, 01 Jun 2017) | 5 lines improve English for a warning message On DOSish systems, there is a warning message for \r\n line endings on shebang line. Improve this message from "shebang line ends with \r may cause a problem" to "shebang line ending with \r may cause problems". ------------------------------------------------------------------------ r58980 | svn | 2017-06-01 09:05:35 +0900 (Thu, 01 Jun 2017) | 1 line * 2017-06-01 ------------------------------------------------------------------------ r58979 | ko1 | 2017-06-01 09:05:33 +0900 (Thu, 01 Jun 2017) | 27 lines rename absolute_path to realpath internally and introduce pathobj. * vm_core.h: rename absolute_path to realpath because it is expected name. external APIs (#absolute_path methods) are remained. * vm_core.h: remove rb_iseq_location_struct::path and rb_iseq_location_struct::absolute_path and introduce pathobj. if given path equals to given absolute_path (and most of case it is true), pathobj is simply given path String. If it is not same, pathobj is Array and pathobj[0] is path and pathobj[1] is realpath. This size optimization reduce 8 bytes and sizeof(struct rb_iseq_constant_body) is 200 bytes -> 192 bytes on 64bit CPU. To support this change, the following functions are introduced: * pathobj_path() (defined in vm_core.h) * pathobj_realpath() (ditto) * rb_iseq_path() (decl. in vm_core.h) * rb_iseq_realpath() (ditto) * rb_iseq_pathobj_new() (ditto) * rb_iseq_pathobj_set() (ditto) * vm_core.h (rb_binding_t): use pathobj instead of path. If binding is given at eval methods, realpath (absolute_path) was caller's realpath. However, they should use binding's realpath. ------------------------------------------------------------------------ r58978 | watson1978 | 2017-05-31 21:30:57 +0900 (Wed, 31 May 2017) | 50 lines Improve performance of implicit type conversion To convert the object implicitly, it has had two parts in convert_type() which are 1. lookink up the method's id 2. calling the method Seems that strncmp() and strcmp() in convert_type() are slightly heavy to look up the method's id for type conversion. This patch will add and use internal APIs (rb_convert_type_with_id, rb_check_convert_type_with_id) to call the method without looking up the method's id when convert the object. Array#flatten -> 19 % up Array#+ -> 3 % up [ruby-dev:50024] [Bug #13341] [Fix GH-1537] ### Before Array#flatten 104.119k ({U+00B1} 1.1%) i/s - 525.690k in 5.049517s Array#+ 1.993M ({U+00B1} 1.8%) i/s - 10.010M in 5.024258s ### After Array#flatten 124.005k ({U+00B1} 1.0%) i/s - 624.240k in 5.034477s Array#+ 2.058M ({U+00B1} 4.8%) i/s - 10.302M in 5.019328s ### Test Code require 'benchmark/ips' class Foo def to_ary [1,2,3] end end Benchmark.ips do |x| ary = [] 100.times { |i| ary << i } array = [ary] x.report "Array#flatten" do |i| i.times { array.flatten } end x.report "Array#+" do |i| obj = Foo.new i.times { array + obj } end end ------------------------------------------------------------------------ r58977 | ko1 | 2017-05-31 15:46:57 +0900 (Wed, 31 May 2017) | 9 lines add debug counters for local variable (lavr) access. * debug_counter.h: add the following counters: * lvar_get: counter for lvar get. * lvar_get_dynamic: counter for lvar get from upper frames. * lvar_set: coutner for lvar set. * lvar_set_dynamic: coutner for lvar set from upper frames. * lvar_set_slowpath: counter for lavr set using slowpath. ------------------------------------------------------------------------ r58976 | nobu | 2017-05-31 15:40:49 +0900 (Wed, 31 May 2017) | 4 lines Makefile.sub: set ENABLE_SHARED [ci skip] * win32/Makefile.sub (LIBRUBY_LDSHARED): mswin build always enables shared. ------------------------------------------------------------------------ r58975 | nobu | 2017-05-31 15:03:13 +0900 (Wed, 31 May 2017) | 3 lines common.mk: lldb [ci skip] * common.mk (lldb, lldb-ruby): add targets to debug with lldb. ------------------------------------------------------------------------ r58974 | nobu | 2017-05-31 11:42:10 +0900 (Wed, 31 May 2017) | 4 lines lldb_cruby.py: eval outside frames * misc/lldb_cruby.py (lldb_rp): evaluate without frames when no process is running, and show error messages. ------------------------------------------------------------------------ r58973 | svn | 2017-05-31 03:17:56 +0900 (Wed, 31 May 2017) | 1 line * 2017-05-31 ------------------------------------------------------------------------ r58972 | stomar | 2017-05-31 03:17:55 +0900 (Wed, 31 May 2017) | 8 lines object.c: improve docs * object.c: [DOC] add an example for Object#yield_self that better illustrates its purpose; other small improvements. Reported by Vitaly Tatarintsev (ck3g). Patch by Marcus Stollsteimer. [Fix GH-1637] * object.c: [DOC] improve docs for Object#{itself,tap}. ------------------------------------------------------------------------ r58971 | nobu | 2017-05-30 22:12:22 +0900 (Tue, 30 May 2017) | 7 lines enum.c: check if reentered * enum.c (cmpint_reenter_check): extract from nmin_cmp and nmin_block_cmp. * enum.c (nmin_cmp): check if reentered before rb_cmpint. [Feature #13437] ------------------------------------------------------------------------ r58970 | nobu | 2017-05-30 21:47:58 +0900 (Tue, 30 May 2017) | 1 line enum.c: rb_check_funcall_default for fallback value ------------------------------------------------------------------------ r58969 | nobu | 2017-05-30 20:59:26 +0900 (Tue, 30 May 2017) | 1 line test_rubyoptions.rb: ruby-runner sets $0 to install name now ------------------------------------------------------------------------ r58968 | watson1978 | 2017-05-30 18:00:56 +0900 (Tue, 30 May 2017) | 68 lines Improve performance of Enumerable#{sort_by,min_by,max_by,minmax_by} This is totally same approach with r58964. enum.c (sort_by_cmp): use OPTIMIZED_CMP() to compare the objects instead of `<=>' method dispatching for Fixnum/Float/String object. enum.c (nmin_cmp): ditto. enum.c (min_by_i): ditto. enum.c (max_by_i): ditto. enum.c (minmax_by_i_update): ditto. enum.c (minmax_by_i): ditto. Enumerable#sort_by -> 51 % up Enumerable#min_by(n) -> 34 % up Enumerable#min_by -> 37 % up Enumerable#max_by(n) -> 61 % up Enumerable#max_by -> 40 % up Enumerable#minmax_by -> 67 % up [ruby-core:80689] [Bug #13437] [Fix GH-1584] ### Before Enumerable#sort_by 5.692k ({U+00B1} 2.2%) i/s - 28.611k in 5.028861s Enumerable#min_by(n) 8.496k ({U+00B1} 0.5%) i/s - 43.146k in 5.078394s Enumerable#min_by 8.678k ({U+00B1} 0.5%) i/s - 43.911k in 5.060128s Enumerable#max_by(n) 3.306k ({U+00B1} 3.0%) i/s - 16.562k in 5.014727s Enumerable#max_by 8.322k ({U+00B1} 2.8%) i/s - 42.400k in 5.099400s Enumerable#minmax_by 6.769k ({U+00B1} 2.6%) i/s - 34.100k in 5.041354s ### After Enumerable#sort_by 8.591k ({U+00B1} 3.0%) i/s - 43.316k in 5.046836s Enumerable#min_by(n) 11.489k ({U+00B1} 1.2%) i/s - 57.732k in 5.025504s Enumerable#min_by 11.835k ({U+00B1} 2.7%) i/s - 60.150k in 5.086450s Enumerable#max_by(n) 5.322k ({U+00B1} 1.1%) i/s - 26.650k in 5.008289s Enumerable#max_by 11.705k ({U+00B1} 0.6%) i/s - 59.262k in 5.062997s Enumerable#minmax_by 11.323k ({U+00B1} 1.3%) i/s - 57.018k in 5.036565s ### Test code require 'benchmark/ips' Benchmark.ips do |x| enum = (1..1000).to_a.to_enum x.report "Enumerable#sort_by" do enum.sort_by { |a| a } end x.report "Enumerable#min_by(n)" do enum.min_by(2) { |a| a } end x.report "Enumerable#min_by" do enum.min_by { |a| a } end x.report "Enumerable#max_by(n)" do enum.max_by(2) { |a| a } end x.report "Enumerable#max_by" do enum.max_by { |a| a } end x.report "Enumerable#minmax_by" do enum.minmax_by { |a| a } end end ------------------------------------------------------------------------ r58967 | ko1 | 2017-05-30 16:05:58 +0900 (Tue, 30 May 2017) | 4 lines add parameter names. * vm_core.h: add parameter names for rb_iseq_new*. ------------------------------------------------------------------------ r58966 | naruse | 2017-05-30 15:50:35 +0900 (Tue, 30 May 2017) | 3 lines Solaris 10 x86 raseis SEGV http://rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20170527T221806Z.diff.html.gz ------------------------------------------------------------------------ r58965 | duerst | 2017-05-30 14:43:41 +0900 (Tue, 30 May 2017) | 5 lines Change max byte length of UTF-8 to 4 bytes In enc/utf_8.c, change maximum byte length of UTF-8 to 4 bytes (from 6) to conform to definition of UTF-8. This closes issue #13590. (This is a retry of r58954, after issue #13590 has been addressed.) ------------------------------------------------------------------------ r58964 | watson1978 | 2017-05-30 11:57:33 +0900 (Tue, 30 May 2017) | 32 lines Improve performance of Range#{min,max} range.c (range_min): use OPTIMIZED_CMP() to compare the objects instead of `<=>' method dispatching for Fixnum/Float/String object inside Range object. range.c (range_max): ditto. Range#min -> 34 % up Range#max -> 44 % up [ruby-core:80713] [Bug #13443] [Fix GH-1585] ### Before Range#min 8.428M ({U+00B1} 1.3%) i/s - 42.141M in 5.000952s Range#max 8.157M ({U+00B1} 1.3%) i/s - 40.852M in 5.009297s ### After Range#min 11.269M ({U+00B1} 1.2%) i/s - 56.388M in 5.004611s Range#max 11.764M ({U+00B1} 1.3%) i/s - 58.856M in 5.003820s ### Test code require 'benchmark/ips' Benchmark.ips do |x| x.report "Range#min" do |i| i.times { (1..100).min } end x.report "Range#max" do |i| i.times { (1..100).max } end end ------------------------------------------------------------------------ r58963 | svn | 2017-05-30 02:56:47 +0900 (Tue, 30 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58962 | eregon | 2017-05-30 02:56:46 +0900 (Tue, 30 May 2017) | 1 line Clean up a bit the Process.setpriority specs ------------------------------------------------------------------------ r58961 | eregon | 2017-05-30 02:56:34 +0900 (Tue, 30 May 2017) | 1 line Enable Process.setpriority for a single process on more platforms. ------------------------------------------------------------------------ r58960 | svn | 2017-05-30 00:34:46 +0900 (Tue, 30 May 2017) | 1 line * 2017-05-30 ------------------------------------------------------------------------ r58959 | nobu | 2017-05-30 00:34:45 +0900 (Tue, 30 May 2017) | 1 line Run in separate process/pgrp [Bug #13609] ------------------------------------------------------------------------ r58958 | eregon | 2017-05-29 20:19:42 +0900 (Mon, 29 May 2017) | 1 line Simplify, avoid extra exceptions and add test for concurrent mspec mkdir_p ------------------------------------------------------------------------ r58957 | k0kubun | 2017-05-29 19:53:54 +0900 (Mon, 29 May 2017) | 8 lines rubyspec: Fix method redefinition warning ruby/spec/rubyspec/library/erb/run_spec.rb:63: warning: method redefined; discarding old main ruby/spec/rubyspec/library/erb/result_spec.rb:53: warning: previous definition of main was here ruby/spec/rubyspec/library/erb/run_spec.rb:76: warning: method redefined; discarding old main1 ruby/spec/rubyspec/library/erb/result_spec.rb:67: warning: previous definition of main1 was here ruby/spec/rubyspec/library/erb/run_spec.rb:81: warning: method redefined; discarding old main2 ruby/spec/rubyspec/library/erb/result_spec.rb:72: warning: previous definition of main2 was here ------------------------------------------------------------------------ r58956 | k0kubun | 2017-05-29 19:22:47 +0900 (Mon, 29 May 2017) | 3 lines test/erb/test_erb.rb: Fix unused variable warning ruby/test/erb/test_erb.rb:575: warning: assigned but unused variable - foo ------------------------------------------------------------------------ r58955 | duerst | 2017-05-29 17:59:41 +0900 (Mon, 29 May 2017) | 5 lines revert r58954 temporarily Revert change to maximum of 4 bytes for UTF-8 characters at r58954 temporarily. This failed spec at https://travis-ci.org/ruby/ruby/builds/237086017, but it is totally unclear why. ------------------------------------------------------------------------ r58954 | duerst | 2017-05-29 17:41:23 +0900 (Mon, 29 May 2017) | 4 lines Change max byte length of UTF-8 to 4 bytes In enc/utf_8.c, change maximum byte length of UTF-8 to 4 bytes (from 6) to conform to definition of UTF-8. This closes issue #13590. ------------------------------------------------------------------------ r58953 | nobu | 2017-05-29 16:03:11 +0900 (Mon, 29 May 2017) | 4 lines fix up r58952 * spec/mspec/lib/mspec/helpers/fs.rb (Object#mkdir_p): rescue File.stat when the target does not exist. ------------------------------------------------------------------------ r58952 | nobu | 2017-05-29 15:53:05 +0900 (Mon, 29 May 2017) | 4 lines fix race condition * spec/mspec/lib/mspec/helpers/fs.rb (Object#mkdir_p): fix race condition when multi_exec. ------------------------------------------------------------------------ r58951 | nobu | 2017-05-29 15:39:42 +0900 (Mon, 29 May 2017) | 1 line tool/runruby.rb: exec ruby-runner ------------------------------------------------------------------------ r58950 | nobu | 2017-05-29 15:39:41 +0900 (Mon, 29 May 2017) | 1 line ruby-runner.c: replace argv[0] ------------------------------------------------------------------------ r58949 | nobu | 2017-05-29 14:19:51 +0900 (Mon, 29 May 2017) | 5 lines default.mspec: remove useless flags * spec/default.mspec: removed -I options for useless or non- existent paths from flags. there is no library scripts and .ext directory in the source directory. ------------------------------------------------------------------------ r58948 | naruse | 2017-05-29 01:41:31 +0900 (Mon, 29 May 2017) | 4 lines suppress warning: ambiguous first argument; put parentheses or a space even after `-' operator Introduced at r58905 http://rubyci.s3.amazonaws.com/ubuntu/ruby-trunk/log/20170526T153003Z.diff.html.gz ------------------------------------------------------------------------ r58947 | naruse | 2017-05-29 01:40:12 +0900 (Mon, 29 May 2017) | 3 lines Revert "Update to ruby/spec@2a047c8" This reverts commit 2531a1013b56a030f99ea4c2ee36e66dbf38a855. ------------------------------------------------------------------------ r58946 | svn | 2017-05-29 01:29:05 +0900 (Mon, 29 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58945 | svn | 2017-05-29 01:29:05 +0900 (Mon, 29 May 2017) | 1 line * 2017-05-29 ------------------------------------------------------------------------ r58944 | naruse | 2017-05-29 01:29:04 +0900 (Mon, 29 May 2017) | 8 lines Revert r58939 and r58942 This reverts following commits because it breaks mswinci * Update to ruby/spec@2a047c8 * Update to ruby/spec@ca32ae2 see also the result: http://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20170528T140014Z.fail.html.gz ------------------------------------------------------------------------ r58943 | nobu | 2017-05-28 23:17:25 +0900 (Sun, 28 May 2017) | 4 lines lldb_cruby.py: constants from the target * misc/lldb_cruby.py (lldb_init): get constants from ruby_dummy_gdb_enums in the target. ------------------------------------------------------------------------ r58942 | eregon | 2017-05-28 21:02:08 +0900 (Sun, 28 May 2017) | 1 line Update to ruby/spec@ca32ae2 ------------------------------------------------------------------------ r58941 | svn | 2017-05-28 20:30:57 +0900 (Sun, 28 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58940 | eregon | 2017-05-28 20:30:55 +0900 (Sun, 28 May 2017) | 1 line Add tool to pull latest mspec/spec when commits have been synchronized ------------------------------------------------------------------------ r58939 | eregon | 2017-05-28 20:30:42 +0900 (Sun, 28 May 2017) | 1 line Update to ruby/spec@2a047c8 ------------------------------------------------------------------------ r58938 | nobu | 2017-05-28 18:49:30 +0900 (Sun, 28 May 2017) | 4 lines ruby.c: file in load_file argument * ruby.c (load_file): move opened file to an argument, to reduce open/close calls in the near future. ------------------------------------------------------------------------ r58937 | nobu | 2017-05-28 18:49:29 +0900 (Sun, 28 May 2017) | 5 lines ruby.c: shrink ruby_cmdline_options_t * ruby.c (ruby_cmdline_options_t): reordered members and turned simple flags into bit fields to reduce the size (136->104 on LP64). ------------------------------------------------------------------------ r58936 | normal | 2017-05-28 14:39:29 +0900 (Sun, 28 May 2017) | 14 lines test/ruby/test_io.rb: adjust CPU usage check to 10% I miscalculated for r58934, since we sleep 100ms, and the worst possible case is 100 Hz in the kernel meaning we only have 10ms resolution. So, we need to increase our CPU percentage to >= 10% for this. This should be more than enough for our CI machines which have 300 Hz kernels [ruby-core:81429]: http://ci.rvm.jp/results/trunk-test@sasada-8core/1495942555 * test/ruby/test_io.rb (test_copy_stream_no_busy_wait): override default percentage ------------------------------------------------------------------------ r58935 | k0kubun | 2017-05-28 10:48:11 +0900 (Sun, 28 May 2017) | 44 lines process.c: Use getrusage(2) in Process.times if getrusage(2) is available, to improve precision of Process.times and its user like lib/benchmark.rb. On macOS, since getrusage(2) has better precision than times(3), they are much improved like: * Before Process.times => #<struct Process::Tms utime=0.56, stime=0.35, cutime=0.04, cstime=0.03> puts Benchmark.measure { "a" * 1_000_000_000 } 0.340000 0.310000 0.650000 ( 0.674025) * After Process.times => #<struct Process::Tms utime=0.561899, stime=0.35076, cutime=0.046483, cstime=0.038929> puts Benchmark.measure { "a" * 1_000_000_000 } 0.343223 0.310037 0.653260 ( 0.674025) On Linux, since struct rusage from getrusage(2) is used instead of struct tms from times(2), they are slightly improved like: * Before Process.times => #<struct Process::Tms utime=0.43, stime=0.11, cutime=0.0, cstime=0.0> puts Benchmark.measure { "a" * 1_000_000_000 } 0.120000 0.040000 0.170000 ( 0.171621) * After Process.times => #<struct Process::Tms utime=0.432, stime=0.116, cutime=0.0, cstime=0.0> puts Benchmark.measure { "a" * 1_000_000_000 } 0.124000 0.048000 0.172000 ( 0.171621) [ruby-dev:49471] [Feature #11952] ------------------------------------------------------------------------ r58934 | normal | 2017-05-28 10:43:38 +0900 (Sun, 28 May 2017) | 11 lines tests: increase CPU percentage threshold for assert_cpu_usage_low When sleeping for the tick rate of 100ms (defined in thread_pthread.c) as we do in test/ruby/test_io.rb (test_copy_stream_no_busy_wait), it may not be possible to measure with <= 10ms resolution on 100HZ systems (CONFIG_HZ in the Linux kernel). So increase the threshold to 15ms (10ms + 5ms slack for slow systems). * test/lib/test/unit/assertions.rb (assert_cpu_usage_low): increase pct default value [ruby-core:81427] ------------------------------------------------------------------------ r58933 | svn | 2017-05-28 06:55:03 +0900 (Sun, 28 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58932 | svn | 2017-05-28 06:55:03 +0900 (Sun, 28 May 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r58931 | eregon | 2017-05-28 06:55:02 +0900 (Sun, 28 May 2017) | 1 line Update to ruby/spec@2795010 ------------------------------------------------------------------------ r58930 | eregon | 2017-05-28 06:54:38 +0900 (Sun, 28 May 2017) | 1 line Update to ruby/mspec@6c95759 ------------------------------------------------------------------------ r58929 | svn | 2017-05-28 02:04:32 +0900 (Sun, 28 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58928 | svn | 2017-05-28 02:04:32 +0900 (Sun, 28 May 2017) | 1 line * 2017-05-28 ------------------------------------------------------------------------ r58927 | naruse | 2017-05-28 02:04:31 +0900 (Sun, 28 May 2017) | 1 line Initial commit of LLDB port of debug utility ------------------------------------------------------------------------ r58926 | k0kubun | 2017-05-27 22:54:09 +0900 (Sat, 27 May 2017) | 3 lines bootstraptest/test_insns.rb: Fix typo on test message. "torexp" insn does not exist. ------------------------------------------------------------------------ r58925 | normal | 2017-05-27 17:26:47 +0900 (Sat, 27 May 2017) | 13 lines rb_wait_for_single_fd: do not OOM or segfault with invalid FD on select() Instead, match the poll() implementation used on Linux for now; as the Linux poll(2) manpage describes using negative FD to easily ignore an FD in a larger FD set while (sleeping the given timeout). I'm not entirely sure if matching poll() behavior is a good idea for a single FD, but it's better than segfaulting or NoMemoryError. * thread.c (init_set_fd): ignore negative FD * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb (test_wait_for_invalid_fd): check values which may trigger segfaults or OOM ------------------------------------------------------------------------ r58924 | normal | 2017-05-27 16:23:02 +0900 (Sat, 27 May 2017) | 8 lines test for IO.copy_stream CPU usage (r58534) I'm likely to make similar mistakes in the future when working on Fiber auto-scheduling. Start adding assertions for existing code, first. * test/ruby/test_io.rb (test_copy_stream_no_busy_wait): added * test/lib/test/unit/assertions.rb (assert_cpu_usage_low): added ------------------------------------------------------------------------ r58923 | normal | 2017-05-27 16:18:52 +0900 (Sat, 27 May 2017) | 4 lines Revert "common: "test-all" depends on "exts" target" This reverts r58919. Apparently skipping exts is intentional since r58759 ------------------------------------------------------------------------ r58922 | watson1978 | 2017-05-27 14:41:02 +0900 (Sat, 27 May 2017) | 67 lines Improve performance of some Time & Rational methods rational.c (i_gcd): replace GCD algorithm from Euclidean algorithm to Stein algorithm (https://en.wikipedia.org/wiki/Binary_GCD_algorithm). Some Time methods will call internal quov() function and it calls Rational#quo -> f_muldiv() -> i_gcd() in rational.c And some Rational methods also call i_gcd(). The implementation of Euclidean algorithm spent a long time at modulo operation (ie "x = y % x;"). The Stein algorithm will replace with shift operation which is faster than modulo. Time#subsec -> 36 % up Time#to_r -> 26 % up Rational#+ -> 14 % up Rational#- -> 15 % up Rational#* -> 13 % up [ruby-core:80843] [Bug #13503] [Fix GH-1596] ### Before Time#subsec 2.142M ({U+00B1} 9.8%) i/s - 10.659M in 5.022659s Time#to_r 2.003M ({U+00B1} 9.1%) i/s - 9.959M in 5.012445s Rational#+ 3.843M ({U+00B1} 0.9%) i/s - 19.274M in 5.016254s Rational#- 3.820M ({U+00B1} 1.3%) i/s - 19.149M in 5.014137s Rational#* 5.198M ({U+00B1} 1.4%) i/s - 26.016M in 5.005664s * After Time#subsec 2.902M ({U+00B1} 2.9%) i/s - 14.505M in 5.001815s Time#to_r 2.503M ({U+00B1} 4.8%) i/s - 12.512M in 5.011454s Rational#+ 4.390M ({U+00B1} 1.2%) i/s - 22.001M in 5.012413s Rational#- 4.391M ({U+00B1} 1.2%) i/s - 22.013M in 5.014584s Rational#* 5.872M ({U+00B1} 2.2%) i/s - 29.369M in 5.003666s * Test code require 'benchmark/ips' Benchmark.ips do |x| x.report "Time#subsec" do |t| time = Time.now t.times { time.subsec } end x.report "Time#to_r" do |t| time = Time.now t.times { time.to_r } end x.report "Rational#+" do |t| rat1 = 1/2r rat2 = 1/3r t.times { rat1 + rat2 } end x.report "Rational#-" do |t| rat1 = 1/3r rat2 = 1/2r t.times { rat1 - rat2 } end x.report "Rational#*" do |t| rat1 = 1/3r rat2 = 1/2r t.times { rat1 * rat2 } end end ------------------------------------------------------------------------ r58921 | watson1978 | 2017-05-27 14:41:00 +0900 (Sat, 27 May 2017) | 51 lines Improve performance of some Time methods internal.h : add rb_numeric_quo() as internal API. rational.c : rename numeric_quo() to rb_numeric_quo() as internal API. time.c (quov): optimize by invoking rb_numeric_quo() to retrieve a value of Numeric#quo instead of method dispatching via rb_funcall(). Time#subsec -> 7 % up Time#- -> 26 % up Time#to_f -> 30 % up Time#to_r -> 7 % up [ruby-core:80915] [Bug #13519] [Fix GH-1601] ### Before Time#subsec 2.024M ({U+00B1} 8.7%) i/s - 10.062M in 5.009762s Time#- 5.049M ({U+00B1} 4.7%) i/s - 25.186M in 5.002379s Time#to_f 5.625M ({U+00B1} 4.2%) i/s - 28.066M in 5.000749s Time#to_r 1.880M ({U+00B1} 9.7%) i/s - 9.361M in 5.027527s ### After Time#subsec 2.155M ({U+00B1} 9.7%) i/s - 10.724M in 5.022579s Time#- 6.362M ({U+00B1} 2.0%) i/s - 31.824M in 5.004625s Time#to_f 7.287M ({U+00B1} 4.8%) i/s - 36.402M in 5.010983s Time#to_r 2.020M ({U+00B1} 9.4%) i/s - 10.059M in 5.021852s ### Test code require 'benchmark/ips' Benchmark.ips do |x| x.report "Time#subsec" do |t| time = Time.now t.times { time.subsec } end x.report "Time#-" do |t| time1 = Time.now time2 = Time.now t.times { time1 - time2 } end x.report "Time#to_f" do |t| time = Time.now t.times { time.to_f } end x.report "Time#to_r" do |t| time = Time.now t.times { time.to_r } end end ------------------------------------------------------------------------ r58920 | nobu | 2017-05-27 14:18:52 +0900 (Sat, 27 May 2017) | 1 line .travis.yml: exts is not needed for tests here ------------------------------------------------------------------------ r58919 | normal | 2017-05-27 13:35:41 +0900 (Sat, 27 May 2017) | 8 lines common: "test-all" depends on "exts" target This allows me to test changes to ext/ more easily by only typing: make test-all TESTS=/path/to/ext/test_foo.rb I spent a few minutes wondering what was wrong before I realized changes to exts were not taking effect. ------------------------------------------------------------------------ r58918 | nobu | 2017-05-27 12:43:02 +0900 (Sat, 27 May 2017) | 6 lines mspec/commands/mspec.rb: formatter for multi_exec * spec/mspec/lib/mspec/commands/mspec.rb (MSpecMain#multi_exec): as multi_exec children must run with yaml formatter, append the option for it after other options to override another formatter option with a warning if it is given. ------------------------------------------------------------------------ r58917 | nobu | 2017-05-27 12:14:04 +0900 (Sat, 27 May 2017) | 1 line .travis.yml: get number of processors at runtime ------------------------------------------------------------------------ r58916 | k0kubun | 2017-05-27 12:06:55 +0900 (Sat, 27 May 2017) | 12 lines erb.rb: Use str_uplus instead of rb_str_dup to skip unnecessary string allocation on frozen_string_literal: false. str_uplus can bypass calling rb_str_dup when OBJ_FROZEN is true. * Before erb_render 1.064 * Afete erb_render 0.909 ------------------------------------------------------------------------ r58915 | k0kubun | 2017-05-27 11:47:11 +0900 (Sat, 27 May 2017) | 6 lines benchmark: Rename to bm_erb_render.rb from bm_app_erb_render.rb. I'm told from ko1 that bm_app_* is namespace for Ruby applications, not for ERB and we should use bm_erb_* for ERB benchmark instead. ------------------------------------------------------------------------ r58914 | ko1 | 2017-05-27 11:01:41 +0900 (Sat, 27 May 2017) | 1 line apply timeout scale ------------------------------------------------------------------------ r58913 | nobu | 2017-05-27 10:26:31 +0900 (Sat, 27 May 2017) | 4 lines numeric.c: fix for small number * numeric.c (flo_floor, flo_ceil): should not return zero for small number. [ruby-core:81394] [Bug #13599] ------------------------------------------------------------------------ r58912 | nobu | 2017-05-27 10:04:23 +0900 (Sat, 27 May 2017) | 4 lines dir.c: fix FD leaks * dir.c (do_opendir): close FD when fdopendir failed, e.g., ENOTDIR. [Feature#13056] ------------------------------------------------------------------------ r58911 | nobu | 2017-05-27 02:11:15 +0900 (Sat, 27 May 2017) | 3 lines numeric.c: remove duplicate code * numeric.c (flo_to_i): use dbl2ival and reduce duplicate code. ------------------------------------------------------------------------ r58910 | svn | 2017-05-27 02:10:03 +0900 (Sat, 27 May 2017) | 1 line * 2017-05-27 ------------------------------------------------------------------------ r58909 | watson1978 | 2017-05-27 02:10:01 +0900 (Sat, 27 May 2017) | 24 lines Improve Array#concat performance if only one argument is given * array.c (rb_ary_concat_multi): concatenate the array without generating temporary Array object if only one argument is given. This is very similar with r58886. Array#concat will be faster around 19%. [Fix GH-1634] ### Before Array#concat 2.187M ({U+00B1} 3.5%) i/s - 10.926M in 5.002829s ### After Array#concat 2.598M ({U+00B1} 1.8%) i/s - 13.008M in 5.008201s ### Test code require 'benchmark/ips' Benchmark.ips do |x| x.report "Array#concat" do |i| other = [4] i.times { [1, 2, 3].concat(other) } end end ------------------------------------------------------------------------ r58908 | k0kubun | 2017-05-26 23:17:55 +0900 (Fri, 26 May 2017) | 11 lines erb.rb: Tiny improvement of compiling cost by reducing string allocation. * Before app_erb 0.687 * After app_erb 0.679 ------------------------------------------------------------------------ r58907 | k0kubun | 2017-05-26 22:58:36 +0900 (Fri, 26 May 2017) | 3 lines erb.rb: [DOC] Follow compiled code's change introduced in r58905. ------------------------------------------------------------------------ r58906 | svn | 2017-05-26 22:49:36 +0900 (Fri, 26 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58905 | k0kubun | 2017-05-26 22:49:35 +0900 (Fri, 26 May 2017) | 34 lines erb.rb: Generate static string with opt_str_uminus to skip object allocation for static string. We can't always enable frozen_string_literal pragma because we can't freeze string literals embedded by user for backward compatibility. So we need to use fstring for each static string. Since adding ".freeze" to string literals in #content_dump is slow on compiling, I used unary "-" operator instead. benchmark/bm_app_erb_render.rb: Added rendering-only benchmark to test rendering performance on production environment. This benchmark is created to reproduce the behavior on Sinatra (Tilt). Thus it doesn't use ERB#result to skip parsing compiled code. It doesn't use ERB#def_method too to regard `title` and `content` as local variables. If we use #def_method, `title` and `content` needs to be method call. I wanted to avoid it. This patch's benchmark results is: * Before app_erb_render 1.250 app_erb 0.704 * After app_erb_render 1.066 app_erb 0.686 This patch optimizes rendering performance (app_erb_render) without spoiling (total of rendering +) compiling performance (app_erb). ------------------------------------------------------------------------ r58904 | k0kubun | 2017-05-26 21:12:13 +0900 (Fri, 26 May 2017) | 80 lines erb.rb: Use script encoding instead of force_encoding The original intention of introducing `_erbout.force_encoding` in r21170 was: - "returns a string in the same character encoding as the input string." - "When the input string has a magic comment, however, it returns a string in the encoding specified by the magic comment." And they are tested by test/erb/test_erb_m17n.rb well and this patch passes the test. Since magic comment is always added in ERB compiled code, using ''.dup instead of String.new will set correct encoding without calling force_encoding method. The benchmark results are: * Before $ ./ruby benchmark/run.rb --matzruby=./ruby -m bm_app_erb MatzRuby: ruby 2.5.0dev (2017-05-26 skip-force-enc.. 58903) [x86_64-linux] last_commit=Skip force_encoding in compiled code of erb Ruby: app_erb: matz 0.715 * After $ ./ruby benchmark/run.rb --matzruby=./ruby -m bm_app_erb MatzRuby: ruby 2.5.0dev (2017-05-26 skip-force-enc.. 58903) [x86_64-linux] last_commit=Skip force_encoding in compiled code of erb Ruby: app_erb: matz 0.672 And perf(1) results are: * Before $ sudo perf stat ./ruby benchmark/bm_app_erb.rb Performance counter stats for './ruby benchmark/bm_app_erb.rb': 709.571746 task-clock (msec) # 1.000 CPUs utilized 5 context-switches # 0.007 K/sec 1 cpu-migrations # 0.001 K/sec 1,337 page-faults # 0.002 M/sec 3,088,936,521 cycles # 4.353 GHz <not supported> stalled-cycles-frontend <not supported> stalled-cycles-backend 4,849,564,282 instructions # 1.57 insns per cycle 1,027,042,087 branches # 1447.411 M/sec 19,983,456 branch-misses # 1.95% of all branches 0.709747823 seconds time elapsed * After $ sudo perf stat ./ruby benchmark/bm_app_erb.rb Performance counter stats for './ruby benchmark/bm_app_erb.rb': 693.494673 task-clock (msec) # 1.000 CPUs utilized 7 context-switches # 0.010 K/sec 1 cpu-migrations # 0.001 K/sec 1,316 page-faults # 0.002 M/sec 3,025,639,349 cycles # 4.363 GHz <not supported> stalled-cycles-frontend <not supported> stalled-cycles-backend 4,694,848,271 instructions # 1.55 insns per cycle 994,496,704 branches # 1434.037 M/sec 19,693,239 branch-misses # 1.98% of all branches 0.693724345 seconds time elapsed [fix GH-1147] ------------------------------------------------------------------------ r58903 | nobu | 2017-05-26 18:49:20 +0900 (Fri, 26 May 2017) | 4 lines remove extra call to OleInitialize [Fix GH-1629] Signed-off-by: Matt Wrock <matt@mattwrock.com> ------------------------------------------------------------------------ r58902 | normal | 2017-05-26 16:28:23 +0900 (Fri, 26 May 2017) | 9 lines attempt to fix rb_alloc_tmp_buffer2 for ALLOCV_N This is a confusing function to my arithmetic-challenged mind, but nobu seems alright with this. Anyways this lets me use large values of elsize without segfaulting, and "make exam" passes. * include/ruby/ruby.h (rb_alloc_tmp_buffer2): attempt to fix [ruby-core:81388] [ruby-core:81391] [Bug #13595] ------------------------------------------------------------------------ r58901 | nobu | 2017-05-26 16:04:43 +0900 (Fri, 26 May 2017) | 4 lines dir.c: yield without base part * dir.c (glob_helper): yield globbed part only without the base directory path part if the base is given. [Feature#13056] ------------------------------------------------------------------------ r58900 | nobu | 2017-05-26 16:02:51 +0900 (Fri, 26 May 2017) | 5 lines runruby.rb: no PRELOAD on multiarch [ci skip] * tool/runruby.rb: do not set environment to preload on multiarch platforms, otherwise other external commands (e.g., /bin/sh) fail to run. ------------------------------------------------------------------------ r58899 | sonots | 2017-05-26 15:42:11 +0900 (Fri, 26 May 2017) | 2 lines * lib/uri/common.rb: [DOC] add rdoc to describe URI.unescape is obsolete [ci-skip] [fix GH-1630] ------------------------------------------------------------------------ r58898 | nobu | 2017-05-26 15:39:49 +0900 (Fri, 26 May 2017) | 4 lines sprintf.c: remove redundant condition * sprintf.c (rb_str_format): when `t + 1 == end` (or `t < end`), `*t == '%'` is always true. [ruby-core:80153] [Bug #13315] ------------------------------------------------------------------------ r58897 | nobu | 2017-05-26 15:39:06 +0900 (Fri, 26 May 2017) | 1 line string.c: adjust style [ci skip] ------------------------------------------------------------------------ r58896 | nobu | 2017-05-26 15:28:38 +0900 (Fri, 26 May 2017) | 7 lines Symbol support for opt_eql_func too * vm_insnhelper.c (comparable_by_identity): extract the condition where comparable by identity. currently both are same types, Fixnum, Flonum, or Symbol. * vm_insnhelper.c (opt_eql_func): support Symbol too. ------------------------------------------------------------------------ r58895 | ko1 | 2017-05-26 14:26:57 +0900 (Fri, 26 May 2017) | 5 lines Symbol support for opt_eq_func. * vm_insnhelper.c (opt_eq_func): optimize for symbol comparison. [Bug #13330] [fix GH-1540] ------------------------------------------------------------------------ r58894 | rhe | 2017-05-26 10:50:20 +0900 (Fri, 26 May 2017) | 4 lines compile.c: fix possible use of uninitialized value LABEL::unremovable added by r58810 is not initialized by new_label_body(), making the optimization unstable. ------------------------------------------------------------------------ r58893 | ko1 | 2017-05-26 08:43:33 +0900 (Fri, 26 May 2017) | 7 lines use timeout scale. * test/lib/envutil.rb: introduce EnvUtil.apply_timeout_scale to use this scale from outside. * test/ruby/test_thread.rb (test_fork_in_thread): respect timeout scale. ------------------------------------------------------------------------ r58892 | k0kubun | 2017-05-26 00:43:49 +0900 (Fri, 26 May 2017) | 3 lines NEWS: Add entry for ERB#result_with_hash See r58891. ------------------------------------------------------------------------ r58891 | k0kubun | 2017-05-26 00:38:25 +0900 (Fri, 26 May 2017) | 3 lines erb.rb: Add ERB#result_with_hash [ruby-core:55985] [Feature #8631] [fix GH-1623] ------------------------------------------------------------------------ r58890 | eregon | 2017-05-26 00:33:28 +0900 (Fri, 26 May 2017) | 5 lines Raise ArgumentError if sprintf format string ends with % * Add tests and specs. See ruby/spec#401. Patch by Yuta Iwama and Shintaro Morikawa. [ruby-core:80153] [Bug #13315] [Fix GH-1560] ------------------------------------------------------------------------ r58889 | svn | 2017-05-26 00:14:39 +0900 (Fri, 26 May 2017) | 1 line * 2017-05-26 ------------------------------------------------------------------------ r58888 | stomar | 2017-05-26 00:14:38 +0900 (Fri, 26 May 2017) | 4 lines hash.c: docs for Hash#transform_values * hash.c: [DOC] fix return value in call-seq of Hash#transform_values; other small fixes. ------------------------------------------------------------------------ r58887 | k0kubun | 2017-05-25 20:41:45 +0900 (Thu, 25 May 2017) | 3 lines insns.def: [DOC] Fix description of tostring rb_obj_as_string() calls not #to_str (idTo_str) but #to_s (idTo_s). ------------------------------------------------------------------------ r58886 | k0kubun | 2017-05-25 20:14:40 +0900 (Thu, 25 May 2017) | 31 lines string.c: Optimize String#concat when argc is 1 Optimize performance regression introduced in r56021. * Benchmark (i7-4790K @ 4.00GH, x86_64 GNU/Linux) Benchmark.ips do |x| x.report("String#concat (1)") { "a".concat("b") } if RUBY_VERSION >= "2.4.0" x.report("String#concat (2)") { "a".concat("b", "c") } end end * Ruby 2.3 Calculating ------------------------------------- String#concat (1) 6.003M ({U+00B1} 5.2%) i/s - 30.122M in 5.031646s * Ruby 2.4 (Before this patch) Calculating ------------------------------------- String#concat (1) 4.458M ({U+00B1} 8.9%) i/s - 22.298M in 5.058084s String#concat (2) 3.660M ({U+00B1} 5.6%) i/s - 18.314M in 5.020527s * Ruby 2.4 (After this patch) Calculating ------------------------------------- String#concat (1) 6.448M ({U+00B1} 5.2%) i/s - 32.215M in 5.010833s String#concat (2) 3.633M ({U+00B1} 9.0%) i/s - 18.056M in 5.022603s [fix GH-1631] ------------------------------------------------------------------------ r58885 | stomar | 2017-05-25 17:34:13 +0900 (Thu, 25 May 2017) | 4 lines dir.c: document base keyword argument of Dir.glob * dir.c: [DOC] document the new `base` keyword argument of Dir.glob [Feature #13056]; also improve docs for Dir.glob and Dir[]. ------------------------------------------------------------------------ r58884 | stomar | 2017-05-25 16:50:20 +0900 (Thu, 25 May 2017) | 3 lines dir.c: docs for Dir.each_child and Dir.children * dir.c: [DOC] fix examples for Dir.each_child and Dir.children. ------------------------------------------------------------------------ r58883 | nobu | 2017-05-25 16:36:47 +0900 (Thu, 25 May 2017) | 1 line vm_insnhelper.c: remove redefinitions and undefine after used ------------------------------------------------------------------------ r58882 | nobu | 2017-05-25 14:29:35 +0900 (Thu, 25 May 2017) | 4 lines vm_insnhelper.c: rb_eql_opt should call eql? * vm_insnhelper.c (rb_eql_opt): should call #eql? on Float and String, not #==. ------------------------------------------------------------------------ r58881 | watson1978 | 2017-05-25 13:25:39 +0900 (Thu, 25 May 2017) | 37 lines Improve performance of rb_eql() This improvement is similar with https://github.com/ruby/ruby/pull/1552 internal.h: add declaration of rb_eql_opt() API. vm_insnhelper.c (rb_eql_opt): add rb_eql_opt() API which provides optimized path for #eql? method such as rb_equal_opt(). object.c (rb_eql): optimize using rb_eql_opt() such as rb_equal(). Array#eql? and some methods have used rb_eql() and Array#eql? will be faster around 20%. [ruby-core:80761] [Bug #13447] [Fix GH-#1589] ### Before user system total real 1.570000 0.000000 1.570000 ( 1.569754) ### After user system total real 1.300000 0.000000 1.300000 ( 1.303624) ### Test code require 'benchmark' Benchmark.bmbm do |x| ary1 = Array.new(1000) { rand(1000) } ary2 = Array.new(1000) { rand(1000) } x.report do 5000000.times do ary1.eql?(ary2) end end end ------------------------------------------------------------------------ r58880 | watson1978 | 2017-05-25 13:25:37 +0900 (Thu, 25 May 2017) | 62 lines Improve performance of rb_equal() * object.c (rb_equal): add optimized path to compare the objects using rb_equal_opt(). Previously, if not same objects were given, rb_equal() would call `==' method via rb_funcall() which took a long time. rb_equal_opt() has provided faster comparing for Fixnum/Float/String objects. Now, Time#eql? uses rb_equal() to compare with argument object and it will be faster around 40% on 64-bit environment. * array.c (rb_ary_index): remove redundant rb_equal_opt() calling. Now, rb_equal() was optimized using rb_equal_opt(). If rb_equal_opt() returns Qundef, it will invoke rb_equal() -> rb_equal_opt(), and it will cause the performance regression. So, this patch will remove first redundant rb_equal_opt() calling. * array.c (rb_ary_rindex): ditto. * array.c (rb_ary_includes): ditto. [ruby-core:80360] [Bug #13365] [Fix GH-#1552] ### Before Time#eql? with other 7.309M ({U+00B1} 1.4%) i/s - 36.647M in 5.014964s Array#index(val) 1.433M ({U+00B1} 1.2%) i/s - 7.207M in 5.030942s Array#rindex(val) 1.418M ({U+00B1} 1.6%) i/s - 7.103M in 5.009164s Array#include?(val) 1.451M ({U+00B1} 0.9%) i/s - 7.295M in 5.026392s ### After Time#eql? with other 10.321M ({U+00B1} 1.9%) i/s - 51.684M in 5.009203s Array#index(val) 1.474M ({U+00B1} 0.9%) i/s - 7.433M in 5.044384s Array#rindex(val) 1.449M ({U+00B1} 1.7%) i/s - 7.292M in 5.034436s Array#include?(val) 1.466M ({U+00B1} 1.7%) i/s - 7.373M in 5.030047s ### Test code require 'benchmark/ips' Benchmark.ips do |x| t1 = Time.now t2 = Time.now x.report "Time#eql? with other" do |i| i.times { t1.eql?(t2) } end # Benchmarks to check whether it didn't introduce the regression obj = Object.new x.report "Array#index(val)" do |i| ary = [1, 2, true, false, obj] i.times { ary.index(obj) } end x.report "Array#rindex(val)" do |i| ary = [1, 2, true, false, obj].reverse i.times { ary.rindex(obj) } end x.report "Array#include?(val)" do |i| ary = [1, 2, true, false, obj] i.times { ary.include?(obj) } end end ------------------------------------------------------------------------ r58879 | nobu | 2017-05-25 11:50:21 +0900 (Thu, 25 May 2017) | 5 lines dir.c: Dir.each_child and Dir.children * dir.c (dir_s_each_child, dir_s_children): Dir.each_child and Dir.children which are similar to Dir.foreach and Dir.entries respectively, except to exclude "." and "..". [Feature #11302] ------------------------------------------------------------------------ r58878 | nobu | 2017-05-25 11:50:20 +0900 (Thu, 25 May 2017) | 4 lines test_dir.rb: test Dir.entries * test/ruby/test_dir.rb (test_entries): test class singleton method Dir.entries too. ------------------------------------------------------------------------ r58877 | nobu | 2017-05-25 10:46:36 +0900 (Thu, 25 May 2017) | 3 lines dir.c: dir_each_entries * dir.c (dir_each_entries): expand entries without method calls. ------------------------------------------------------------------------ r58876 | normal | 2017-05-25 06:26:14 +0900 (Thu, 25 May 2017) | 3 lines string.c: fix String#crypt leak introduced in r58866 * string.c (rb_str_crypt): define LARGE_CRYPT_DATA when allocating ------------------------------------------------------------------------ r58875 | svn | 2017-05-25 03:59:25 +0900 (Thu, 25 May 2017) | 1 line * 2017-05-25 ------------------------------------------------------------------------ r58874 | normal | 2017-05-25 03:59:24 +0900 (Thu, 25 May 2017) | 14 lines thread_pthread: retry timer thread creation w/o attr on EINVAL Setting a small stack size can fail due to having 3rd-party libraries (e.g. libkqueue) loaded, if those libraries use thread-local-storage (__thread) heavily. This causes pthread_create to fail with small stacks; even if our timer_thread function does not hit any of the TLS-using code paths. Today, some RubyGems are capable of using libkqueue (or __thread storage directly), and future versions of Ruby may use kqueue internally. cf. https://www.akkadia.org/drepper/tls.pdf ------------------------------------------------------------------------ r58873 | nobu | 2017-05-24 23:26:09 +0900 (Wed, 24 May 2017) | 4 lines dir.c: prefer NAMLEN to d_name * dir.c (glob_helper): prefer NAMLEN, do not assume d_name is NUL terminated everywhere. ------------------------------------------------------------------------ r58872 | nobu | 2017-05-24 22:30:54 +0900 (Wed, 24 May 2017) | 4 lines test_http.rb: fix r58855 * test/net/http/test_http.rb (test_s_start): git rid of error when failed to start a connection. ------------------------------------------------------------------------ r58871 | nobu | 2017-05-24 17:00:42 +0900 (Wed, 24 May 2017) | 4 lines enum.c: respect method visibility * enum.c (ary_inject_op): should respect method visibility, do not optimize uncallable method. [ruby-core:81349] [Bug #13592] ------------------------------------------------------------------------ r58870 | nobu | 2017-05-24 16:57:19 +0900 (Wed, 24 May 2017) | 4 lines test_enum.rb: test_inject_array_op_redefined * test/ruby/test_enum.rb (test_inject_array_op_redefined): test other operators too. [Bug#12178] ------------------------------------------------------------------------ r58869 | nobu | 2017-05-24 16:57:18 +0900 (Wed, 24 May 2017) | 4 lines assertions.rb: AllFailures#foreach * test/lib/test/unit/assertions.rb (AllFailures#foreach): shortcircuit for `each` and `AllFailures#for`. ------------------------------------------------------------------------ r58868 | nobu | 2017-05-24 16:11:41 +0900 (Wed, 24 May 2017) | 4 lines duplicate method * test/ruby/test_enum.rb (assert_float_equal): remove overridden definition. ------------------------------------------------------------------------ r58867 | watson1978 | 2017-05-24 15:57:08 +0900 (Wed, 24 May 2017) | 65 lines Improve performance in where push the element into non shared Array object * array.c (ary_ensure_room_for_push): use rb_ary_modify_check() instead of rb_ary_modify() to check whether the object can be modified for non shared Array object. rb_ary_modify() has the codes for shared Array object too. In here, it has condition branch for shared / non shared Array object and it can use rb_ary_modify_check() which is smaller function than rb_ary_modify() for non shared object. rb_ary_modify_check() will be expand as inline function. If it will compile with GCC, Array#<< will be faster around 8%. [ruby-core:81082] [Bug #13553] [Fix GH-1609] ## Clang 802.0.42 ### Before Array#<< 9.353M ({U+00B1} 1.7%) i/s - 46.787M in 5.004123s Array#push 7.702M ({U+00B1} 1.1%) i/s - 38.577M in 5.009338s Array#values_at 6.133M ({U+00B1} 1.9%) i/s - 30.699M in 5.007772s ### After Array#<< 9.458M ({U+00B1} 2.0%) i/s - 47.357M in 5.009069s Array#push 7.921M ({U+00B1} 1.8%) i/s - 39.665M in 5.009151s Array#values_at 6.377M ({U+00B1} 2.3%) i/s - 31.881M in 5.001888s ### Result Array#<< -> 1.2% faster Array#push -> 2.8% faster Array#values_at -> 3.9% faster ## GCC 7.1.0 ### Before Array#<< 10.497M ({U+00B1} 1.1%) i/s - 52.665M in 5.017601s Array#push 8.527M ({U+00B1} 1.6%) i/s - 42.777M in 5.018003s Array#values_at 7.621M ({U+00B1} 1.7%) i/s - 38.152M in 5.007910s ### After Array#<< 11.403M ({U+00B1} 1.3%) i/s - 57.028M in 5.001849s Array#push 8.924M ({U+00B1} 1.3%) i/s - 44.609M in 4.999940s Array#values_at 8.291M ({U+00B1} 1.4%) i/s - 41.487M in 5.004727s ### Result Array#<< -> 8.3% faster Array#push -> 4.3% faster Array#values_at -> 8.7% faster ## Test code require 'benchmark/ips' Benchmark.ips do |x| x.report "Array#<<" do |i| i.times { [1,2] << 3 } end x.report "Array#push" do |i| i.times { [1,2].push(3) } end x.report "Array#values_at" do |i| ary = [1, 2, 3, 4, 5] i.times { ary.values_at(0, 2, 4) } end end ------------------------------------------------------------------------ r58866 | nobu | 2017-05-24 15:55:09 +0900 (Wed, 24 May 2017) | 4 lines string.c: for small crypt_data * string.c (rb_str_crypt): struct crypt_data defined in missing/crypt.h is small enough. ------------------------------------------------------------------------ r58865 | ko1 | 2017-05-24 15:46:44 +0900 (Wed, 24 May 2017) | 14 lines Add debug counters. * debug_counter.h: add the following counters to measure object types. obj_free: freed count obj_str_ptr: freed count of Strings they have extra buff. obj_str_embed: freed count of Strings they don't have extra buff. obj_str_shared: freed count of Strings they have shared extra buff. obj_str_nofree: freed count of Strings they are marked as nofree. obj_str_fstr: freed count of Strings they are marked as fstr. obj_ary_ptr: freed count of Arrays they have extra buff. obj_ary_embed: freed count of Arrays they don't have extra buff. obj_obj_ptr: freed count of Objects (T_OBJECT) they have extra buff. obj_obj_embed: freed count of Objects they don't have extra buff. ------------------------------------------------------------------------ r58864 | normal | 2017-05-24 12:01:44 +0900 (Wed, 24 May 2017) | 4 lines string.c (rb_str_crypt): fix excessive stack use with crypt_r "struct crypt_data" is 131232 bytes on x86-64 GNU/Linux, making it unsafe to use tiny Fiber stack sizes. ------------------------------------------------------------------------ r58863 | normal | 2017-05-24 09:34:12 +0900 (Wed, 24 May 2017) | 14 lines rubyspec/core/io/popen_spec: avoid lingering "ruby -e sleep" process The ruby_cmd helper blindly escapes code blocks passed to it, causing "sleep" to be quoted in the command-line. This quoting results in IO.popen using a subshell (/bin/sh) to run the given string command instead of invoking the Ruby executable directly. Thus, IO.popen would only see the PID of the subshell via IO#pid, and merely sending SIGKILL to the subshell would not result in the child ("ruby -e sleep") being killed. This problem with lingering ruby processes was easier to reproduce on slow or heavily-loaded systems using low-scheduling priority (e.g. "chrt -i 0 make test-rubyspec") ------------------------------------------------------------------------ r58862 | svn | 2017-05-24 01:51:48 +0900 (Wed, 24 May 2017) | 1 line * 2017-05-24 ------------------------------------------------------------------------ r58861 | naruse | 2017-05-24 01:51:48 +0900 (Wed, 24 May 2017) | 5 lines skip on Solaris 11 On Solaris 11, MSG_OOB is in readfds? http://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11x/ruby-trunk/log/20170523T152403Z.fail.html.gz http://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20170523T152503Z.fail.html.gz ------------------------------------------------------------------------ r58860 | nobu | 2017-05-23 23:34:12 +0900 (Tue, 23 May 2017) | 4 lines Dir as base option * dir.c (glob_helper): support Dir instance as `base` option. [Feature#13056] ------------------------------------------------------------------------ r58859 | nobu | 2017-05-23 22:54:10 +0900 (Tue, 23 May 2017) | 4 lines test_dir.rb: sort * test/ruby/test_dir.rb (test_glob_base): sort the globbed result to compare. ------------------------------------------------------------------------ r58858 | nobu | 2017-05-23 22:47:36 +0900 (Tue, 23 May 2017) | 4 lines Dir.glob base option * dir.c (dir_s_aref, dir_s_glob): add new optional keyword argument, `base`. [Feature#13056] ------------------------------------------------------------------------ r58857 | nobu | 2017-05-23 22:18:45 +0900 (Tue, 23 May 2017) | 3 lines readonly srcdir .travis.yml: make srcdir unwritable during build and tests. ------------------------------------------------------------------------ r58856 | nobu | 2017-05-23 21:42:40 +0900 (Tue, 23 May 2017) | 3 lines out-of-place on travis * .travis.yml (before_script, script): out-of-place build. ------------------------------------------------------------------------ r58855 | nobu | 2017-05-23 21:38:01 +0900 (Tue, 23 May 2017) | 4 lines fix FD leaks * test/net/http/test_http.rb (test_s_start): finish connections to get rid of FD leaks. ------------------------------------------------------------------------ r58854 | nobu | 2017-05-23 21:11:57 +0900 (Tue, 23 May 2017) | 3 lines LABEL_FORMAT * compile.c (LABEL_FORMAT): extract format string for labels. ------------------------------------------------------------------------ r58853 | nobu | 2017-05-23 20:35:54 +0900 (Tue, 23 May 2017) | 3 lines unused member * vsnprintf.c (__sFILE): _lbfsize is not used. ------------------------------------------------------------------------ r58852 | kou | 2017-05-23 15:02:20 +0900 (Tue, 23 May 2017) | 2 lines Use test-unit 3.2.4 ------------------------------------------------------------------------ r58851 | nobu | 2017-05-23 10:04:09 +0900 (Tue, 23 May 2017) | 3 lines readonly srcdir appveyor.yml: make srcdir unwritable during build and tests. ------------------------------------------------------------------------ r58850 | nobu | 2017-05-23 10:04:07 +0900 (Tue, 23 May 2017) | 1 line appveyor.yml: remove unused UNICODE_DATA_DIR ------------------------------------------------------------------------ r58849 | svn | 2017-05-23 08:41:51 +0900 (Tue, 23 May 2017) | 1 line * 2017-05-23 ------------------------------------------------------------------------ r58848 | normal | 2017-05-23 08:41:50 +0900 (Tue, 23 May 2017) | 7 lines variable.c (autoload_sleep_done): avoid needless list_node init We do not need list_del_init in ensure callbacks, only list_del, since it can only ever be called after list_del_init in autoload_reset. So avoid the needless re-initialization. * variable.c (autoload_sleep_done): s/list_del_init/list_del/ ------------------------------------------------------------------------ r58847 | nobu | 2017-05-22 23:25:56 +0900 (Mon, 22 May 2017) | 1 line source directory may not be writable ------------------------------------------------------------------------ r58846 | normal | 2017-05-22 16:36:00 +0900 (Mon, 22 May 2017) | 9 lines lib/net/protocol.rb: account read_bytes before caller sees it Users may modify the chunk yielded to them in Net::HTTPResponse#read_body. This will allow users to reduce memory usage by calling String#clear on the buffer once they're done using it. * lib/net/protocol.rb (read): increment read_bytes earlier (read_all): ditto * test/net/http/test_httpresponse.rb (test_read_body_block_mod): new test ------------------------------------------------------------------------ r58845 | rhe | 2017-05-22 16:13:06 +0900 (Mon, 22 May 2017) | 4 lines hash.c: [DOC] fix docs for Hash#transform_values! Hash#transform_values! returns the receiver rather than a new Hash object. ------------------------------------------------------------------------ r58844 | shugo | 2017-05-22 15:13:11 +0900 (Mon, 22 May 2017) | 4 lines net/imap: separate @continuation_request_exception from @exception Otherwise literal data will be sent even if NO response is returned because @exception is set to nil in receive_responses. ------------------------------------------------------------------------ r58843 | nobu | 2017-05-22 13:10:51 +0900 (Mon, 22 May 2017) | 6 lines downloader.rb: true symlink on cygwin * tool/downloader.rb (Downloader.link_cache): on Cygwin, make true symlink only, which is provided by the OS. as mingw/mswin ruby can't follow cygwin's pseudo symlink, it will fail on the same source tree. ------------------------------------------------------------------------ r58842 | k0kubun | 2017-05-22 12:56:16 +0900 (Mon, 22 May 2017) | 23 lines erb.rb: Skip creating regexp if stags and etags are not changed from default. :putobject insn (of regexp) will be used instead of :toregexp insn. This means that the regexp won't be compiled for every `SimpleScanner#scan` call. It may not be a good idea to apply this kind of optimization for all cases. But I applied this because it is default scanner and used frequently and has relatively large impact for benchmark like this: * Before app_erb 1.023 * After app_erb 0.781 This commit fixes only the bottleneck of performance regression introduced in r53412. For maintainability, I won't fix other small regressions like additional overhead of method calls. [ruby-core:73820] [Bug #12074] ------------------------------------------------------------------------ r58841 | nobu | 2017-05-22 12:18:17 +0900 (Mon, 22 May 2017) | 4 lines fix r58833 * tool/downloader.rb (Downloader.download): just link to the cache when downloaded to the cache but not the target file. ------------------------------------------------------------------------ r58840 | normal | 2017-05-22 08:52:08 +0900 (Mon, 22 May 2017) | 34 lines lib/net/protocol: clear short-lived read buffer Using a parallel Net::HTTP downloader, this reduced memory usage from around 120MB to 50MB on my 32-bit x86 system. * lib/net/protocol.rb (rbuf_fill): clear temporary buffer Test script I used: require 'net/http' require 'uri' require 'digest/sha1' url = 'http://80x24.org/git-i-forgot-to-pack/objects/pack/pack-97b25a76c03b489d4cbbd85b12d0e1ad28717e55.idx' uri = URI(url) use_ssl = "https" == uri.scheme thrs = 30.times.map do Thread.start do cur = Thread.current.object_id Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http| req = Net::HTTP::Get.new(uri) http.request(req) do |res| dig = Digest::SHA1.new res.read_body do |buf| dig.update(buf) #buf.clear # most Ruby programmers don't do this :< end warn "#{Time.now} #{cur} #{dig.hexdigest}\n" end end :done end end p thrs.map(&:value) ------------------------------------------------------------------------ r58839 | stomar | 2017-05-22 04:31:37 +0900 (Mon, 22 May 2017) | 3 lines String#casecmp no longer raises TypeError * See https://bugs.ruby-lang.org/issues/13312 ------------------------------------------------------------------------ r58838 | stomar | 2017-05-22 04:29:58 +0900 (Mon, 22 May 2017) | 1 line NEWS: String#{casecmp,casecmp?} [Bug #13312] ------------------------------------------------------------------------ r58837 | stomar | 2017-05-22 04:28:48 +0900 (Mon, 22 May 2017) | 9 lines string.c: fix String#{casecmp,casecmp?} for non-string arguments * string.c: make String#{casecmp,casecmp?} return nil for non-string arguments instead of raising a TypeError. * test/ruby/test_string.rb: add tests. Reported by Marcus Stollsteimer. Based on a patch by Shingo Morita. [ruby-core:80145] [Bug #13312] ------------------------------------------------------------------------ r58836 | stomar | 2017-05-22 04:27:08 +0900 (Mon, 22 May 2017) | 4 lines test_string.rb,test_symbol.rb: add some tests * test/ruby/test_string.rb: add more test cases for String#casecmp. * test/ruby/test_symbol.rb: ditto for Symbol#{casecmp,casecmp?}. ------------------------------------------------------------------------ r58835 | stomar | 2017-05-22 04:25:19 +0900 (Mon, 22 May 2017) | 1 line Use should_receive expectation instead of singleton method ------------------------------------------------------------------------ r58834 | svn | 2017-05-22 01:45:36 +0900 (Mon, 22 May 2017) | 1 line * 2017-05-22 ------------------------------------------------------------------------ r58833 | nobu | 2017-05-22 01:45:35 +0900 (Mon, 22 May 2017) | 3 lines downloader cache * tool/downloader.rb (Downloader.download): manage download cache. ------------------------------------------------------------------------ r58832 | nobu | 2017-05-21 23:29:00 +0900 (Sun, 21 May 2017) | 1 line remove verify option ------------------------------------------------------------------------ r58831 | nobu | 2017-05-21 17:30:50 +0900 (Sun, 21 May 2017) | 4 lines downloader.rb: utilize dir argument * tool/downloader.rb (Downloader::RubyGems.download): utilize `dir` argument of Downloader.download. ------------------------------------------------------------------------ r58830 | kazu | 2017-05-21 16:13:11 +0900 (Sun, 21 May 2017) | 8 lines Add missing word in transform_values methods description Explicitly says that the methods return a new hash rather than just stating it return a new something we don't know. [ci skip] [Fix GH-1619] Author: Nicolas Cavigneaux <nico@bounga.org> ------------------------------------------------------------------------ r58829 | watson1978 | 2017-05-21 12:36:31 +0900 (Sun, 21 May 2017) | 42 lines Improve Time#+ & Time#- performance * time.c (wadd): use internal addv() function to calculate internal value in Time object. On 64-bit machine, Time object might have Fixnum object internally by default and addv() can calculate Fixnum objects directly. * time.c (wsub): use internal subv() function due the same reason in above. Time#+ & Time#- will be faster around 15%. [ruby-dev:50036] [Bug #13357] [Fix GH-1547] ### Before user system total real Time#+ 0.820000 0.000000 0.820000 ( 0.818081) Time#- 0.810000 0.000000 0.810000 ( 0.813835) ### After user system total real Time#+ 0.710000 0.000000 0.710000 ( 0.710241) Time#- 0.710000 0.010000 0.720000 ( 0.714151) ### Test code require 'benchmark' Benchmark.bmbm do |x| x.report "Time#+" do t = Time.now 2000000.times do t + 1 end end x.report "Time#-" do t = Time.now 2000000.times do t - 1 end end end ------------------------------------------------------------------------ r58828 | watson1978 | 2017-05-21 12:36:30 +0900 (Sun, 21 May 2017) | 48 lines Improve Time#<=> performance * time.c (wcmp): use internal cmp() function for comparing internal Fixnum value in Time objects. On 64-bit machine, Time object might have Fixnum object internally by default and cmp() can compare the Fixnum objects directly. Time#<=> will be faster around 60% on 64-bit machine. * time.c (cmp): add optimized path for comparing internal Bignum value by using rb_big_cmp() API. On 32-bit machine, Time object might have Bignum object internally by default. Time#<=> will be faster around 50% on 32-bit machine. [ruby-dev:50034] [Bug #13354] [Fix GH-1546] ### Before user system total real Fixnum 1.410000 0.000000 1.410000 ( 1.407848) Bignum 1.550000 0.000000 1.550000 ( 1.549145) ### After user system total real Fixnum 0.880000 0.000000 0.880000 ( 0.886662) Bignum 1.050000 0.000000 1.050000 ( 1.047994) ### Test code require 'benchmark' Benchmark.bmbm do |x| x.report "Fixnum" do t1 = Time.now t2 = Time.now 10000000.times do t1 <=> t2 end end x.report "Bignum" do t1 = Time.at(2 ** 64) t2 = Time.at(2 ** 64 + 1) 10000000.times do t1 <=> t2 end end end ------------------------------------------------------------------------ r58827 | kazu | 2017-05-21 10:01:10 +0900 (Sun, 21 May 2017) | 4 lines Remove redundant square brackets Use character class directly instead of character class in character class. ------------------------------------------------------------------------ r58826 | k0kubun | 2017-05-21 02:36:09 +0900 (Sun, 21 May 2017) | 3 lines erb.rb: Allow trimming CR in all trim_modes to unify a behavior with r58823 and r58825. ------------------------------------------------------------------------ r58825 | k0kubun | 2017-05-21 02:17:22 +0900 (Sun, 21 May 2017) | 5 lines erb.rb: Allow explicit trimming carriage return when trim_mode is "-", for Windows environments. [ruby-core:39625] [Bug #5339] ------------------------------------------------------------------------ r58824 | k0kubun | 2017-05-21 02:03:01 +0900 (Sun, 21 May 2017) | 4 lines doc/maintainers.rdoc: Add me to ERB maintainers The current maintainer suggested this in ruby-dev:50113. Please ping me if an issue happens in ERB. ------------------------------------------------------------------------ r58823 | k0kubun | 2017-05-21 01:50:33 +0900 (Sun, 21 May 2017) | 5 lines erb.rb: Allow trimming carriage return when trim_mode is "<>", for Windows environments. [Bug #11464] ------------------------------------------------------------------------ r58822 | k0kubun | 2017-05-21 01:20:07 +0900 (Sun, 21 May 2017) | 3 lines erb.rb: Prevent potential unexpected rescue of LoadError in some method calls, not from `require "strscan"`. ------------------------------------------------------------------------ r58821 | svn | 2017-05-21 00:58:17 +0900 (Sun, 21 May 2017) | 1 line * 2017-05-21 ------------------------------------------------------------------------ r58820 | naruse | 2017-05-21 00:58:16 +0900 (Sun, 21 May 2017) | 1 line Clean proxy ------------------------------------------------------------------------ r58819 | k0kubun | 2017-05-20 23:55:33 +0900 (Sat, 20 May 2017) | 9 lines erb.rb: Drop unused scanner implementation Original `SimpleScanner` was used only in tests. Since `SimpleScanner` and `SimpleScanner2` work in the same way, I want to drop the one which can't be used in a normal situation. The only difference was `SimpleScanner` can be loaded without strscan dependency but I think there's no situation that strscan is unavailable because it's a standard library. ------------------------------------------------------------------------ r58818 | svn | 2017-05-20 22:00:42 +0900 (Sat, 20 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58817 | mame | 2017-05-20 22:00:41 +0900 (Sat, 20 May 2017) | 5 lines Add coverage measurement mode by using gcov This experimental feature is only for Ruby-core team, not for casual users. Usage: `./configure --enable-gcov && make && make exam && make gcov` ------------------------------------------------------------------------ r58816 | mame | 2017-05-20 21:23:27 +0900 (Sat, 20 May 2017) | 5 lines ripper.c should have `#line "ripper.c"`, not `#line "parse.c"` The order of sed commands in Makefile of ripper was wrong: it tries to replace `y.tab.c` with `ripper.c`, but before that, ytab.sed replaced `y.tab.c` with `parse.c`, which led to a wrong result. ------------------------------------------------------------------------ r58815 | nobu | 2017-05-20 20:40:57 +0900 (Sat, 20 May 2017) | 4 lines compile.c: optimize branches * compile.c (compile_branch_condition, iseq_compile_each0): eliminate unreachable branches in NODE_IF. ------------------------------------------------------------------------ r58814 | nobu | 2017-05-20 19:27:27 +0900 (Sat, 20 May 2017) | 5 lines compile.c: binary logop check * compile.c (compile_branch_condition): turn recursion at binary logical operator into loop by goto, and check the result of RHS of NODE_OR. ------------------------------------------------------------------------ r58813 | stomar | 2017-05-20 19:21:44 +0900 (Sat, 20 May 2017) | 5 lines prime.rb: remove alias after timeout test * test/test_prime.rb: remove alias after timeout test. * lib/prime.rb: fix typo. ------------------------------------------------------------------------ r58812 | normal | 2017-05-20 18:47:14 +0900 (Sat, 20 May 2017) | 31 lines speed up IO#close with many threads Today, it increases IO#close performance with many threads: Execution time (sec) name trunk after vm_thread_close 4.276 3.018 Speedup ratio: compare with the result of `trunk' (greater is better) name after vm_thread_close 1.417 This speedup comes because rb_notify_fd_close only scans threads inside rb_thread_io_blocking_region, not all threads in the VM. In the future, this type data structure may allow us to notify waiters of multiple FDs on a single thread (when using Fibers). * thread.c (struct waiting_fd): declare (rb_thread_io_blocking_region): use on-stack list waiter (rb_notify_fd_close): walk vm->waiting_fds instead (call_without_gvl): remove old field setting (th_init): ditto * vm_core.h (typedef struct rb_vm_struct): add waiting_fds list * (typedef struct rb_thread_struct): remove waiting_fd field (rb_vm_living_threads_init): initialize waiting_fds list I am now kicking myself for not thinking about this 3 years ago when I introduced ccan/list in [Feature #9632] to optimize this same function :< ------------------------------------------------------------------------ r58811 | watson1978 | 2017-05-20 18:23:46 +0900 (Sat, 20 May 2017) | 32 lines Improve Hash#merge performance * hash.c (rb_hash_merge): use rb_hash_dup() instead of rb_obj_dup() to duplicate Hash object. rb_hash_dup() is faster duplicating function for Hash object which got rid of Hash#initialize_dup method calling. Hash#merge will be faster around 60%. [ruby-dev:50026] [Bug #13343] [Fix GH-1533] ### Before user system total real Hash#merge 0.160000 0.020000 0.180000 ( 0.182357) ### After user system total real Hash#merge 0.110000 0.010000 0.120000 ( 0.114404) ### Test code require 'benchmark' Benchmark.bmbm do |x| hash1 = {} 100.times { |i| hash1[i.to_s] = i } hash2 = {} 100.times { |i| hash2[(i*2).to_s] = i*2 } x.report "Hash#merge" do 10000.times do hash1.merge(hash2) end end end ------------------------------------------------------------------------ r58810 | nobu | 2017-05-20 11:11:24 +0900 (Sat, 20 May 2017) | 4 lines compile.c: fix catch-table labels optimization * compile.c (remove_unreachable_chunk): do not eliminate chunks followed by labels in catch-table entries. ------------------------------------------------------------------------ r58809 | marcandre | 2017-05-20 09:36:55 +0900 (Sat, 20 May 2017) | 6 lines lib/prime: Fix primality of some large integers [#13492]. * lib/prime.rb: Use accurate sqrt to insure all factors are tested. Patch by Marcus Stollsteimer. * test/test_prime.rb: Adapt test for timeout ------------------------------------------------------------------------ r58808 | hsbt | 2017-05-20 08:39:58 +0900 (Sat, 20 May 2017) | 3 lines Merge gemspec from ruby/fileutils. * Replaced homepage option to source code location as github. ------------------------------------------------------------------------ r58807 | normal | 2017-05-20 06:34:04 +0900 (Sat, 20 May 2017) | 1 line fix off-by-one in r58806 ------------------------------------------------------------------------ r58806 | normal | 2017-05-20 06:33:15 +0900 (Sat, 20 May 2017) | 4 lines test/ruby/test_io.rb: new test for IO.select exception set Ensure this rarely-used feature of IO.select continues to work properly. ------------------------------------------------------------------------ r58805 | normal | 2017-05-20 03:53:11 +0900 (Sat, 20 May 2017) | 34 lines thread_sync.c: rewrite the rest using using ccan/list The performance improvement increases as the number of waiters increases, due to avoiding the O(n) behavior of rb_ary_delete on the waiting thread. Uncontended queues and condition variables performance is not altered significantly. Function entry cost is slightly increased for ConditionVariable, since the data pointer is separately allocated and not embedded into the RVALUE slot. [ruby-core:81235] [Feature #13552] name |trunk |built ----------------------|------:|------: vm_thread_condvar1 | 0.858| 0.858 vm_thread_condvar2 | 1.003| 0.804 vm_thread_queue | 0.131| 0.129 vm_thread_sized_queue | 0.265| 0.251 vm_thread_sized_queue2| 0.892| 0.859 vm_thread_sized_queue3| 0.879| 0.845 vm_thread_sized_queue4| 0.599| 0.486 Speedup ratio: compare with the result of `trunk' (greater is better) name |built ----------------------|------: vm_thread_condvar1 | 0.999 vm_thread_condvar2 | 1.246 vm_thread_queue | 1.020 vm_thread_sized_queue | 1.057 vm_thread_sized_queue2| 1.039 vm_thread_sized_queue3| 1.041 vm_thread_sized_queue4| 1.233 ------------------------------------------------------------------------ r58804 | normal | 2017-05-20 03:34:38 +0900 (Sat, 20 May 2017) | 4 lines thread_sync.c: rename mutex_waiter struct to sync_waiter We will reuse this struct for ConditionVariable, Queue, and SizedQueue, so it is no longer Mutex-specific. ------------------------------------------------------------------------ r58803 | naruse | 2017-05-20 01:19:46 +0900 (Sat, 20 May 2017) | 1 line Define classes for r58800 ------------------------------------------------------------------------ r58802 | svn | 2017-05-20 01:06:26 +0900 (Sat, 20 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58801 | naruse | 2017-05-20 01:06:25 +0900 (Sat, 20 May 2017) | 5 lines Net::HTTP::STATUS_CODES is added as HTTP Status Code Repository [Misc #12935] Note that 418 I'm a teapot doesn't exist because RFC 2324 and RFC 7168 are not registered in IANA repository. https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml ------------------------------------------------------------------------ r58800 | naruse | 2017-05-20 01:06:18 +0900 (Sat, 20 May 2017) | 1 line Add more HTTP status classes ------------------------------------------------------------------------ r58799 | svn | 2017-05-20 00:13:42 +0900 (Sat, 20 May 2017) | 1 line * 2017-05-20 ------------------------------------------------------------------------ r58798 | naruse | 2017-05-20 00:13:42 +0900 (Sat, 20 May 2017) | 3 lines Net::HTTP#start now pass :ENV to p_addr by default [Bug #13351] To avoid this, pass nil explicitly. ------------------------------------------------------------------------ r58797 | nobu | 2017-05-19 23:58:38 +0900 (Fri, 19 May 2017) | 4 lines compile.c: dump_disasm_list_with_cursor * compile.c (dump_disasm_list_with_cursor): improve disassemble list. show whole elemetns and mark the current element. ------------------------------------------------------------------------ r58796 | naruse | 2017-05-19 23:14:52 +0900 (Fri, 19 May 2017) | 3 lines Merge latest dtoa.c [Bug #13545] Apply some part of http://www.netlib.org/fp/dtoa.c with my eyes... ------------------------------------------------------------------------ r58795 | usa | 2017-05-19 21:44:46 +0900 (Fri, 19 May 2017) | 5 lines Of course, opened file is not able to unlink on Windows * test/test_tempfile.rb (test_create_with_block): close the tempfile before unlink. fixed a failure on Windows introduced at r58791. ------------------------------------------------------------------------ r58794 | nobu | 2017-05-19 18:36:34 +0900 (Fri, 19 May 2017) | 1 line tempfile.rb: do not call File.identical? on closed stream ------------------------------------------------------------------------ r58793 | svn | 2017-05-19 18:25:53 +0900 (Fri, 19 May 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r58792 | shugo | 2017-05-19 18:25:52 +0900 (Fri, 19 May 2017) | 3 lines net/imap: Net::IMAP#append should not block when NO response is received [ruby-dev:50129] [Bug#13579] ------------------------------------------------------------------------ r58791 | nobu | 2017-05-19 18:20:14 +0900 (Fri, 19 May 2017) | 4 lines tempfile.rb: remove in Tempfile.create * lib/tempfile.rb (Tempfile.create): should not fail even if the temporary file has been removed in the block, just ignore. ------------------------------------------------------------------------ r58790 | duerst | 2017-05-19 17:19:02 +0900 (Fri, 19 May 2017) | 1 line add specs for Unicode-wide case conversions introduced in Ruby 2.4 ------------------------------------------------------------------------ r58789 | duerst | 2017-05-19 17:05:56 +0900 (Fri, 19 May 2017) | 1 line improve examples, fix one improbably should_not value ------------------------------------------------------------------------ r58788 | ko1 | 2017-05-19 16:54:04 +0900 (Fri, 19 May 2017) | 5 lines specify unsigned (fix r58784). * method.h (rb_method_definition_t#type): specify unsigned explicitly. Some compilers (includes VC) returns negative value. ------------------------------------------------------------------------ r58787 | nobu | 2017-05-19 16:34:05 +0900 (Fri, 19 May 2017) | 1 line fix syntax error ------------------------------------------------------------------------ r58786 | nobu | 2017-05-19 16:12:45 +0900 (Fri, 19 May 2017) | 4 lines eval_error.c: enrich backtrace * eval_error.c (print_backtrace): add frame number when printing in reverse order. [Feature #8661] ------------------------------------------------------------------------ r58785 | naruse | 2017-05-19 15:14:43 +0900 (Fri, 19 May 2017) | 1 line Add NEWS about [Feature #8661] ------------------------------------------------------------------------ r58784 | normal | 2017-05-19 15:00:53 +0900 (Fri, 19 May 2017) | 14 lines method.h: pack rb_method_definition_t struct We only have 12 method types, so 4 bits is enough for rb_method_type_t. Size reductions: - x86-64 48 => 40 bytes - x86 28 => 24 bytes * method.h (enum method_optimized_type): split out for CPP (struct rb_method_definition struct): pack on unaligned systems (rb_method_definition_t): split typedef to help ctags [ruby-core:81236] [Feature #13494] ------------------------------------------------------------------------ r58783 | k0kubun | 2017-05-19 00:13:30 +0900 (Fri, 19 May 2017) | 4 lines Fix strange indentation which I introduced at r58773. Hard tabs and spaces are mixed... ------------------------------------------------------------------------ r58782 | svn | 2017-05-19 00:06:48 +0900 (Fri, 19 May 2017) | 1 line * 2017-05-19 ------------------------------------------------------------------------ r58781 | nobu | 2017-05-19 00:06:47 +0900 (Fri, 19 May 2017) | 5 lines common.mk: path in parse.c * common.mk (parse.c): replace source file name in #line pragmas with the path in the source directory, so that binary utilities, e.g. gcov, can find it. ------------------------------------------------------------------------ r58780 | nobu | 2017-05-18 20:29:42 +0900 (Thu, 18 May 2017) | 5 lines potential memory leak * dir.c (rb_dir_getwd): get rid of potential memory leak. * util.c (ruby_getcwd): ditto. ------------------------------------------------------------------------ r58779 | hsbt | 2017-05-18 14:29:04 +0900 (Thu, 18 May 2017) | 1 line Fix a wrong repository name of simplecov. ------------------------------------------------------------------------ r58778 | svn | 2017-05-18 11:42:17 +0900 (Thu, 18 May 2017) | 1 line * 2017-05-18 ------------------------------------------------------------------------ r58777 | hsbt | 2017-05-18 11:42:16 +0900 (Thu, 18 May 2017) | 47 lines Improve CSV parsing performance. Patch by @joshpencheon (Josh Pencheon) [fix GH-1607] #### benchmark-ips results ``` trunk: Warming up -------------------------------------- 4.000 i/100ms Calculating ------------------------------------- 39.661 ({U+00B1}10.1%) i/s - 2.352k in 60.034781s with-patch: Warming up -------------------------------------- 5.000 i/100ms Calculating ------------------------------------- 60.521 ({U+00B1} 9.9%) i/s - 3.595k in 60.047157s ``` #### memory_profiler resuts ``` trunk: allocated memory by class ----------------------------------- 35588490 String 7454320 Array 294000 MatchData 37340 Regexp 11840 Hash 2400 CSV 1600 Proc 1280 Method 800 StringIO with-patch: allocated memory by class ----------------------------------- 18788490 String 3454320 Array 294000 MatchData 37340 Regexp 11840 Hash 2400 CSV 1600 Proc 1280 Method 800 StringIO ``` ------------------------------------------------------------------------ r58776 | ko1 | 2017-05-17 23:43:22 +0900 (Wed, 17 May 2017) | 6 lines modify r58771. * spec/rubyspec/command_line/dash_upper_s_spec.rb: enable tests on vboxsf (VirtualBox shared directory) and change tests to match /success$/ to ignore warnings. This technique is suggested by @unak. ------------------------------------------------------------------------ r58775 | k0kubun | 2017-05-17 23:11:01 +0900 (Wed, 17 May 2017) | 5 lines spec/rubyspec: Add `ruby_version_is` guard for future backport to ruby/spec repository. See r58772 r58773 r58774. ------------------------------------------------------------------------ r58774 | k0kubun | 2017-05-17 22:21:09 +0900 (Wed, 17 May 2017) | 1 line spec/rubyspec: Fix rubyspec for tilde unescape ------------------------------------------------------------------------ r58773 | k0kubun | 2017-05-17 21:34:59 +0900 (Wed, 17 May 2017) | 5 lines cgi/util.rb: Don't escape tilde in #escape to make it compatible with ERB::Util.url_encode. ext/cgi/escape/escape.c: ditto. ------------------------------------------------------------------------ r58772 | k0kubun | 2017-05-17 20:58:09 +0900 (Wed, 17 May 2017) | 7 lines erb.rb: Don't encode tilde in #url_encode Based on patch by madeofcode (Mark Dodwell). [ruby-core:46168] [Bug #6696] [Fix GH-54] `~` is a unreserved character. https://tools.ietf.org/html/rfc3986#section-2.3 ------------------------------------------------------------------------ r58771 | ko1 | 2017-05-17 18:31:34 +0900 (Wed, 17 May 2017) | 4 lines skip some tests on vboxsf. * spec/rubyspec/command_line/dash_upper_s_spec.rb: ------------------------------------------------------------------------ r58770 | hsbt | 2017-05-17 16:56:27 +0900 (Wed, 17 May 2017) | 18 lines Optimize CSV#shift. [Bug #12373][ruby-core:75462] Patch by Yuki Kurihara. Benchmark: ``` Warming up -------------------------------------- csv_shift 1.000 i/100ms new_csv_shift 1.000 i/100ms Calculating ------------------------------------- csv_shift 1.192 ({U+00B1} 0.0%) i/s - 6.000 in 5.034250s new_csv_shift 1.527 ({U+00B1} 0.0%) i/s - 8.000 in 5.243446s Comparison: new_csv_shift: 1.5 i/s csv_shift: 1.2 i/s - 1.28x slower ``` ------------------------------------------------------------------------ r58769 | naruse | 2017-05-17 16:13:47 +0900 (Wed, 17 May 2017) | 1 line Treat NULL reference case [Bug #13566] ------------------------------------------------------------------------ r58768 | naruse | 2017-05-17 14:38:37 +0900 (Wed, 17 May 2017) | 3 lines Merge Onigmo 6.1.2 https://github.com/k-takata/Onigmo/commit/1364ae3488cac0acbf2d61ef3ce2b62fe0c0f528 ------------------------------------------------------------------------ r58767 | nobu | 2017-05-17 13:47:05 +0900 (Wed, 17 May 2017) | 4 lines ruby.c: encode script name * ruby.c (process_options): encode script name to locale encoding instead of associate, if UTF-8 path. ------------------------------------------------------------------------ r58766 | nobu | 2017-05-17 13:44:12 +0900 (Wed, 17 May 2017) | 4 lines .gdbinit: fix nd_tree * .gdbinit (nd_tree): use rb_str_tmp_new to get rid of `__extension__'. ------------------------------------------------------------------------ r58765 | nobu | 2017-05-17 09:28:01 +0900 (Wed, 17 May 2017) | 6 lines test_dir_m17n.rb: read in filesystem encoding * test/ruby/test_dir_m17n.rb (test_entries_compose): read in filesystem encoding instead of default external encoding on Windows too. these two encodings may differ on some environments. ------------------------------------------------------------------------ r58764 | normal | 2017-05-17 08:59:01 +0900 (Wed, 17 May 2017) | 4 lines Revert "test/test_extilibs.rb: do not check the existence of fiddle" This reverts r58761 since fiddle is considered critical. [ruby-core:81201] [ruby-core:81203] ------------------------------------------------------------------------ r58763 | usa | 2017-05-17 08:15:56 +0900 (Wed, 17 May 2017) | 5 lines ENV["HOME"] is prior as home on Windows * spec/rubyspec/core/dir/home_spec.rb: ENV["HOME"] is prior as home on Windows. reported by ko1. ------------------------------------------------------------------------ r58762 | nobu | 2017-05-17 08:09:34 +0900 (Wed, 17 May 2017) | 4 lines gmake.mk: test dependency * defs/gmake.mk (TEST_DEPENDS): check and more tests targets need all to be built. ------------------------------------------------------------------------ r58761 | normal | 2017-05-17 07:05:39 +0900 (Wed, 17 May 2017) | 6 lines test/test_extilibs.rb: do not check the existence of fiddle libffi is not installed on all systems, and is not needed for most of the tests. Tested on a fresh FreeBSD 11.0 VM ------------------------------------------------------------------------ r58760 | usa | 2017-05-17 01:16:47 +0900 (Wed, 17 May 2017) | 9 lines Should require at spec file, not fixture file Fixed ERRORs at non-Windows platforms. * spec/rubyspec/library/win32ole/fixtures/classes.rb (require): removed. * spec/rubyspec/library/win32ole/win32ole/ole_get_methods_spec.rb (require): forgotten to require 'win32ole'. ------------------------------------------------------------------------ r58759 | nobu | 2017-05-17 00:47:44 +0900 (Wed, 17 May 2017) | 1 line run tests without exts ------------------------------------------------------------------------ r58758 | usa | 2017-05-17 00:45:25 +0900 (Wed, 17 May 2017) | 5 lines Should require WIN32OLE * spec/rubyspec/library/win32ole/fixtures/classes.rb: should require WIN32OLE here because this file causes NameError in parallel spec. ------------------------------------------------------------------------ r58757 | svn | 2017-05-17 00:17:40 +0900 (Wed, 17 May 2017) | 1 line * 2017-05-17 ------------------------------------------------------------------------ r58756 | nobu | 2017-05-17 00:17:39 +0900 (Wed, 17 May 2017) | 4 lines test/unit.rb: fix returning job tokens * test/lib/test/unit.rb (_run_parallel): flush job tokens after quitting workers when normally finished too. ------------------------------------------------------------------------ r58755 | nobu | 2017-05-16 23:53:04 +0900 (Tue, 16 May 2017) | 5 lines test_process.rb: compare in UTF-8 * test/ruby/test_process.rb (test_execopts_open_chdir_m17n_path): compare directory name in UTF-8. encoding of `Dir.pwd` is affected by filesystem encoding. ------------------------------------------------------------------------ r58754 | nobu | 2017-05-16 22:57:18 +0900 (Tue, 16 May 2017) | 1 line Use raise_error block ------------------------------------------------------------------------ r58753 | nobu | 2017-05-16 22:51:17 +0900 (Tue, 16 May 2017) | 1 line Mac OS raises EADDRNOTAVAIL but not ECONNREFUSED ------------------------------------------------------------------------ r58752 | nobu | 2017-05-16 22:51:15 +0900 (Tue, 16 May 2017) | 1 line Multiple exception classes at raise_error ------------------------------------------------------------------------ r58751 | usa | 2017-05-16 22:50:51 +0900 (Tue, 16 May 2017) | 2 lines * common.mk (help): get rid of make error with nmake. ------------------------------------------------------------------------ r58750 | ko1 | 2017-05-16 22:22:42 +0900 (Tue, 16 May 2017) | 1 line restore yes-test-rubyspec ------------------------------------------------------------------------ r58749 | nobu | 2017-05-16 22:15:12 +0900 (Tue, 16 May 2017) | 1 line follow test-spec ------------------------------------------------------------------------ r58748 | eregon | 2017-05-16 21:29:44 +0900 (Tue, 16 May 2017) | 1 line Avoid using a class variable in socket specs ------------------------------------------------------------------------ r58747 | eregon | 2017-05-16 21:29:30 +0900 (Tue, 16 May 2017) | 3 lines Use a reserved port to test for a non-existing TCP server * Avoids a race between finding an available port and another process starting a server on it. ------------------------------------------------------------------------ r58746 | usa | 2017-05-16 21:15:48 +0900 (Tue, 16 May 2017) | 5 lines Rename rubyspec to spec * common.mk (*-rubyspec): rename to *-spec because rubyspec is historical name. of course, *-rubyspec are still available for compatibility. ------------------------------------------------------------------------ r58745 | nobu | 2017-05-16 19:25:56 +0900 (Tue, 16 May 2017) | 6 lines rb_w32_ugetcwd: UTF-8 version getcwd * dir.c (rb_dir_getwd): convert from UTF-8. * win32/win32.c (w32_getcwd): codepage aware getcwd using GetCurrentDirectoryW. ------------------------------------------------------------------------ r58744 | hsbt | 2017-05-16 18:32:32 +0900 (Tue, 16 May 2017) | 3 lines Strip punctuation from CSV headers in symbol converter. Patch by @cllns. [Fix GH-957] ------------------------------------------------------------------------ r58743 | hsbt | 2017-05-16 18:17:09 +0900 (Tue, 16 May 2017) | 3 lines Added accessor of original line when parsing. [Feature #11865][ruby-core:72452][fix GH-1170] ------------------------------------------------------------------------ r58742 | usa | 2017-05-16 17:03:53 +0900 (Tue, 16 May 2017) | 5 lines Search SSL libraries by testing various filename patterns * ext/openssl/extconf.rb (find_openssl_library): should search by more flexible method, especially for LibreSSL on Windows. ------------------------------------------------------------------------ r58741 | nobu | 2017-05-16 14:47:53 +0900 (Tue, 16 May 2017) | 4 lines fix tempfile leaks on Windows * lib/rubygems/ext/ext_conf_builder.rb (build): needs to close before unlink on Windows. ------------------------------------------------------------------------ r58740 | naruse | 2017-05-16 14:02:23 +0900 (Tue, 16 May 2017) | 1 line fix words ------------------------------------------------------------------------ r58739 | ko1 | 2017-05-16 13:23:10 +0900 (Tue, 16 May 2017) | 2 lines skip openssl related tests. ------------------------------------------------------------------------ r58738 | svn | 2017-05-16 09:15:55 +0900 (Tue, 16 May 2017) | 1 line * 2017-05-16 ------------------------------------------------------------------------ r58737 | nobu | 2017-05-16 09:15:54 +0900 (Tue, 16 May 2017) | 4 lines enable ruby_w32_codepage on cygwin * debug.c, localeinit.c: enable ruby_w32_codepage on cygwin too. [ruby-core:81163] [Bug #13567] ------------------------------------------------------------------------ r58736 | ko1 | 2017-05-15 23:40:07 +0900 (Mon, 15 May 2017) | 16 lines refresh Gem at the end of `teardown`. * lib/rubygems/test_case.rb (teardown): call `Gem::refresh()` at the end of `teardown`. On parallel test sometimes fails test process. The reason is: (1) previous tests remains `Gem::Specification@@stubs` value which points to temporary directories and the directories are removed by `teardown` method of previous test. (2) `require 'rubygems/gem_runner'` in `test_gem_gem_runner.rb` tries to require test utility file. However, with strange `@@stubs` RubyGems tries to load specification from removed directory. `StubSpecification#to_spec` returns `nil` and error will occur. The solution this patch employs is to refresh all of parameters includes `Gem::Specification@@stubs` by `Gem::refresh()`. ------------------------------------------------------------------------ r58735 | k0kubun | 2017-05-15 22:38:02 +0900 (Mon, 15 May 2017) | 5 lines erb.rb: Use String#<< instead of #concat to optimize String concatenation on rendering. [fix GH-1612] ------------------------------------------------------------------------ r58734 | sorah | 2017-05-15 21:18:55 +0900 (Mon, 15 May 2017) | 7 lines [DOC] File#path result can be inaccurate * file.c(rb_file_path): [DOC] Note that the pathname returned by this method can be inaccurate, for instance file gets moved, renamed, deleted or is created with File::TMPFILE option. Relates to [Feature #13568] ------------------------------------------------------------------------ r58733 | nobu | 2017-05-15 20:32:35 +0900 (Mon, 15 May 2017) | 4 lines optional/capi: use LIBRUBYARG_SHARED * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): use LIBRUBYARG_SHARED for LDSHARED. ------------------------------------------------------------------------ r58732 | nobu | 2017-05-15 20:25:56 +0900 (Mon, 15 May 2017) | 1 line thread_spec.c: use rb_w32_pipe ------------------------------------------------------------------------ r58731 | nobu | 2017-05-15 20:19:12 +0900 (Mon, 15 May 2017) | 1 line io_spec.c: suppress unused-variable warning ------------------------------------------------------------------------ r58730 | nobu | 2017-05-15 20:16:27 +0900 (Mon, 15 May 2017) | 4 lines configure.in: negative time_t for mingw * configure.in: mingw also uses MSVCRT accepts negative time_t. c.f. r58681. ------------------------------------------------------------------------ r58729 | nobu | 2017-05-15 20:16:26 +0900 (Mon, 15 May 2017) | 1 line configure.in: remove dynamic option in LDSHARED ------------------------------------------------------------------------ r58728 | nobu | 2017-05-15 20:16:25 +0900 (Mon, 15 May 2017) | 5 lines optional/capi: fix link on mingw * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): LIBRUBYARG is always necessary unless dynamic lookup is allowed. strip $(DEFFILE) from DLDFLAGS on mingw. ------------------------------------------------------------------------ r58727 | nobu | 2017-05-15 19:32:30 +0900 (Mon, 15 May 2017) | 1 line default.mspec: ignore unavailable FDs ------------------------------------------------------------------------ r58726 | usa | 2017-05-15 16:35:26 +0900 (Mon, 15 May 2017) | 8 lines Should call `ln_s` only when symlink is available * test/fileutils/test_fileutils.rb (test_ln_s): skip if symlink is not available. * test/fileutils/test_fileutils.rb (test_ln_s): remove created symlink certainly. ------------------------------------------------------------------------ r58725 | normal | 2017-05-15 16:33:10 +0900 (Mon, 15 May 2017) | 4 lines test/socket/test_basicsocket.rb (socks): bind explicitly to localhost Binding to a potentially public IP in a test can cause problems if hit by a random port scanner or something... ------------------------------------------------------------------------ r58724 | nobu | 2017-05-15 16:04:48 +0900 (Mon, 15 May 2017) | 1 line define RUBY_DEBUG_ENV only for main.c ------------------------------------------------------------------------ r58723 | ko1 | 2017-05-15 16:02:33 +0900 (Mon, 15 May 2017) | 3 lines add information for debugging. ------------------------------------------------------------------------ r58722 | svn | 2017-05-15 15:17:30 +0900 (Mon, 15 May 2017) | 1 line * 2017-05-15 ------------------------------------------------------------------------ r58721 | nobu | 2017-05-15 15:17:29 +0900 (Mon, 15 May 2017) | 1 line refer flag variables regardless RUBY_DEBUG_ENV ------------------------------------------------------------------------ r58720 | nobu | 2017-05-14 23:27:07 +0900 (Sun, 14 May 2017) | 1 line fix typo ------------------------------------------------------------------------ r58719 | svn | 2017-05-14 23:09:58 +0900 (Sun, 14 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58718 | eregon | 2017-05-14 23:09:56 +0900 (Sun, 14 May 2017) | 1 line Update to ruby/spec@032022ca ------------------------------------------------------------------------ r58717 | svn | 2017-05-14 23:09:30 +0900 (Sun, 14 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58716 | eregon | 2017-05-14 23:09:29 +0900 (Sun, 14 May 2017) | 1 line Update to ruby/mspec@4b980493 ------------------------------------------------------------------------ r58715 | nobu | 2017-05-14 22:01:46 +0900 (Sun, 14 May 2017) | 4 lines suppress a warning [ci skip] * thread_sync.c (rb_mutex_num_waiting): suppress warning C4700 by VC, uninitialized local variable. ------------------------------------------------------------------------ r58714 | nobu | 2017-05-14 20:45:00 +0900 (Sun, 14 May 2017) | 7 lines object.c: use a sized enumerator with #yield_self * object.c (rb_obj_size): The #yield_self Enumerator instance always has a #count of `1`. This provides a lazy #size of `1` to match the count instead of `nil`. [Fix GH-1615] Author: Shannon Skipper <shannonskipper@gmail.com> ------------------------------------------------------------------------ r58713 | naruse | 2017-05-14 20:36:01 +0900 (Sun, 14 May 2017) | 3 lines Don't read non .rb file as a spec To avoid reading `core` file on reading core/ specs. ------------------------------------------------------------------------ r58712 | nobu | 2017-05-14 12:53:59 +0900 (Sun, 14 May 2017) | 4 lines suppress warning * spec/rubyspec/optional/capi/ext/fixnum_spec.c: suppress unused-but-set-variable warning. ------------------------------------------------------------------------ r58711 | nobu | 2017-05-14 12:33:01 +0900 (Sun, 14 May 2017) | 4 lines exts.mk.tmpl: fix multiple rubies * template/exts.mk.tmpl: get rid of making multiple rubies simultaneously. it can cause making libruby in parallel. ------------------------------------------------------------------------ r58710 | nobu | 2017-05-14 10:03:15 +0900 (Sun, 14 May 2017) | 4 lines tgamma on mingw * configure.in: get rid of unreliable tgamma() implemented of mingw, which returns NaN unexpectedly. ------------------------------------------------------------------------ r58709 | nobu | 2017-05-14 09:21:00 +0900 (Sun, 14 May 2017) | 4 lines string.c: cut down intermediate string * string.c (rb_external_str_new_with_enc): cut down intermediate string for conversion source, by appending with conversion. ------------------------------------------------------------------------ r58708 | nobu | 2017-05-14 01:04:05 +0900 (Sun, 14 May 2017) | 1 line revert r58703 & r58705 ------------------------------------------------------------------------ r58707 | svn | 2017-05-14 00:23:39 +0900 (Sun, 14 May 2017) | 1 line * 2017-05-14 ------------------------------------------------------------------------ r58706 | usa | 2017-05-14 00:23:38 +0900 (Sun, 14 May 2017) | 4 lines The exception raised when exec/spawn unexecutable file on Windows is various It seems that depend on OS version or filesystem ------------------------------------------------------------------------ r58705 | nobu | 2017-05-13 23:20:19 +0900 (Sat, 13 May 2017) | 6 lines string.c: fix up r58703 * string.c (rb_external_str_new_with_enc): fix the case of conversion failure. when conversion failed for some reason, just ignores the default internal encoding and returns in the given encoding. ------------------------------------------------------------------------ r58704 | nobu | 2017-05-13 22:54:52 +0900 (Sat, 13 May 2017) | 5 lines remove wrong expectation * spec/rubyspec/core/kernel/itself_spec.rb: `object_id` may return different objects for each calls, and the expectation of object identity is done by `equal` matcher which uses `equal?` method. ------------------------------------------------------------------------ r58703 | nobu | 2017-05-13 22:34:39 +0900 (Sat, 13 May 2017) | 4 lines string.c: cut down intermediate string * string.c (rb_external_str_new_with_enc): cut down intermediate string for conversion source, by appending with conversion. ------------------------------------------------------------------------ r58702 | nobu | 2017-05-13 21:31:01 +0900 (Sat, 13 May 2017) | 4 lines string.c: fix one-off bug * string.c (rb_str_cat_conv_enc_opts): fix one-off bug. `ofs` equals `olen` when appending at the end. ------------------------------------------------------------------------ r58701 | nobu | 2017-05-13 18:55:23 +0900 (Sat, 13 May 2017) | 4 lines make test-rubyspec-precheck * common.mk (yes-test-rubyspec): make test-rubyspec-precheck for fake.rb to setup build configuration. ------------------------------------------------------------------------ r58700 | shugo | 2017-05-13 11:05:40 +0900 (Sat, 13 May 2017) | 1 line test/net/imap: fix race condition in test_exception_during_idle ------------------------------------------------------------------------ r58699 | nobu | 2017-05-13 10:16:36 +0900 (Sat, 13 May 2017) | 1 line thread_win32.c: disable currently unused functions ------------------------------------------------------------------------ r58698 | nobu | 2017-05-13 10:05:30 +0900 (Sat, 13 May 2017) | 4 lines math.c: check argument to lgamma_r * math.c (math_lgamma): check the argument before calling math function `lgamma_r` for edge cases. ------------------------------------------------------------------------ r58697 | nobu | 2017-05-13 09:50:20 +0900 (Sat, 13 May 2017) | 4 lines math.c: check argument to tgamma * math.c (math_gamma): check the argument before calling math function `tgamma` for edge cases. ------------------------------------------------------------------------ r58696 | normal | 2017-05-13 06:52:04 +0900 (Sat, 13 May 2017) | 26 lines autoload: always wait on loading thread We cannot assume autoload_provided/rb_feature_provided returning TRUE means it is safe to proceed without waiting. Another thread may call rb_provide_feature before setting the constant (via autoload_const_set). So we must wait until autoload is completed by another thread. Note: this patch was tested with an explicit rb_thread_schedule in rb_provide_feature to make the race condition more apparent as suggested by <s.wanabe@gmail.com>: > --- a/load.c > +++ b/load.c > @@ -563,6 +563,7 @@ rb_provide_feature(VALUE feature) > rb_str_freeze(feature); > > rb_ary_push(features, rb_fstring(feature)); > +rb_thread_schedule(); > features_index_add(feature, INT2FIX(RARRAY_LEN(features)-1)); > reset_loaded_features_snapshot(); > } * variable.c (check_autoload_required): do not assume a provided feature means autoload is complete, always wait if autoload is being performed by another thread. [ruby-core:81105] [Bug #11384] Thanks to <s.wanabe@gmail.com> ------------------------------------------------------------------------ r58695 | usa | 2017-05-13 05:10:16 +0900 (Sat, 13 May 2017) | 4 lines `notepad.exe` does not always exist in `C:\Windows` Use `%WINDIR%\system32\drivers\etc\services` instead of `notepad.exe`. ------------------------------------------------------------------------ r58694 | nobu | 2017-05-13 02:23:46 +0900 (Sat, 13 May 2017) | 4 lines array.c: fix position in message * array.c (rb_ary_insert): fix the position in error message, when it is less than -1. ------------------------------------------------------------------------ r58693 | nobu | 2017-05-13 02:02:48 +0900 (Sat, 13 May 2017) | 4 lines array.c: check position to insert * array.c (rb_ary_insert): check position to insert even if no elements to be inserted. [ruby-core:81125] [Bug #13558] ------------------------------------------------------------------------ r58692 | naruse | 2017-05-13 02:02:25 +0900 (Sat, 13 May 2017) | 1 line show GEM_HOME ------------------------------------------------------------------------ r58691 | nobu | 2017-05-13 01:12:46 +0900 (Sat, 13 May 2017) | 7 lines fix tgamma for inifity * configure.in: do not use buggy tgamma() of mingw. * missing/tgamma.c (tgamma): merge fix for inifity from ruby_tgamma. since msvcr120.dll and later have tgamma, this implementation will not be used. ------------------------------------------------------------------------ r58690 | svn | 2017-05-13 01:01:18 +0900 (Sat, 13 May 2017) | 1 line * 2017-05-13 ------------------------------------------------------------------------ r58689 | nobu | 2017-05-13 01:01:17 +0900 (Sat, 13 May 2017) | 1 line tgamma.c: unify versions with/without lgamma_r ------------------------------------------------------------------------ r58688 | nobu | 2017-05-13 00:29:55 +0900 (Sat, 13 May 2017) | 4 lines string.c: remove bare Unicode. * string.c (rb_str_unicode_normalize): remove bare Unicode. do not assume that all compilers can handle UTF-8. ------------------------------------------------------------------------ r58687 | usa | 2017-05-12 20:49:05 +0900 (Fri, 12 May 2017) | 5 lines Encoding.default_internal should affect ENV on Windows like other platforms * hash.c (env_str_transcode): call rb_external_str_with_enc() if default_internal is available. ------------------------------------------------------------------------ r58686 | usa | 2017-05-12 19:37:41 +0900 (Fri, 12 May 2017) | 2 lines Windows does not know Unix style timezone ------------------------------------------------------------------------ r58685 | usa | 2017-05-12 19:31:52 +0900 (Fri, 12 May 2017) | 5 lines Math.gamma(Float::INFINITY) should return +INF * math.c (tgamma): it seems that the implementaion of mswin has similar problem with mingw. ------------------------------------------------------------------------ r58684 | usa | 2017-05-12 19:23:53 +0900 (Fri, 12 May 2017) | 2 lines On LLP64 platform (mswin64), the return value of String#hash is fixnum. ------------------------------------------------------------------------ r58683 | usa | 2017-05-12 19:10:15 +0900 (Fri, 12 May 2017) | 4 lines Skip specs which make non-socket fd nonblocking on Windows because Windows does not support nonblocking mode except sockets. ------------------------------------------------------------------------ r58682 | usa | 2017-05-12 19:05:48 +0900 (Fri, 12 May 2017) | 2 lines Support bulding the extension on Windows ------------------------------------------------------------------------ r58681 | usa | 2017-05-12 18:46:45 +0900 (Fri, 12 May 2017) | 2 lines It seems that MSVCRT accepts negative time_t ------------------------------------------------------------------------ r58680 | shugo | 2017-05-12 18:39:23 +0900 (Fri, 12 May 2017) | 4 lines net/imap: Revert read_tiemout in r58549. get_response is called in a receiver thread, so there may be no pending commands when get_response is called. ------------------------------------------------------------------------ r58679 | usa | 2017-05-12 18:36:57 +0900 (Fri, 12 May 2017) | 2 lines unistd.h is only available when HAVE_UNISTD_H is 1 ------------------------------------------------------------------------ r58678 | usa | 2017-05-12 18:17:10 +0900 (Fri, 12 May 2017) | 2 lines Skip the spec which uses `fork` on Windows ------------------------------------------------------------------------ r58677 | usa | 2017-05-12 17:45:20 +0900 (Fri, 12 May 2017) | 6 lines The title of "Desktop" may be localized * spec/rubyspec/library/win32ole/win32ole/_invoke_spec.rb: the title of "Desktop" may be localized. then, use "System32" because it seems not to be localized. ------------------------------------------------------------------------ r58676 | usa | 2017-05-12 17:11:35 +0900 (Fri, 12 May 2017) | 5 lines Skip on Windows because it always fails On Windows, when invoking ruby via runruby.rb, the pid of invoker and of invokee are diffrent. Therefore, this spec always fails. ------------------------------------------------------------------------ r58675 | nobu | 2017-05-12 17:10:36 +0900 (Fri, 12 May 2017) | 6 lines remove code old versions * spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): remove code old versions. `RbConfig::CONFIG["rubyhdrdir"]` is since 1.9, and `RbConfig::CONFIG["rubyarchhdrdir"]` is since 2.0.0. ------------------------------------------------------------------------ r58674 | nobu | 2017-05-12 16:48:08 +0900 (Fri, 12 May 2017) | 5 lines gc.c: checks of sizes * gc.c (ruby_xmalloc, ruby_xmalloc2, ruby_xcalloc): move checks of sizes from objspace_xmalloc, objspace_xmalloc2, objspace_xcalloc, respectively. ------------------------------------------------------------------------ r58673 | nobu | 2017-05-12 16:48:05 +0900 (Fri, 12 May 2017) | 4 lines gc.c: objspace_malloc_fixup * gc.c (objspace_malloc_fixup): include allocated size managements. ------------------------------------------------------------------------ r58672 | usa | 2017-05-12 15:48:53 +0900 (Fri, 12 May 2017) | 2 lines spec has been merged, then should run it in love ------------------------------------------------------------------------ r58671 | usa | 2017-05-12 15:39:43 +0900 (Fri, 12 May 2017) | 5 lines Support building exts of spec on mswin * spec/rubyspec/optional/capi/spec_helper.rb: building command of extensions on mswin differs from Unixen's one. ------------------------------------------------------------------------ r58670 | nobu | 2017-05-12 15:19:00 +0900 (Fri, 12 May 2017) | 4 lines vm.c: free by ruby_xfree * vm.c (ruby_vm_run_at_exit_hooks): should free by `ruby_xfree` memories allocated by `ALLOC`. ------------------------------------------------------------------------ r58669 | stomar | 2017-05-12 03:59:45 +0900 (Fri, 12 May 2017) | 3 lines string.c: docs for String#match * string.c: [DOC] add example for String#match with pos argument. ------------------------------------------------------------------------ r58668 | stomar | 2017-05-12 03:58:27 +0900 (Fri, 12 May 2017) | 4 lines string.c: docs for Symbol * string.c: [DOC] adopt call-seq's for Symbol#{match,match?} from String methods; other small improvements for Symbol docs. ------------------------------------------------------------------------ r58667 | svn | 2017-05-12 03:56:33 +0900 (Fri, 12 May 2017) | 1 line * 2017-05-12 ------------------------------------------------------------------------ r58666 | stomar | 2017-05-12 03:56:32 +0900 (Fri, 12 May 2017) | 4 lines string.c: docs for Symbol#{match,match?} * string.c: [DOC] mention pos argument for Symbol#{match,match?}. Patch by Yuki Kurihara (ksss). [Fix GH-1606] ------------------------------------------------------------------------ r58665 | nobu | 2017-05-11 23:28:38 +0900 (Thu, 11 May 2017) | 4 lines gc.c: skip unnecessary check * gc.c (wmap_aset): skip unnecessary size check. `2*sizeof(VALUE)` is static and should never overflow. ------------------------------------------------------------------------ r58664 | nobu | 2017-05-11 23:28:37 +0900 (Thu, 11 May 2017) | 4 lines gc.c: use the argument objspace * gc.c (objspace_xrealloc): use the argument objspace, instead of the default object space. ------------------------------------------------------------------------ r58663 | shugo | 2017-05-11 16:56:52 +0900 (Thu, 11 May 2017) | 1 line net/imap: Net::IMAP#disconnect need not do anything if already disconnected ------------------------------------------------------------------------ r58662 | nobu | 2017-05-11 11:38:09 +0900 (Thu, 11 May 2017) | 4 lines process.c: fix error check * process.c (obj2uid, obj2gid): check the error number returned by `getpwnam_r()` and `getgrnam_r()`, instead of `errno`. ------------------------------------------------------------------------ r58661 | nobu | 2017-05-11 08:52:14 +0900 (Thu, 11 May 2017) | 4 lines fix up r57167 * test/lib/minitest/unit.rb (MiniTest::Unit#_run_anything): stop if any errors or failures. ------------------------------------------------------------------------ r58660 | naruse | 2017-05-11 08:38:28 +0900 (Thu, 11 May 2017) | 1 line pass as exception ------------------------------------------------------------------------ r58659 | nobu | 2017-05-11 08:34:33 +0900 (Thu, 11 May 2017) | 1 line . ------------------------------------------------------------------------ r58658 | nobu | 2017-05-11 08:18:07 +0900 (Thu, 11 May 2017) | 5 lines process.c: temporary string for buffer * process.c (obj2uid, obj2gid): use temporary string as the buffer instead of `rb_alloc_tmp_buffer`, which is `NODE_ALLOCA` since r51492. [ruby-core:81084] [Bug #13554] ------------------------------------------------------------------------ r58657 | naruse | 2017-05-11 04:19:38 +0900 (Thu, 11 May 2017) | 1 line Show garbages if requiring gem_runner is failed ------------------------------------------------------------------------ r58656 | svn | 2017-05-11 04:03:07 +0900 (Thu, 11 May 2017) | 1 line * 2017-05-11 ------------------------------------------------------------------------ r58655 | stomar | 2017-05-11 04:03:07 +0900 (Thu, 11 May 2017) | 4 lines lib/uri/generic.rb: fix typos * lib/uri/generic.rb: [DOC] fix typos in URI::Generic#== docs. Patch by Alyssa Ross (alyssais). [Fix GH-1604] ------------------------------------------------------------------------ r58654 | eregon | 2017-05-10 23:35:38 +0900 (Wed, 10 May 2017) | 1 line Use environment values to find ruby and flags instead of an argument ------------------------------------------------------------------------ r58653 | eregon | 2017-05-10 23:35:24 +0900 (Wed, 10 May 2017) | 1 line Use ruby_cmd instead of the RUBY_EXE constant in specs ------------------------------------------------------------------------ r58652 | nobu | 2017-05-10 23:25:03 +0900 (Wed, 10 May 2017) | 1 line gc.c: check of size in ruby_sized_xrealloc ------------------------------------------------------------------------ r58651 | eregon | 2017-05-10 23:18:23 +0900 (Wed, 10 May 2017) | 1 line Use the Mutex to know whether we entered the signal handler in Process#kill specs ------------------------------------------------------------------------ r58650 | eregon | 2017-05-10 23:18:10 +0900 (Wed, 10 May 2017) | 1 line Process.getpgrp and Process.setsid must be available for Process#kill group specs ------------------------------------------------------------------------ r58649 | eregon | 2017-05-10 23:17:58 +0900 (Wed, 10 May 2017) | 1 line Use #system directly with multiple arguments in Process#kill specs ------------------------------------------------------------------------ r58648 | naruse | 2017-05-10 16:23:06 +0900 (Wed, 10 May 2017) | 1 line confirm current process equals to gemhome's pid ------------------------------------------------------------------------ r58647 | nobu | 2017-05-10 15:38:30 +0900 (Wed, 10 May 2017) | 4 lines test_exception.rb: test_machine_stackoverflow_by_trace * test/ruby/test_exception.rb (test_machine_stackoverflow_by_trace): move from test_trace.rb and rename, to be excluded by the default. ------------------------------------------------------------------------ r58646 | nobu | 2017-05-10 09:39:26 +0900 (Wed, 10 May 2017) | 1 line adjust styles [ci skip] ------------------------------------------------------------------------ r58645 | nobu | 2017-05-10 09:20:02 +0900 (Wed, 10 May 2017) | 1 line math.c (ruby_lgamma_r): reduce duplicate code ------------------------------------------------------------------------ r58644 | normal | 2017-05-10 04:52:10 +0900 (Wed, 10 May 2017) | 11 lines test/thread: relax internal implementation check in error message Queue, SizedQueue, and ConditionVariable internal implementation should not be tied to using arrays. Implementation details can change and I am working on a change to remove the dependency on arrays (as others may attempt, too) by using ccan/list for the waiter list. * test/thread/test_cv.rb (test_dump): remove check for Array * test/thread/test_queue.rb (test_dump): ditto [ruby-core:81001] [Misc #13541] ------------------------------------------------------------------------ r58643 | stomar | 2017-05-10 03:56:22 +0900 (Wed, 10 May 2017) | 7 lines date_core.c: fix docs for %Z format * ext/date/date_core.c: [DOC] fix documentation for %Z format of {Date,DateTime}.strftime. Reported by Damon Timm. Based on a patch by nano. [ruby-core:79602] [Bug #13231] [Fix GH-1565] ------------------------------------------------------------------------ r58642 | naruse | 2017-05-10 02:41:10 +0900 (Wed, 10 May 2017) | 1 line dump stub specifications if nil ------------------------------------------------------------------------ r58641 | nobu | 2017-05-10 02:20:00 +0900 (Wed, 10 May 2017) | 7 lines parse.y: brace after literal arg * parse.y (symbol, dsym, parser_set_number_literal, parser_yylex): set state to END too not only ENDARG and after a literal, so that a left brace after it should be a primary block bound to the literal, which causes syntax error. [ruby-core:81037] [Bug #13547] ------------------------------------------------------------------------ r58640 | nobu | 2017-05-10 02:12:43 +0900 (Wed, 10 May 2017) | 6 lines parse.y: do after cmdarg in paren * parse.y (parser_yylex): set state to ENDARG after a string literal, so that `do` after a literal should be `do_block` and bound to the outer method, as well as a numeric/symbol literal. [ruby-core:72482] [Bug #11873] ------------------------------------------------------------------------ r58639 | svn | 2017-05-10 02:02:08 +0900 (Wed, 10 May 2017) | 1 line * 2017-05-10 ------------------------------------------------------------------------ r58638 | nobu | 2017-05-10 02:02:07 +0900 (Wed, 10 May 2017) | 4 lines test_syntax.rb: test_brace_after_local_variable * test/ruby/test_syntax.rb (test_brace_after_local_variable): another test using braces. [Bug #11873] ------------------------------------------------------------------------ r58621 | nobu | 2017-05-09 23:11:46 +0900 (Tue, 09 May 2017) | 4 lines string.c: fix r58618 * string.c (unicode_normalize_common): aggregation type cannot be initialized with dynamic values, in C89. ------------------------------------------------------------------------ r58618 | duerst | 2017-05-09 20:13:45 +0900 (Tue, 09 May 2017) | 6 lines replace hand-written argument check by call to rb_scan_args in unicode_normalize_common In string.c, replace hand-written argument count check by call to rb_scan_args. This allows to use rb_funcallv once, rather than using rb_funcall twice. Thanks to Hanmac (Hans Mackowiak) for the idea, see https://bugs.ruby-lang.org/issues/11078#note-7. ------------------------------------------------------------------------ r58617 | duerst | 2017-05-09 19:45:46 +0900 (Tue, 09 May 2017) | 6 lines add explanations about status of module UnicodeNormalize In lib/unicode_normalize/normalize.rb, add explanations and clarifications about the status of the files and the module. [ci skip] This is in response to discussions at https://github.com/ruby/spec/pull/433 and https://bugs.ruby-lang.org/issues/5481#note-58. ------------------------------------------------------------------------ r58616 | naruse | 2017-05-09 16:47:28 +0900 (Tue, 09 May 2017) | 1 line Add one more guard to avoid mixing nil into latest_specs ------------------------------------------------------------------------ r58615 | normal | 2017-05-09 15:17:01 +0900 (Tue, 09 May 2017) | 3 lines fixup r58614 for raspi3 and maybe other systems with odd compile [ruby-core:81048] ------------------------------------------------------------------------ r58614 | normal | 2017-05-09 14:06:41 +0900 (Tue, 09 May 2017) | 7 lines rb_execution_context_t: move stack, stack_size and cfp from rb_thread_t The goal is to reduce rb_context_t and rb_fiber_t size by removing the need to store the entire rb_thread_t in there. [ruby-core:81045] Work-in-progress: soon, we will move more fields here. ------------------------------------------------------------------------ r58613 | nobu | 2017-05-09 11:55:51 +0900 (Tue, 09 May 2017) | 5 lines Ignore fail on non empty ext and gems [ci skip] * Makefile.in ({ext,gems}/{distclean,realclean}): ignore fail on removal of non empty directories. these directories should not be empty when in-place build. ------------------------------------------------------------------------ r58612 | svn | 2017-05-09 01:00:02 +0900 (Tue, 09 May 2017) | 1 line * 2017-05-09 ------------------------------------------------------------------------ r58611 | kazu | 2017-05-09 01:00:00 +0900 (Tue, 09 May 2017) | 1 line Add mspec and rubyspec to LEGAL [ci skip] ------------------------------------------------------------------------ r58610 | hsbt | 2017-05-08 22:14:24 +0900 (Mon, 08 May 2017) | 3 lines Translate missing rdoc comment for opt_send_without_block. fix [GH-1608], Patch by @k0kubun ------------------------------------------------------------------------ r58609 | nobu | 2017-05-08 14:31:02 +0900 (Mon, 08 May 2017) | 4 lines separate constdefs.c and constdefs.h * ext/socket/depend: separate constdefs.c and constdefs.h so that only one process will run when parallel building. ------------------------------------------------------------------------ r58608 | normal | 2017-05-08 10:59:17 +0900 (Mon, 08 May 2017) | 10 lines reduce rb_mutex_t size from 80 bytes to 72 bytes on 64-bit We can use existing RVALUE flags to avoid adding a 4-byte integer to store a boolean flag. This integer cost us 8 bytes due to default (lack of) struct packing on x86-64 * thread_sync.c (MUTEX_ALLOW_TRAP): define as FL_USER1 (struct rb_mutex_struct): remove allow_trap (rb_mutex_lock): adjust for flag check (rb_mutex_allow_trap): adjust for flag set/unset ------------------------------------------------------------------------ r58607 | svn | 2017-05-08 10:59:13 +0900 (Mon, 08 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58606 | normal | 2017-05-08 10:59:12 +0900 (Mon, 08 May 2017) | 5 lines benchmark/bm_vm2_fiber_switch.rb: check for fiber performance There are currently no benchmarks for Fiber performance, I should've committed this years ago when [Feature #10341] was implemented. ------------------------------------------------------------------------ r58605 | svn | 2017-05-08 09:18:54 +0900 (Mon, 08 May 2017) | 1 line * 2017-05-08 ------------------------------------------------------------------------ r58604 | normal | 2017-05-08 09:18:53 +0900 (Mon, 08 May 2017) | 57 lines reduce rb_mutex_t size from 160 to 80 bytes on 64-bit Instead of relying on a native condition variable and mutex for every Ruby Mutex object, use a doubly linked-list to implement a waiter queue in the Mutex. The immediate benefit of this is reducing the size of every Mutex object, as some projects have many objects requiring synchronization. In the future, this technique using a linked-list and on-stack list node (struct mutex_waiter) should allow us to easily transition to M:N threading model, as we can avoid the native thread dependency to implement Mutex. We already do something similar for autoload in variable.c, and this was inspired by the Linux kernel wait queue (as ccan/list is inspired by the Linux kernel linked-list). Finaly, there are big performance improvements for Mutex benchmarks, especially in contended cases: measure target: real name |trunk |built ----------------|------:|------: loop_whileloop2 | 0.149| 0.148 vm2_mutex* | 0.893| 0.651 vm_thread_mutex1| 0.809| 0.624 vm_thread_mutex2| 2.608| 0.628 vm_thread_mutex3| 28.227| 0.881 Speedup ratio: compare with the result of `trunk' (greater is better) name |built ----------------|------: loop_whileloop2 | 1.002 vm2_mutex* | 1.372 vm_thread_mutex1| 1.297 vm_thread_mutex2| 4.149 vm_thread_mutex3| 32.044 Tested on AMD FX-8320 8-core at 3.5GHz * thread_sync.c (struct mutex_waiter): new on-stack struct (struct rb_mutex_struct): remove native lock/cond, use ccan/list (rb_mutex_num_waiting): new function for debug_deadlock_check (mutex_free): remove native_*_destroy (mutex_alloc): initialize waitq, remove native_*_initialize (rb_mutex_trylock): remove native_mutex_{lock,unlock} (lock_func): remove (lock_interrupt): remove (rb_mutex_lock): rewrite waiting path to use native_sleep + ccan/list (rb_mutex_unlock_th): rewrite to wake up from native_sleep using rb_threadptr_interrupt (rb_mutex_abandon_all): empty waitq * thread.c (debug_deadlock_check): update for new struct (rb_check_deadlock): ditto [ruby-core:80913] [Feature #13517] ------------------------------------------------------------------------ r58603 | nobu | 2017-05-07 23:21:10 +0900 (Sun, 07 May 2017) | 4 lines relative path as VPATH * common.mk (ripper.c): use relative path as VPATH instead of absolute path of the current working directory. ------------------------------------------------------------------------ r58602 | nobu | 2017-05-07 23:03:52 +0900 (Sun, 07 May 2017) | 1 line parse.y: export rb_parser_fatal for ripper ------------------------------------------------------------------------ r58601 | nobu | 2017-05-07 22:40:56 +0900 (Sun, 07 May 2017) | 3 lines stale targets * common.mk (update-mspec, update-rubyspec): empty stale targets. ------------------------------------------------------------------------ r58600 | nobu | 2017-05-07 22:06:34 +0900 (Sun, 07 May 2017) | 4 lines extract prereq.status * tool/make-snapshot (package): extract static config values for prereq and override dynamic values at runtime. ------------------------------------------------------------------------ r58599 | eregon | 2017-05-07 21:26:25 +0900 (Sun, 07 May 2017) | 1 line Update specs to follow newlines added by r58596 ------------------------------------------------------------------------ r58598 | eregon | 2017-05-07 21:17:21 +0900 (Sun, 07 May 2017) | 1 line Rename spec/README to spec/README.md ------------------------------------------------------------------------ r58597 | svn | 2017-05-07 21:05:45 +0900 (Sun, 07 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58596 | svn | 2017-05-07 21:05:36 +0900 (Sun, 07 May 2017) | 1 line * remove trailing spaces, append newline at EOF. ------------------------------------------------------------------------ r58595 | eregon | 2017-05-07 21:04:49 +0900 (Sun, 07 May 2017) | 8 lines Add in-tree mspec and ruby/spec * For easier modifications of ruby/spec by MRI developers. * .gitignore: track changes under spec. * spec/mspec, spec/rubyspec: add in-tree mspec and ruby/spec. These files can therefore be updated like any other file in MRI. Instructions are provided in spec/README. [Feature #13156] [ruby-core:79246] ------------------------------------------------------------------------ r58594 | eregon | 2017-05-07 21:01:26 +0900 (Sun, 07 May 2017) | 3 lines make update-rubyspec is no longer needed * Kept a no-op for compatibility. ------------------------------------------------------------------------ r58593 | eregon | 2017-05-07 21:01:12 +0900 (Sun, 07 May 2017) | 1 line Update README about ruby/spec ------------------------------------------------------------------------ r58592 | eregon | 2017-05-07 21:00:58 +0900 (Sun, 07 May 2017) | 2 lines * spec/default.mspec: only require rbconfig if is it not already. Useful when running spec/mspec/bin/mspec directly. ------------------------------------------------------------------------ r58591 | normal | 2017-05-07 17:06:02 +0900 (Sun, 07 May 2017) | 17 lines vm_core.h (rb_thread_t): use 32-bit running_time_us The current range based current values of: TIME_QUANTUM_USEC=100000 RUBY_THREAD_PRIORITY_MAX=3 RUBY_THREAD_PRIORITY_MIN=-3 Gives a range of 12500..800000, plenty enough for a 32-bit integer. Clamping this also reduces potential implementation bugs between 32-bit and 64-bit platforms. I may consider a further reduction to uint16_t in the future for M:N threading, but some users may want slightly larger time quantums. * vm_core.h (rb_thread_t): use 32-bit running_time_us ------------------------------------------------------------------------ r58590 | normal | 2017-05-07 16:38:30 +0900 (Sun, 07 May 2017) | 7 lines io.c (do_fcntl): update max FD for F_DUPFD_CLOEXEC, too Somebody may pass 1030 (the value of F_DUPFD_CLOEXEC) to IO#fcntl because they copied code from somewhere else. Ensure we know about FDs created that way. * io.c (do_fcntl): update max FD for F_DUPFD_CLOEXEC, too ------------------------------------------------------------------------ r58589 | stomar | 2017-05-07 16:18:10 +0900 (Sun, 07 May 2017) | 1 line NEWS: Integer#{round,floor,ceil,truncate} [Bug #13420] ------------------------------------------------------------------------ r58588 | svn | 2017-05-07 13:26:38 +0900 (Sun, 07 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58587 | normal | 2017-05-07 13:26:37 +0900 (Sun, 07 May 2017) | 10 lines variable.c: cleanup waitq upon thread death * variable.c (autoload_reset): use idempotent list_del_init (autoload_sleep): moved code from rb_autoload_load (autoload_sleep_done): cleanup for use with rb_ensure (rb_autoload_load): ensure list delete happens in case the thread dies during sleep * test/ruby/bug-13526.rb: new script for separate execution * test/ruby/test_autoload.rb (test_bug_13526): new test [ruby-core:81016] [Bug #13526] ------------------------------------------------------------------------ r58586 | stomar | 2017-05-07 04:58:12 +0900 (Sun, 07 May 2017) | 12 lines make Integer#{round,floor,ceil,truncate} always return integer * numeric.c (int_round): return integer (self) instead of float for Integer#round with positive ndigits argument, because conversion to float introduces errors for large integers. * numeric.c (int_floor): ditto for Integer#floor. * numeric.c (int_ceil): ditto for Integer#ceil. * numeric.c (int_truncate): ditto for Integer#truncate. * test/ruby/test_integer.rb: adjust test cases and add some more. [ruby-core:80645] [Bug #13420] ------------------------------------------------------------------------ r58585 | svn | 2017-05-07 00:14:59 +0900 (Sun, 07 May 2017) | 1 line * 2017-05-07 ------------------------------------------------------------------------ r58584 | nobu | 2017-05-07 00:14:58 +0900 (Sun, 07 May 2017) | 6 lines ripper/lexer.rb: nested indented heredoc * ext/ripper/lib/ripper/lexer.rb (on_heredoc_dedent): insert stripped leading spaces as `on_ignored_sp` elements, so that the original source can be reconsructed. [ruby-core:80977] [Bug #13536] ------------------------------------------------------------------------ r58583 | nobu | 2017-05-06 23:12:30 +0900 (Sat, 06 May 2017) | 4 lines fix up r58573 * common.mk: make the directory for extension shared library with the timestamp directory. ------------------------------------------------------------------------ r58582 | stomar | 2017-05-06 16:28:40 +0900 (Sat, 06 May 2017) | 3 lines math.c: improve docs for Math.sqrt * math.c: [DOC] mention Integer.sqrt in docs for Math.sqrt. ------------------------------------------------------------------------ r58581 | stomar | 2017-05-06 16:18:49 +0900 (Sat, 06 May 2017) | 4 lines numeric.c: remove mention of Bignum from docs * numeric.c: [DOC] remove mention of Bignum from Integer#{+,-,*,/}, the return type does not depend on magnitude anymore. ------------------------------------------------------------------------ r58580 | stomar | 2017-05-06 16:17:41 +0900 (Sat, 06 May 2017) | 9 lines numeric.c: revise docs * numeric.c: [DOC] revise docs for Numeric, Integer, Float: * nodoc Numeric#singleton_method_added * mention that result for Integer#** might also be Complex * add / simplify / fix some examples * mention aliases * fix rdoc formatting, typos, grammar * clarifications and other improvements ------------------------------------------------------------------------ r58579 | duerst | 2017-05-06 13:42:58 +0900 (Sat, 06 May 2017) | 2 lines delete enc/prelude.rb, because no longer needed ------------------------------------------------------------------------ r58578 | duerst | 2017-05-06 12:12:26 +0900 (Sat, 06 May 2017) | 3 lines delete lib/unicode_normalize.rb, because no longer needed (all content has been moved to string.c) ------------------------------------------------------------------------ r58577 | duerst | 2017-05-06 11:54:02 +0900 (Sat, 06 May 2017) | 5 lines remove enc/prelude.rb from list of prelude files in common.mk (This is a retry of r58559, it should work now that rubyspec does no longer check for unicode_normalized to be required. See also https://github.com/ruby/spec/commit/41176ead68b14011658c8abd0ebd67df2ae632fb.) ------------------------------------------------------------------------ r58576 | nobu | 2017-05-06 10:33:04 +0900 (Sat, 06 May 2017) | 5 lines share `@@accept_charset` * lib/cgi/{core,util}.rb: include CGI::Util not only extending, to share `@@accept_charset` class variable, so that it is always accessible. [ruby-core:80986] [Bug #13539] ------------------------------------------------------------------------ r58575 | nobu | 2017-05-06 10:01:52 +0900 (Sat, 06 May 2017) | 6 lines string.c: fix types * string.c (id_normalize, id_normalized_p): fix types, IDs should be ID. * string.c (unicode_normalize_common): ditto. ------------------------------------------------------------------------ r58574 | svn | 2017-05-06 09:54:23 +0900 (Sat, 06 May 2017) | 1 line * 2017-05-06 ------------------------------------------------------------------------ r58573 | nobu | 2017-05-06 09:54:22 +0900 (Sat, 06 May 2017) | 4 lines timestamp for extensions * common.mk: use the same timestamp file for architecture specific directory as the file used in Makefiles under ext. ------------------------------------------------------------------------ r58572 | svn | 2017-05-05 01:47:18 +0900 (Fri, 05 May 2017) | 1 line * 2017-05-05 ------------------------------------------------------------------------ r58571 | normal | 2017-05-05 01:47:17 +0900 (Fri, 05 May 2017) | 10 lines benchmark/bm_vm_thread_pass_flood.rb: add comment I was about to write off this benchmark while working on GVL improvements on multi-core systems. However I noticed it exposes a weakness in my work-in-progress code when I tested on an old single CPU system. Further testing reveals setting CPU affinity ("schedtool -a 0x1" on Linux) on a modern multi-core system is enough to reproduce the problem exposed by this benchmark. ------------------------------------------------------------------------ r58570 | mame | 2017-05-04 22:42:47 +0900 (Thu, 04 May 2017) | 5 lines time.c: avoid taking a pointer to a member of packed struct clang 4.0.0 emitted a warning: "taking address of packed member 'subsecx' of class or structure 'vtm' may result in an unaligned pointer value [-Waddress-of-packed-member]". ------------------------------------------------------------------------ r58569 | stomar | 2017-05-04 22:19:43 +0900 (Thu, 04 May 2017) | 1 line string.c: [DOC] improve docs for String.new ------------------------------------------------------------------------ r58568 | ktsj | 2017-05-04 19:17:12 +0900 (Thu, 04 May 2017) | 3 lines internal.h (rb_gc_resurrect): remove stale declaration rb_gc_resurrect is no longer defined since r47444. ------------------------------------------------------------------------ r58567 | ktsj | 2017-05-04 17:59:01 +0900 (Thu, 04 May 2017) | 1 line string.c: [DOC] Properly refer to keyword argument by its name ------------------------------------------------------------------------ r58566 | ktsj | 2017-05-04 17:58:59 +0900 (Thu, 04 May 2017) | 9 lines dir.c: [DOC] Properly refer to keyword argument by its name [Fix GH-1543] enc is the name of the variable used in the example, not the name of the keyword argument (encoding). The documentation used to wrongly suggest that the keyword argument name was "enc" which could cause people try try to call `Dir.open("thing", enc: "utf-8")` Author: Olivier Lacan <hi@olivierlacan.com> ------------------------------------------------------------------------ r58565 | normal | 2017-05-04 17:55:54 +0900 (Thu, 04 May 2017) | 15 lines benchmark/bm_vm1_gc_wb_*.rb: fix GC.start args for invalid keyword "lazy_sweep" does not appear to have ever been a valid kwarg for GC.start, however the opposite of "lazy_sweep" appears to be "immediate_sweep". So use immediate_sweep, and flip the boolean value of each arg. I guess this only started failing with r56981 in Dec 2016 ("class.c: missing unknown_keyword_error", commit e3f0cca2f26ba44c810ac980cdff7dda129ae533) * benchmark/bm_vm1_gc_wb_ary.rb: "lazy_sweep: false" => "immediate_sweep: true" * benchmark/bm_vm1_gc_wb_ary_promoted.rb: ditto * benchmark/bm_vm1_gc_wb_obj.rb: ditto * benchmark/bm_vm1_gc_wb_obj_promoted.rb: ditto ------------------------------------------------------------------------ r58564 | ktsj | 2017-05-04 17:13:17 +0900 (Thu, 04 May 2017) | 1 line gems/bundled_gems: Update to power_assert 1.0.2 ------------------------------------------------------------------------ r58563 | normal | 2017-05-04 16:18:33 +0900 (Thu, 04 May 2017) | 5 lines .gitignore: ignore benchmark/bm_require.data Followup-to r58562 in SVN * .gitignore: ignore benchmark/bm_require.data ------------------------------------------------------------------------ r58562 | normal | 2017-05-04 16:08:39 +0900 (Thu, 04 May 2017) | 2 lines benchmark: ignore bm_require.data/ ------------------------------------------------------------------------ r58561 | nobu | 2017-05-04 15:54:11 +0900 (Thu, 04 May 2017) | 5 lines parse.y: make shared string modifiable * parse.y (dedent_string): ensure that the string is modifiable, not to set the length of shared string. [ruby-core:80987] [Bug #13540] ------------------------------------------------------------------------ r58560 | duerst | 2017-05-04 14:07:20 +0900 (Thu, 04 May 2017) | 1 line revert 58559, because it fails on travis (rubyspec problem) ------------------------------------------------------------------------ r58559 | duerst | 2017-05-04 13:53:33 +0900 (Thu, 04 May 2017) | 1 line remove enc/prelude.rb from list of prelude files in common.mk ------------------------------------------------------------------------ r58558 | duerst | 2017-05-04 11:16:27 +0900 (Thu, 04 May 2017) | 6 lines refactor common parts of unicode normalization functions into unicode_normalize_common In string.c, refactor the common parts (requiring of unicode_normalize/normalize.rb, check of number of arguments) of the unicode normalization functions (rb_str_unicode_normalize, rb_str_unicode_normalize_bang, rb_str_unicode_normalized_p) into the new function unicode_normalize_common. ------------------------------------------------------------------------ r58557 | svn | 2017-05-04 11:13:12 +0900 (Thu, 04 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58556 | normal | 2017-05-04 11:13:11 +0900 (Thu, 04 May 2017) | 8 lines benchmark: new single-threaded read/write benchmark with pipe This is currently for testing GVL performance in the uncontended case: IO#write and IO#read unconditionally release GVL for blocking I/O with pipe. It will also be interesting to see how this changes if we switch to M:N threading model. ------------------------------------------------------------------------ r58555 | duerst | 2017-05-04 11:00:19 +0900 (Thu, 04 May 2017) | 9 lines move definition of String#unicode_normalized? to C to make sure it is documented * lib/unicode_normalize.rb: Remove definition of String#unicode_normalized? (including documentation). Leave a comment explaining that the file is now empty. * string.c: Define String#unicode_normalized? in rb_str_unicode_normalized_p in C, (including documentation) * lib/unicode_normalize/normalize.rb: Remove (re)definition of String#unicode_normalized? to avoid warnings (when $VERBOSE==true) and problems when String is frozen ------------------------------------------------------------------------ r58554 | svn | 2017-05-04 10:36:53 +0900 (Thu, 04 May 2017) | 1 line * 2017-05-04 ------------------------------------------------------------------------ r58553 | duerst | 2017-05-04 10:36:52 +0900 (Thu, 04 May 2017) | 9 lines move definition of String#unicode_normalize! to C to make sure it is documented * lib/unicode_normalize.rb: Remove definition of String#unicode_normalize! (including documentation) * string.c: Define String#unicode_normalize! in rb_str_unicode_normalize_bang in C, (including documentation) * lib/unicode_normalize/normalize.rb: Remove (re)definition of String#unicode_normalize! to avoid warnings (when $VERBOSE==true) and problems when String is frozen ------------------------------------------------------------------------ r58552 | kou | 2017-05-03 21:25:17 +0900 (Wed, 03 May 2017) | 8 lines rss: Accept empty text element as valid element Parser has been accepted it but XML serializer wasn't accepted. Reported by stefano frabetti. Thanks!!! [ruby-core:80965] [Bug #13531] ------------------------------------------------------------------------ r58551 | svn | 2017-05-03 21:18:37 +0900 (Wed, 03 May 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r58550 | duerst | 2017-05-03 21:18:37 +0900 (Wed, 03 May 2017) | 9 lines move definition of String#unicode_normalize to C to make sure it is documented * lib/unicode_normalize.rb: Remove definition of String#unicode_normalize (including documentation) * string.c: Define String#unicode_normalize in rb_str_unicode_normalize in C, (including documentation) * lib/unicode_normalize/normalize.rb: Remove (re)definition of String#unicode_normalize to avoid warnings (when $VERBOSE==true) and problems when String is frozen ------------------------------------------------------------------------ r58549 | shugo | 2017-05-03 20:32:22 +0900 (Wed, 03 May 2017) | 3 lines net/imap: handle timeouts Patch by Pavel Rosicky. [Feature #13379] [ruby-core:80440] ------------------------------------------------------------------------ r58548 | kazu | 2017-05-03 11:02:50 +0900 (Wed, 03 May 2017) | 3 lines Use `dd` instead of `head -c` [Bug #13538] [ruby-dev:50106] ------------------------------------------------------------------------ r58547 | kazu | 2017-05-03 10:44:52 +0900 (Wed, 03 May 2017) | 1 line Fix NoMethodError [ci skip] ------------------------------------------------------------------------ r58546 | svn | 2017-05-03 02:48:10 +0900 (Wed, 03 May 2017) | 1 line * 2017-05-03 ------------------------------------------------------------------------ r58545 | nobu | 2017-05-03 02:48:10 +0900 (Wed, 03 May 2017) | 5 lines ripper/lexer.rb: nested indented heredoc * ext/ripper/lib/ripper/lexer.rb (on_heredoc_dedent): fix for nested indedented here documents, where `Elem`s are nested too. [ruby-core:80977] [Bug #13536] ------------------------------------------------------------------------ r58544 | nobu | 2017-05-02 22:16:04 +0900 (Tue, 02 May 2017) | 4 lines .travis.yml: tweek after-update * .travis.yml (before_script): get rid of making miniruby at after-update. ------------------------------------------------------------------------ r58543 | nobu | 2017-05-02 21:45:07 +0900 (Tue, 02 May 2017) | 1 line mkconfig.rb: remove cross_compiling ------------------------------------------------------------------------ r58542 | nobu | 2017-05-02 21:45:04 +0900 (Tue, 02 May 2017) | 4 lines common.mk: BOOTSTRAPRUBY for enc.mk * common.mk ($(ENC_MK)): use $(BOOTSTRAPRUBY) as well as $(RBCONFIG), instead of $(MINIRUBY). ------------------------------------------------------------------------ r58541 | kazu | 2017-05-02 20:26:28 +0900 (Tue, 02 May 2017) | 1 line Use `\A` and `\z` instead of `^` and `$` [ci skip] ------------------------------------------------------------------------ r58540 | nobu | 2017-05-02 16:35:20 +0900 (Tue, 02 May 2017) | 4 lines internal.h: rb_raise_static * internal.h (rb_raise_static): raise with a static message string literal. ------------------------------------------------------------------------ r58539 | duerst | 2017-05-02 14:46:31 +0900 (Tue, 02 May 2017) | 6 lines remove unnecessary conditions in lib/unicode_normalize.rb Because the methods in lib/unicode_normalize.rb are overwritten by those in lib/unicode_normalize/normalize.rb as soon as one of them is called, the check for whether UnicodeNormalized is defined or not is no longer necessary. ------------------------------------------------------------------------ r58538 | duerst | 2017-05-02 14:34:25 +0900 (Tue, 02 May 2017) | 5 lines rework definition of String#unicode_normalize! and #unicode_normalized? simplify String#unicode_normalize! and #unicode_normalized? in lib/unicode_normalize.rb by redefining them in lib/unicode_normalize/normalize.rb ------------------------------------------------------------------------ r58537 | duerst | 2017-05-02 14:15:04 +0900 (Tue, 02 May 2017) | 4 lines rework definition of String#unicode_normalize simplify String#unicode_normalize in lib/unicode_normalize.rb by redefining it in lib/unicode_normalize/normalize.rb ------------------------------------------------------------------------ r58536 | svn | 2017-05-02 11:40:47 +0900 (Tue, 02 May 2017) | 1 line * properties. ------------------------------------------------------------------------ r58535 | normal | 2017-05-02 11:40:46 +0900 (Tue, 02 May 2017) | 11 lines more benchmarks for SizedQueue and ConditionVariable I'm working on patches to improve everything in thread_sync.c, add these to track progress. * benchmark/bm_vm_thread_sized_queue.rb: add description * benchmark/bm_vm_thread_condvar1.rb: new benchmark * benchmark/bm_vm_thread_condvar2.rb: ditto * benchmark/bm_vm_thread_sized_queue2.rb: ditto * benchmark/bm_vm_thread_sized_queue3.rb: ditto * benchmark/bm_vm_thread_sized_queue4.rb: ditto ------------------------------------------------------------------------ r58534 | kosaki | 2017-05-02 11:19:32 +0900 (Tue, 02 May 2017) | 4 lines nogvl_wait_for_single_fd must wait as its name poll(fds, n, 0) mean no timeout and immediately return. If you want to wait something, you need to use -1 instead. ------------------------------------------------------------------------ r58533 | svn | 2017-05-02 00:17:33 +0900 (Tue, 02 May 2017) | 1 line * 2017-05-02 ------------------------------------------------------------------------ r58532 | nobu | 2017-05-02 00:17:32 +0900 (Tue, 02 May 2017) | 4 lines thread.c: suppress warnings [ci skip] * thread.c (fill_thread_id_string): cast to void pointer to suppress warnings when pthread_t is not pointer type. ------------------------------------------------------------------------ r58531 | svn | 2017-05-01 20:40:47 +0900 (Mon, 01 May 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r58530 | hsbt | 2017-05-01 20:40:46 +0900 (Mon, 01 May 2017) | 11 lines Merge rubygems-2.6.12 from rubygems/rubygems. * Details of changes: https://github.com/rubygems/rubygems/blob/009080040279282d7b8ddd09acab41719cb4ba00/History.txt#L3 * I kept ko1's commmit related thread issue. It's not merged 2.6 branch on rubygems. https://github.com/ruby/ruby/commit/1721dfa0ea963a85d4ac1e3415eb18ef427d4d36 * I removed test_realworld_default_gem from rubygems-2.6.12. It fails on Ruby trunk. Because it's differences of test suite and environment. https://github.com/rubygems/rubygems/pull/1899 ------------------------------------------------------------------------ r58529 | hsbt | 2017-05-01 19:20:35 +0900 (Mon, 01 May 2017) | 4 lines Merge gemspec from ruby/webrick. * Bump version to 1.4.0.beta1. Because https://rubygems.org/gems/webrick is already reserved old version of webrick. ------------------------------------------------------------------------ r58528 | nobu | 2017-05-01 16:50:53 +0900 (Mon, 01 May 2017) | 5 lines object.c: Kernel#yield_self * object.c (rb_obj_yield_self): new method which yields the receiver and returns the result. [ruby-core:46320] [Feature #6721] ------------------------------------------------------------------------ r58527 | kazu | 2017-05-01 11:42:34 +0900 (Mon, 01 May 2017) | 4 lines Fix typo in documentation [ci skip] [Fix GH-1599] Author: Liam Sean Brady <liamseanbrady@gmail.com> ------------------------------------------------------------------------ r58526 | nobu | 2017-05-01 11:01:38 +0900 (Mon, 01 May 2017) | 5 lines zlib.c: no buf_filled in zstream * ext/zlib/zlib.c (zstream): manage capacity and size of `buf` instead of size and separated member `buf_filled`. reported by Christian Jalio (jalio) at https://hackerone.com/reports/211958 ------------------------------------------------------------------------ r58525 | nobu | 2017-05-01 09:35:02 +0900 (Mon, 01 May 2017) | 4 lines zlib.c: zstream_buffer_ungetbyte * ext/zlib/zlib.c (zstream_buffer_ungetbyte): simplify by using zstream_buffer_ungets(). ------------------------------------------------------------------------ r58524 | nobu | 2017-05-01 09:35:00 +0900 (Mon, 01 May 2017) | 5 lines zlib.c: zstream_expand_buffer_non_stream * ext/zlib/zlib.c (zstream_expand_buffer_non_stream): rename from zstream_expand_buffer_without_gvl() and replace duplicate code in zstream_expand_buffer(). ------------------------------------------------------------------------ r58523 | nobu | 2017-05-01 09:32:56 +0900 (Mon, 01 May 2017) | 7 lines rational.c: canonicalization case * rational.c (float_numerator, float_denominator): fix for canonicalization case where `Float#to_r` could return an Integer not a Rational. although mathn.rb has been removed in the trunk, fix for the backport purpose. [ruby-core:80942] [Bug #13528] ------------------------------------------------------------------------ r58521 | svn | 2017-05-01 06:18:31 +0900 (Mon, 01 May 2017) | 1 line * 2017-05-01 ------------------------------------------------------------------------ r58520 | usa | 2017-05-01 06:18:31 +0900 (Mon, 01 May 2017) | 4 lines setup.mak have to handle `GIT` and `HAVE_GIT` * win32/setup.mak: seems to be forgotten to commit at r58295. ------------------------------------------------------------------------ r58514 | usa | 2017-04-30 22:34:18 +0900 (Sun, 30 Apr 2017) | 4 lines Typo * tool/generate-backport-changelog.rb: fixed a typo. ------------------------------------------------------------------------ r58512 | nobu | 2017-04-30 19:53:42 +0900 (Sun, 30 Apr 2017) | 4 lines git-refresh: fix for Solaris * tool/git-refresh: expand for each words. [ruby-dev:50102] [Bug #13522] ------------------------------------------------------------------------ r58511 | normal | 2017-04-30 18:06:39 +0900 (Sun, 30 Apr 2017) | 3 lines thread_sync.c: document SizedQueue#clear correctly [ci skip] * thread_sync.c (rb_szqueue_clear): fix class name in RDoc ------------------------------------------------------------------------ r58510 | svn | 2017-04-30 16:24:37 +0900 (Sun, 30 Apr 2017) | 1 line * properties. ------------------------------------------------------------------------ r58509 | normal | 2017-04-30 16:24:36 +0900 (Sun, 30 Apr 2017) | 4 lines new benchmark for SizedQueue The performance of SizedQueue is a bit more complex than regular Queue, so it deserves a separate benchmark. ------------------------------------------------------------------------ r58508 | svn | 2017-04-30 12:52:07 +0900 (Sun, 30 Apr 2017) | 1 line * 2017-04-30 ------------------------------------------------------------------------ r58507 | nobu | 2017-04-30 12:52:06 +0900 (Sun, 30 Apr 2017) | 5 lines git-refresh: fix for Solaris * tool/git-refresh: unset variable `branch` if it is null, to get rid of substitutions which are not supported old Solaris. [ruby-dev:50102] [Bug #13522] ------------------------------------------------------------------------ r58506 | normal | 2017-04-29 19:50:59 +0900 (Sat, 29 Apr 2017) | 8 lines load.c: remove a redundant rb_str_freeze call rb_file_expand_path_fast already performs the buffer shrinking rb_str_freeze does (via expand_path macro in file.c); the result of rb_fstring is always frozen, and that rb_fstring call is the last use of `expanded_path` in its scope. load.c (rb_construct_expanded_load_path): remove rb_str_freeze ------------------------------------------------------------------------ r58505 | nobu | 2017-04-29 19:27:46 +0900 (Sat, 29 Apr 2017) | 4 lines proc.c: recursion loop * proc.c (rb_block_min_max_arity, rb_method_entry_min_max_arity): turn loop by recursion into goto. ------------------------------------------------------------------------ r58504 | svn | 2017-04-29 11:58:54 +0900 (Sat, 29 Apr 2017) | 1 line * 2017-04-29 ------------------------------------------------------------------------ r58503 | nobu | 2017-04-29 11:58:53 +0900 (Sat, 29 Apr 2017) | 6 lines node.h: sign-extend * node.h (nd_line): should sign-extend. shifting `VALUE` extends with zero bits if `sizeof(VALUE)` equals to `sizeof(int)`. the zero bits are truncated if `sizeof(VALUE)` is bigger enough. [ruby-core:80920] [Bug #13523] ------------------------------------------------------------------------ r58502 | hsbt | 2017-04-28 21:14:56 +0900 (Fri, 28 Apr 2017) | 5 lines Bump version to gdbm-2.0.0.beta1 * Merge from ruby/gdbm. * gdbm gem is already registered in rubygems.org. I skip shipped version of 0.x and 1.x. Therefore We need to use 2.x. ------------------------------------------------------------------------ r58501 | nobu | 2017-04-28 20:42:58 +0900 (Fri, 28 Apr 2017) | 1 line sprintf.c: remove unused variable ------------------------------------------------------------------------ r58500 | nobu | 2017-04-28 18:50:43 +0900 (Fri, 28 Apr 2017) | 1 line parse.y: set_line_body is not used in ripper ------------------------------------------------------------------------ r58499 | nobu | 2017-04-28 17:06:33 +0900 (Fri, 28 Apr 2017) | 4 lines 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] ------------------------------------------------------------------------ r58498 | nobu | 2017-04-28 14:08:44 +0900 (Fri, 28 Apr 2017) | 4 lines sprintf.c: ruby_ultoa * sprintf.c (ruby_ultoa): prefixed to get rid of conflict with a MSVC library function. ------------------------------------------------------------------------ r58497 | nobu | 2017-04-28 11:10:51 +0900 (Fri, 28 Apr 2017) | 7 lines sprintf.c: format by utility functions * sprintf.c (rb_str_format, fmt_setup): format by utility functions in vsnprintf.c instead of `snprintf`. * sprintf.c (rb_str_format): format and append by `rb_str_catf` instead of formatting by `snprintf` and then copy. ------------------------------------------------------------------------ r58496 | svn | 2017-04-28 11:05:55 +0900 (Fri, 28 Apr 2017) | 1 line * 2017-04-28 ------------------------------------------------------------------------ r58495 | nobu | 2017-04-28 11:05:54 +0900 (Fri, 28 Apr 2017) | 4 lines sprintf.c: fix one-off bug * sprintf.c (rb_str_format): `CHECK` just before `FILL_`, but after another `PUSH`. fix one-off bug. ------------------------------------------------------------------------ r58494 | nobu | 2017-04-27 21:30:55 +0900 (Thu, 27 Apr 2017) | 6 lines fix ripper prereq * common.mk (ext/ripper/ripper.c): fix VPATH when out-of-place build, and id.h was created in the build directory too. it has to include the build directory, i.e., the current directory before `cd`. ------------------------------------------------------------------------ r58493 | eregon | 2017-04-27 21:07:43 +0900 (Thu, 27 Apr 2017) | 6 lines 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] ------------------------------------------------------------------------ r58492 | shyouhei | 2017-04-27 13:21:04 +0900 (Thu, 27 Apr 2017) | 37 lines 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 ------------------------------------------------------------------------ r58491 | normal | 2017-04-27 12:16:39 +0900 (Thu, 27 Apr 2017) | 7 lines load.c: make fstrings from C strings sooner The underlying string objects will become fstrings anyways, so create the fstring directly from the C string to reduce intermediate garbage. * load.c (rb_provide, rb_provide): create fstring ------------------------------------------------------------------------ r58490 | nobu | 2017-04-27 05:13:07 +0900 (Thu, 27 Apr 2017) | 5 lines 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] ------------------------------------------------------------------------ r58489 | svn | 2017-04-27 05:09:35 +0900 (Thu, 27 Apr 2017) | 1 line * 2017-04-27 ------------------------------------------------------------------------ r58488 | stomar | 2017-04-27 05:09:34 +0900 (Thu, 27 Apr 2017) | 5 lines error.c: improve docs * error.c: [DOC] fix rdoc formatting (make sure `Warning.warn' is displayed verbatim; rdoc would render it as a link named `#warn'), use capitalized "Ruby", fix a typo. ------------------------------------------------------------------------ r58487 | nobu | 2017-04-26 17:11:32 +0900 (Wed, 26 Apr 2017) | 5 lines error.c: splat warn arguments * error.c (rb_warn_m): print array arguments with splatting. it is often used with `caller`. [ruby-core:80849] [Feature #12944] ------------------------------------------------------------------------ r58486 | nobu | 2017-04-26 09:30:05 +0900 (Wed, 26 Apr 2017) | 1 line range.c: remove no longer used variable ------------------------------------------------------------------------ r58485 | normal | 2017-04-26 05:20:08 +0900 (Wed, 26 Apr 2017) | 1 line thread_sync.c (rb_mutex_lock): spelling fix [ci skip] ------------------------------------------------------------------------ r58484 | eregon | 2017-04-26 04:34:07 +0900 (Wed, 26 Apr 2017) | 3 lines Use require to load rbconfig in default.mspec * Otherwise it would be loaded twice. ------------------------------------------------------------------------ r58483 | naruse | 2017-04-26 04:13:26 +0900 (Wed, 26 Apr 2017) | 1 line suppress_warning ------------------------------------------------------------------------ r58482 | ko1 | 2017-04-26 02:50:34 +0900 (Wed, 26 Apr 2017) | 7 lines 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. ------------------------------------------------------------------------ r58481 | svn | 2017-04-26 02:24:07 +0900 (Wed, 26 Apr 2017) | 1 line * 2017-04-26 ------------------------------------------------------------------------ r58480 | ko1 | 2017-04-26 02:24:06 +0900 (Wed, 26 Apr 2017) | 1 line revert r58478 and r58479 because they do not support not in-place build ------------------------------------------------------------------------ r58479 | eregon | 2017-04-25 21:45:36 +0900 (Tue, 25 Apr 2017) | 3 lines Use require_relative to load rbconfig in default.mspec * Otherwise it would load it twice. ------------------------------------------------------------------------ r58478 | eregon | 2017-04-25 21:45:25 +0900 (Tue, 25 Apr 2017) | 3 lines No need to pass the config file to mspec as mspec finds it itself * It would also #load (because .mspec cannot be #require'd) it twice. ------------------------------------------------------------------------ r58477 | eregon | 2017-04-25 21:45:14 +0900 (Tue, 25 Apr 2017) | 1 line Remove useless else which produced a warning ------------------------------------------------------------------------ r58476 | eregon | 2017-04-25 20:42:43 +0900 (Tue, 25 Apr 2017) | 6 lines 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] ------------------------------------------------------------------------ r58475 | eregon | 2017-04-25 20:42:31 +0900 (Tue, 25 Apr 2017) | 5 lines 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] ------------------------------------------------------------------------ r58474 | eregon | 2017-04-25 20:42:20 +0900 (Tue, 25 Apr 2017) | 5 lines 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] ------------------------------------------------------------------------ r58473 | hsbt | 2017-04-25 18:23:04 +0900 (Tue, 25 Apr 2017) | 6 lines 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. ------------------------------------------------------------------------ r58472 | eregon | 2017-04-25 18:10:46 +0900 (Tue, 25 Apr 2017) | 4 lines Document the Warning module and warn method * error.c (Warning): add documentation. [Feature #13504] Author: Jeremy Evans <code@jeremyevans.net> ------------------------------------------------------------------------ r58471 | nobu | 2017-04-25 17:17:24 +0900 (Tue, 25 Apr 2017) | 4 lines load.c: backtrace of circular require * load.c (load_lock): print backtrace of circular require via `Warning.warn` [ruby-core:80850] [Bug #13505] ------------------------------------------------------------------------ r58470 | hsbt | 2017-04-25 16:55:56 +0900 (Tue, 25 Apr 2017) | 5 lines 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. ------------------------------------------------------------------------ r58469 | svn | 2017-04-25 15:51:35 +0900 (Tue, 25 Apr 2017) | 1 line * 2017-04-25 ------------------------------------------------------------------------ r58468 | shyouhei | 2017-04-25 15:51:34 +0900 (Tue, 25 Apr 2017) | 4 lines fix macro expansion bug This previous "key" macro argument accidentally replaced `(ptr)->key` part. ------------------------------------------------------------------------ r58467 | nobu | 2017-04-24 20:52:14 +0900 (Mon, 24 Apr 2017) | 1 line tool/git-refresh: fix branch operations ------------------------------------------------------------------------ r58466 | nobu | 2017-04-24 15:17:55 +0900 (Mon, 24 Apr 2017) | 5 lines 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 ------------------------------------------------------------------------ r58465 | nobu | 2017-04-24 15:17:54 +0900 (Mon, 24 Apr 2017) | 6 lines parse.y: rb_parser_fatal * parse.y (rb_parser_fatal): abort compilation on internal parser error. rb_bug() is generic use but not useful for debugging the parser. this function dumps internal states, and continues with enabling yydebug output to stderr for the parser stack dump. ------------------------------------------------------------------------ r58464 | nobu | 2017-04-24 13:20:02 +0900 (Mon, 24 Apr 2017) | 1 line Get rid of unnecessary GCC extension ------------------------------------------------------------------------ r58463 | shyouhei | 2017-04-24 10:40:51 +0900 (Mon, 24 Apr 2017) | 5 lines revert newhash refactoring We need to fix GC bug before merging this. Revert revisions 58452, 58435, 58434, 58428, 58427 in this order. ------------------------------------------------------------------------ r58462 | svn | 2017-04-24 01:19:23 +0900 (Mon, 24 Apr 2017) | 1 line * 2017-04-24 ------------------------------------------------------------------------ r58461 | naruse | 2017-04-24 01:19:23 +0900 (Mon, 24 Apr 2017) | 5 lines 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] ------------------------------------------------------------------------ r58460 | naruse | 2017-04-24 01:19:22 +0900 (Mon, 24 Apr 2017) | 1 line suppress warning: shadowing outer local variable ------------------------------------------------------------------------ r58459 | nobu | 2017-04-23 23:51:08 +0900 (Sun, 23 Apr 2017) | 1 line Add diagnostic reports section header [ci skip] ------------------------------------------------------------------------ r58458 | nobu | 2017-04-23 23:47:31 +0900 (Sun, 23 Apr 2017) | 1 line assert_syntax_error returns the exception [ci skip] ------------------------------------------------------------------------ r58457 | nobu | 2017-04-23 10:31:37 +0900 (Sun, 23 Apr 2017) | 1 line Document parse.y instead of ext/ripper/ripper.c ------------------------------------------------------------------------ r58456 | nobu | 2017-04-23 10:31:36 +0900 (Sun, 23 Apr 2017) | 1 line ext/dl has been removed already [ci skip] ------------------------------------------------------------------------ r58455 | nobu | 2017-04-23 10:23:30 +0900 (Sun, 23 Apr 2017) | 4 lines use $(srcdir). * win32/Makefile.sub (enc/jis/props.h): build it in not builddir, but in srcdir. ------------------------------------------------------------------------ r58454 | nobu | 2017-04-23 10:04:40 +0900 (Sun, 23 Apr 2017) | 4 lines Refactor "%f" % Inf/NaN * sprintf.c (rb_str_format): as for non-finite float, calculate the exact needed size with the space flag. ------------------------------------------------------------------------ r58453 | nobu | 2017-04-23 10:04:39 +0900 (Sun, 23 Apr 2017) | 5 lines 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). ------------------------------------------------------------------------ r58452 | ko1 | 2017-04-23 09:20:27 +0900 (Sun, 23 Apr 2017) | 5 lines mark Hash keys correctly. * hash.c (rb_hash_new_from_object): same as r58434. Newly created frozen objects are not referred from any roots/objects. ------------------------------------------------------------------------ r58451 | nobu | 2017-04-23 01:26:15 +0900 (Sun, 23 Apr 2017) | 1 line Ignore enc/jis/props.h ------------------------------------------------------------------------ r58450 | svn | 2017-04-23 01:19:13 +0900 (Sun, 23 Apr 2017) | 1 line * 2017-04-23 ------------------------------------------------------------------------ r58449 | stomar | 2017-04-23 01:19:12 +0900 (Sun, 23 Apr 2017) | 1 line test/test_prime.rb: update method name in comment ------------------------------------------------------------------------ r58448 | nobu | 2017-04-22 17:32:33 +0900 (Sat, 22 Apr 2017) | 6 lines parse.y: fix compile_error format * parse.y (ripper_compile_error, parser_compile_error): declare as PRINTF_ARGS attribute. * parse.y (id_is_var_gen): fix format specifier for string value. ------------------------------------------------------------------------ r58447 | nobu | 2017-04-22 17:19:34 +0900 (Sat, 22 Apr 2017) | 5 lines 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] ------------------------------------------------------------------------ r58446 | nobu | 2017-04-22 17:19:33 +0900 (Sat, 22 Apr 2017) | 1 line adjust indent ------------------------------------------------------------------------ r58443 | kazu | 2017-04-22 11:04:35 +0900 (Sat, 22 Apr 2017) | 1 line Remove nonexistent files and rename some files ------------------------------------------------------------------------ r58442 | normal | 2017-04-22 10:08:15 +0900 (Sat, 22 Apr 2017) | 16 lines 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 ------------------------------------------------------------------------ r58441 | nobu | 2017-04-22 09:27:14 +0900 (Sat, 22 Apr 2017) | 1 line Add sha512 ------------------------------------------------------------------------ r58440 | nobu | 2017-04-22 09:18:08 +0900 (Sat, 22 Apr 2017) | 1 line Update sources and include files after update ------------------------------------------------------------------------ r58439 | ko1 | 2017-04-22 09:10:28 +0900 (Sat, 22 Apr 2017) | 4 lines use $(srcdir). * Makefile.in (enc/jis/props.h): build it in not builddir, but in srcdir. ------------------------------------------------------------------------ r58438 | nobu | 2017-04-22 08:16:43 +0900 (Sat, 22 Apr 2017) | 7 lines clean autogenerated files * enc/depend (clean, clean-srcs): fix path of name2ctype.h, and remove casefold.h too. * enc/jis/props.h: autogenerated file. [ruby-core:80823] [Bug #13493] ------------------------------------------------------------------------ r58437 | normal | 2017-04-22 05:38:58 +0900 (Sat, 22 Apr 2017) | 8 lines 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 ------------------------------------------------------------------------ r58436 | svn | 2017-04-22 00:00:31 +0900 (Sat, 22 Apr 2017) | 1 line * 2017-04-22 ------------------------------------------------------------------------ r58435 | ko1 | 2017-04-22 00:00:30 +0900 (Sat, 22 Apr 2017) | 4 lines insert WB correctly. * hash.c (hash_insert_raw): should insert WB. ------------------------------------------------------------------------ r58434 | ko1 | 2017-04-21 20:02:10 +0900 (Fri, 21 Apr 2017) | 8 lines mark created frozen strings. * hash.c (rb_hash_new_from_values_with_klass): before this fix, only a st table are filled with passed values. However, newly created frozen strings are not marked correctly only reference from st table. This patch marks such created frozen strings by Hash object which refers to the st table. ------------------------------------------------------------------------ r58433 | kazu | 2017-04-21 20:00:10 +0900 (Fri, 21 Apr 2017) | 2 lines Remove empty directories ------------------------------------------------------------------------ r58432 | hsbt | 2017-04-21 15:16:11 +0900 (Fri, 21 Apr 2017) | 3 lines Removed mathn.rb from stdlib. It's deprecated from Ruby 2.2. [Feature #10169][[ruby-core:64553]] ------------------------------------------------------------------------ r58431 | nobu | 2017-04-21 15:12:27 +0900 (Fri, 21 Apr 2017) | 8 lines 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. ------------------------------------------------------------------------ r58430 | rhe | 2017-04-21 15:03:12 +0900 (Fri, 21 Apr 2017) | 4 lines Remove missing/strtol.c It is never used. We don't need it anyway as it's part of C89 which is our current minimum requirement. ------------------------------------------------------------------------ r58429 | shyouhei | 2017-04-21 14:35:34 +0900 (Fri, 21 Apr 2017) | 2 lines NEWS entry for [Feature #13302] ------------------------------------------------------------------------ r58428 | shyouhei | 2017-04-21 13:42:09 +0900 (Fri, 21 Apr 2017) | 2 lines typo fix (sorry!) ------------------------------------------------------------------------ r58427 | shyouhei | 2017-04-21 13:21:14 +0900 (Fri, 21 Apr 2017) | 40 lines refactor hash literal Same as rb_ary_tmp_new_from_values(), it reduces vm_exec_core binary size from 26,176 bytes to 26,080 bytes. But this time, also with a bit of optimizations: - Because we are allocating a new hash and no back references are introduced at all, we can safely skip write barriers. - Also, the iteration never recurs. We can avoid complicated function callbacks by using st_insert instead of st_update. ---- * hash.c (rb_hash_new_from_values): refactor extract the bulk insert into a function. * hash.c (rb_hash_new_from_object): also refactor. * hash.c (rb_hash_s_create): use the new functions. * insns.def (newhash): ditto. * vm.c (core_hash_from_ary): ditto. * iternal.h: export the new function. ----------------------------------------------------------- benchmark results: minimum results in each 7 measurements. Execution time (sec) name before after loop_whileloop2 0.135 0.134 vm2_bighash* 1.236 0.687 Speedup ratio: compare with the result of `before' (greater is better) name after loop_whileloop2 1.008 vm2_bighash* 1.798 ------------------------------------------------------------------------ r58426 | nobu | 2017-04-21 12:01:12 +0900 (Fri, 21 Apr 2017) | 7 lines ext/extmk.rb: colorize notes [Feature #13302] * common.mk (build-ext): pass variables to colorize. * ext/extmk.rb: colorize notes with tool/colorize.rb. * tool/colorize.rb: extract from tool/generic_erb.rb. ------------------------------------------------------------------------ r58425 | nobu | 2017-04-21 11:43:25 +0900 (Fri, 21 Apr 2017) | 7 lines exts.mk: refine notes [Feature #13302] * ext/extmk.rb: split notes into header and footer, which are common, from bodies which are unique for each extensions. * template/exts.mk.tmpl: now each notes are not one line, should not unique. ------------------------------------------------------------------------ r58424 | nobu | 2017-04-21 09:53:26 +0900 (Fri, 21 Apr 2017) | 4 lines vm_dump.c: non-scalar thread_id * vm_dump.c (rb_vmdebug_stack_dump_all_threads): fix for non-scalar thread_id platforms. c.f. [Bug #9884] ------------------------------------------------------------------------ r58423 | nobu | 2017-04-21 09:11:56 +0900 (Fri, 21 Apr 2017) | 24 lines Suppress a warning in ruby/win32.h [Fix GH-1591] Fix a warning in ruby/win32.h which can cause failures with mkmf The return value is implicit type casted from 'long double' to 'double', currently. This causes a gcc warning like this: ``` In file included from C:\Ruby24-x64\include\ruby-2.4.0/ruby/defines.h:243:0, from C:\Ruby24-x64\include\ruby-2.4.0/ruby/ruby.h:36, from C:\Ruby24-x64\include\ruby-2.4.0/ruby.h:33, from conftest.c:1: C:\Ruby24-x64\include\ruby-2.4.0/ruby/win32.h: In function 'rb_w32_pow': C:\Ruby24-x64\include\ruby-2.4.0/ruby/win32.h:786:12: warning: conversion to 'double' from 'long double' may alter its value [-Wfloat-conversion] return powl(x, y); ^~~~~~~~~~ ``` This is fixed by the attached explicit type cast. Moreover when CFLAGS is set to '-Wconversion', it prevents the compiler from building. This is the case at the nokogiri gem. The original issue arose at RubyInstaller2: https://github.com/oneclick/rubyinstaller2/commit/576a0eb70aa9348b366c3ecfe83c67811b7bcb9b ------------------------------------------------------------------------ r58422 | ko1 | 2017-04-21 07:52:57 +0900 (Fri, 21 Apr 2017) | 5 lines use correct synchronization. * test/ruby/test_thread.rb (make_handle_interrupt_test_thread1): use Queue to use correct synchronization. ------------------------------------------------------------------------ r58421 | ko1 | 2017-04-21 00:58:35 +0900 (Fri, 21 Apr 2017) | 4 lines * vm_dump.c (rb_vmdebug_stack_dump_all_threads): cast to `void*`. Pointed out at <https://github.com/ruby/ruby/commit/fbc1deca89595e60af21e58b7e164f376e4bd2fc#commitcomment-21839826> ------------------------------------------------------------------------ r58420 | svn | 2017-04-21 00:02:56 +0900 (Fri, 21 Apr 2017) | 1 line * 2017-04-21 ------------------------------------------------------------------------ r58419 | ko1 | 2017-04-21 00:02:55 +0900 (Fri, 21 Apr 2017) | 8 lines release monitor correctly. * lib/rubygems/core_ext/kernel_require.rb: sometimes `Kernel.send(:gem, spec.name)` can raise some errors (Gem::MissingSpecError I observed) and this method doesn't release RUBYGEMS_ACTIVATION_MONITOR correctly. This patch fix this problem. ------------------------------------------------------------------------ r58418 | nobu | 2017-04-20 20:07:02 +0900 (Thu, 20 Apr 2017) | 5 lines 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. ------------------------------------------------------------------------ r58417 | nobu | 2017-04-20 20:07:00 +0900 (Thu, 20 Apr 2017) | 1 line ruby-lex.rb: merge regexps ------------------------------------------------------------------------ r58416 | shyouhei | 2017-04-20 19:32:08 +0900 (Thu, 20 Apr 2017) | 14 lines refactor torexp to use routine in array.c Found a part where copy&paste can be eliminated. Reduces vm_exec_core from 26,228 bytes to 26,176 bytes in size on my machine. I believe it does not affect any runtime performance. ---- * array.c (rb_ary_tmp_new_from_values): extend existing rb_ary_new_from_values function so that it can take additional value for klass. * array.c (rb_ary_new_from_values): use the new function. * insns.def (toregexp): ditto. ------------------------------------------------------------------------ r58415 | hsbt | 2017-04-20 18:11:36 +0900 (Thu, 20 Apr 2017) | 3 lines Removed math mode from irb. mathn is deprecated from Ruby 2.2. ------------------------------------------------------------------------ r58414 | nobu | 2017-04-20 17:31:20 +0900 (Thu, 20 Apr 2017) | 4 lines common.mk: separate note * common.mk (build-ext): separate note from building extensions, not to be intermingled. [ruby-core:80759] [Feature #13302] ------------------------------------------------------------------------ r58413 | hsbt | 2017-04-20 17:21:24 +0900 (Thu, 20 Apr 2017) | 4 lines Removed deprecated extensions of mathn. * ext/mathn/{complex,rational}: Removed from ruby core. [fix GH-1542][Feature #13334][ruby-core:80247] ------------------------------------------------------------------------ r58412 | nobu | 2017-04-20 17:13:16 +0900 (Thu, 20 Apr 2017) | 6 lines extmk.rb: fail for mandatory libraries * ext/extmk.rb: fail if a mandatory extension library failed to configure. [ruby-core:80759] [Feature #13302] * template/exts.mk.tmpl: move `exit` at the end. ------------------------------------------------------------------------ r58411 | stomar | 2017-04-20 16:46:22 +0900 (Thu, 20 Apr 2017) | 6 lines improve man pages * man/ruby.1, man/erb.1, man/goruby.1, man/irb.1: fix document title formatting and volume name, improve "REPORTING BUGS" section: fix mdoc formatting error (wrong macro for bullet list items), small rewordings. ------------------------------------------------------------------------ r58410 | stomar | 2017-04-20 16:44:54 +0900 (Thu, 20 Apr 2017) | 9 lines ri.1: rewrite ri man page * man/ri.1: update the (very outdated) ri man page: * update document date * fix document title formatting and volume name * update descriptions and options to current ri --help text * fix some mdoc formatting errors (missing escaping of `\', wrong macro for bullet list items) * various rewordings and other improvements ------------------------------------------------------------------------ r58409 | stomar | 2017-04-20 16:44:01 +0900 (Thu, 20 Apr 2017) | 6 lines ri.1: fix errors in ri man page * man/ri.1: fix some errors in ri man page (add missing options, remove options that do not exist, fix formatter list). Reported by Josh Cheek. [ruby-core:68065] [Bug #10838] ------------------------------------------------------------------------ r58408 | ko1 | 2017-04-20 13:50:53 +0900 (Thu, 20 Apr 2017) | 5 lines add a debug function. * vm_dump.c (rb_vmdebug_stack_dump_all_threads): dump stack dump for all living threads. ------------------------------------------------------------------------ r58407 | usa | 2017-04-20 10:36:11 +0900 (Thu, 20 Apr 2017) | 4 lines Move test_extlibs.rb because it's not the test of ruby itself * test/test_extlibs.rb: moved from test/ruby. ------------------------------------------------------------------------ r58406 | svn | 2017-04-20 00:14:04 +0900 (Thu, 20 Apr 2017) | 1 line * 2017-04-20 ------------------------------------------------------------------------ r58405 | nobu | 2017-04-20 00:14:03 +0900 (Thu, 20 Apr 2017) | 4 lines fix infinite recursion * vm_insnhelper.c (vm_once_dispatch): no guarantee that tail call is always optimized away. ------------------------------------------------------------------------ r58404 | rhe | 2017-04-19 23:05:26 +0900 (Wed, 19 Apr 2017) | 4 lines extmk.rb: improve message printed when configuring extensions fails Point to the mkmf.log if configuring an extension fails so that people can find and fix the culprit easily. [ruby-core:80131] [Feature #13302] ------------------------------------------------------------------------ r58403 | hsbt | 2017-04-19 20:50:03 +0900 (Wed, 19 Apr 2017) | 2 lines Rervert r58304. Because Rubygems have specialized finder for default gems. We need to list library entries for default gems. ------------------------------------------------------------------------ r58402 | shyouhei | 2017-04-19 16:27:03 +0900 (Wed, 19 Apr 2017) | 19 lines refactor extract binop dispatcher Those opt_something instructions are worth refactoring. They tend to have similar ways of executions. By extracting the common part, generated vm_exec_core function shrinks from 26,816 bytes to 26,256 bytes (according to nm(1)). This changeset introduces negligible performance impact. 3 repeated runs of optcarrot benchmark on my machine resulted in: before this: 28.813363684823557, 27.523907198440366, 27.292766121965400 after this: 28.174038497265080, 28.999513875020405, 29.621399800428065 in fps (greater==faster). ---- * vm_insnhelper.c (vm_opt_binop_dispatch): new function. ------------------------------------------------------------------------ r58401 | svn | 2017-04-19 10:08:17 +0900 (Wed, 19 Apr 2017) | 1 line * 2017-04-19 ------------------------------------------------------------------------ r58400 | normal | 2017-04-19 10:08:16 +0900 (Wed, 19 Apr 2017) | 19 lines 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 ------------------------------------------------------------------------ r58399 | nobu | 2017-04-18 22:14:08 +0900 (Tue, 18 Apr 2017) | 1 line fixup! vm_insnhelper.c: adjust indent [ci skip] ------------------------------------------------------------------------ r58398 | nobu | 2017-04-18 22:14:06 +0900 (Tue, 18 Apr 2017) | 5 lines compile.c: wrong optimization * compile.c (compile_branch_condition): expression which has side effects should not be eliminated. [ruby-core:80740] [Bug #13444] ------------------------------------------------------------------------ r58397 | nobu | 2017-04-18 22:14:05 +0900 (Tue, 18 Apr 2017) | 1 line vm_insnhelper.c: adjust indent [ci skip] ------------------------------------------------------------------------ r58396 | shyouhei | 2017-04-18 22:05:38 +0900 (Tue, 18 Apr 2017) | 4 lines typo fix (sorry!) [ci skip] Surprisingly this was not a syntax error on my machine. ------------------------------------------------------------------------ r58395 | nobu | 2017-04-18 22:02:56 +0900 (Tue, 18 Apr 2017) | 1 line test_optimization.rb: heredoc code style ------------------------------------------------------------------------ r58394 | ko1 | 2017-04-18 21:30:59 +0900 (Tue, 18 Apr 2017) | 4 lines fix compile error. * insns.def (trace): use cast `flag` to pass compilation with clang on MacOSX. ------------------------------------------------------------------------ r58393 | hsbt | 2017-04-18 20:55:44 +0900 (Tue, 18 Apr 2017) | 3 lines Fix heading of README. [Fix GH-1586] Patch by @jbampton ------------------------------------------------------------------------ r58392 | shyouhei | 2017-04-18 20:06:58 +0900 (Tue, 18 Apr 2017) | 2 lines tabify (sorry!) [ci skip] ------------------------------------------------------------------------ r58391 | svn | 2017-04-18 19:58:50 +0900 (Tue, 18 Apr 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r58390 | shyouhei | 2017-04-18 19:58:49 +0900 (Tue, 18 Apr 2017) | 33 lines split insns.def into functions Contemporary C compilers are good at function inlining. They fold multiple functions into one. However they are not yet smart enough to unfold a function into several ones. So generally speaking, it is wiser for a C programmer to manually split C functions whenever possible. That should make rooms for compilers to optimize at will. Before this changeset insns.def was converted into single HUGE function called vm_exec_core(). By moving each instruction's core into individual functions, generated C source code is reduced from 3,428 lines to 2,847 lines. Looking at the generated assembly however, it seems my compiler (gcc 6.2) is extraordinary smart so that it inlines almost all functions I introduced in this changeset back into that vm_exec_core. On my machine compiled machine binary of the function does not shrink very much in size (28,432 bytes to 26,816 bytes, according to nm(1)). I believe this change is zero-cost. Several benchmarks I exercised showed no significant difference beyond error mergin. For instance 3 repeated runs of optcarrot benchmark on my machine resulted in: before this: 28.330329285707490, 27.513378371065920, 29.40420215754537 after this: 27.107195867280414, 25.549324021385907, 30.31581919050884 in fps (greater==faster). ---- * internal.h (rb_obj_not_equal): used from vm_insnhelper.c * insns.def: move vast majority of lines into vm_insnhelper.c * vm_insnhelper.c: moved here. ------------------------------------------------------------------------ r58389 | nobu | 2017-04-18 17:34:40 +0900 (Tue, 18 Apr 2017) | 4 lines eval.c: fix exit inside TAG * eval.c (setup_exception): do not exit by goto inside PUSH_TAG/POP_TAG. it causes an infinite loop. ------------------------------------------------------------------------ r58388 | nobu | 2017-04-18 14:56:34 +0900 (Tue, 18 Apr 2017) | 4 lines configure.in: honor GIT env * configure.in (--with-git): honor environment variable GIT if set. ------------------------------------------------------------------------ r58387 | nobu | 2017-04-18 11:58:45 +0900 (Tue, 18 Apr 2017) | 4 lines vcs.rb: env for command * tool/vcs.rb (VCS::SVN::COMMAND, VCS::GIT::COMMAND): customize command paths by environment variables. ------------------------------------------------------------------------ r58386 | nobu | 2017-04-18 11:58:44 +0900 (Tue, 18 Apr 2017) | 4 lines enc/depend: remove Unicode versions * enc/depend (enc/unicode.o): remove hardcoded Unicode versions. this object file must be compiled by toplevel make. ------------------------------------------------------------------------ r58385 | svn | 2017-04-18 08:47:13 +0900 (Tue, 18 Apr 2017) | 1 line * 2017-04-18 ------------------------------------------------------------------------ r58384 | ko1 | 2017-04-18 08:47:12 +0900 (Tue, 18 Apr 2017) | 5 lines should not return. * test/ruby/test_settracefunc.rb (test_throwing_return_with_finish_frame): should not use `return`, but should use `next`. ------------------------------------------------------------------------ r58383 | nobu | 2017-04-17 22:38:34 +0900 (Mon, 17 Apr 2017) | 5 lines string.c: improve insertion performace * string.c (rb_str_splice_0): improve performace of single byte optimizable cases, insertion 7bit string to 7bit string. [ruby-dev:49984] [Bug #13228] ------------------------------------------------------------------------ r58382 | nobu | 2017-04-17 22:23:42 +0900 (Mon, 17 Apr 2017) | 4 lines thread_win32.c: fix index * thread_win32.c (w32_wait_events): fix wait object index in the case of interrupt_event is not usable. ------------------------------------------------------------------------ r58381 | nobu | 2017-04-17 11:41:00 +0900 (Mon, 17 Apr 2017) | 4 lines eval.c: copy before cause setup * eval.c (setup_exception): copy frozen exception before setting up a cause not only a backtrace. ------------------------------------------------------------------------ r58380 | nobu | 2017-04-17 11:31:35 +0900 (Mon, 17 Apr 2017) | 9 lines eval.c: copy special exceptions before raise * eval.c (setup_exception): consider if the exception is frozen, but not one of special exception objects. * gc.c (rb_memerror): copy minimum objects. * thread.c (rb_threadptr_execute_interrupts): prepare special exception queued by another thread to be raised. ------------------------------------------------------------------------ r58379 | nobu | 2017-04-17 11:08:41 +0900 (Mon, 17 Apr 2017) | 4 lines vm_insnhelper.c: rb_threadptr_stack_overflow * vm_insnhelper.c (rb_threadptr_stack_overflow): move from thread.c and integrate with vm_stackoverflow. ------------------------------------------------------------------------ r58378 | nobu | 2017-04-17 10:35:54 +0900 (Mon, 17 Apr 2017) | 5 lines parse.y: fix for empty `__VA_ARGS__` * parse.y (WARN_CALL, WARNING_CALL): need `##` between a comman and `__VA_ARGS__` in the case it is empty, not to end arguments with a comma. ------------------------------------------------------------------------ r58377 | nobu | 2017-04-17 10:23:50 +0900 (Mon, 17 Apr 2017) | 9 lines vm_backtrace.c: backtrace functions per threads * vm_backtrace.c (rb_threadptr_backtrace_object): rename and extern. * vm_backtrace.c (rb_threadptr_backtrace_str_ary): rename as threadptr since the parameter is rb_thread_t*. * vm_backtrace.c (rb_threadptr_backtrace_location_ary): ditto. ------------------------------------------------------------------------ r58376 | nobu | 2017-04-17 09:25:48 +0900 (Mon, 17 Apr 2017) | 4 lines eval.c: share rb_longjmp * eval.c (rb_longjmp, rb_raise_jump): parameterize thread, and share rb_longjmp. ------------------------------------------------------------------------ r58375 | nobu | 2017-04-17 09:10:47 +0900 (Mon, 17 Apr 2017) | 7 lines gc.c: rb_threadptr_stack_check * gc.c (rb_threadptr_stack_check): check probability of stack overflow for the given thread, not the current thread. * vm_eval.c (stack_check): check the given thread, not the current thread. ------------------------------------------------------------------------ r58374 | nobu | 2017-04-17 09:10:45 +0900 (Mon, 17 Apr 2017) | 6 lines gc.c: PREVENT_STACK_OVERFLOW * gc.c (PREVENT_STACK_OVERFLOW): define TRUE to try preventing stack overflow before actually happens. * gc.c (stack_check): parameterize thread pointer. ------------------------------------------------------------------------ r58373 | svn | 2017-04-17 00:54:58 +0900 (Mon, 17 Apr 2017) | 1 line * 2017-04-17 ------------------------------------------------------------------------ r58372 | stomar | 2017-04-17 00:54:57 +0900 (Mon, 17 Apr 2017) | 3 lines test_integer.rb: simplify test * test/ruby/test_integer.rb: simplify test for Integer.sqrt. ------------------------------------------------------------------------ r58371 | nobu | 2017-04-16 23:54:59 +0900 (Sun, 16 Apr 2017) | 4 lines rbinstall.rb: ignore skipped exts * tool/rbinstall.rb (default-gems): skip gemspec if corresponding Makefile does not exist. ------------------------------------------------------------------------ r58370 | nobu | 2017-04-16 23:27:21 +0900 (Sun, 16 Apr 2017) | 5 lines thread_win32.c: no GVL for interrupt_event * thread_win32.c (w32_wait_events): do not acquire GVL, to fix deadlock at read/close race condition. instead, just ignore interrupt_event if it is closed. ------------------------------------------------------------------------ r58369 | nobu | 2017-04-16 13:16:11 +0900 (Sun, 16 Apr 2017) | 1 line test/ruby/test_io.rb: use Thread.stop? to wait ------------------------------------------------------------------------ r58368 | usa | 2017-04-16 11:00:24 +0900 (Sun, 16 Apr 2017) | 3 lines * test/ruby/test_io.rb (test_race_closed_stream): separate because it stops entire test process on Windows. ------------------------------------------------------------------------ r58367 | svn | 2017-04-16 00:29:09 +0900 (Sun, 16 Apr 2017) | 1 line * 2017-04-16 ------------------------------------------------------------------------ r58366 | nobu | 2017-04-16 00:29:09 +0900 (Sun, 16 Apr 2017) | 5 lines 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] ------------------------------------------------------------------------ r58365 | svn | 2017-04-15 16:13:06 +0900 (Sat, 15 Apr 2017) | 1 line * properties. ------------------------------------------------------------------------ r58364 | normal | 2017-04-15 16:13:05 +0900 (Sat, 15 Apr 2017) | 11 lines fix ext/-test-/struct/ dependencies I started writing a template for auto-generation and let "tool/update-deps --fix" fill in the rest. Hopefully this fixes problems with some CI builds after r58359. Further changes to other ext/-test-/ files should probably add or update "depend" files, too. * ext/-test-/struct/depend: new file * enc/depend: auto-updated with unicode 9.0.0 headers (side-effect) ------------------------------------------------------------------------ r58363 | nobu | 2017-04-15 11:37:21 +0900 (Sat, 15 Apr 2017) | 4 lines signal.c: last tag page condition * signal.c (check_stack_overflow): drop the last tag when it is close to the fault page, not same as sp page. ------------------------------------------------------------------------ r58362 | nobu | 2017-04-15 11:09:27 +0900 (Sat, 15 Apr 2017) | 4 lines ruby.h: check argc to rb_funcall * include/ruby/ruby.h (rb_funcall): check if argc matches the number of variadic arguments, and replace with rb_funcallv. ------------------------------------------------------------------------ r58361 | nobu | 2017-04-15 11:07:01 +0900 (Sat, 15 Apr 2017) | 4 lines signal.c: prefer pthread_sigmask * signal.c (raise_stack_overflow): prefer pthread_sigmask to sigprocmask, for multithreading. ------------------------------------------------------------------------ r58360 | svn | 2017-04-15 09:46:01 +0900 (Sat, 15 Apr 2017) | 1 line * properties. ------------------------------------------------------------------------ r58359 | normal | 2017-04-15 09:46:00 +0900 (Sat, 15 Apr 2017) | 9 lines 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] ------------------------------------------------------------------------ r58358 | ngoto | 2017-04-15 04:12:51 +0900 (Sat, 15 Apr 2017) | 7 lines Workaround for optimization bug of Oracle Solaris Studio 12.4 and 12.5 * pack.c (pack_unpack, AVOID_CC_BUG): Very ugly workaround for optimization bug of Oracle Solaris Studio 12.4 and 12.5 (Oracle Developer Studio 12.5) on Solaris with -xO4 optimization option. [Bug #11684] [ruby-core:80690] ------------------------------------------------------------------------ r58357 | ko1 | 2017-04-15 03:19:37 +0900 (Sat, 15 Apr 2017) | 4 lines sync certainly. * test/ruby/test_io.rb (test_race_closed_stream): awit for 'sleep' state. ------------------------------------------------------------------------ r58356 | ko1 | 2017-04-15 03:14:25 +0900 (Sat, 15 Apr 2017) | 6 lines 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. ------------------------------------------------------------------------ r58355 | svn | 2017-04-15 01:07:46 +0900 (Sat, 15 Apr 2017) | 1 line * 2017-04-15 ------------------------------------------------------------------------ r58354 | nobu | 2017-04-15 01:07:45 +0900 (Sat, 15 Apr 2017) | 1 line signal.c: add sigprocmask guard ------------------------------------------------------------------------ r58353 | nobu | 2017-04-14 21:59:59 +0900 (Fri, 14 Apr 2017) | 4 lines signal.c: unblock signal * signal.c (raise_stack_overflow): unblock the received signal, to receive the same signal again. [ruby-core:79285] [Bug #13164] ------------------------------------------------------------------------ r58352 | nobu | 2017-04-14 21:51:46 +0900 (Fri, 14 Apr 2017) | 4 lines configure.in: sigsetjmp sivesigs flag * configure.in (RUBY_SETJMP_TYPE): optional flag to save signal mask. ------------------------------------------------------------------------ r58351 | nobu | 2017-04-14 19:03:43 +0900 (Fri, 14 Apr 2017) | 1 line IPSocket#inspect ------------------------------------------------------------------------ r58350 | nobu | 2017-04-14 17:33:08 +0900 (Fri, 14 Apr 2017) | 4 lines ruby.h: check argc to rb_yield_values * include/ruby/ruby.h (rb_yield_values): check if argc matches the number of variadic arguments, and replace with rb_yield_values2. ------------------------------------------------------------------------ r58349 | ko1 | 2017-04-14 16:46:11 +0900 (Fri, 14 Apr 2017) | 9 lines disable rewind hooks. * vm.c (hook_before_rewind): skip rewind hooks if err is SystemStackError because rewind hooks can cause stack overflow again and again. * thread.c (ruby_thread_stack_overflow): do not disable all hooks. Additionally, clearing ruby_vm_event_flags is not suitable way to disable hooks. ------------------------------------------------------------------------ r58348 | svn | 2017-04-14 14:19:12 +0900 (Fri, 14 Apr 2017) | 1 line * properties. ------------------------------------------------------------------------ r58347 | mrkn | 2017-04-14 14:19:12 +0900 (Fri, 14 Apr 2017) | 13 lines Improve performance of type conversion using to_r * object.c: Add to_r in conv_method_tbl. * defs/id.def: add to_r. * benchmark/bm_int_quo.rb: added. * benchmark/bm_time_subsec.rb: added. [Bug #13426] [ruby-core:80665] [Fix GH-1582] ------------------------------------------------------------------------ r58346 | ko1 | 2017-04-14 11:19:39 +0900 (Fri, 14 Apr 2017) | 5 lines increase timeout seconds. * test/ruby/test_trace.rb (test_trace_stackoverflow): on some platforms this test fails because of timeout. ------------------------------------------------------------------------ r58345 | nobu | 2017-04-14 09:45:49 +0900 (Fri, 14 Apr 2017) | 5 lines rbinstall.rb: no file list for default gems * tool/rbinstall.rb (default-gems): no file list is used now. all files should be installed as standard libraries. [ruby-core:80667] [Bug #13428] ------------------------------------------------------------------------ r58344 | nobu | 2017-04-14 09:45:48 +0900 (Fri, 14 Apr 2017) | 5 lines git-refresh: fix abort by cd failure * tool/git-refresh: try `cd -P` in a subshell, because Solaris10 sh dies if it fails, not only the command. [ruby-dev:50074] [Bug #13433] ------------------------------------------------------------------------ r58343 | ko1 | 2017-04-14 01:32:20 +0900 (Fri, 14 Apr 2017) | 1 line fix last commit ------------------------------------------------------------------------ r58342 | svn | 2017-04-14 01:19:46 +0900 (Fri, 14 Apr 2017) | 1 line * 2017-04-14 ------------------------------------------------------------------------ r58341 | ko1 | 2017-04-14 01:19:46 +0900 (Fri, 14 Apr 2017) | 2 lines Terminate created threads. ------------------------------------------------------------------------ r58340 | svn | 2017-04-13 18:25:39 +0900 (Thu, 13 Apr 2017) | 1 line * properties. ------------------------------------------------------------------------ r58339 | mrkn | 2017-04-13 18:25:38 +0900 (Thu, 13 Apr 2017) | 9 lines array.c: improve performance of Array#sort with block * array.c (sort_1): improve performance of Array#sort with block * benchmark/bm_array_sort_block.rb: added for Array#sort with block [Bug #13344] [ruby-dev:50027] [Fix GH-1544] ------------------------------------------------------------------------ r58338 | svn | 2017-04-13 17:09:07 +0900 (Thu, 13 Apr 2017) | 1 line * properties. ------------------------------------------------------------------------ r58337 | mrkn | 2017-04-13 17:09:06 +0900 (Thu, 13 Apr 2017) | 4 lines Add a benchmark script for Array#sort of float array [Bug #13340] [ruby-dev:50023] ------------------------------------------------------------------------ r58336 | nobu | 2017-04-13 17:08:04 +0900 (Thu, 13 Apr 2017) | 3 lines git-refresh: for symlink srcdir * tool/git-refresh: use `cd -P` for symlink srcdir. ------------------------------------------------------------------------ r58335 | nobu | 2017-04-13 16:52:05 +0900 (Thu, 13 Apr 2017) | 4 lines git-refresh: fix expr * tool/git-refresh (dir): surround by slashes to extract base name. [ruby-dev:50070] [Bug #13424] ------------------------------------------------------------------------ r58334 | nobu | 2017-04-13 16:38:23 +0900 (Thu, 13 Apr 2017) | 6 lines 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] ------------------------------------------------------------------------ r58333 | mrkn | 2017-04-13 16:22:35 +0900 (Thu, 13 Apr 2017) | 14 lines array.c: Improve performance of Array#sort with float elements * array.c (sort_2): improve performance of Array#sort with float elements. * internal.h (cmp_opt_Float, cmp_opt_data): added for checking whether or not Float#<=> can be optimizable. * numeric.c (rb_float_cmp): added for internal use. * internal.h (rb_float_cmp): ditto. [Bug #13340] [ruby-dev:50023] [Fix GH-1539] ------------------------------------------------------------------------ r58332 | rhe | 2017-04-13 15:43:17 +0900 (Thu, 13 Apr 2017) | 6 lines array.c: report correct memsize for shared root arrays For a shared array root, struct RArray::as.heap.aux.capa stores the number of Arrays holding reference to that T_ARRAY instead of the actual heap-allocated capacity. Use ARY_CAPA() macro which handles this appropriately. ------------------------------------------------------------------------ r58331 | stomar | 2017-04-13 04:49:48 +0900 (Thu, 13 Apr 2017) | 5 lines unicode_normalize.rb: improve docs * lib/unicode_normalize.rb: [DOC] improve docs for String#{unicode_normalize,unicode_normalized?}: rdoc formatting, adopt style of other String methods (drop heading and "Examples"). ------------------------------------------------------------------------ r58330 | svn | 2017-04-13 03:07:33 +0900 (Thu, 13 Apr 2017) | 1 line * 2017-04-13 ------------------------------------------------------------------------ r58329 | stomar | 2017-04-13 03:07:32 +0900 (Thu, 13 Apr 2017) | 6 lines nodoc UnicodeNormalize module * lib/unicode_normalize/normalize.rb: [DOC] nodoc the internal UnicodeNormalize module. * lib/unicode_normalize/tables.rb: ditto. * template/unicode_norm_gen.tmpl: ditto. ------------------------------------------------------------------------ r58328 | nobu | 2017-04-12 23:47:50 +0900 (Wed, 12 Apr 2017) | 4 lines thread.c: during GC for thread * thread.c (ruby_thread_stack_overflow): check if the given thread is during GC. ------------------------------------------------------------------------ r58327 | nobu | 2017-04-12 17:39:19 +0900 (Wed, 12 Apr 2017) | 5 lines rbinstall.rb: purge `git ls-files` * tool/rbinstall.rb (load_gemspec): purge `git ls-files` generated by bundle. it is not available always everywhere everytime. [ruby-dev:50068] [Bug #13423] ------------------------------------------------------------------------ r58326 | hsbt | 2017-04-12 17:12:53 +0900 (Wed, 12 Apr 2017) | 4 lines Import latest gemspec from ruby/fileutils. * Bump version to 0.7.1. Beucause fileutils-0.7 is alread reserverd on rubygems.org. ------------------------------------------------------------------------ r58325 | nobu | 2017-04-12 14:22:36 +0900 (Wed, 12 Apr 2017) | 4 lines git-refresh: for old sh * tool/git-refresh: get rid of matching prefix pattern removal for old sh. [ruby-dev:50069] [Bug #13424] ------------------------------------------------------------------------ r58324 | hsbt | 2017-04-12 09:21:20 +0900 (Wed, 12 Apr 2017) | 1 line Use `assert_raise` instead of `assert_raises`. ------------------------------------------------------------------------ r58323 | hsbt | 2017-04-12 09:21:18 +0900 (Wed, 12 Apr 2017) | 4 lines Merge json-2.0.4. * https://github.com/flori/json/releases/tag/v2.0.4 * https://github.com/flori/json/blob/09fabeb03e73ed88dc8ce8f19d76ac59e51dae20/CHANGES.md#2017-03-23-204 ------------------------------------------------------------------------ r58322 | svn | 2017-04-12 07:41:21 +0900 (Wed, 12 Apr 2017) | 1 line * 2017-04-12 ------------------------------------------------------------------------ r58321 | hsbt | 2017-04-12 07:41:21 +0900 (Wed, 12 Apr 2017) | 4 lines Merge upstream of ruby/etc. * Do not use `git ls-files` for file listing. * Fix extconf.rb path. ------------------------------------------------------------------------ r58320 | normal | 2017-04-11 23:56:17 +0900 (Tue, 11 Apr 2017) | 6 lines Socket.udp_server_sockets: use symbol proc Symbol proc is shorter human and machine code; and also avoids needing to name variables. * ext/socket/lib/socket.rb (Socket.udp_server_sockets): use symbol proc ------------------------------------------------------------------------ r58319 | nobu | 2017-04-11 21:28:51 +0900 (Tue, 11 Apr 2017) | 1 line Parenthesized CHECK_CFP_CONSISTENCY [ci skip] ------------------------------------------------------------------------ r58318 | nobu | 2017-04-11 21:20:21 +0900 (Tue, 11 Apr 2017) | 5 lines Install only files explicitly referenced by bundled gems. [Bug #13417] [Fix GH-1580] Author: Vit Ondruch <vondruch@redhat.com> ------------------------------------------------------------------------ r58317 | nobu | 2017-04-11 21:20:18 +0900 (Tue, 11 Apr 2017) | 4 lines Spec#files are not used anymore. [Fix GH-1579] Author: Vit Ondruch <vondruch@redhat.com> ------------------------------------------------------------------------ r58316 | hsbt | 2017-04-11 21:19:05 +0900 (Tue, 11 Apr 2017) | 3 lines Fix a typo. Patch by @voxik. [fix GH-1581] ------------------------------------------------------------------------ r58315 | hsbt | 2017-04-11 18:46:53 +0900 (Tue, 11 Apr 2017) | 4 lines Import gemspec from ruby/etc. * Update configuraiton for gem release. * Bump version to 0.2.1. Because 0.2.0 is already reserved on rubygems.org ------------------------------------------------------------------------ r58314 | hsbt | 2017-04-11 17:49:01 +0900 (Tue, 11 Apr 2017) | 4 lines Import gemspec from ruby/dbm * Update gemspec version of beta release. * Bump version to 0.5.1. Because 0.5 is already reserved another implementation. ------------------------------------------------------------------------ r58313 | nobu | 2017-04-11 13:17:45 +0900 (Tue, 11 Apr 2017) | 4 lines vm_insnhelper.c: CHECK_CFP_CONSISTENCY * vm_insnhelper.c (CHECK_CFP_CONSISTENCY): make [BUG] messages consistent. ------------------------------------------------------------------------ r58312 | nobu | 2017-04-11 11:40:14 +0900 (Tue, 11 Apr 2017) | 4 lines time.c: rename div as divv * time.c (divv): add suffix to get rid of the name in C standard library, and others together. ------------------------------------------------------------------------ r58311 | nobu | 2017-04-11 11:40:13 +0900 (Tue, 11 Apr 2017) | 1 line configure.in: need GIT to check if using git ------------------------------------------------------------------------ r58310 | nobu | 2017-04-11 10:24:13 +0900 (Tue, 11 Apr 2017) | 1 line enc/unicode/data: no files under version control now ------------------------------------------------------------------------ r58309 | normal | 2017-04-11 03:16:58 +0900 (Tue, 11 Apr 2017) | 12 lines time.c: use predefined IDs This reduces rb_intern calls during startup and shortens code. * time.c: include id.h for predefined IDs (id_mul, id_eq, id_ne, id_cmp): remove static variables (eq): replace id_eq with idEq (cmp, wcmp): replace id_cmp with idCmp (weq): replace id_eq with idEq (time_timespec): replace id_mul with '*' (Init_Time): remove rb_intern calls for removed variables * common.mk (time.$(OBJEXT)): add depend on id.h ------------------------------------------------------------------------ r58308 | normal | 2017-04-11 03:08:16 +0900 (Tue, 11 Apr 2017) | 30 lines time.c: Improve Time#to_i performance Time#to_i will be faster around 80% (on 64-bit platforms). * Before user system total real 2.840000 0.000000 2.840000 ( 2.847238) * After user system total real 1.600000 0.000000 1.600000 ( 1.598911) * Test code require 'benchmark' Benchmark.bmbm do |x| x.report do t = Time.now 20000000.times do t.to_i end end end * time.c (_div): new function avoid rb_funcall (div): replace with new _div function [ruby-core:80636] [Bug #13418] Thanks to Watson <watson1978@gmail.com> for the patch. From: Watson <watson1978@gmail.com> ------------------------------------------------------------------------ r58307 | stomar | 2017-04-11 02:28:18 +0900 (Tue, 11 Apr 2017) | 1 line doc/extension.rdoc: rb_str_append grammar fix ------------------------------------------------------------------------ r58306 | nobu | 2017-04-11 00:34:37 +0900 (Tue, 11 Apr 2017) | 4 lines extension.rdoc: rb_str_append [ci skip] * doc/extension.rdoc: add rb_str_append and fix equivalent for rb_str_catf and rb_str_vcatf from rb_str_cat2. ------------------------------------------------------------------------ r58305 | svn | 2017-04-11 00:26:50 +0900 (Tue, 11 Apr 2017) | 1 line * 2017-04-11 ------------------------------------------------------------------------ r58304 | nobu | 2017-04-11 00:26:49 +0900 (Tue, 11 Apr 2017) | 9 lines Make .gemspec slimmer. This is the same code that RubyGems are using: https://github.com/rubygems/rubygems/commit/a1a5ab55cb1501cbfeee29131a56cfa2e763174f [ci skip] [Fix GH-1578] Author: Vit Ondruch <vondruch@redhat.com> ------------------------------------------------------------------------ r58303 | nobu | 2017-04-11 00:26:48 +0900 (Tue, 11 Apr 2017) | 7 lines extension.rdoc: fix rb_enc_str_new_literal * doc/extension.rdoc: Add missing enc arg to rb_enc_str_new_literal. [ci skip] [Fix GH-1577] Author: Dylan Thacker-Smith <Dylan.Smith@shopify.com> ------------------------------------------------------------------------ r58302 | nobu | 2017-04-10 22:35:39 +0900 (Mon, 10 Apr 2017) | 1 line svn:ignore: ignore ruby-runner ------------------------------------------------------------------------ r58301 | usa | 2017-04-10 22:30:28 +0900 (Mon, 10 Apr 2017) | 2 lines svn:ignore: fix handling exts.mk. ------------------------------------------------------------------------ r58300 | usa | 2017-04-10 22:18:03 +0900 (Mon, 10 Apr 2017) | 2 lines svn:ignore ------------------------------------------------------------------------ r58299 | nobu | 2017-04-10 11:13:52 +0900 (Mon, 10 Apr 2017) | 4 lines Makefile.sub: fix HAVE_GIT * win32/Makefile.sub (HAVE_GIT): fix missing `do`, excape `$`, and fix a typo. ------------------------------------------------------------------------ r58298 | nobu | 2017-04-10 10:46:24 +0900 (Mon, 10 Apr 2017) | 3 lines configure.in: detect baseruby by default * configure.in: default HAVE_BASERUBY to yes, for auto detection. ------------------------------------------------------------------------ r58297 | nobu | 2017-04-10 10:22:50 +0900 (Mon, 10 Apr 2017) | 4 lines vcs.rb: remove git stuff * tool/vcs.rb (VCS::GIT#after_export): remove git stuff not to distribute. [ruby-core:80629] [Feature #13415] ------------------------------------------------------------------------ r58296 | nobu | 2017-04-10 10:22:49 +0900 (Mon, 10 Apr 2017) | 4 lines Allow --without-baseruby option * configure.in, win32/configure.bat: allow --without-baseruby option to use already generated files without baseruby. ------------------------------------------------------------------------ r58295 | nobu | 2017-04-10 10:22:48 +0900 (Mon, 10 Apr 2017) | 4 lines Add --with-git option * configure.in, win32/configure.bat: add --with-git option to tell git command to use, or not to use git. ------------------------------------------------------------------------ r58294 | svn | 2017-04-10 01:19:39 +0900 (Mon, 10 Apr 2017) | 1 line * 2017-04-10 ------------------------------------------------------------------------ r58293 | usa | 2017-04-10 01:19:37 +0900 (Mon, 10 Apr 2017) | 6 lines Get rid of inifinity retry loop in Socket.udp_server_sockets * ext/socket/lib/socket.rb (Socket.udp_server_sockets): remove duplicated addresses before passing it to ip_sockets_port0 because it causes Errno::EADDRINUSE and retry forever. ------------------------------------------------------------------------ r58291 | stomar | 2017-04-09 22:30:31 +0900 (Sun, 09 Apr 2017) | 4 lines math.c: improve docs for Math.sqrt * math.c: [DOC] mention possibly surprising behavior of Math.sqrt due to floating point arithmetic; also refer to BigDecimal#sqrt. ------------------------------------------------------------------------ r58290 | stomar | 2017-04-09 22:28:11 +0900 (Sun, 09 Apr 2017) | 4 lines numeric.c: improve docs for Float * numeric.c: [DOC] mention possibly surprising behavior of Float#{floor,ceil,to_i,truncate} due to floating point arithmetic. ------------------------------------------------------------------------ r58288 | kazu | 2017-04-09 20:53:53 +0900 (Sun, 09 Apr 2017) | 5 lines io.c: ARGF.file returns $stdin instead of STDIN [ci skip] For example: `ruby -e '$stdin=open(IO::NULL);p [STDIN,$stdin,ARGF.file]'` prints `[#<IO:<STDIN>>, #<File:/dev/null>, #<File:/dev/null>]` ------------------------------------------------------------------------ r58287 | nobu | 2017-04-09 20:44:01 +0900 (Sun, 09 Apr 2017) | 4 lines configure.in: rpath with OPTDIR * configure.in: add rpath flags which is needed for OPTDIR as well as -L options, when it is given. [ruby-dev:50065] [Bug #13411] ------------------------------------------------------------------------ r58286 | nobu | 2017-04-09 14:09:44 +0900 (Sun, 09 Apr 2017) | 5 lines 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] ------------------------------------------------------------------------ r58285 | nobu | 2017-04-09 13:01:07 +0900 (Sun, 09 Apr 2017) | 4 lines special exception messages are static * vm_core.h (rb_vm_register_special_exception): make the contents of special exception messages static. ------------------------------------------------------------------------ r58284 | nobu | 2017-04-09 11:34:49 +0900 (Sun, 09 Apr 2017) | 5 lines vm_core.h: ruby_error_stream_closed * vm_core.h (ruby_special_exceptions): renamed ruby_error_closed_stream as ruby_error_stream_closed, like the message. ------------------------------------------------------------------------ r58283 | nobu | 2017-04-09 11:06:45 +0900 (Sun, 09 Apr 2017) | 4 lines no mark of u3 in NODE_BLOCK_PASS * node.c (rb_gc_mark_node): u3 in NODE_BLOCK_PASS is not used and does not need to be marked. ------------------------------------------------------------------------ r58282 | nobu | 2017-04-09 10:23:02 +0900 (Sun, 09 Apr 2017) | 5 lines default.mspec: defer job tokens * spec/default.mspec (MSpecScript::JobServer#cores): defer getting job tokens until required. when running only one spec file, `-j` option has no effect. ------------------------------------------------------------------------ r58281 | svn | 2017-04-09 10:23:02 +0900 (Sun, 09 Apr 2017) | 1 line * 2017-04-09 ------------------------------------------------------------------------ r58280 | nobu | 2017-04-09 10:23:01 +0900 (Sun, 09 Apr 2017) | 4 lines test/unit.rb: no jobserver in workers * test/lib/test/unit.rb (Test::Unit::Parallel#process_args): worker processes do not access job server. ------------------------------------------------------------------------ r58279 | nobu | 2017-04-08 16:29:55 +0900 (Sat, 08 Apr 2017) | 4 lines Show logs after PR merger * .travis.yml (before_script): show logs of merged pull requests to rubyspec. ------------------------------------------------------------------------ r58278 | nobu | 2017-04-08 16:29:54 +0900 (Sat, 08 Apr 2017) | 5 lines Split commands * .travis.yml (before_script): split commands to prepare variables for pull request URLs to rubyspec, to stop when each commands failed. ------------------------------------------------------------------------ r58277 | nobu | 2017-04-08 12:25:50 +0900 (Sat, 08 Apr 2017) | 4 lines basicsocket.c: proper system call name * ext/socket/basicsocket.c (rsock_bsock_send): show proper system call name in the exception message. ------------------------------------------------------------------------ r58276 | suke | 2017-04-08 11:37:03 +0900 (Sat, 08 Apr 2017) | 2 lines ext/win32ole/win32ole_variant.c (ole_val2variant_err): use FIXNUM_P, RB_TYPE_P ------------------------------------------------------------------------ r58275 | svn | 2017-04-08 01:08:50 +0900 (Sat, 08 Apr 2017) | 1 line * 2017-04-08 ------------------------------------------------------------------------ r58274 | nobu | 2017-04-08 01:08:49 +0900 (Sat, 08 Apr 2017) | 4 lines .travis.yml: split long command [ci skip] * .travis.yml (before_script): split long command to merge pull requests to rubyspec from github. ------------------------------------------------------------------------ r58273 | nobu | 2017-04-07 23:00:22 +0900 (Fri, 07 Apr 2017) | 5 lines .travis.yml: multiple rubyspec PRs [ci skip] * .travis.yml (before_script): merge multiple pull requests rubyspec to from github. pull request numbers are given by RUBYSPEC_PULL_REQUEST, as a comma or space separated list. ------------------------------------------------------------------------ r58272 | nobu | 2017-04-07 22:26:12 +0900 (Fri, 07 Apr 2017) | 1 line use dedicated assertions ------------------------------------------------------------------------ r58271 | nobu | 2017-04-07 22:26:12 +0900 (Fri, 07 Apr 2017) | 1 line Use \A and \z to match whole string ------------------------------------------------------------------------ r58270 | usa | 2017-04-07 21:56:35 +0900 (Fri, 07 Apr 2017) | 4 lines Classify extlibs tool * tool/extlibs.rb (ExtLibs): classify the tool to make it able to reuse it. ------------------------------------------------------------------------ r58269 | ko1 | 2017-04-07 16:50:30 +0900 (Fri, 07 Apr 2017) | 2 lines insert assertions for THROW_DATA_* macros. ------------------------------------------------------------------------ r58268 | ko1 | 2017-04-07 15:41:32 +0900 (Fri, 07 Apr 2017) | 5 lines introduce imemo_type_p(v, imemo_type) * internal.h: introduce imemo_type_p() which checks the given value is T_IMEMO and imemo_type() == given imemo_type. ------------------------------------------------------------------------ r58267 | nobu | 2017-04-07 13:00:56 +0900 (Fri, 07 Apr 2017) | 4 lines fix condition of assert_not_respond_to * test/lib/test/unit/assertions.rb (assert_not_respond_to): fix condition to assert. ------------------------------------------------------------------------ r58266 | nobu | 2017-04-07 12:56:16 +0900 (Fri, 07 Apr 2017) | 4 lines 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. ------------------------------------------------------------------------ r58265 | svn | 2017-04-07 12:56:16 +0900 (Fri, 07 Apr 2017) | 1 line * 2017-04-07 ------------------------------------------------------------------------ r58264 | nobu | 2017-04-07 12:56:15 +0900 (Fri, 07 Apr 2017) | 4 lines assert_respond_to non-private method * test/lib/test/unit/assertions.rb (assert_respond_to): do not call super class assert_respond_to when false priv is given. ------------------------------------------------------------------------ r58263 | nobu | 2017-04-06 13:42:41 +0900 (Thu, 06 Apr 2017) | 4 lines internal.h: parenthesize macro argument * internal.h (THROW_DATA_P): parenthesize the argument which is casted. ------------------------------------------------------------------------ r58262 | ko1 | 2017-04-06 11:56:23 +0900 (Thu, 06 Apr 2017) | 15 lines fix TracePoint#return_value with non-local exits * vm.c: get return_value from imemo_throw_data object (THROW_DATA_VAL()). imemo_throw_data (TAG_BREAK) contains returned value. However, imemo_throw_data (TAG_BREAK) can skip several frames so that we need to use it only once (at most internal frame). To record it, we introduced THROW_DATA_CONSUMED and check it. * internal.h: define THROW_DATA_CONSUMED flag. * test/ruby/test_settracefunc.rb: add tests for [Bug #13369] * vm_insnhelper.h: add THROW_DATA_CONSUMED_P() and THROW_DATA_CONSUMED_SET(). ------------------------------------------------------------------------ r58261 | nobu | 2017-04-06 11:33:40 +0900 (Thu, 06 Apr 2017) | 1 line Freeze RbConfig::SIZEOF and RbConfig::LIMITS ------------------------------------------------------------------------ r58260 | nobu | 2017-04-06 11:10:40 +0900 (Thu, 06 Apr 2017) | 5 lines Rename RbConfig::Limits as RbConfig::LIMITS * template/limits.c.tmpl (Init_limits): rename RbConfig::Limits as RbConfig::LIMITS, constants other than class or module are all uppercase with underscores by convention. ------------------------------------------------------------------------ r58259 | hsbt | 2017-04-06 10:47:45 +0900 (Thu, 06 Apr 2017) | 1 line Update library entry for stringio and fiddle. ------------------------------------------------------------------------ r58258 | svn | 2017-04-06 09:14:58 +0900 (Thu, 06 Apr 2017) | 1 line * 2017-04-06 ------------------------------------------------------------------------ r58257 | kazu | 2017-04-06 09:14:57 +0900 (Thu, 06 Apr 2017) | 3 lines NEWS: mention Array#append and Array#prepend [Feature #12746] [ci skip] ------------------------------------------------------------------------ r58256 | hsbt | 2017-04-05 22:16:32 +0900 (Wed, 05 Apr 2017) | 5 lines Import psych-3.0.0.beta1 from ruby/psych. * Removed deprecated code. * Removed code related syck gem. * Fixed typos. ------------------------------------------------------------------------ r58255 | hsbt | 2017-04-05 20:04:25 +0900 (Wed, 05 Apr 2017) | 3 lines Added initial gemspec for ruby/fiddle. [Feature #13403][ruby-core:80577] ------------------------------------------------------------------------ r58254 | shyouhei | 2017-04-05 17:52:31 +0900 (Wed, 05 Apr 2017) | 8 lines fix --with-gmp (broken by r57490) Looking at the generated shell script (also the autoconf manual), it seems AC_SEARCH_LIBS() m4 macro does not define HAVE_LIBsomething C preprocessor macros, unlike AC_CHECK_LIB() which does define them. This previous change effectively killed building with GMP because building that mode depends on existence of HAVE_LIBGMP. [Bug #13402] ------------------------------------------------------------------------ r58253 | nobu | 2017-04-05 17:34:18 +0900 (Wed, 05 Apr 2017) | 5 lines compile.c: remove side effects by debug macros * compile.c (debugp_param): do not evaluate arguments of debug macros, unless the debug mode is enabled. these macros should not have side effects. ------------------------------------------------------------------------ r58252 | nobu | 2017-04-05 16:07:51 +0900 (Wed, 05 Apr 2017) | 3 lines configure.in: HAVE_MALLOC_CONF * configure.in: define HAVE_MALLOC_CONF when using jemalloc. ------------------------------------------------------------------------ r58251 | nobu | 2017-04-05 10:36:21 +0900 (Wed, 05 Apr 2017) | 4 lines default.mspec: job server * spec/default.mspec: override MSpecScript#cores by the tokens from the parent make job server. ------------------------------------------------------------------------ r58250 | nobu | 2017-04-05 09:12:43 +0900 (Wed, 05 Apr 2017) | 3 lines parse.y: ID for logop * parse.y (logop): use ID instead of token values. ------------------------------------------------------------------------ r58249 | svn | 2017-04-05 08:42:01 +0900 (Wed, 05 Apr 2017) | 1 line * 2017-04-05 ------------------------------------------------------------------------ r58248 | nobu | 2017-04-05 08:42:00 +0900 (Wed, 05 Apr 2017) | 4 lines parse.y: use idGE for tGEQ * parse.y (arg): use ID directly for '>=' operator, without TOKEN2ID macro. ------------------------------------------------------------------------ r58247 | nobu | 2017-04-04 23:19:04 +0900 (Tue, 04 Apr 2017) | 4 lines parse.y: share with ripper * parse.y (rb_parser_trace_lex_state, rb_parser_show_bitstack): share with ripper. ------------------------------------------------------------------------ r58246 | nobu | 2017-04-04 23:13:46 +0900 (Tue, 04 Apr 2017) | 4 lines parse.y: flush debug buffer * parse.y (rb_parser_trace_lex_state, rb_parser_show_bitstack): flush debug buffer before traces of lex_state and bitstack. ------------------------------------------------------------------------ r58245 | akr | 2017-04-04 21:54:42 +0900 (Tue, 04 Apr 2017) | 2 lines Refactored using Method#owner. ------------------------------------------------------------------------ r58244 | stomar | 2017-04-04 04:23:13 +0900 (Tue, 04 Apr 2017) | 5 lines improve docs for #truncate, #floor, and #ceil methods * numeric.c: [DOC] improve and harmonize documentation for {Float,Integer,Numeric}#{truncate,floor,ceil}. * rational.c: [DOC] ditto for Rational#{truncate,floor,ceil}. ------------------------------------------------------------------------ r58243 | svn | 2017-04-04 04:19:21 +0900 (Tue, 04 Apr 2017) | 1 line * 2017-04-04 ------------------------------------------------------------------------ r58242 | stomar | 2017-04-04 04:19:20 +0900 (Tue, 04 Apr 2017) | 5 lines improve docs for #round methods * numeric.c: [DOC] improve and harmonize documentation for {Float,Integer,Numeric}#round. * rational.c: [DOC] ditto for Rational#round. ------------------------------------------------------------------------ r58241 | kazu | 2017-04-03 21:30:04 +0900 (Mon, 03 Apr 2017) | 1 line Fix arguments order of IO#pwrite ------------------------------------------------------------------------ r58240 | nobu | 2017-04-03 09:10:50 +0900 (Mon, 03 Apr 2017) | 14 lines Add IO#pread and IO#pwrite methods These methods are useful for safe/concurrent file I/O in multi-thread/process environments and also fairly standard nowadays especially in systems supporting pthreads. Based on patches by Avseyev <sergey.avseyev@gmail.com> at [ruby-core:79290]. [Feature #4532] * configure.in: check for pwrite(2). pread() is already used internally for IO.copy_stream. * io.c: implement wrappers for pread(2) and pwrite(2) and expose them in IO. ------------------------------------------------------------------------ r58239 | svn | 2017-04-03 05:16:02 +0900 (Mon, 03 Apr 2017) | 1 line * 2017-04-03 ------------------------------------------------------------------------ r58238 | normal | 2017-04-03 05:16:02 +0900 (Mon, 03 Apr 2017) | 9 lines compile.c: avoid duplicate mark entry for string literal Range iseq_add_mark_object is called in iseq_set_sequence later on, so we only need to call iseq_add_mark_object_compile_time in iseq_peephole_optimize. Without this change, there would've been a duplicate entry in the long-lived iseq mark_ary. * compile.c (iseq_peephole_optimize): avoid duplicate mark object entry [ruby-core:80536] [Feature #13355] ------------------------------------------------------------------------ r58237 | nobu | 2017-04-02 12:05:10 +0900 (Sun, 02 Apr 2017) | 1 line update configure by prereq [ci skip] ------------------------------------------------------------------------ r58236 | normal | 2017-04-02 10:14:14 +0900 (Sun, 02 Apr 2017) | 8 lines thread.c: comments on M:N threading [ci skip] I may experiment with M:N threading in coming months. Often I find myself yearning for the old 1.8 days when spawning threads was really cheap for network operations. But I also like to use native blocking recv_io and accept calls for round-robin load distribution and accessing files on systems with dozens of slow rotational disks. ------------------------------------------------------------------------ r58235 | nobu | 2017-04-02 07:48:01 +0900 (Sun, 02 Apr 2017) | 4 lines rational.c: improves Rational#round rdoc [ci skip] * rational.c (nurat_round_n): [DOC] improves Integer#round documentation as well as Float#round. ------------------------------------------------------------------------ r58234 | normal | 2017-04-02 07:18:25 +0900 (Sun, 02 Apr 2017) | 5 lines test/ruby/test_optimization.rb: quiet warnings This quiets an old "assigned but unused variable" warning left over after r56653 as well as two new "ambiguous first argment" warnings introduced in r58233. ------------------------------------------------------------------------ r58233 | normal | 2017-04-02 06:38:25 +0900 (Sun, 02 Apr 2017) | 16 lines compile.c: optimize literal String range in case/when dispatch This is similar in spirit to opt_case_dispatch as the literal Range here is guaranteed to be immutable when used for checkmatch. Normal range literals with non-frozen strings are actually mutable, as Range#begin and Range#end exposes the strings to modification. So those Range objects cannot be frozen without breaking compatibility, but Ranges in case/when dispatch can be frozen at compile time. * compile.c (iseq_peephole_optimize): persistent Range creation when String literals are used as beginning and end of range when used for case/when dispatch. [ruby-core:80290] [Feature #13355] ------------------------------------------------------------------------ r58232 | stomar | 2017-04-02 05:43:35 +0900 (Sun, 02 Apr 2017) | 1 line doc/contributors.rdoc: [DOC] update ------------------------------------------------------------------------ r58231 | svn | 2017-04-02 05:20:00 +0900 (Sun, 02 Apr 2017) | 1 line * 2017-04-02 ------------------------------------------------------------------------ r58230 | stomar | 2017-04-02 05:19:59 +0900 (Sun, 02 Apr 2017) | 11 lines rational.c: improve docs * rational.c: [DOC] improve docs for Rational and related methods * improve class documentation for Rational * fix call-seq's * simplify examples for Rational#{floor,ceil,truncate,round} * fix wrong examples for #floor, subtraction, and exponentiation * improve docs for #<=>, Kernel#Rational, {String,Float}#to_r, Integer.{gcd,lcm,gcdlcm} * fix typos, grammar, and rdoc formatting * other improvements ------------------------------------------------------------------------ r58229 | eregon | 2017-04-01 19:30:48 +0900 (Sat, 01 Apr 2017) | 6 lines ostruct.rb: improve fix for OpenStruct.allocate + #respond_to? * lib/ostruct.rb (OpenStruct#respond_to_missing?): this makes OpenStruct#respond_to? works on any OpenStruct instance, just like Kernel#respond_to? does, without workarounds. [ruby-core:80292] [Bug #13358] ------------------------------------------------------------------------ r58228 | svn | 2017-04-01 16:38:13 +0900 (Sat, 01 Apr 2017) | 1 line * 2017-04-01 ------------------------------------------------------------------------ r58227 | nobu | 2017-04-01 16:38:12 +0900 (Sat, 01 Apr 2017) | 6 lines array.c: Array#append and Array#prepend * array.c (Init_Array): Add alias "append" to Array#push, and "prepend" to Array#unshift. [Feature #12746] [Fix GH-1574] Author: pascbjumper2 <stowers.joshua@live.com> ------------------------------------------------------------------------ r58226 | nobu | 2017-03-31 16:34:47 +0900 (Fri, 31 Mar 2017) | 3 lines exts.mk.tmpl: note footer [ci skip] * template/exts.mk.tmpl: place note footer message at the end. ------------------------------------------------------------------------ r58225 | nobu | 2017-03-31 16:34:46 +0900 (Fri, 31 Mar 2017) | 3 lines debug.c: check codepage value [ci skip] * debug.c (set_debug_option): check garbage and overflow. ------------------------------------------------------------------------ r58224 | nobu | 2017-03-31 09:35:02 +0900 (Fri, 31 Mar 2017) | 7 lines RUBY_DEBUG codepage option [ci skip] * debug.c (set_debug_option): add "codepage" option to force locale charmap on Windows. * localeinit.c (locale_charmap): use the codepage by debug env if given. ------------------------------------------------------------------------ r58223 | nobu | 2017-03-31 09:35:01 +0900 (Fri, 31 Mar 2017) | 4 lines setup.mak: ENABLE_DEBUG_ENV [ci skip] * win32/setup.mak (-basic-vars-): pass ENABLE_DEBUG_ENV to Makefile. ------------------------------------------------------------------------ r58222 | svn | 2017-03-31 00:20:52 +0900 (Fri, 31 Mar 2017) | 1 line * 2017-03-31 ------------------------------------------------------------------------ r58221 | nobu | 2017-03-31 00:20:52 +0900 (Fri, 31 Mar 2017) | 5 lines localeinit.c: locale_charmap return value * localeinit.c (locale_charmap): fix the return value to call conv function instead of encoding index on platforms where locale information is not available. ------------------------------------------------------------------------ r58220 | nobu | 2017-03-30 16:25:13 +0900 (Thu, 30 Mar 2017) | 1 line .travis.yml: make tests silent [ci skip] ------------------------------------------------------------------------ r58219 | nobu | 2017-03-30 16:16:20 +0900 (Thu, 30 Mar 2017) | 1 line .travis.yml: checkout ruby/spec PR ------------------------------------------------------------------------ r58218 | nobu | 2017-03-30 16:04:14 +0900 (Thu, 30 Mar 2017) | 4 lines git-refresh: rewrite options * tool/git-refresh: parse options without git-rev-parse, which is old on travis. ------------------------------------------------------------------------ r58217 | nobu | 2017-03-30 15:44:27 +0900 (Thu, 30 Mar 2017) | 5 lines tool/git-refresh * tool/git-refresh: tool to clone or update git working directory. * Makefile.in: use git-refresh. ------------------------------------------------------------------------ r58216 | svn | 2017-03-30 04:12:02 +0900 (Thu, 30 Mar 2017) | 1 line * 2017-03-30 ------------------------------------------------------------------------ r58215 | stomar | 2017-03-30 04:12:01 +0900 (Thu, 30 Mar 2017) | 4 lines methods.rdoc: small improvements * doc/syntax/methods.rdoc: [DOC] small improvements: fix some typos, grammar, punctuation, consistently use capitalized "Ruby". ------------------------------------------------------------------------ r58212 | mame | 2017-03-29 20:49:39 +0900 (Wed, 29 Mar 2017) | 3 lines Fix two typos My typo checker :-) found the bugs. ------------------------------------------------------------------------ r58211 | sorah | 2017-03-29 20:33:59 +0900 (Wed, 29 Mar 2017) | 5 lines string.c: Supress logical-op-parentheses warning * string.c(rb_str_upcase_bang): Supress logical-op-parentheses warning Patch by Fukuo Kadota <fukuo-kadota@cookpad.com>, Closes [GH-1570] [Bug #13387]. ------------------------------------------------------------------------ r58210 | nobu | 2017-03-29 18:47:42 +0900 (Wed, 29 Mar 2017) | 4 lines vsnprintf.c: prefix with precision * vsnprintf.c (BSD_vfprintf): sign and hex-prefix should not be counted in precision. [ruby-dev:47714] [Bug #8916] ------------------------------------------------------------------------ r58209 | nobu | 2017-03-29 18:47:40 +0900 (Wed, 29 Mar 2017) | 4 lines test_minitest_unit.rb: assert_triggered * test/minitest/test_minitest_unit.rb (assert_triggered): rename to be hidden in backtraces. ------------------------------------------------------------------------ r58208 | sorah | 2017-03-29 18:31:13 +0900 (Wed, 29 Mar 2017) | 5 lines Add documents on Process::CLOCK_* constants * process.c: Add documents on Process::CLOCK_* constants. Patch by Sunao Komuro <sunao-komuro@cookpad.com>. Closes [GH-1567] [Bug #13386] ------------------------------------------------------------------------ r58207 | sorah | 2017-03-29 18:24:10 +0900 (Wed, 29 Mar 2017) | 8 lines Fix `make clean` errors Patch by Kohei Suzuki <eagletmt@gmail.com>. * common.mk(clean-rubyspec): Supress error messages when rubyspec files don't exist. [GH-1563] [Bug #13384] * Makefile.in: Fix error when files don't exist. [GH-1563] [Bug #13384] ------------------------------------------------------------------------ r58206 | nobu | 2017-03-29 14:54:14 +0900 (Wed, 29 Mar 2017) | 4 lines parse.y: dot_or_colon * parse.y (dot_or_colon): use the default action without type casts. ------------------------------------------------------------------------ r58205 | sorah | 2017-03-29 13:32:00 +0900 (Wed, 29 Mar 2017) | 9 lines Remove unused Init_frozen_strings declaration Init_frozen_strings definition is removed in r51511. https://bugs.ruby-lang.org/issues/11423 Patch by Kohei Suzuki <eagletmt@gmail.com> * internal.h: Remove declaration of unexist function [Fix GH-1558] ------------------------------------------------------------------------ r58204 | nobu | 2017-03-29 12:00:50 +0900 (Wed, 29 Mar 2017) | 1 line test_symbol.rb: switch to assert_not_equal ------------------------------------------------------------------------ r58201 | svn | 2017-03-29 02:14:50 +0900 (Wed, 29 Mar 2017) | 1 line * 2017-03-29 ------------------------------------------------------------------------ r58200 | normal | 2017-03-29 02:14:49 +0900 (Wed, 29 Mar 2017) | 8 lines test/ruby/test_symbol.rb: new test for nondeterminism We need to ensure hashes for static symbols remain non-deterministic to avoid DoS attacks. This is currently the case since 2.4+, but was not for the 2.3 series. * test/ruby/test_symbol.rb (test_hash_nondeterministic): new test [ruby-core:80430] [Bug #13376] ------------------------------------------------------------------------ r58198 | kazu | 2017-03-28 22:47:45 +0900 (Tue, 28 Mar 2017) | 1 line fix a typo [ci skip] ------------------------------------------------------------------------ r58197 | kazu | 2017-03-28 22:47:43 +0900 (Tue, 28 Mar 2017) | 1 line Update assertion message [ci skip] ------------------------------------------------------------------------ r58195 | nobu | 2017-03-28 18:21:58 +0900 (Tue, 28 Mar 2017) | 4 lines ostruct.rb: refine visibility failure message * lib/ostruct.rb (method_missing): raise an exception with proper visibility message. ------------------------------------------------------------------------ r58192 | nobu | 2017-03-28 11:30:14 +0900 (Tue, 28 Mar 2017) | 4 lines numeric.c: improves Integer#round rdoc [ci skip] * numeric.c (int_round): [DOC] improves Integer#round documentation as well as Float#round. ------------------------------------------------------------------------ r58191 | svn | 2017-03-28 11:15:52 +0900 (Tue, 28 Mar 2017) | 1 line * 2017-03-28 ------------------------------------------------------------------------ r58190 | nobu | 2017-03-28 11:15:51 +0900 (Tue, 28 Mar 2017) | 6 lines numeric.c: improves Float#round rdoc [ci skip] * numeric.c (flo_round): [DOC] improves Float#round documentation to better highlight the half keyword. [Fix GH-1541] Author: Evan Brodie <brodie.evan@gmail.com> ------------------------------------------------------------------------ r58156 | nobu | 2017-03-27 23:57:08 +0900 (Mon, 27 Mar 2017) | 10 lines dir.c: err at glob failure * dir.c (glob_helper): raise a SystemCallError exception when opendir() failed, except for ENOENT, ENOTDIR, and EACCES. this behavior predates 1.0; the comments in glob.c claimed that glob() returned -1 on error but actualy the pointer to a global variable, then dir_glob() did check only -1 as the comments, and ignored actual errors. [ruby-core:80226] [Bug #13276] dir.c: ruby_glob_funcs_t ------------------------------------------------------------------------ r58150 | nobu | 2017-03-27 22:15:48 +0900 (Mon, 27 Mar 2017) | 6 lines error.c: warning functions * error.c: define warning functions in all combinations of * no errno, system errno, argument * without/with encoding * enabled/disabled by default ------------------------------------------------------------------------ r58146 | nobu | 2017-03-27 19:44:32 +0900 (Mon, 27 Mar 2017) | 7 lines error.c: refactor warning messages * error.c (with_warning_string): extract building warning message string from variadic arguments. * error.c (syserr_warning): write warning message with the system error message. ------------------------------------------------------------------------ r58145 | svn | 2017-03-27 15:12:38 +0900 (Mon, 27 Mar 2017) | 1 line * 2017-03-27 ------------------------------------------------------------------------ r58144 | normal | 2017-03-27 15:12:37 +0900 (Mon, 27 Mar 2017) | 14 lines fix redefinition optimization for -"literal string" (UMinus) Unfortunately this enlarges insns.def by yet another instruction. However, it is much prettier than opt_str_freeze in use, and maybe we can avoid having so many instructions in the future. [ruby-core:80368] * insns.def (DEFINE_INSN): new instruction: opt_str_uminus (maybe temporary) * compile.c (iseq_compile_each0): split instructions * test/ruby/test_optimization.rb (test_string_uminus): new test * vm.c (vm_init_redefined_flag): set redefinintion flag for uminus * vm_core.h (enum ruby_basic_operators): add BOP_UMINUS ------------------------------------------------------------------------ r58142 | normal | 2017-03-26 19:21:45 +0900 (Sun, 26 Mar 2017) | 3 lines NEWS: feature number for String#-@ compile-time optimization [ruby-core:79971] [Feature #13295] ------------------------------------------------------------------------ r58138 | nobu | 2017-03-26 16:13:43 +0900 (Sun, 26 Mar 2017) | 5 lines parse.y: unterminated content token * parse.y (parser_parse_string): defer the end token to next reading, to yield tSTRING_CONTENT with the unterminated content. [Bug #13363] ------------------------------------------------------------------------ r58136 | nobu | 2017-03-26 10:21:57 +0900 (Sun, 26 Mar 2017) | 3 lines gmake.mk: multi mspec * defs/gmake.mk (MSPECOPT): enable multi exec if parallel make. ------------------------------------------------------------------------ r58135 | nobu | 2017-03-26 09:50:59 +0900 (Sun, 26 Mar 2017) | 3 lines common.mk: test-rubyspec * common.mk (yes-test-rubyspec): make jobserver ready. ------------------------------------------------------------------------ r58134 | svn | 2017-03-26 05:35:52 +0900 (Sun, 26 Mar 2017) | 1 line * 2017-03-26 ------------------------------------------------------------------------ r58133 | svn | 2017-03-26 05:35:52 +0900 (Sun, 26 Mar 2017) | 1 line * properties. ------------------------------------------------------------------------ r58132 | usa | 2017-03-26 05:35:51 +0900 (Sun, 26 Mar 2017) | 4 lines Add a tool for backporters. * tool/generate-backport-changelog.rb: Generate ChangeLog entries from svn log. ------------------------------------------------------------------------ r58084 | nobu | 2017-03-25 16:46:12 +0900 (Sat, 25 Mar 2017) | 4 lines configure.in: syscall is deprecated on macOS * configure.in: syscall is no longer supported on macOS since 10.12. [ruby-core:80300] [Bug #13361] ------------------------------------------------------------------------ r58083 | nobu | 2017-03-25 12:23:43 +0900 (Sat, 25 Mar 2017) | 5 lines class.c: prohibit refinement module * class.c (ensure_includable): cannot include refinement module, or the type and the class do not match. [ruby-core:79632] [Bug #13236] ------------------------------------------------------------------------ r58082 | nobu | 2017-03-25 11:57:30 +0900 (Sat, 25 Mar 2017) | 4 lines class.c: ensure_includable * class.c (ensure_includable): extract checks to include and prepend. ------------------------------------------------------------------------ r58081 | svn | 2017-03-25 10:07:36 +0900 (Sat, 25 Mar 2017) | 1 line * 2017-03-25 ------------------------------------------------------------------------ r58080 | nobu | 2017-03-25 10:07:35 +0900 (Sat, 25 Mar 2017) | 5 lines keep line number after unterminated string literal * parse.y (parser_parse_string): keep line number even after an unterminated string literal. it does not matter in the parser, ripper needs this value after this error. ------------------------------------------------------------------------ r58078 | naruse | 2017-03-24 23:05:50 +0900 (Fri, 24 Mar 2017) | 1 line export_changelog must specify the branch's url ------------------------------------------------------------------------ r58077 | nobu | 2017-03-24 21:16:54 +0900 (Fri, 24 Mar 2017) | 5 lines ostruct.rb: fix OpenStruct.allocate * lib/ostruct.rb (OpenStruct.allocate): initialize an instance variable directly, without calling `intialize` method which may be overridden in a subclass. [ruby-core:80292] [Bug #13358] ------------------------------------------------------------------------ r58076 | normal | 2017-03-24 16:29:33 +0900 (Fri, 24 Mar 2017) | 5 lines logger: remove redundant opt_str_freeze use Strings in "when" statements are allocation-free, so there's never any reason to uglify the code to use opt_str_freeze over the normal putobject instructions, here. ------------------------------------------------------------------------ r58075 | nobu | 2017-03-24 13:37:28 +0900 (Fri, 24 Mar 2017) | 4 lines Do not update Unicode headers * common.mk (name2ctype.h, casefold.h): use as checked out unless ALWAYS_UPDATE_UNICODE=yes. ------------------------------------------------------------------------ r58074 | nobu | 2017-03-24 12:42:28 +0900 (Fri, 24 Mar 2017) | 4 lines Don't download from Unicode.org * tool/make-snapshot: use checked out headers for Unicode, to get rid of downloading data files from Unicode.org. ------------------------------------------------------------------------ r58073 | nobu | 2017-03-24 11:44:21 +0900 (Fri, 24 Mar 2017) | 1 line common.mk: touch-unicode-files ------------------------------------------------------------------------ r58072 | nobu | 2017-03-24 10:10:46 +0900 (Fri, 24 Mar 2017) | 1 line Make Unicode data directory ------------------------------------------------------------------------ r58071 | nobu | 2017-03-24 08:55:29 +0900 (Fri, 24 Mar 2017) | 4 lines Don't download from Unicode.org * .travis.yml, appveyor.yml: use checked out headers for Unicode, to get rid of downloading data files from Unicode.org. ------------------------------------------------------------------------ r58070 | nobu | 2017-03-24 00:55:00 +0900 (Fri, 24 Mar 2017) | 4 lines enc-unicode.rb: fix version matching * tool/enc-unicode.rb (data_foreach): version comments do not include sub directory names. ------------------------------------------------------------------------ r58069 | nobu | 2017-03-24 00:49:10 +0900 (Fri, 24 Mar 2017) | 6 lines fix GraphemeBreakProperty.txt * tool/downloader.rb: download to the file given in ARGV. * tool/enc-unicode.rb (parse_GraphemeBreakProperty): fix data file path as $(UNICODE_PROPERTY_FILES) in common.mk. ------------------------------------------------------------------------ r58068 | svn | 2017-03-24 00:47:27 +0900 (Fri, 24 Mar 2017) | 1 line * 2017-03-24 ------------------------------------------------------------------------ r58067 | nobu | 2017-03-24 00:47:26 +0900 (Fri, 24 Mar 2017) | 4 lines common.mk: updating name2ctype.h * common.mk (name2ctype.h): update if ALWAYS_UPDATE_UNICODE = yes, as well as casefold.h. ------------------------------------------------------------------------ r58066 | nobu | 2017-03-23 16:59:57 +0900 (Thu, 23 Mar 2017) | 4 lines enc-unicode.rb: ifdef blocks * tool/enc-unicode.rb (Unifdef#ifdef): enclose conditional blocks in blocks. ------------------------------------------------------------------------ r58065 | nobu | 2017-03-23 16:59:56 +0900 (Thu, 23 Mar 2017) | 1 line enc-unicode.rb: uniname2ctype_offset ------------------------------------------------------------------------ r58064 | nobu | 2017-03-23 16:53:35 +0900 (Thu, 23 Mar 2017) | 4 lines update name2ctype.h * enc/unicode/9.0.0/name2ctype.h: update due to merger of Onigmo 6.0.0. ------------------------------------------------------------------------ r58063 | svn | 2017-03-23 05:23:42 +0900 (Thu, 23 Mar 2017) | 1 line * 2017-03-23 ------------------------------------------------------------------------ r58062 | stomar | 2017-03-23 05:23:42 +0900 (Thu, 23 Mar 2017) | 3 lines io.c: [DOC] expand docs for IO#puts [ruby-core:80081] [Bug #13306] ------------------------------------------------------------------------ r58059 | nobu | 2017-03-22 23:06:57 +0900 (Wed, 22 Mar 2017) | 4 lines stringio.gemspec: requires ruby 2.2 * ext/stringio/stringio.gemspec: bump up required ruby version to 2.2, which exports rb_get_kwargs() first. ------------------------------------------------------------------------ r58057 | nobu | 2017-03-22 22:55:03 +0900 (Wed, 22 Mar 2017) | 4 lines stringio.c: RB_INTEGER_TYPE_P * ext/stringio/stringio.c (RB_INTEGER_TYPE_P): fallback definition for 2.3 or earlier. ------------------------------------------------------------------------ r58055 | kazu | 2017-03-22 21:27:53 +0900 (Wed, 22 Mar 2017) | 1 line Use https URL instead of http URL ------------------------------------------------------------------------ r58054 | shyouhei | 2017-03-22 15:00:18 +0900 (Wed, 22 Mar 2017) | 11 lines ruby tool/update-deps --fix Onigumo 6 (r57045) introduced new onigumo.h header file, which is required from quite much everywhere. This commit adds necessary dependencies. Note: ruby/oniguruma.h now includes onigumo.h, ruby/io.h includes oniguruma.h, ruby/encoding.h also includes oniguruma.h, and internal.h includes encoding.h. ------------------------------------------------------------------------ r58050 | svn | 2017-03-22 10:58:17 +0900 (Wed, 22 Mar 2017) | 1 line * 2017-03-22 ------------------------------------------------------------------------ r58049 | nobu | 2017-03-22 10:58:17 +0900 (Wed, 22 Mar 2017) | 1 line gemify stringio ------------------------------------------------------------------------ r58044 | nobu | 2017-03-21 17:03:49 +0900 (Tue, 21 Mar 2017) | 1 line Download Unicode data by appveyor [ci skip] ------------------------------------------------------------------------ r58043 | nobu | 2017-03-21 16:19:23 +0900 (Tue, 21 Mar 2017) | 1 line tool/downloader.rb: dryrun option [ci skip] ------------------------------------------------------------------------ r58042 | nobu | 2017-03-21 14:28:38 +0900 (Tue, 21 Mar 2017) | 6 lines string.c: use the usable size * string.c (rb_str_change_terminator_length): when called after the content has been copied, old terminator length no longer makes sense. use the whole usable size instead of capacity without terminator. [ruby-core:80257] [Bug #13339] ------------------------------------------------------------------------ r58041 | nobu | 2017-03-21 12:15:57 +0900 (Tue, 21 Mar 2017) | 4 lines stringio.c: check range * ext/stringio/stringio.c (strio_ungetc): raise RangeError instead of TypeError at too big value, as well as IO#ungetc. ------------------------------------------------------------------------ r58040 | nobu | 2017-03-21 12:15:56 +0900 (Tue, 21 Mar 2017) | 5 lines stringio.c: check character code * ext/stringio/stringio.c (strio_ungetc): check if the character code is valid in the encoding. reported by Ahmad Sherif (ahmadsherif) at https://hackerone.com/reports/209593. ------------------------------------------------------------------------ r58039 | kazu | 2017-03-21 09:11:46 +0900 (Tue, 21 Mar 2017) | 4 lines link to README.win32 instead of mentioning it in plain text [Fix GH-1538][ci skip] Author: Rouan Wilsenach <Rouan.Wilsenach@tesglobal.com> ------------------------------------------------------------------------ r58038 | svn | 2017-03-21 05:30:26 +0900 (Tue, 21 Mar 2017) | 1 line * 2017-03-21 ------------------------------------------------------------------------ r58037 | stomar | 2017-03-21 05:30:25 +0900 (Tue, 21 Mar 2017) | 4 lines docs for creating arrays * array.c: [DOC] add example for Array.new with block and index. Reported by Don Cruickshank. [ruby-core:68442] [Bug #10944] ------------------------------------------------------------------------ r58035 | hsbt | 2017-03-20 16:07:49 +0900 (Mon, 20 Mar 2017) | 3 lines Added initial gemspec for mathn. [Feature #13335] ------------------------------------------------------------------------ r58034 | nobu | 2017-03-20 10:36:08 +0900 (Mon, 20 Mar 2017) | 3 lines Avoid integer overflow in sprintf() merged https://github.com/mruby/mruby/commit/ff03a9a61c62340cff62f8e0fdc1a1e8775b6f17 ------------------------------------------------------------------------ r58033 | nobu | 2017-03-20 10:33:08 +0900 (Mon, 20 Mar 2017) | 4 lines sprintf.c: string limits * sprintf.c (ruby__sfvwrite): use long instead of size_t due to string limits. ------------------------------------------------------------------------ r58024 | svn | 2017-03-20 00:01:06 +0900 (Mon, 20 Mar 2017) | 1 line * 2017-03-20 ------------------------------------------------------------------------ r58023 | stomar | 2017-03-20 00:01:05 +0900 (Mon, 20 Mar 2017) | 7 lines improve docs for URI::Generic * lib/uri/generic.rb: [DOC] expand docs for URI::Generic#normalize to clarify what normalization means here. Reported by Robert Gleeson. [ruby-core:58430] [Bug #9127] * lib/uri/generic.rb: [DOC] fix indent for correct code block detection. ------------------------------------------------------------------------ r58021 | nobu | 2017-03-19 21:46:31 +0900 (Sun, 19 Mar 2017) | 4 lines sprintf.c: use FILL * sprintf.c (rb_str_format): use FILL and FILL_ macros instead of while loop. ------------------------------------------------------------------------ r58020 | stomar | 2017-03-19 18:51:29 +0900 (Sun, 19 Mar 2017) | 7 lines date_core.c: fix error in DateTime docs * ext/date/date_core.c: [DOC] fix format string for DateTime#rfc3339. Reported by Andreas Rayo Kniep. [ruby-core:68418] [Bug #10936] * ext/date/date_core.c: [DOC] ditto for DateTime#iso8601 and DateTime#xmlschema; other small improvements. ------------------------------------------------------------------------ r58019 | nobu | 2017-03-19 10:11:12 +0900 (Sun, 19 Mar 2017) | 9 lines vm_args.c: arity check of lambda * vm_eval.c (rb_yield_lambda): new function which yields an array to a proc and splat to a lambda. mainly for Enumerable only. * vm_args.c (setup_parameters_complex): remove special lambda splatting for [Bug #9605]. [ruby-core:77065] [Bug #12705] * vm_insnhelper.c (vm_callee_setup_block_arg): ditto. ------------------------------------------------------------------------ r58018 | nobu | 2017-03-19 00:58:13 +0900 (Sun, 19 Mar 2017) | 1 line test_lambda.rb: remove duplcate tests ------------------------------------------------------------------------ r58017 | svn | 2017-03-19 00:30:15 +0900 (Sun, 19 Mar 2017) | 1 line * 2017-03-19 ------------------------------------------------------------------------ r58016 | nobu | 2017-03-19 00:30:14 +0900 (Sun, 19 Mar 2017) | 5 lines test_lambda.rb: refine test * test/ruby/test_lambda.rb (test_lambda_as_iterator): refine a test for the intention of the original report. [ruby-core:61340] [Bug #9605] ------------------------------------------------------------------------ r58015 | nobu | 2017-03-18 23:22:15 +0900 (Sat, 18 Mar 2017) | 4 lines vm_args.c: pass block * vm_args.c (refine_sym_proc_call): pass block to the method when using refinements. [ruby-core:80219] [Bug #13325] ------------------------------------------------------------------------ r58014 | nobu | 2017-03-18 22:15:15 +0900 (Sat, 18 Mar 2017) | 3 lines vm.c: fix up r58012 * vm.c (invoke_iseq_block_from_c): fix stack region length. ------------------------------------------------------------------------ r58012 | nobu | 2017-03-18 20:29:35 +0900 (Sat, 18 Mar 2017) | 4 lines vm.c: guard arguments [EXPERIMENTAL] * vm.c (invoke_iseq_block_from_c): guard arguments on stack, not to be clobbered during splatting. ------------------------------------------------------------------------ r58011 | nobu | 2017-03-18 19:37:53 +0900 (Sat, 18 Mar 2017) | 4 lines .gdbinit: suppress gdb message [ci skip] * .gdbinit (rp): check number of instance variables to get rid of "Invalid number 0 of repetitions." message at an empty object. ------------------------------------------------------------------------ r58010 | nobu | 2017-03-18 19:19:52 +0900 (Sat, 18 Mar 2017) | 4 lines .gdbinit: RArray in history [ci skip] * .gdbinit (rp): put the contents of RArray in value history, for later use. ------------------------------------------------------------------------ r58009 | duerst | 2017-03-18 10:35:03 +0900 (Sat, 18 Mar 2017) | 1 line fix accidental reversal of r57997 in r58000 ------------------------------------------------------------------------ r58008 | stomar | 2017-03-18 05:48:51 +0900 (Sat, 18 Mar 2017) | 10 lines io.c: improve docs * io.c: [DOC] improve and harmonize docs for IO#read and ARGF#read; fix invalid example code for IO#read to make it syntax highlighted. * io.c: [DOC] various improvements for docs of IO, ARGF, and Kernel: fix indent to ensure correct code block detection; sync "outbuf" paragraph for {IO,ARGF}#read, {IO,ARGF}#readpartial, and IO#sysread; fix formatting of call-seq's; improve Kernel#open example to use nil?; fix RDoc markup and typos. ------------------------------------------------------------------------ r58007 | svn | 2017-03-18 04:59:57 +0900 (Sat, 18 Mar 2017) | 1 line * 2017-03-18 ------------------------------------------------------------------------ r58006 | normal | 2017-03-18 04:59:56 +0900 (Sat, 18 Mar 2017) | 14 lines remove branches in dmark and dfree GC callbacks dmark and dfree callbacks are never called in gc.c for NULL DATA_PTR values, not even for zombie objects. * compile.c (ibf_loader_mark): remove branch for pointer validity * compile.c (ibf_loader_free): ditto * cont.c (cont_free): ditto * cont.c (fiber_free): ditto * dir.c (dir_free): ditto * ext/stringio/stringio.c (strio_mark): ditto * proc.c (binding_free): ditto * thread_sync.c (mutex_free): ditto * vm.c (thread_free): ditto ------------------------------------------------------------------------ r58005 | kazu | 2017-03-17 22:24:14 +0900 (Fri, 17 Mar 2017) | 1 line fix a typo [ci skip] ------------------------------------------------------------------------ r58004 | nobu | 2017-03-17 19:08:02 +0900 (Fri, 17 Mar 2017) | 4 lines vm.c: check stack * vm.c (invoke_iseq_block_from_c): check stack overflow before pushing arguments. ------------------------------------------------------------------------ r58000 | duerst | 2017-03-17 11:24:53 +0900 (Fri, 17 Mar 2017) | 6 lines clarifiy 'codepoint' in documentation of String#each_codepoint Make sure it's clear that the returned values are not Unicode codepoints for encodings other than UTF-8/UTF-16(BE|LE)/UTF-32(BE|LE). [ci skip] [Bug #13321] ------------------------------------------------------------------------ r57999 | svn | 2017-03-17 10:29:24 +0900 (Fri, 17 Mar 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r57998 | hsbt | 2017-03-17 10:29:22 +0900 (Fri, 17 Mar 2017) | 7 lines Merge rubygems-2.6.11 This version fixed regression of rubygems-2.6.10. https://github.com/rubygems/rubygems/pull/1856 See details of changelogs for 2.6.11 release: https://github.com/rubygems/rubygems/blob/adfcf40502716080bd9cdfdd2e43bd4296872784/History.txt#L3 ------------------------------------------------------------------------ r57997 | normal | 2017-03-17 09:55:55 +0900 (Fri, 17 Mar 2017) | 8 lines deduplicate static rb_str_format format strings Anybody who hits these code paths can hit them again in the future, so try deduplicating across multiple runs of these methods to reduce garbage. * string.c (str_upto_each): fstring on "%.*d" * strftime.c (rb_strftime_with_timespec): fstring on "%0*d" ------------------------------------------------------------------------ r57996 | normal | 2017-03-17 09:55:50 +0900 (Fri, 17 Mar 2017) | 6 lines deduplicate File::NULL string "/dev/null" is a common sight for pre-1.9.3-compatible code targeting *nix systems, so deduplicate it here, as well. * file.c (Init_File): use fstring for File::NULL ------------------------------------------------------------------------ r57995 | normal | 2017-03-17 09:55:45 +0900 (Fri, 17 Mar 2017) | 7 lines deduplicate "/", ":" and "\n" strings "/" and ":" are always statically registered in symbol.c (Init_op_tbl), and "\n" is a commonly seen in source code. * file.c (Init_File): fstring on File::SEPARATOR and File::PATH_SEPARATOR * io.c (Init_IO): fstring on rb_default_rs ("\n") ------------------------------------------------------------------------ r57994 | normal | 2017-03-17 08:17:14 +0900 (Fri, 17 Mar 2017) | 5 lines NEWS: document shorter opt_str_freeze usage Users do not read commit messages, but maybe they read NEWS. r57828 ("compile.c: apply opt_str_freeze to String#-@ (uminus)") ------------------------------------------------------------------------ r57993 | svn | 2017-03-17 05:58:59 +0900 (Fri, 17 Mar 2017) | 1 line * 2017-03-17 ------------------------------------------------------------------------ r57992 | stomar | 2017-03-17 05:58:58 +0900 (Fri, 17 Mar 2017) | 1 line bignum.c: [DOC] typos and grammar ------------------------------------------------------------------------ r57991 | nobu | 2017-03-16 15:51:24 +0900 (Thu, 16 Mar 2017) | 4 lines rational.c: initialize n * rational.c (read_num): `n` was used uninitialized when the string started with a period. ------------------------------------------------------------------------ r57990 | nobu | 2017-03-16 12:35:29 +0900 (Thu, 16 Mar 2017) | 4 lines rational.c: float denom * rational.c (parse_rat): allow float as a denominator as well as a numerator. [ruby-core:79104] [Bug #13134] ------------------------------------------------------------------------ r57989 | nobu | 2017-03-16 12:32:16 +0900 (Thu, 16 Mar 2017) | 5 lines rational.c: read_num * rational.c (read_num): use rb_int_parse_cstr to parse integer parts, and make String#to_r consistent with #to_i and #to_f. [ruby-core:80098] [Bug #13105] ------------------------------------------------------------------------ r57988 | nobu | 2017-03-16 12:21:12 +0900 (Thu, 16 Mar 2017) | 4 lines bignum.c: rb_int_parse_cstr * bignum.c (rb_int_parse_cstr): extend rb_cstr_parse_inum with flags. ------------------------------------------------------------------------ r57987 | nobu | 2017-03-16 12:05:34 +0900 (Thu, 16 Mar 2017) | 4 lines test_rational.rb: invalid exponent * test/ruby/test_rational.rb (test_parse): more checks for invalid exponent. [ruby-core:80098] [Bug #13105] ------------------------------------------------------------------------ r57986 | nobu | 2017-03-16 11:02:47 +0900 (Thu, 16 Mar 2017) | 4 lines test_rational.rb: duplicate assertions * test/ruby/test_rational.rb (test_parse): remove duplicate assertions. ------------------------------------------------------------------------ r57985 | nobu | 2017-03-16 10:53:52 +0900 (Thu, 16 Mar 2017) | 4 lines rational.c: zero division * rational.c (read_rat_nos): denominator cannot be 0, raise zero division in that case. ------------------------------------------------------------------------ r57984 | svn | 2017-03-16 09:43:08 +0900 (Thu, 16 Mar 2017) | 1 line * 2017-03-16 ------------------------------------------------------------------------ r57983 | nobu | 2017-03-16 09:43:07 +0900 (Thu, 16 Mar 2017) | 4 lines test_rational.rb: shorten * test/ruby/test_rational.rb (test_parse): reduce repeated arguments. ------------------------------------------------------------------------ r57982 | nobu | 2017-03-15 21:41:56 +0900 (Wed, 15 Mar 2017) | 1 line vm_insnhelper.c: adjust indent [ci skip] ------------------------------------------------------------------------ r57981 | svn | 2017-03-15 17:25:59 +0900 (Wed, 15 Mar 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r57980 | ko1 | 2017-03-15 17:25:58 +0900 (Wed, 15 Mar 2017) | 19 lines add several counters to analyze ivar inline caches. * debug_counter.h: add (and renamed) several counters: ivar_get_ic_hit ivar_get_ic_miss ivar_get_ic_miss_serial ivar_get_ic_miss_unset ivar_get_ic_miss_noobject ivar_set_ic_hit ivar_set_ic_miss ivar_set_ic_miss_serial ivar_set_ic_miss_unset ivar_set_ic_miss_oorange ivar_set_ic_miss_noobject ivar_get_base ivar_set_base See related source code to know what counters mean. ------------------------------------------------------------------------ r57979 | nobu | 2017-03-15 17:15:32 +0900 (Wed, 15 Mar 2017) | 7 lines object.c: make String#to_f consistent with literal * object.c (rb_cstr_to_dbl): stop at successive underscores, as well as Float literals. [ruby-core:80098] [Bug #13105] * `_` should be within digits * only one `_` allowed between digits ------------------------------------------------------------------------ r57978 | nobu | 2017-03-15 16:57:11 +0900 (Wed, 15 Mar 2017) | 6 lines string.c: shortcut argument check * string.c (str_casecmp, str_casecmp_p): split to skip argument check when it is a String certainly. * string.c (sym_casecmp, sym_casecmp_p): shortcut argument checks. ------------------------------------------------------------------------ r57977 | kazu | 2017-03-15 09:59:32 +0900 (Wed, 15 Mar 2017) | 1 line io.c: [DOC] add missing `$` ------------------------------------------------------------------------ r57976 | marcandre | 2017-03-15 05:09:30 +0900 (Wed, 15 Mar 2017) | 2 lines * lib/matrix.rb: Add Vector.zero and Vector#zero? Patch by Chia-sheng Chen [#13208] ------------------------------------------------------------------------ r57975 | svn | 2017-03-15 00:14:22 +0900 (Wed, 15 Mar 2017) | 1 line * 2017-03-15 ------------------------------------------------------------------------ r57974 | mame | 2017-03-15 00:14:21 +0900 (Wed, 15 Mar 2017) | 4 lines Stop a global server of Rinda test This server seemed to cause "leaked file descriptor" warnings. Moved it into the setup/teardown framework. ------------------------------------------------------------------------ r57973 | kazu | 2017-03-14 23:46:10 +0900 (Tue, 14 Mar 2017) | 1 line vm_insnhelper.c: undef BUILTIN_CLASS_P too ------------------------------------------------------------------------ r57972 | glass | 2017-03-14 21:53:32 +0900 (Tue, 14 Mar 2017) | 5 lines Fix bug of Tempfile#size if nothing is written [Bug #13198] * lib/tempfile.rb (Tempfile#size): Fix its behavior when nothing is written. Tempfile#size should return 0 in this case. The patch is from nobu <nobu@ruby-lang.org>. ------------------------------------------------------------------------ r57971 | mame | 2017-03-14 20:39:58 +0900 (Tue, 14 Mar 2017) | 6 lines Fix a consistency bug of ISEQ_COVERAGE [Bug #13305] There is an invariant that ISEQ_COVERAGE(iseq) must be Qnil if and only if option->coverage_enabled is false. This invariant was broken by NODE_PRELUDE which updates option->coverage_enabled but not ISEQ_COVERAGE(iseq). ------------------------------------------------------------------------ r57970 | ko1 | 2017-03-14 15:52:44 +0900 (Tue, 14 Mar 2017) | 6 lines Fiber also has same issue. [Bug #13313] * thread.c (rb_vm_proc_local_ep): added. * cont.c (rb_fiber_start): use rb_vm_proc_local_ep(). ------------------------------------------------------------------------ r57969 | nobu | 2017-03-14 14:54:35 +0900 (Tue, 14 Mar 2017) | 5 lines thread.c: Thread.start with Symbol * thread.c (thread_do_start): fix segfault at start with Symbol. proc created by Symbol#to_proc does not have environment unless using refinements. [ruby-core:80147] [Bug #13313] ------------------------------------------------------------------------ r57968 | nobu | 2017-03-14 14:54:33 +0900 (Tue, 14 Mar 2017) | 4 lines thread.c: thread_do_start * thread.c (thread_do_start): extract from a macro in thread_start_func_2 for debugger. ------------------------------------------------------------------------ r57967 | nobu | 2017-03-14 13:16:02 +0900 (Tue, 14 Mar 2017) | 4 lines envutil.rb: basename for diagnostic_reports * test/lib/envutil.rb (EnvUtil.diagnostic_reports): diagnostic report file uses base name only. [ci skip] ------------------------------------------------------------------------ r57966 | nobu | 2017-03-14 13:03:48 +0900 (Tue, 14 Mar 2017) | 5 lines vm_core.h: assertions for Proc * vm_core.h (vm_proc_block): assert before accessing. * vm_core.h (vm_proc_iseq): remove duplicate assertion. ------------------------------------------------------------------------ r57965 | nobu | 2017-03-14 12:42:43 +0900 (Tue, 14 Mar 2017) | 4 lines string.c: use rb_check_string_type * string.c (rb_str_cmp_m): use rb_check_string_type for check and conversion, instead of calling the conversion method directly. ------------------------------------------------------------------------ r57964 | svn | 2017-03-14 05:20:40 +0900 (Tue, 14 Mar 2017) | 1 line * 2017-03-14 ------------------------------------------------------------------------ r57963 | stomar | 2017-03-14 05:20:40 +0900 (Tue, 14 Mar 2017) | 5 lines docs for Symbol#casecmp and Symbol#casecmp? * string.c: [DOC] improve docs of Symbol#casecmp and Symbol#casecmp? according to the similar String methods; fix RDoc markup and typos; fix call-seq's for Symbol#{upcase,downcase,capitalize,swapcase}. ------------------------------------------------------------------------ r57962 | nobu | 2017-03-13 23:59:08 +0900 (Mon, 13 Mar 2017) | 4 lines sprintf.c: fix out-of-bound access * sprintf.c (rb_str_format): get rid of out-of-bound access when single % at the end. ------------------------------------------------------------------------ r57961 | nobu | 2017-03-13 20:47:45 +0900 (Mon, 13 Mar 2017) | 1 line string.c (rb_str_set_len): pathological check ------------------------------------------------------------------------ r57960 | nobu | 2017-03-13 18:29:19 +0900 (Mon, 13 Mar 2017) | 4 lines file.c: join with / * file.c (rb_file_join): join using "/" always, not a constant. and fix the document. [ruby-core:79579] [Bug #13223] ------------------------------------------------------------------------ r57958 | nobu | 2017-03-13 18:12:05 +0900 (Mon, 13 Mar 2017) | 4 lines string.c: $; is a GC-root * string.c (Init_String): $; must be a GC-root, not to be collected. [ruby-core:79582] ------------------------------------------------------------------------ r57956 | naruse | 2017-03-13 18:05:35 +0900 (Mon, 13 Mar 2017) | 4 lines Raise error if spec is nil With parallel test-all, the spec is sometimes nil. To debug it raise more detailed error. ------------------------------------------------------------------------ r57955 | nobu | 2017-03-13 17:38:12 +0900 (Mon, 13 Mar 2017) | 5 lines parse.y: relax `&' warning * parse.y (parser_yylex): disable "`&' interpreted as argument prefix" warning when just followed by a symbol literal. [ruby-core:79926] [Misc #13283] ------------------------------------------------------------------------ r57951 | mrkn | 2017-03-13 15:03:18 +0900 (Mon, 13 Mar 2017) | 7 lines bigdecimal: version 1.3.2 Import bigdecimal version 1.3.2. The full commit log is here: https://github.com/ruby/bigdecimal/compare/v1.3.1...v1.3.2 This fixes [ruby-core:79603] [Bug #13232] ------------------------------------------------------------------------ r57950 | nobu | 2017-03-13 14:30:44 +0900 (Mon, 13 Mar 2017) | 4 lines thread.c: rb_thread_fd_close [ci skip] * thread.c (rb_thread_fd_close): remove deprecated. a couple of external libraries used it. [ruby-core:80078] [Bug #13304] ------------------------------------------------------------------------ r57949 | nobu | 2017-03-13 12:30:11 +0900 (Mon, 13 Mar 2017) | 1 line thread.c: rb_thread_fd_close no longer returns ------------------------------------------------------------------------ r57948 | nobu | 2017-03-13 11:14:15 +0900 (Mon, 13 Mar 2017) | 4 lines thread.c: rb_thread_fd_close [ci skip] * thread.c (rb_thread_fd_close): re-define only for abi-check, abort if called. [ruby-core:80078] [Bug #13304] ------------------------------------------------------------------------ r57947 | nobu | 2017-03-13 09:11:25 +0900 (Mon, 13 Mar 2017) | 3 lines compile.c: compile flip-flop * compile.c (iseq_compile_each0): compile flip-flop directly. ------------------------------------------------------------------------ r57946 | nobu | 2017-03-13 09:11:24 +0900 (Mon, 13 Mar 2017) | 4 lines compile.c: omit newrange * compile.c (iseq_compile_each): omit creating literal-only range to be popped immediately. ------------------------------------------------------------------------ r57944 | naruse | 2017-03-13 03:40:07 +0900 (Mon, 13 Mar 2017) | 1 line io.c: [DOC] IO#puts uses IO#write ------------------------------------------------------------------------ r57943 | svn | 2017-03-13 03:31:39 +0900 (Mon, 13 Mar 2017) | 1 line * 2017-03-13 ------------------------------------------------------------------------ r57942 | naruse | 2017-03-13 03:31:38 +0900 (Mon, 13 Mar 2017) | 1 line Didn't work if backport field is empty ------------------------------------------------------------------------ r57908 | nobu | 2017-03-12 22:51:12 +0900 (Sun, 12 Mar 2017) | 4 lines compile.c: compile_const_prefix * compile.c (compile_const_prefix): rename, and check the result of parts of the prefix. ------------------------------------------------------------------------ r57892 | nobu | 2017-03-12 14:52:42 +0900 (Sun, 12 Mar 2017) | 4 lines compile.c: omit newhash * compile.c (iseq_compile_each): omit creating literal-only hash to be popped immediately. ------------------------------------------------------------------------ r57891 | nobu | 2017-03-12 14:48:58 +0900 (Sun, 12 Mar 2017) | 1 line compile.c: NODE_VALUES must not be popped ------------------------------------------------------------------------ r57890 | nobu | 2017-03-12 07:44:26 +0900 (Sun, 12 Mar 2017) | 4 lines compile.c: iseq_compile_each0 * compile.c (iseq_compile_each0): split from null node case to constify line and type. ------------------------------------------------------------------------ r57889 | nobu | 2017-03-12 07:37:50 +0900 (Sun, 12 Mar 2017) | 3 lines compile.c: compile_when * compile.c (compile_when): extract from iseq_compile_each. ------------------------------------------------------------------------ r57888 | nobu | 2017-03-12 07:25:32 +0900 (Sun, 12 Mar 2017) | 3 lines compile.c: compile_case * compile.c (compile_case): extract from iseq_compile_each. ------------------------------------------------------------------------ r57887 | stomar | 2017-03-12 06:32:46 +0900 (Sun, 12 Mar 2017) | 17 lines lib/ostruct.rb: [DOC] revise docs for OpenStruct * update paragraph on implementation: define_singleton_method is used, not define_method * add call-seq with return values for each_pair * adopt description of dig from Array and Hash * fix description of the hash method * :nodoc: initialize_copy, respond_to_missing? * other small improvements, e.g. use the term `attribute' in the docs (instead of `member'), which is clearer for users of the class * improve code examples: e.g. use more consistent style (always use double quotes, drop `p' and `puts', ...), update inspect output, use example data that is not prone to change (like population) * add more code examples * fix some small errors and grammar [ruby-core:79265] [Bug #13159] ------------------------------------------------------------------------ r57886 | stomar | 2017-03-12 05:01:55 +0900 (Sun, 12 Mar 2017) | 5 lines docs for String#casecmp and String#casecmp? * string.c: [DOC] specify when String#casecmp and String#casecmp? return nil; modify examples to better show difference to <=>; fix RDoc markup and typos. ------------------------------------------------------------------------ r57883 | naruse | 2017-03-12 04:03:11 +0900 (Sun, 12 Mar 2017) | 3 lines Generate log from svn log When there's multiple revisions, all svn logs should be used. ------------------------------------------------------------------------ r57852 | svn | 2017-03-12 01:08:55 +0900 (Sun, 12 Mar 2017) | 1 line * 2017-03-12 ------------------------------------------------------------------------ r57851 | naruse | 2017-03-12 01:08:54 +0900 (Sun, 12 Mar 2017) | 1 line suppress warning: shadowing outer local variable - dir & opt ------------------------------------------------------------------------ r57842 | nobu | 2017-03-11 22:24:08 +0900 (Sat, 11 Mar 2017) | 1 line defs/gmake.mk: update again after comit [ci skip] ------------------------------------------------------------------------ r57836 | nobu | 2017-03-11 21:26:00 +0900 (Sat, 11 Mar 2017) | 6 lines compile.c: constify flags * compile.c (compile_cpath): return `noscoped` bit flag, instead of boolean flag. * compile.c (iseq_compile_each): constify flags. ------------------------------------------------------------------------ r57835 | nobu | 2017-03-11 20:15:05 +0900 (Sat, 11 Mar 2017) | 1 line test/ruby/test_require.rb: use squiggly heredocs ------------------------------------------------------------------------ r57829 | svn | 2017-03-11 05:09:07 +0900 (Sat, 11 Mar 2017) | 1 line * 2017-03-11 ------------------------------------------------------------------------ r57828 | normal | 2017-03-11 05:09:06 +0900 (Sat, 11 Mar 2017) | 5 lines compile.c: apply opt_str_freeze to String#-@ (uminus) The same optimization used for "literal string".freeze can easily apply to uminus without introducing any compatibility problems. ------------------------------------------------------------------------ r57827 | nobu | 2017-03-10 22:46:22 +0900 (Fri, 10 Mar 2017) | 4 lines common.mk: ignore clean-rubyspec error [ci skip] * common.mk (clean-rubyspec): nothing to clean before running rubyspec. ------------------------------------------------------------------------ r57826 | nobu | 2017-03-10 16:18:03 +0900 (Fri, 10 Mar 2017) | 7 lines debug_counter.c: debug_counter_names [ci skip] * debug_counter.c (debug_counter_names): stringize debug counter names by preprocessor. * debug_counter.h (RB_DEBUG_COUNTER): define counter names outside the include guard, to expand multiple times. ------------------------------------------------------------------------ r57825 | nobu | 2017-03-10 14:34:27 +0900 (Fri, 10 Mar 2017) | 7 lines configure.in: RUBY_SO_NAME as --with-soname * configure.in (RUBY_SO_NAME): [EXPERIMENTAL] use the given name literally if --with-soname is specified. [ruby-core:79972] [Misc #13296] [ci skip] ------------------------------------------------------------------------ r57824 | svn | 2017-03-10 04:48:10 +0900 (Fri, 10 Mar 2017) | 1 line * 2017-03-10 ------------------------------------------------------------------------ r57823 | stomar | 2017-03-10 04:48:09 +0900 (Fri, 10 Mar 2017) | 1 line object.c: [DOC] simplify Object#tap example ------------------------------------------------------------------------ r57822 | nobu | 2017-03-09 15:44:57 +0900 (Thu, 09 Mar 2017) | 3 lines rbconfig/sizeof: remove VPATH * ext/rbconfig/sizeof/depend: remove VPATH for `make dist`. ------------------------------------------------------------------------ r57821 | normal | 2017-03-09 12:49:47 +0900 (Thu, 09 Mar 2017) | 4 lines ext/socket/raddrinfo.c (addrinfo_mark): avoid needless branch gc.c (gc_mark_children, case T_DATA) does not use the dmark function pointer if DATA_PTR is NULL ------------------------------------------------------------------------ r57820 | nobu | 2017-03-09 12:38:06 +0900 (Thu, 09 Mar 2017) | 3 lines goruby.c: FD leak [ci skip] * goruby.c (goruby_options): fix potential FD leak. ------------------------------------------------------------------------ r57819 | nobu | 2017-03-09 12:31:53 +0900 (Thu, 09 Mar 2017) | 4 lines rbconfig/sizeof: nmake VPATH * ext/rbconfig/sizeof/depend: prepend VPATH for out-of-place build using nmake. ------------------------------------------------------------------------ r57818 | shyouhei | 2017-03-09 11:31:23 +0900 (Thu, 09 Mar 2017) | 6 lines revert RB_FIXABLE related changesets [Bug #13288][Bug #13293][Bug #13294] This commit is auto-generated using following command: svn diff -r57807:57788 include internal.h bignum.c numeric.c compile.c insns.def object.c sprintf.c | patch -p0 ------------------------------------------------------------------------ r57817 | nobu | 2017-03-09 11:10:27 +0900 (Thu, 09 Mar 2017) | 4 lines fix UTF-32 valid_encoding? * test/ruby/test_io_m17n.rb (TestIO_M17N#test_puts_widechar): do not use invalid codepoint. [ruby-core:79966] [Bug #13292] ------------------------------------------------------------------------ r57816 | nobu | 2017-03-09 11:04:10 +0900 (Thu, 09 Mar 2017) | 9 lines fix UTF-32 valid_encoding? * enc/utf_32be.c (utf32be_mbc_enc_len): check arguments precisely. [ruby-core:79966] [Bug #13292] * enc/utf_32le.c (utf32le_mbc_enc_len): ditto. * regenc.h (UNICODE_VALID_CODEPOINT_P): predicate for valid Unicode codepoints. ------------------------------------------------------------------------ r57815 | nobu | 2017-03-09 10:55:43 +0900 (Thu, 09 Mar 2017) | 7 lines test_utf16.rb: refine valid_encoding tests * test/ruby/enc/test_utf16.rb (test_utf16be_valid_encoding): assert all data and use assert_predicate. * test/ruby/enc/test_utf16.rb (test_utf16le_valid_encoding): ditto. ------------------------------------------------------------------------ r57814 | nobu | 2017-03-09 10:06:09 +0900 (Thu, 09 Mar 2017) | 1 line make commit [ci skip] ------------------------------------------------------------------------ r57813 | normal | 2017-03-09 06:24:24 +0900 (Thu, 09 Mar 2017) | 3 lines string.c (str_uminus): update doc for deduplication As of r57698, String#-@ can return pre-existing strings. ------------------------------------------------------------------------ r57812 | svn | 2017-03-09 05:41:39 +0900 (Thu, 09 Mar 2017) | 1 line * 2017-03-09 ------------------------------------------------------------------------ r57811 | stomar | 2017-03-09 05:41:38 +0900 (Thu, 09 Mar 2017) | 9 lines docs for FileUtils.ln methods * lib/fileutils.rb: [DOC] add clarifying call-seq's for FileUtil.ln, ln_s, and ln_sf, with better argument names for the created link and link target. Reported by Mike Vastola. [ruby-core:62532] [Bug #9829] * lib/fileutils.rb: [DOC] further improve descriptions of FileUtils.ln and related methods; improve examples: relative links probably won't work in other dir, avoid `include', use more generic homedir name. ------------------------------------------------------------------------ r57810 | nobu | 2017-03-08 22:52:32 +0900 (Wed, 08 Mar 2017) | 1 line great love ------------------------------------------------------------------------ r57809 | nobu | 2017-03-08 17:19:56 +0900 (Wed, 08 Mar 2017) | 3 lines fix paren * string.c (str_byte_substr): fix misplaced parenthesis at r56155. ------------------------------------------------------------------------ r57808 | nobu | 2017-03-08 16:34:13 +0900 (Wed, 08 Mar 2017) | 1 line proc.c: preserve class name encoding in Proc#to_s ------------------------------------------------------------------------ r57807 | shyouhei | 2017-03-08 13:50:22 +0900 (Wed, 08 Mar 2017) | 10 lines re-introduce __builtin_add_overflow r57789 (74cdd89) was gradually "improve"d by naruse through r57793 to r57806, resulted in reverting the efect of r57789 while retaining its complexity. I think the current situation is slightly worse than before (same output complicated source code). Here I introduce __builtin_add_overflow again, which (I think) is what naruse wanted to do in r57793. ------------------------------------------------------------------------ r57806 | naruse | 2017-03-08 04:48:00 +0900 (Wed, 08 Mar 2017) | 1 line Always use old RB_FIXABLE to allow double as argument ------------------------------------------------------------------------ r57805 | naruse | 2017-03-08 02:51:35 +0900 (Wed, 08 Mar 2017) | 3 lines Revert r57803 "Avoid to cast the argument" __builtin_add_overflow doesn't support double. ------------------------------------------------------------------------ r57804 | svn | 2017-03-08 02:46:55 +0900 (Wed, 08 Mar 2017) | 1 line * 2017-03-08 ------------------------------------------------------------------------ r57803 | naruse | 2017-03-08 02:46:54 +0900 (Wed, 08 Mar 2017) | 3 lines Avoid to cast the argument For 32bit environment and __int128 use cases. ------------------------------------------------------------------------ r57802 | kazu | 2017-03-07 22:04:39 +0900 (Tue, 07 Mar 2017) | 4 lines string.c: [DOC] Fix a typo in String#dump [Fix GH-1531][ci skip] Author: Alex Semyonov <alex@semyonov.us> ------------------------------------------------------------------------ r57801 | nobu | 2017-03-07 19:56:22 +0900 (Tue, 07 Mar 2017) | 5 lines parse.y: remove trace * parse.y (reg_named_capture_assign_iter): do not insert trace instructions before local variable assinments. putobject is expected at first. [ruby-core:79940] [Bug #13287] ------------------------------------------------------------------------ r57800 | nobu | 2017-03-07 18:13:41 +0900 (Tue, 07 Mar 2017) | 4 lines string.c: negation of LONG_MIN * string.c (rb_str_update): do not use negation of LONG_MIN, which is negative too. ------------------------------------------------------------------------ r57799 | nobu | 2017-03-07 18:07:57 +0900 (Tue, 07 Mar 2017) | 6 lines string.c: fix integer overflow * string.c (str_byte_substr): fix another integer overflow which can happen only when SHARABLE_MIDDLE_SUBSTRING is enabled. [ruby-core:79951] [Bug #13289] ------------------------------------------------------------------------ r57798 | naruse | 2017-03-07 15:33:49 +0900 (Tue, 07 Mar 2017) | 1 line Use RB_POSFIXABLE and RB_NEGFIXABLE to avoid cast introduced at r57793 ------------------------------------------------------------------------ r57797 | nobu | 2017-03-07 14:48:15 +0900 (Tue, 07 Mar 2017) | 5 lines string.c: fix integer overflow * string.c (rb_str_subpos): fix integer overflow which can happen only when SHARABLE_MIDDLE_SUBSTRING is enabled. incorpolate https://github.com/mruby/mruby/commit/7db0786abdd243ba031e24683f ------------------------------------------------------------------------ r57796 | naruse | 2017-03-07 14:19:00 +0900 (Tue, 07 Mar 2017) | 1 line suppress warning: shadowing outer local variable - e ------------------------------------------------------------------------ r57795 | naruse | 2017-03-07 14:11:02 +0900 (Tue, 07 Mar 2017) | 1 line Supress warning: instance variable @repeat_count not initialized ------------------------------------------------------------------------ r57794 | hsbt | 2017-03-07 13:46:46 +0900 (Tue, 07 Mar 2017) | 1 line Fix up r57788, Function is removed at readline-6.3. ------------------------------------------------------------------------ r57793 | naruse | 2017-03-07 12:35:47 +0900 (Tue, 07 Mar 2017) | 13 lines Use ADD instead of MUL * On recent CPUs, 2-operand MUL's latency is 3 cycle but ADD is 1 cycle. * clang Optimizes `MUL rax,2` into `ADD rax,rax` but gcc7 doesn't. * LONG2FIX is compiled into `lea r14,[r15+r15*1+0x1]`; this is 1cycle and run in parallel if the branch prediction is correct. * Note that old (RB_POSFIXABLE(f) && RB_NEGFIXABLE(f)) is usually uses following instructions. * movabs rax,0x4000000000000000 * add rax,rdi * js It needs large immediate and Macro-Fusion is not applied. ADD and JO is much smaller though it is also Macro-Fusion unfriendly. ------------------------------------------------------------------------ r57792 | nobu | 2017-03-07 10:07:03 +0900 (Tue, 07 Mar 2017) | 7 lines fix macro name * tool/instruction.rb (VmBodyGenerator#make_header_prepare_stack): REG_CFP has been prefixed with VM_ at r56609. [Bug #12527] * tool/instruction.rb (VmBodyGenerator#make_footer_stack_val): ditto. ------------------------------------------------------------------------ r57791 | svn | 2017-03-07 04:42:37 +0900 (Tue, 07 Mar 2017) | 1 line * 2017-03-07 ------------------------------------------------------------------------ r57790 | stomar | 2017-03-07 04:42:36 +0900 (Tue, 07 Mar 2017) | 1 line io.c: [DOC] open mode can be an integer; fix rdoc syntax ------------------------------------------------------------------------ r57789 | shyouhei | 2017-03-06 20:14:05 +0900 (Mon, 06 Mar 2017) | 9 lines optimize FIXABLE macro Looking at the source code, FIXABLE tends to be just before LOING2FIX to check applicability of that operation. Why not try computing first then check for overflow, which should be optimial. I also tried the same thing for unsigned types but resulted in slower execution. It seems RB_POSFIXABLE() is fast enough on modern CPUs. ------------------------------------------------------------------------ r57788 | hsbt | 2017-03-06 18:10:21 +0900 (Mon, 06 Mar 2017) | 1 line Avoid to warning of clang with -Wincompatible-pointer-types. ------------------------------------------------------------------------ r57787 | nobu | 2017-03-06 17:10:20 +0900 (Mon, 06 Mar 2017) | 4 lines readline.c: fix waiting fucntion * ext/readline/readline.c (getc_body): use rb_w32_wait_events_blocking in block region. ------------------------------------------------------------------------ r57786 | shyouhei | 2017-03-06 16:25:18 +0900 (Mon, 06 Mar 2017) | 6 lines LONG_LONG_MAX not always available I was not aware of cases when LONG_LONG_MAX is undefined. Sorry. Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org> ------------------------------------------------------------------------ r57785 | nobu | 2017-03-06 15:44:11 +0900 (Mon, 06 Mar 2017) | 7 lines opt_eq_func refactor * vm_insnhelper.c (opt_eq_func): method to dispatch is resolved by only the receiver's class, not including the argument class. even if basic operation is redefined, other class conditions never meet. optimize Float and non-Float case, delegate to rb_float_equal directly. ------------------------------------------------------------------------ r57784 | shyouhei | 2017-03-06 15:04:52 +0900 (Mon, 06 Mar 2017) | 16 lines use HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW We already check for __builtin_mul_overflow in configure but never actually referred it before. Why not call it if available, because that should render supposedly-optimial assembly outputs. Optionally if __builtin_mul_overflow_p is available, which is the case for recent GCC, use that to detect fixnum overflow. This is much faster than the previous. On my machine generated assembly of numeric.c:int_pow reduces from 480 to 448 bytes, according to nm(1). Also on my machine, following script boosts from 7.819 to 6.929 sec. time ./miniruby -e 'i=0; while i < 30_000_000 do i += 1; 7 ** 23; end' Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org> ------------------------------------------------------------------------ r57783 | nobu | 2017-03-06 08:36:44 +0900 (Mon, 06 Mar 2017) | 5 lines compile.c: variable type * compile.c (iseq_compile_each): fix variable type, use VALUE for Symbol. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=57772&view=revision ------------------------------------------------------------------------ r57782 | svn | 2017-03-06 04:43:11 +0900 (Mon, 06 Mar 2017) | 1 line * 2017-03-06 ------------------------------------------------------------------------ r57781 | stomar | 2017-03-06 04:43:10 +0900 (Mon, 06 Mar 2017) | 9 lines docs for IO.{write,read} * io.c: [DOC] improve docs for IO * IO.{write,read}: fix errors (:open_args is not an array of strings, it might include a perm or options hash argument; IO.write has no length argument, drop corresponding statement), improve formatting, call-seq, grammar. * IO#sync=: remove unnecessary "produces no output". * other improvements. ------------------------------------------------------------------------ r57780 | stomar | 2017-03-05 21:36:09 +0900 (Sun, 05 Mar 2017) | 5 lines docs for IO#print * io.c: [DOC] split documentation for IO#print into smaller paragraphs, delete duplicate sentence, fix call-seq. Based on a patch by Dario Daic. [ruby-core:78291] [Bug #12975] ------------------------------------------------------------------------ r57779 | nobu | 2017-03-05 10:46:20 +0900 (Sun, 05 Mar 2017) | 4 lines math.c: more accuracy * math.c (math_log10): calculate log10(2) for more accuracy. [ruby-core:79907] [Bug #13279] ------------------------------------------------------------------------ r57778 | stomar | 2017-03-05 05:08:04 +0900 (Sun, 05 Mar 2017) | 1 line string.c: [DOC] fix doc formatting for String#==, #=== ------------------------------------------------------------------------ r57777 | stomar | 2017-03-05 05:02:48 +0900 (Sun, 05 Mar 2017) | 4 lines rdoc for String class * lib/unicode_normalize.rb: [DOC] prevent a comment from showing up in the class documentation for String. ------------------------------------------------------------------------ r57776 | svn | 2017-03-05 04:52:31 +0900 (Sun, 05 Mar 2017) | 1 line * 2017-03-05 ------------------------------------------------------------------------ r57775 | stomar | 2017-03-05 04:52:30 +0900 (Sun, 05 Mar 2017) | 5 lines nodoc OptParse * lib/optparse.rb: [DOC] nodoc OptParse, introduced with r46126, to avoid leaking of its documentation (OptionParser's docs) into the class documentation of Object. [ruby-core:79909] [Bug #13281] ------------------------------------------------------------------------ r57774 | nobu | 2017-03-04 23:44:05 +0900 (Sat, 04 Mar 2017) | 4 lines compile.c: operand size check * compile.c (ibf_load_code): raise an exception on invalid operand size. should not use assert() to validate incoming data. ------------------------------------------------------------------------ r57773 | nobu | 2017-03-04 23:37:22 +0900 (Sat, 04 Mar 2017) | 4 lines compile.c: memory leak * compile.c (iseq_set_sequence): fix potential memory leaks on an invalid instruction sequence. ------------------------------------------------------------------------ r57772 | nobu | 2017-03-04 23:21:57 +0900 (Sat, 04 Mar 2017) | 4 lines compile.c: fix invalid label message * compile.c (validate_label): fix invalid label message. registered labels are Symbols, not IDs. ------------------------------------------------------------------------ r57771 | stomar | 2017-03-04 22:13:50 +0900 (Sat, 04 Mar 2017) | 5 lines documentation for sort methods * array.c: [DOC] fix grammar in Array#sort, #sort!, #sort_by!, move references below the code example, add a missing reference. * enum.c: [DOC] fix grammar in Enumerable#sort, #sort_by. ------------------------------------------------------------------------ r57770 | stomar | 2017-03-04 22:12:20 +0900 (Sat, 04 Mar 2017) | 5 lines enum.c: documentation for Enumerable#sort_by * enum.c: [DOC] improve structure of docs for Enumerable#sort_by, adopt explanation of the comparison block from Array#sort_by, drop mention of 1.8, fix typos. ------------------------------------------------------------------------ r57769 | nobu | 2017-03-04 14:13:18 +0900 (Sat, 04 Mar 2017) | 4 lines readline.c: fix type * ext/readline/readline.c (getc_body): fix variable type, and extract _get_osfhandle. ------------------------------------------------------------------------ r57768 | svn | 2017-03-04 04:39:36 +0900 (Sat, 04 Mar 2017) | 1 line * 2017-03-04 ------------------------------------------------------------------------ r57767 | stomar | 2017-03-04 04:39:35 +0900 (Sat, 04 Mar 2017) | 5 lines io.c: documentation for puts * io.c: [DOC] clarify that the 'record separator' between arguments passed to 'puts' is always a newline. Based on a patch by Mark Amery. [ruby-core:65801] [Misc #10403] ------------------------------------------------------------------------ r57766 | nobu | 2017-03-03 18:27:27 +0900 (Fri, 03 Mar 2017) | 4 lines zlib for mingw * ext/zlib/extconf.rb: fix building zlib for mingw, and for cross-compiling. ------------------------------------------------------------------------ r57765 | stomar | 2017-03-03 17:45:04 +0900 (Fri, 03 Mar 2017) | 11 lines proc.c: documentation for Proc#{call,yield,[]} * proc.c: [DOC] fix and improve docs for Proc#{call,yield,[]}: * change order of Document-method directives as workaround for an RDoc rendering problem where the documentation for Proc#call displays a "Document-method: []" code block. [ruby-core:79887] [Bug #13273] * add missing call-seq and example for Proc#yield * remove pointless cross reference to Proc#yield * update description for handling of extra or missing arguments, improve examples and add cross reference to #lambda? ------------------------------------------------------------------------ r57764 | nobu | 2017-03-03 15:22:47 +0900 (Fri, 03 Mar 2017) | 4 lines MINIRUBY for cross-compling * template/configure-ext.mk.tmpl (EXTMK_ARGS): add MINIRUBY for cross-compling, which is used in extmk.rb. ------------------------------------------------------------------------ r57763 | nobu | 2017-03-03 15:18:36 +0900 (Fri, 03 Mar 2017) | 4 lines fix for mingw64 * util.c: define MINGW_HAS_SECURE_API for qsort_s on recent mingw64. ------------------------------------------------------------------------ r57762 | nobu | 2017-03-03 13:51:34 +0900 (Fri, 03 Mar 2017) | 6 lines broken mingw * configure.in: check whether frexp and modf are broken. * include/ruby/win32.h (frexp, modf): ignore bad declarations when compiling as C++. [ruby-core:79859] [Bug #13267] ------------------------------------------------------------------------ r57761 | akr | 2017-03-03 08:36:13 +0900 (Fri, 03 Mar 2017) | 2 lines [DOC] update doc. ------------------------------------------------------------------------ r57760 | svn | 2017-03-03 08:33:07 +0900 (Fri, 03 Mar 2017) | 1 line * 2017-03-03 ------------------------------------------------------------------------ r57759 | akr | 2017-03-03 08:33:06 +0900 (Fri, 03 Mar 2017) | 6 lines refine a warning message. The "n" option for regexp, /.../n, is historical. It doesn't mean the regexp works as binary match since Ruby 1.9. ------------------------------------------------------------------------ r57758 | stomar | 2017-03-02 19:31:56 +0900 (Thu, 02 Mar 2017) | 5 lines string.c: restore documentation for String#<< * string.c: [DOC] restore documentation for String#<< which became undocumented with r56021; fix a typo. [ruby-core:79865] [Bug #13268] ------------------------------------------------------------------------ r57757 | nobu | 2017-03-02 13:54:19 +0900 (Thu, 02 Mar 2017) | 5 lines test: use RbConfig::Limits * test/lib/envutil.rb: rbconfig/sizeof may not be available when cross-compiling. use RbConfig::Limits instead of calculating limits of Fixnum with hard-coded CHAR_BIT. ------------------------------------------------------------------------ r57756 | nobu | 2017-03-02 13:54:18 +0900 (Thu, 02 Mar 2017) | 5 lines fix for cross-compiling * common.mk (test-rubyspec): add dependency for cross-compiling. * defs/gmake.mk: ditto. ------------------------------------------------------------------------ r57755 | stomar | 2017-03-02 04:59:03 +0900 (Thu, 02 Mar 2017) | 5 lines struct.c: improve rdoc for Struct * struct.c: [DOC] improve examples for ::new, improve #dig example, simplify #select example, use consistent style for return values, fix typos and example code style, remove duplicate cross reference. ------------------------------------------------------------------------ r57754 | svn | 2017-03-02 04:57:15 +0900 (Thu, 02 Mar 2017) | 1 line * 2017-03-02 ------------------------------------------------------------------------ r57753 | stomar | 2017-03-02 04:57:14 +0900 (Thu, 02 Mar 2017) | 1 line hash.c: [DOC] fix book title in example ------------------------------------------------------------------------ r57752 | kazu | 2017-03-01 20:37:30 +0900 (Wed, 01 Mar 2017) | 1 line lib/e2mmap.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57751 | stomar | 2017-03-01 19:17:42 +0900 (Wed, 01 Mar 2017) | 5 lines fileutils.rb: improve rdoc for FileUtils * lib/fileutils.rb: [DOC] fix invalid example code to make it syntax highlighted, fix rdoc for lists, nodoc internal methods, avoid a dangerous example. ------------------------------------------------------------------------ r57750 | rhe | 2017-03-01 19:15:55 +0900 (Wed, 01 Mar 2017) | 7 lines openssl: avoid segfault during running tests on Ubuntu trusty Import the commit 6693a549d673 ("test/test_pkey_ec: do not use dummy 0 order", 2017-02-03) from upstream. Hopefully this will fix the segfault on RubyCI icc16-x64: http://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-trunk/log/20170301T050002Z.fail.html.gz ------------------------------------------------------------------------ r57749 | stomar | 2017-03-01 17:54:37 +0900 (Wed, 01 Mar 2017) | 6 lines fileutils.rb: improve docs for FileUtils.compare_file * lib/fileutils.rb (compare_file): [DOC] clarify documentation by avoiding confusing return value of "maybe false". [ruby-core:75431] [Misc #12365] reported by Robert A. Heiler. ------------------------------------------------------------------------ r57748 | nobu | 2017-03-01 16:53:15 +0900 (Wed, 01 Mar 2017) | 4 lines common.mk: separate clean-ext * common.mk (clean-ext): separate clean-up of makefiles and timestamps, and clean-up of subdirectories under ext and gems. ------------------------------------------------------------------------ r57747 | nobu | 2017-03-01 14:44:37 +0900 (Wed, 01 Mar 2017) | 4 lines zlib: clean zlib * ext/zlib/extconf.rb: clean zlib libraries generated in the place. ------------------------------------------------------------------------ r57746 | svn | 2017-03-01 10:16:27 +0900 (Wed, 01 Mar 2017) | 1 line * 2017-03-01 ------------------------------------------------------------------------ r57745 | normal | 2017-03-01 10:16:26 +0900 (Wed, 01 Mar 2017) | 9 lines deduplicate strings sooner at load and compile We can use rb_fstring_cstr in some places to prevent an intermediate object from being created before deduplication via rb_fstring. * compile.c (iseq_compile_each): use rb_fstring_cstr (rb_insns_name_array): ditto * load.c (rb_load_internal0): ditto ------------------------------------------------------------------------ r57744 | stomar | 2017-02-28 19:41:03 +0900 (Tue, 28 Feb 2017) | 1 line lib/mathn.rb: [DOC] nodoc internal Math.rsqrt ------------------------------------------------------------------------ r57743 | nobu | 2017-02-28 17:22:00 +0900 (Tue, 28 Feb 2017) | 3 lines clean gems * Makefile.in (clean-ext): clean gem directories too. ------------------------------------------------------------------------ r57742 | hsbt | 2017-02-28 16:45:54 +0900 (Tue, 28 Feb 2017) | 6 lines Added initial gemspec for SDBM module. [Feature #13261] * doc/*.rdoc: Move SDBM entry to default gem section. * ext/sdbm/sdbm.gemspec: first gemspec. ------------------------------------------------------------------------ r57741 | nobu | 2017-02-28 13:33:15 +0900 (Tue, 28 Feb 2017) | 5 lines disable critical-error-handler * win32/win32.c (rb_w32_sysinit): disable critical-error-handler message box even on mswin, regardless of runtime DLL version. [ruby-dev:49988] [Bug #13254] ------------------------------------------------------------------------ r57740 | nobu | 2017-02-28 11:58:12 +0900 (Tue, 28 Feb 2017) | 9 lines Makefile.sub: ULL_TO_DOUBLE * win32/Makefile.sub (config.h): define ULL_TO_DOUBLE for conversion from unsigned __int64 to double, which is not implemented in till Visual Studio.NET 2003, aka VC7.1. * bignum.c (estimate_initial_sqrt): use ULL_TO_DOUBLE if defined. * numeric.c (BDIGIT_DBL_TO_DOUBLE): ditto. ------------------------------------------------------------------------ r57739 | nobu | 2017-02-28 10:10:38 +0900 (Tue, 28 Feb 2017) | 4 lines numeric.c: suppress warning * numeric.c (DEFINE_INT_SQRT): suppress a type-limits warning where int is always smaller than double. ------------------------------------------------------------------------ r57738 | nobu | 2017-02-28 09:00:33 +0900 (Tue, 28 Feb 2017) | 4 lines Makefile.in: CHDIR to srcdir * Makefile.in (update-mspec, update-rubyspec): use CHDIR, which may use -P, to resolve symbolic links. ------------------------------------------------------------------------ r57737 | stomar | 2017-02-28 03:26:22 +0900 (Tue, 28 Feb 2017) | 9 lines date_core.c: expand docs for Date shifting * ext/date/date_core.c: [DOC] expand docs for Date shifting * add examples for Date#>> and Date#<< that clarify some edge cases * add examples for Date#next_year and Date#prev_year * add cross references to Date#>> and Date#<< [ruby-core:79584] [Bug #13225] ------------------------------------------------------------------------ r57736 | svn | 2017-02-28 03:07:12 +0900 (Tue, 28 Feb 2017) | 1 line * 2017-02-28 ------------------------------------------------------------------------ r57735 | stomar | 2017-02-28 03:07:11 +0900 (Tue, 28 Feb 2017) | 7 lines Fix doc for Hash#dig and Struct#dig * hash.c (rb_hash_dig): [DOC] correct argument name in method description; fix formatting in examples. * struct.c (rb_struct_dig): ditto. [ruby-core:79221] [Bug #13148] ------------------------------------------------------------------------ r57734 | nobu | 2017-02-27 22:52:08 +0900 (Mon, 27 Feb 2017) | 4 lines fix nd_ainfo->kw_rest_arg [Fix GH-5129] Author: fate0 <fate0@users.noreply.github.com> ------------------------------------------------------------------------ r57733 | nobu | 2017-02-27 22:52:07 +0900 (Mon, 27 Feb 2017) | 7 lines kwrest arg name * compile.c (iseq_set_arguments_keywords): make keyword rest argument name nd_vid consistently, regardless of whether other keyword arguments are present. [Fix GH-1529] * parse.y (new_args_tail_gen): ditto. ------------------------------------------------------------------------ r57732 | shyouhei | 2017-02-27 22:41:38 +0900 (Mon, 27 Feb 2017) | 2 lines add NEWS for Random.urandom [ci skip] ------------------------------------------------------------------------ r57731 | nobu | 2017-02-27 22:22:05 +0900 (Mon, 27 Feb 2017) | 1 line common.mk (distclean): clean docs too ------------------------------------------------------------------------ r57730 | hsbt | 2017-02-27 18:20:39 +0900 (Mon, 27 Feb 2017) | 6 lines Added initial gemspec for Etc module. [Feature #13256] * doc/*.rdoc: move Etc module to default gem section. * ext/etc/etc.gemspec: first gemspec. ------------------------------------------------------------------------ r57729 | nobu | 2017-02-27 17:23:18 +0900 (Mon, 27 Feb 2017) | 3 lines Makefile.in: by exts.mk * Makefile.in (clean-ext): recurse by exts.mk in parallel first. ------------------------------------------------------------------------ r57728 | nobu | 2017-02-27 16:54:24 +0900 (Mon, 27 Feb 2017) | 4 lines common.mk: clean-rubyspec * common.mk (clean-rubyspec): remove OBJDIR for rubyspec C-API tests. ------------------------------------------------------------------------ r57727 | nobu | 2017-02-27 16:37:55 +0900 (Mon, 27 Feb 2017) | 5 lines mkmf.rb: get rid of error messages * lib/mkmf.rb (create_makefile): add TARGET_SO to CLEANLIBS only when the extension library will be build, to get rid of trying to remove $(TARGET_SO_DIR). ------------------------------------------------------------------------ r57726 | nobu | 2017-02-27 15:39:28 +0900 (Mon, 27 Feb 2017) | 7 lines clean more * Makefile.in (clean-local): remove debug symbol directories on Mac OS. * common.mk (clean-ext): remove parent directories of timestamp directory. ------------------------------------------------------------------------ r57725 | nobu | 2017-02-27 15:31:25 +0900 (Mon, 27 Feb 2017) | 4 lines Makefile.in: clean exts.mk files * Makefile.in (clean-ext): remove exts.mk files in subdirectories underneath ext. ------------------------------------------------------------------------ r57724 | nobu | 2017-02-27 14:58:31 +0900 (Mon, 27 Feb 2017) | 1 line ext/socket/extconf.rb: fix a typo ------------------------------------------------------------------------ r57723 | nobu | 2017-02-27 14:55:32 +0900 (Mon, 27 Feb 2017) | 4 lines mkmf.rb: clean generated files * lib/mkmf.rb (try_link0): remove generated files other than the executable file. ------------------------------------------------------------------------ r57722 | nobu | 2017-02-27 14:14:30 +0900 (Mon, 27 Feb 2017) | 10 lines Makefile.in: verify-static-library * Makefile.in (verify-static-library): separate from LIBRUBY_A. no check every times by default. * lib/mkmf.rb (try_link): remove debugging symbol directory after linking, instead of try_do. * lib/mkmf.rb (try_link): bccwin32 support has been removed long ago. ------------------------------------------------------------------------ r57721 | svn | 2017-02-27 09:53:27 +0900 (Mon, 27 Feb 2017) | 1 line * 2017-02-27 ------------------------------------------------------------------------ r57720 | nobu | 2017-02-27 09:53:26 +0900 (Mon, 27 Feb 2017) | 1 line NEWS: Integer.sqrt [Feature #13219] ------------------------------------------------------------------------ r57719 | stomar | 2017-02-26 21:51:41 +0900 (Sun, 26 Feb 2017) | 4 lines Add rdoc for Integer.sqrt * numeric.c (rb_int_s_isqrt): [DOC] add rdoc for Integer.sqrt. [ruby-core:79762] [Bug #13251] ------------------------------------------------------------------------ r57718 | nobu | 2017-02-26 18:33:17 +0900 (Sun, 26 Feb 2017) | 6 lines node.c: fix NODE_OP_ASGN1 * node.c (dump_node): fix a typo, index and rvalue. fix NODE_OP_ASGN1 operator to nd_mid. [Fix GH-1528] Author: fate0 <fate0@users.noreply.github.com> ------------------------------------------------------------------------ r57717 | nobu | 2017-02-26 09:33:06 +0900 (Sun, 26 Feb 2017) | 5 lines parse.y: indent at invalid identifier * parse.y (parser_heredoc_identifier): set indent only when valid identifier, not to dedent non-existent contents later. [ruby-core:79772] [Bug #13253] ------------------------------------------------------------------------ r57716 | svn | 2017-02-26 07:28:23 +0900 (Sun, 26 Feb 2017) | 1 line * 2017-02-26 ------------------------------------------------------------------------ r57715 | suke | 2017-02-26 07:28:22 +0900 (Sun, 26 Feb 2017) | 3 lines ext/win32ole/win32ole.c(ole_initialize): avoid to fail in Windows nano server. This is experimental. Thanks to mwrock, Ethan Brown. ------------------------------------------------------------------------ r57714 | nobu | 2017-02-25 16:27:07 +0900 (Sat, 25 Feb 2017) | 1 line bignum.c: use predefined IDs ------------------------------------------------------------------------ r57713 | nobu | 2017-02-25 14:44:39 +0900 (Sat, 25 Feb 2017) | 4 lines bignum.c: improve estimate * bignum.c (estimate_initial_sqrt, rb_big_isqrt): improve initial estimate by sqrt(). [ruby-core:79754] [Feature #13250] ------------------------------------------------------------------------ r57712 | nobu | 2017-02-25 13:13:42 +0900 (Sat, 25 Feb 2017) | 1 line bignum.c (bary_zero_p): constify ------------------------------------------------------------------------ r57711 | nobu | 2017-02-25 11:59:47 +0900 (Sat, 25 Feb 2017) | 3 lines .gdbinit: rp_bignum * .gdbinit (rp_bignum): print bignum from higher digits. ------------------------------------------------------------------------ r57710 | normal | 2017-02-25 11:31:03 +0900 (Sat, 25 Feb 2017) | 4 lines NEWS: document String#-@ change * test/ruby/test_string.rb (test_uplus_minus): test deduplication [ruby-core:79747] [Feature #13077] ------------------------------------------------------------------------ r57709 | svn | 2017-02-25 08:31:08 +0900 (Sat, 25 Feb 2017) | 1 line * 2017-02-25 ------------------------------------------------------------------------ r57708 | nobu | 2017-02-25 08:31:07 +0900 (Sat, 25 Feb 2017) | 1 line extract initial sqrt estimation [Feature #13219] ------------------------------------------------------------------------ r57707 | rhe | 2017-02-24 20:33:06 +0900 (Fri, 24 Feb 2017) | 4 lines securerandom: fix up r57384 SecureRandom.gen_random_openssl still refers to Random.raw_seed, which is renamed to Random.urandom by r57384. [Bug #9569] ------------------------------------------------------------------------ r57706 | nobu | 2017-02-24 18:39:17 +0900 (Fri, 24 Feb 2017) | 4 lines Integer.sqrt argument check * numeric.c (rb_int_s_isqrt): check if the argument is an integer. [Feature #13219] ------------------------------------------------------------------------ r57705 | nobu | 2017-02-24 17:36:16 +0900 (Fri, 24 Feb 2017) | 1 line Integer.sqrt [Feature #13219] ------------------------------------------------------------------------ r57704 | hsbt | 2017-02-24 16:55:50 +0900 (Fri, 24 Feb 2017) | 3 lines Update maintainers and standard library docs for GDBM. [Feature #13248][ruby-core:79742] ------------------------------------------------------------------------ r57703 | hsbt | 2017-02-24 16:39:37 +0900 (Fri, 24 Feb 2017) | 4 lines Update rdoc-5.1.0 * Details of changes are following url. https://github.com/rdoc/rdoc/blob/master/History.rdoc#510--2017-02-24 ------------------------------------------------------------------------ r57702 | hsbt | 2017-02-24 15:50:43 +0900 (Fri, 24 Feb 2017) | 1 line gem name should be the downcase. ------------------------------------------------------------------------ r57701 | hsbt | 2017-02-24 15:48:55 +0900 (Fri, 24 Feb 2017) | 1 line Added initial gemspec for GDBM module. ------------------------------------------------------------------------ r57700 | hsbt | 2017-02-24 15:32:48 +0900 (Fri, 24 Feb 2017) | 3 lines Update psych-2.2.3 * It's only typo fix for CRuby. ------------------------------------------------------------------------ r57699 | svn | 2017-02-24 10:01:24 +0900 (Fri, 24 Feb 2017) | 1 line * 2017-02-24 ------------------------------------------------------------------------ r57698 | normal | 2017-02-24 10:01:23 +0900 (Fri, 24 Feb 2017) | 59 lines string.c (str_uminus): deduplicate strings This exposes the rb_fstring internal function to return a deduped and frozen string when a non-frozen string is given. This is useful for writing all sorts of record processing key values maybe stored, but certain keys and values are often duplicated at a high frequency, so memory savings can noticeable. Use cases are many: * email/NNTP header processing There are some standard header keys everybody uses (From/To/Cc/Date/Subject/Received/Message-ID/References/In-Reply-To), as well as common ones specific to a certain lists: (ruby-core has X-Redmine-* headers) It is also useful to dedupe values, as most inboxes have multiple messages from the same sender, or MUA. * package management systems - things like RubyGems stores identical strings for licenses, dependency names, author names/emails, etc * HTTP headers/trailers - standard headers (Host/Accept/Accept-Encoding/User-Agent/...) are common, but there are also uncommon ones. Values may be deduped, as well, as it is likely a user agent will make multiple/parallel requests to the same server. * version control systems - this can be useful for deduplicating names of frequent committers (like "nobu" :) In linux.git and git.git, there are also common trailers such as Signed-Off-By/Acked-by/Reviewed-by/Fixes/... as well as less common ones. * audio metadata - There are commonly used tags (Artist/Album/Title/Tracknumber), but Vorbis comments allows arbitrary key values to be stored. Music collections contain songs by the same artist or mutiple songs from the same album, so deduplicating values will be helpful there, too. * JSON, YAML, XML, HTML processing Certain fields, tags and attributes are commonly used across the same and multiple documents There is no security concern in this being a DoS vector by causing immortal strings. The fstring table is not a GC-root and not walked during the mark phase. GC-able dynamic symbols since Ruby 2.2 are handled in the same manner, and that implementation also relies on the non-immortality of fstrings. [Feature #13077] [ruby-core:79663] ------------------------------------------------------------------------ r57697 | nobu | 2017-02-23 16:14:29 +0900 (Thu, 23 Feb 2017) | 4 lines appveyor.yaml: matrix * appveyor.yaml: use build matrix for platforms and compilers. resolve hard coded paths from these variables. ------------------------------------------------------------------------ r57696 | nobu | 2017-02-23 15:55:42 +0900 (Thu, 23 Feb 2017) | 4 lines bignum.c: NAIVE_MUL_DIGITS * bignum.c (NAIVE_MUL_DIGITS): share threshold for bary_sq_fast between bary_mul and bigsq. ------------------------------------------------------------------------ r57695 | nobu | 2017-02-23 13:10:41 +0900 (Thu, 23 Feb 2017) | 4 lines fix circular dependencies * defs/gmake.mk (TEST_DEPENDS): remove targets expanded as TEST_TARGETS, to get rid of circular dependencies. ------------------------------------------------------------------------ r57694 | nobu | 2017-02-23 11:40:17 +0900 (Thu, 23 Feb 2017) | 3 lines Revert r57690 except for read_nonblock https://github.com/ruby/ruby/pull/1527#issuecomment-281867551 ------------------------------------------------------------------------ r57693 | nobu | 2017-02-23 11:11:16 +0900 (Thu, 23 Feb 2017) | 1 line [DOC] mark up literals ------------------------------------------------------------------------ r57692 | nobu | 2017-02-23 11:00:28 +0900 (Thu, 23 Feb 2017) | 1 line [DOC] keyword argument _exception_ ------------------------------------------------------------------------ r57691 | nobu | 2017-02-23 10:54:13 +0900 (Thu, 23 Feb 2017) | 11 lines socket.rb: [DOC] fix nonblock methods * ext/socket/lib/socket.rb (BasicSocket#recv_nonblock): fix exception class and symbol. * ext/socket/lib/socket.rb (BasicSocket#recvmsg_nonblock): ditto. * ext/socket/lib/socket.rb (Socket#recvfrom_nonblock): fix the method name. * ext/socket/lib/socket.rb (UDPSocket#recvfrom_nonblock): both. ------------------------------------------------------------------------ r57690 | nobu | 2017-02-23 10:15:27 +0900 (Thu, 23 Feb 2017) | 7 lines [DOC] {read,write}_nonblock with exception: false Update docs to reflect EOF behavior change of read_nonblock and write_nonblock when using `exception: false`. [Fix GH-1527] Author: Russell Davis <russell-stripe@users.noreply.github.com> ------------------------------------------------------------------------ r57689 | nobu | 2017-02-23 08:49:40 +0900 (Thu, 23 Feb 2017) | 4 lines rational.c: infinity in power * rational.c (nurat_expt): return 0 due to overflow. [ruby-core:79686] [Bug #13242]: ------------------------------------------------------------------------ r57688 | nobu | 2017-02-23 08:28:26 +0900 (Thu, 23 Feb 2017) | 4 lines rational.c: infinity in power * rational.c (nurat_expt): return Infinity due to overflow. [ruby-core:79686] [Bug #13242]: ------------------------------------------------------------------------ r57687 | svn | 2017-02-23 00:46:43 +0900 (Thu, 23 Feb 2017) | 1 line * 2017-02-23 ------------------------------------------------------------------------ r57686 | kazu | 2017-02-23 00:46:43 +0900 (Thu, 23 Feb 2017) | 8 lines rational.c: fix rdoc * rational.c: [DOC] fix wrong indentations and comment out some lines in code examples to make them valid Ruby code and syntax highlighted on the rendered page. [ci skip] [ruby-core:79607] [Bug #13233] Author: Marcus Stollsteimer <sto.mar@web.de> ------------------------------------------------------------------------ r57685 | nobu | 2017-02-22 17:50:25 +0900 (Wed, 22 Feb 2017) | 5 lines eval_error.c: backstrace in reverse order * eval_error.c (rb_threadptr_error_print): print backtrace and error message in reverse order if STDERR is unchanged and a tty. [Feature #8661] ------------------------------------------------------------------------ r57684 | akr | 2017-02-22 16:31:25 +0900 (Wed, 22 Feb 2017) | 5 lines refine warning message for binary regexp /.../n. Reported by Herwin W. [ruby-core:78592] [Bug #13024] ------------------------------------------------------------------------ r57683 | nobu | 2017-02-22 16:16:13 +0900 (Wed, 22 Feb 2017) | 4 lines Thread#fetch * thread.c (rb_thread_fetch): add new method Thread#fetch. [Feature #13009] ------------------------------------------------------------------------ r57682 | nobu | 2017-02-22 11:02:11 +0900 (Wed, 22 Feb 2017) | 8 lines numeric.c: Numeric#clone and #dup * numeric.c (num_clone, num_dup): no longer raises TypeError, returns the receiver instead as well as Integer and Float. [ruby-core:79636] [Bug #13237] * object.c (rb_immutable_obj_clone): immutable object clone with freeze optional keyword argument. ------------------------------------------------------------------------ r57681 | svn | 2017-02-22 10:55:11 +0900 (Wed, 22 Feb 2017) | 1 line * 2017-02-22 ------------------------------------------------------------------------ r57680 | nobu | 2017-02-22 10:55:10 +0900 (Wed, 22 Feb 2017) | 7 lines object.c: refactor rb_obj_clone and rb_obj_clone2 * object.c (rb_obj_clone2): extract option for clone, and split by whether the object is immutable or mutable. * object.c (rb_obj_clone): no arguments, return immutable object immediately. ------------------------------------------------------------------------ r57679 | nobu | 2017-02-21 23:51:22 +0900 (Tue, 21 Feb 2017) | 3 lines object.c: message encoding * object.c (rb_obj_clone2): preserve encoding in error messages. ------------------------------------------------------------------------ r57678 | nobu | 2017-02-21 23:42:02 +0900 (Tue, 21 Feb 2017) | 4 lines backward.h: RClassDeprecated * include/ruby/backward.h (RClassDeprecated): move from ruby/ruby.h. ------------------------------------------------------------------------ r57677 | svn | 2017-02-21 17:18:16 +0900 (Tue, 21 Feb 2017) | 1 line * properties. ------------------------------------------------------------------------ r57676 | ko1 | 2017-02-21 17:18:15 +0900 (Tue, 21 Feb 2017) | 38 lines add performance counting mechanism for MRI debug/tuning purpose. * How to enable this feature? * define USE_DEBUG_COUNTER as 1. * you can disable to output the result with RUBY_DEBUG_COUNTER_DISABLE environment variable even if USE_DEBUG_COUNTER == 1. * How to add new counter? * add COUNTER(<name>) line on debug_counter.h. * include "debug_counter.h" * insert RB_DEBUG_COUNTER_INC(<name>) line on your favorite place. * counter output example: [RUBY_DEBUG_COUNTER] mc_inline_hit 999 [RUBY_DEBUG_COUNTER] mc_inline_miss 3 [RUBY_DEBUG_COUNTER] mc_global_hit 23 [RUBY_DEBUG_COUNTER] mc_global_miss 273 [RUBY_DEBUG_COUNTER] mc_global_state_miss 3 [RUBY_DEBUG_COUNTER] mc_class_serial_miss 0 [RUBY_DEBUG_COUNTER] mc_cme_complement 0 [RUBY_DEBUG_COUNTER] mc_cme_complement_hit 0 [RUBY_DEBUG_COUNTER] mc_search_super 1384 [RUBY_DEBUG_COUNTER] ivar_get_hit 0 [RUBY_DEBUG_COUNTER] ivar_get_miss 0 [RUBY_DEBUG_COUNTER] ivar_set_hit 0 [RUBY_DEBUG_COUNTER] ivar_set_miss 0 [RUBY_DEBUG_COUNTER] ivar_get 431 [RUBY_DEBUG_COUNTER] ivar_set 465 * mc_... is related to method caching. * ivar_... is related to instance variable accesses. * compare with dtrace/system tap features, there are completely no performacne penalties when it is disabled. * This feature is supported only on __GNUC__ compilers. ------------------------------------------------------------------------ r57675 | nobu | 2017-02-21 15:16:50 +0900 (Tue, 21 Feb 2017) | 4 lines backward.h: move deprecated declaration * include/ruby/backward.h (rb_autoload): move declaration of deprecated function. ------------------------------------------------------------------------ r57674 | nobu | 2017-02-21 15:16:49 +0900 (Tue, 21 Feb 2017) | 1 line variable.c: remove deprecated internal feature ------------------------------------------------------------------------ r57673 | nobu | 2017-02-21 15:07:22 +0900 (Tue, 21 Feb 2017) | 1 line error.c: remove deprecated internal features ------------------------------------------------------------------------ r57672 | nobu | 2017-02-21 15:07:21 +0900 (Tue, 21 Feb 2017) | 4 lines complex.c: remove deprecated functions * complex.c (rb_complex_set_real, rb_complex_set_imag): remove functions deprecated at 2.2. ------------------------------------------------------------------------ r57671 | nobu | 2017-02-21 14:17:41 +0900 (Tue, 21 Feb 2017) | 4 lines backward.h: 2.2 deprecated features * include/ruby/backward.h (DECLARE_DEPRECATED_FEATURE): move features deprecated at 2.2. ------------------------------------------------------------------------ r57670 | nobu | 2017-02-21 14:16:49 +0900 (Tue, 21 Feb 2017) | 4 lines internal.h: removed function declaration * internal.h (rb_compile_error_str): remove declaration of removed internal function at r54189. ------------------------------------------------------------------------ r57669 | nobu | 2017-02-21 10:28:30 +0900 (Tue, 21 Feb 2017) | 4 lines variable.c: noreturn in GCC * variable.c (rb_generic_ivar_table): declare as noreturn only in GCC, which does not err on different attributes. ------------------------------------------------------------------------ r57668 | svn | 2017-02-21 04:12:53 +0900 (Tue, 21 Feb 2017) | 1 line * 2017-02-21 ------------------------------------------------------------------------ r57667 | ko1 | 2017-02-21 04:12:52 +0900 (Tue, 21 Feb 2017) | 4 lines remove harmful declaration. * variable.c (gen_ivtbl_get): declaration conflict on VC++. ------------------------------------------------------------------------ r57666 | yui-knk | 2017-02-20 23:40:56 +0900 (Mon, 20 Feb 2017) | 4 lines compile.c: Fix a typo * compile.c (compile_branch_condition): NODE_LIT is always true. ------------------------------------------------------------------------ r57665 | kazu | 2017-02-20 21:20:22 +0900 (Mon, 20 Feb 2017) | 12 lines extension.rdoc: add document title * doc/extension.rdoc, doc/extension.ja.rdoc: [DOC] add title and adapt subheading levels. * doc/extension.rdoc: [DOC] fix subheading level of section about "Ruby Constants That Can Be Accessed From C". * doc/extension.ja.rdoc: [DOC] add missing subheading. [ruby-core:79590] [Bug #13229] Author: Marcus Stollsteimer <sto.mar@web.de> ------------------------------------------------------------------------ r57664 | naruse | 2017-02-20 19:59:10 +0900 (Mon, 20 Feb 2017) | 3 lines Supress warning: function might be candidate for attribute 'noreturn' GCC7 shows it. ------------------------------------------------------------------------ r57663 | naruse | 2017-02-20 19:59:10 +0900 (Mon, 20 Feb 2017) | 1 line Cast as VALUE to suppress type warnings ------------------------------------------------------------------------ r57662 | naruse | 2017-02-20 19:59:09 +0900 (Mon, 20 Feb 2017) | 1 line They are enum yytokentype, need cast ------------------------------------------------------------------------ r57661 | nobu | 2017-02-20 19:10:08 +0900 (Mon, 20 Feb 2017) | 4 lines assertions.rb: ignore exit in child * test/lib/test/unit/assertions.rb (assert_separately): ignore SystemExit. unsuccessful exit still fails an assertion later. ------------------------------------------------------------------------ r57660 | nobu | 2017-02-20 18:46:12 +0900 (Mon, 20 Feb 2017) | 5 lines regparse.c: initialize return values * regparse.c (parse_char_class): initialize return values before depth limit check. returned values will be freed in callers regardless the error. [ruby-core:79624] [Bug #13234] ------------------------------------------------------------------------ r57659 | nobu | 2017-02-20 14:35:57 +0900 (Mon, 20 Feb 2017) | 1 line parse.y: new_qcall ------------------------------------------------------------------------ r57658 | nobu | 2017-02-20 14:35:56 +0900 (Mon, 20 Feb 2017) | 3 lines parse.y: ID2VAL * parse.y (ID2VAL): split from TOKEN2VAL. ------------------------------------------------------------------------ r57657 | svn | 2017-02-20 11:16:23 +0900 (Mon, 20 Feb 2017) | 1 line * 2017-02-20 ------------------------------------------------------------------------ r57656 | nobu | 2017-02-20 11:16:22 +0900 (Mon, 20 Feb 2017) | 4 lines envutil.rb: diagnostic_reports for ruby-runner * test/lib/envutil.rb (EnvUtil.diagnostic_reports): ruby-runner execs "RUBY_INSTALL_NAME" file, so search by that name. ------------------------------------------------------------------------ r57655 | nobu | 2017-02-19 10:27:52 +0900 (Sun, 19 Feb 2017) | 5 lines vm_insnhelper.c: super to module in refinement * vm_insnhelper.c (vm_call_zsuper): method defined in module in refinement is not callable as-is. dispatch again. [ruby-core:79588] [Bug #13227] ------------------------------------------------------------------------ r57654 | svn | 2017-02-19 07:38:36 +0900 (Sun, 19 Feb 2017) | 1 line * 2017-02-19 ------------------------------------------------------------------------ r57653 | nobu | 2017-02-19 07:38:35 +0900 (Sun, 19 Feb 2017) | 5 lines COPYING: expand tabs * COPYING: expand tabs like as the rest lines. [Fix GH-1526] Author: Philippe Ombredanne <pombredanne@gmail.com> ------------------------------------------------------------------------ r57652 | kazu | 2017-02-18 14:52:16 +0900 (Sat, 18 Feb 2017) | 1 line {lib,test}/cgi: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57651 | nobu | 2017-02-18 13:23:20 +0900 (Sat, 18 Feb 2017) | 4 lines array.c: check if numeric * array.c (finish_exact_sum): add 0 and the initial value to check if the latter is numeric. [ruby-core:79572] [Bug #13222] ------------------------------------------------------------------------ r57650 | svn | 2017-02-18 12:42:36 +0900 (Sat, 18 Feb 2017) | 1 line * 2017-02-18 ------------------------------------------------------------------------ r57649 | nobu | 2017-02-18 12:42:35 +0900 (Sat, 18 Feb 2017) | 4 lines array.c: finish_exact_sum * array.c (finish_exact_sum): extract duplicate code from rb_ary_sum. ------------------------------------------------------------------------ r57648 | nobu | 2017-02-17 22:31:43 +0900 (Fri, 17 Feb 2017) | 5 lines test_fileutils.rb: no broken symlinks on Cygwin * test/fileutils/test_fileutils.rb (no_broken_symlink): exclude test using broken symlinks on Cygwin, which are not allowed because of the directory flag of Windows native symlink. ------------------------------------------------------------------------ r57647 | nobu | 2017-02-17 22:31:42 +0900 (Fri, 17 Feb 2017) | 5 lines test_fileutils.rb: fix relative symlink path * test/fileutils/test_fileutils.rb (test_rm_symlink): fix relative symlink path, the target should be relative to the directory in which the symlink gets created. ------------------------------------------------------------------------ r57646 | nobu | 2017-02-17 19:22:10 +0900 (Fri, 17 Feb 2017) | 4 lines test_fileutils.rb: workaround for Cygwin * test/fileutils/test_fileutils.rb (root_in_posix): seems Cygwin has some different conditions for privilege. ------------------------------------------------------------------------ r57645 | nobu | 2017-02-17 19:22:09 +0900 (Fri, 17 Feb 2017) | 5 lines test_fileutils.rb: cache distinct UIDs * test/fileutils/test_fileutils.rb: cache distinct UIDs as constants at initialization. assume no UIDs will be added/removed during tests. ------------------------------------------------------------------------ r57644 | svn | 2017-02-17 14:45:45 +0900 (Fri, 17 Feb 2017) | 1 line * 2017-02-17 ------------------------------------------------------------------------ r57643 | nobu | 2017-02-17 14:45:44 +0900 (Fri, 17 Feb 2017) | 6 lines DEPRECATED_INTERNAL_FEATURE * error.c (ruby_deprecated_internal_feature): renamed, to explicitly represent deprecation. * internal.h (DEPRECATED_INTERNAL_FEATURE): ditto. ------------------------------------------------------------------------ r57642 | nobu | 2017-02-16 23:48:12 +0900 (Thu, 16 Feb 2017) | 3 lines variable.c: fatal rb_generic_ivar_table * variable.c (rb_generic_ivar_table): raise fatal error. ------------------------------------------------------------------------ r57641 | ko1 | 2017-02-16 18:15:26 +0900 (Thu, 16 Feb 2017) | 2 lines use rb_iseq_check() for USE_LAZY_LOAD, too. ------------------------------------------------------------------------ r57640 | nobu | 2017-02-16 17:42:22 +0900 (Thu, 16 Feb 2017) | 6 lines fileutils.rb: do not make root * lib/fileutils.rb (FileUtils#mkdir_p): no need to make root directory which should be exist and cannot be made with mkdir recent Cygwin can make a directory contains a colon. [Bug #13214] ------------------------------------------------------------------------ r57639 | ko1 | 2017-02-16 17:24:37 +0900 (Thu, 16 Feb 2017) | 2 lines use rb_iseq_check() for USE_LAZY_LOAD. ------------------------------------------------------------------------ r57638 | svn | 2017-02-16 11:47:22 +0900 (Thu, 16 Feb 2017) | 1 line * 2017-02-16 ------------------------------------------------------------------------ r57637 | nobu | 2017-02-16 11:47:21 +0900 (Thu, 16 Feb 2017) | 6 lines win32.c: memcpy instead of strlcpy * win32/win32.c (cmdglob): memcpy the exact size instead of strlcpy with +1. * win32/win32.c (w32_cmdvector): ditto, with NUL-terminating. ------------------------------------------------------------------------ r57636 | nobu | 2017-02-15 20:17:53 +0900 (Wed, 15 Feb 2017) | 1 line Update gems/bundled_gems ------------------------------------------------------------------------ r57635 | nobu | 2017-02-15 19:51:58 +0900 (Wed, 15 Feb 2017) | 4 lines gmake.mk: mflags without -jN * defs/gmake.mk (mflags): override the definition in common.mk without -jN option. ------------------------------------------------------------------------ r57634 | nobu | 2017-02-15 17:38:01 +0900 (Wed, 15 Feb 2017) | 7 lines marshal.c: revert r57631 partially * marshal.c (rb_marshal_dump_limited): do not free dump_arg, which may be dereferenced in check_dump_arg due to continuation, and get rid of dangling pointers. * marshal.c (rb_marshal_load_with_proc): ditto for load_arg. ------------------------------------------------------------------------ r57633 | nobu | 2017-02-15 14:53:01 +0900 (Wed, 15 Feb 2017) | 3 lines thread.c: fix for VC * thread.c (rb_fd_no_init): make void same as rb_fd_init_copy. ------------------------------------------------------------------------ r57632 | svn | 2017-02-15 09:42:52 +0900 (Wed, 15 Feb 2017) | 1 line * 2017-02-15 ------------------------------------------------------------------------ r57631 | normal | 2017-02-15 09:42:51 +0900 (Wed, 15 Feb 2017) | 11 lines marshal.c: use hidden objects to allow recycling Hidden objects (klass == 0) are not visible to Ruby code invoked from other threads or signal handlers, so they can never be accessed from other contexts. This makes it safe to call rb_gc_force_recycle on the object slot after releasing malloc memory. * marshal.c (rb_marshal_dump_limited): hide dump_arg and recycle when done (rb_marshal_load_with_proc): hide load_arg and recycle when done [ruby-core:79518] ------------------------------------------------------------------------ r57630 | kou | 2017-02-14 22:29:13 +0900 (Tue, 14 Feb 2017) | 2 lines Fix a typo ------------------------------------------------------------------------ r57629 | nobu | 2017-02-14 21:34:11 +0900 (Tue, 14 Feb 2017) | 4 lines resolv9x.rb: fix typo * ext/win32/lib/win32/resolv9x.rb (WsControl): fix missing close parenthesis at r22724. ------------------------------------------------------------------------ r57628 | nobu | 2017-02-14 21:29:56 +0900 (Tue, 14 Feb 2017) | 4 lines string.c: assertion * string.c (str_shared_replace): use RUBY_ASSERT for pre-condition. ------------------------------------------------------------------------ r57627 | hsbt | 2017-02-14 20:12:52 +0900 (Tue, 14 Feb 2017) | 3 lines Added initial gemspec for Scanf module. [Feature #13213] ------------------------------------------------------------------------ r57625 | nobu | 2017-02-14 16:52:30 +0900 (Tue, 14 Feb 2017) | 6 lines initialize variables * string.c (rb_str_enumerate_lines): initialize conditionally used variable. * thread.c (rb_fd_no_init): ditto. ------------------------------------------------------------------------ r57624 | nobu | 2017-02-14 00:28:25 +0900 (Tue, 14 Feb 2017) | 4 lines gmake.mk: test-ruby * defs/gmake.mk (ORDERED_TEST_TARGETS): add test-ruby target, test for ruby core without bundled libraries. ------------------------------------------------------------------------ r57623 | svn | 2017-02-14 00:19:13 +0900 (Tue, 14 Feb 2017) | 1 line * 2017-02-14 ------------------------------------------------------------------------ r57622 | nobu | 2017-02-14 00:19:12 +0900 (Tue, 14 Feb 2017) | 4 lines thread.c: use ASSUME only on gcc 5 or later * thread.c (rb_fd_no_init): on gcc 4, ASSUME macro affects something too much. ------------------------------------------------------------------------ r57621 | nobu | 2017-02-13 22:08:44 +0900 (Mon, 13 Feb 2017) | 4 lines ruby.h: remove comment * include/ruby/ruby.h (RB_GC_GUARD): remove comment unsupported by Solaris AS. ------------------------------------------------------------------------ r57620 | kazu | 2017-02-13 21:16:26 +0900 (Mon, 13 Feb 2017) | 1 line lib/find.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57619 | nobu | 2017-02-13 17:14:19 +0900 (Mon, 13 Feb 2017) | 4 lines ruby.h: RB_GC_GUARD stronger than gcc7 * include/ruby/ruby.h (RB_GC_GUARD): prevent guarded pointer from optimization by using as an input to inline asm. ------------------------------------------------------------------------ r57618 | nobu | 2017-02-13 14:44:15 +0900 (Mon, 13 Feb 2017) | 6 lines suppress warnings * string.c (rb_str_enumerate_lines): hint to suppress a maybe-uninitialized warning by gcc. * thread.c (rb_fd_no_init): ditto. ------------------------------------------------------------------------ r57617 | nobu | 2017-02-13 14:23:36 +0900 (Mon, 13 Feb 2017) | 4 lines compile.c: suppress a warning * compile.c (iseq_build_kw): suppress an alloc-size-larger-than warning by gcc 7. ------------------------------------------------------------------------ r57616 | nobu | 2017-02-13 14:11:14 +0900 (Mon, 13 Feb 2017) | 3 lines gmake.mk: tests step * defs/gmake.mk (TEST_TARGETS): run tests step by step. ------------------------------------------------------------------------ r57615 | normal | 2017-02-13 11:04:26 +0900 (Mon, 13 Feb 2017) | 6 lines array.c (ary_recycle_hash): use rb_gc_force_recycle Hidden objects (RBASIC_CLASS(hash) == 0) can never become visible to other threads or signal handlers via ObjectSpace.each_object or similar means. Thus it is safe to forcibly recycle the object slot for future use, here. ------------------------------------------------------------------------ r57614 | normal | 2017-02-13 10:05:23 +0900 (Mon, 13 Feb 2017) | 6 lines cont.c: avoid needless branch for dmark callbacks gc.c (gc_mark_children, case T_DATA) does not use the dmark function pointer if DATA_PTR is NULL * cont.c (cont_mark, fiber_mark): remove branch, ptr is never NULL ------------------------------------------------------------------------ r57613 | svn | 2017-02-13 08:37:29 +0900 (Mon, 13 Feb 2017) | 1 line * 2017-02-13 ------------------------------------------------------------------------ r57612 | nobu | 2017-02-13 08:37:28 +0900 (Mon, 13 Feb 2017) | 4 lines gmake.mk: -n for tests * defs/gmake.mk (gnumake_recursive): do not invoke tests if -n option is given. ------------------------------------------------------------------------ r57611 | nobu | 2017-02-12 17:43:43 +0900 (Sun, 12 Feb 2017) | 1 line parse.y: ripper_intern is no longer used ------------------------------------------------------------------------ r57610 | nobu | 2017-02-12 17:33:33 +0900 (Sun, 12 Feb 2017) | 6 lines parse.y: logop * defs/id.def (predefined): add keywords `and` and `or`. * parse.y (log_op): unify parser and ripper, and use tokens instead of node types and symbols. ------------------------------------------------------------------------ r57609 | kazu | 2017-02-12 13:31:25 +0900 (Sun, 12 Feb 2017) | 1 line ext/objspace: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57608 | nobu | 2017-02-12 13:23:16 +0900 (Sun, 12 Feb 2017) | 4 lines parse.y: call_bin_op * parse.y (call_bin_op): unify parser and ripper, and use IDs instead of tokens. ------------------------------------------------------------------------ r57607 | nobu | 2017-02-12 13:20:35 +0900 (Sun, 12 Feb 2017) | 6 lines parse.y: call_uni_op * defs/id.def (predefined): add keyword `not`. * parse.y (call_uni_op): unify parser and ripper, and use IDs instead of tokens. ------------------------------------------------------------------------ r57606 | nobu | 2017-02-12 12:15:34 +0900 (Sun, 12 Feb 2017) | 6 lines ripper: fix %-op on_operator_ambiguous * parse.y (ambiguous_operator): separate token and string representation of operators, to fix %-operator argument. in a warning message, needs to be escaped by '%' but the symbol should not be. ------------------------------------------------------------------------ r57605 | nobu | 2017-02-12 11:48:28 +0900 (Sun, 12 Feb 2017) | 4 lines symbol/init.c: ID value * ext/-test-/symbol/init.c (sym_pinneddown_p): return ID value or nil for debugging. ------------------------------------------------------------------------ r57604 | svn | 2017-02-12 00:08:34 +0900 (Sun, 12 Feb 2017) | 1 line * 2017-02-12 ------------------------------------------------------------------------ r57603 | naruse | 2017-02-12 00:08:33 +0900 (Sun, 12 Feb 2017) | 4 lines Merge Onigmo 6.1.1 * Support absent operator https://github.com/k-takata/Onigmo/issues/82 * https://github.com/k-takata/Onigmo/blob/Onigmo-6.1.1/HISTORY ------------------------------------------------------------------------ r57602 | nobu | 2017-02-11 20:37:14 +0900 (Sat, 11 Feb 2017) | 1 line appveyor.yml: extract zlib_version ------------------------------------------------------------------------ r57601 | nobu | 2017-02-11 19:33:05 +0900 (Sat, 11 Feb 2017) | 5 lines fiddle/depend: build-libffi * ext/fiddle/depend (build-libffi): get rid of making $(LIBFFI_A) a sole target, which may be empty when installed libffi is found. ------------------------------------------------------------------------ r57600 | kazu | 2017-02-11 12:12:59 +0900 (Sat, 11 Feb 2017) | 4 lines appveyor.yml: Update zlib * Update zlib to 1.2.11 * Use https instead of http ------------------------------------------------------------------------ r57599 | svn | 2017-02-11 11:14:07 +0900 (Sat, 11 Feb 2017) | 1 line * 2017-02-11 ------------------------------------------------------------------------ r57598 | nobu | 2017-02-11 11:14:06 +0900 (Sat, 11 Feb 2017) | 6 lines parse.y: TOKEN2ID * parse.y (TOKEN2ID): add macro which maps static tokens to IDs. * template/id.h.tmpl (TOKEN2*ID, DEFINE_*ID_FROM_TOKEN): separate into macros, token to ID mapping and enum definitions. ------------------------------------------------------------------------ r57597 | mrkn | 2017-02-10 22:23:58 +0900 (Fri, 10 Feb 2017) | 5 lines bigdecimal: version 1.3.1 Import bigdecimal version 1.3.1. The full commit log is here: https://github.com/ruby/bigdecimal/compare/v1.3.0...v1.3.1 ------------------------------------------------------------------------ r57596 | hsbt | 2017-02-10 18:41:15 +0900 (Fri, 10 Feb 2017) | 7 lines Added initial gemspec for Fcntl module. [Feature #13206] * ext/fcntl/fcntl.gemspec: initial commit. * doc/maintainers.rdoc, doc/standard_library.rdoc: Move Fcntl module to Default gems section. ------------------------------------------------------------------------ r57595 | ko1 | 2017-02-10 17:15:39 +0900 (Fri, 10 Feb 2017) | 2 lines check thread deadness correctly. ------------------------------------------------------------------------ r57594 | nobu | 2017-02-10 15:12:22 +0900 (Fri, 10 Feb 2017) | 9 lines MFLAGS for nmake * common.mk (mflags): pass make flags to sub-makes, for nmake which cannot pass them by the environment variable. * defs/gmake.mk (mflags): filter out -j option for sub-makes. * template/exts.mk.tmpl (MFLAGS): extract MFLAGS from sub extmk files for nmake. ------------------------------------------------------------------------ r57593 | nobu | 2017-02-10 13:24:08 +0900 (Fri, 10 Feb 2017) | 5 lines fiddle: fix $(SUBMAKE_PRE) * ext/fiddle/extconf.rb: fix $(SUBMAKE_PRE) to chdir to $(LIBFFI_DIR) instead of $(@D), since $(LIBFFI_A) is not underneath libffi but under .libs. ------------------------------------------------------------------------ r57592 | nobu | 2017-02-10 12:59:55 +0900 (Fri, 10 Feb 2017) | 4 lines openssl: fix broken openssl check * ext/openssl/deprecation.rb: check for broken OpenSSL only on mac OS. [ruby-core:79475] [Bug #13200] ------------------------------------------------------------------------ r57591 | nobu | 2017-02-10 12:58:02 +0900 (Fri, 10 Feb 2017) | 4 lines openssl: fix broken openssl check * ext/openssl/extconf.rb: check for broken OpenSSL only on mac OS. [ruby-core:79475] [Bug #13200] ------------------------------------------------------------------------ r57590 | nobu | 2017-02-10 12:58:01 +0900 (Fri, 10 Feb 2017) | 4 lines extmk.rb: split notes * ext/extmk.rb: split notes and echo per lines, for multiple lines messages. [ruby-core:79475] [Bug #13200] ------------------------------------------------------------------------ r57589 | nobu | 2017-02-10 10:13:22 +0900 (Fri, 10 Feb 2017) | 5 lines parallel.rb: fix intervention * test/lib/test/unit/parallel.rb (_report): send a response and a newline atomically, to get rid of intervention with "p" which runs in a separate thread. ------------------------------------------------------------------------ r57588 | kazu | 2017-02-10 09:58:47 +0900 (Fri, 10 Feb 2017) | 1 line Use `unpack1` instead of `unpack` and `first` ------------------------------------------------------------------------ r57587 | kazu | 2017-02-10 09:58:45 +0900 (Fri, 10 Feb 2017) | 1 line lib/base64.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57586 | svn | 2017-02-10 01:12:01 +0900 (Fri, 10 Feb 2017) | 1 line * 2017-02-10 ------------------------------------------------------------------------ r57585 | kazu | 2017-02-10 01:12:00 +0900 (Fri, 10 Feb 2017) | 1 line lib/abbrev.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57584 | akr | 2017-02-09 23:28:27 +0900 (Thu, 09 Feb 2017) | 7 lines [DOC] Update an obsolete example for slice_before. The argument for Enumerable#slice_before is is removed at Ruby 2.3. Reported by Shyouhei Urabe. [Bug #13202] ------------------------------------------------------------------------ r57583 | nobu | 2017-02-09 21:08:56 +0900 (Thu, 09 Feb 2017) | 4 lines fiddle: jobserver for libffi * ext/fiddle/depend (libffi): use $(MAKE) explicitly for recursive make, so that jobserver works. ------------------------------------------------------------------------ r57582 | hsbt | 2017-02-09 20:46:32 +0900 (Thu, 09 Feb 2017) | 5 lines Update maintainers list. * Added Default gems section and move some libraries to it section. * Added Bundled gems section and added upstream repositories of bundled gems. * Added upstream repositories to some default gems. ------------------------------------------------------------------------ r57581 | hsbt | 2017-02-09 20:26:21 +0900 (Thu, 09 Feb 2017) | 5 lines Update latest infomation of standard libraries. * Added Bundled gems section. * Added IO::console to Default gems. * Move XMLRPC to Bundled gems section. ------------------------------------------------------------------------ r57580 | hsbt | 2017-02-09 19:49:08 +0900 (Thu, 09 Feb 2017) | 1 line Separated default gems section. ------------------------------------------------------------------------ r57579 | svn | 2017-02-09 16:53:53 +0900 (Thu, 09 Feb 2017) | 1 line * 2017-02-09 ------------------------------------------------------------------------ r57578 | nobu | 2017-02-09 16:53:52 +0900 (Thu, 09 Feb 2017) | 5 lines parse.y: fix idCOLON2 * defs/id.def: remove idDSTAR and idCOLON3. * parse.y (tCOLON2): make same as id.h. ------------------------------------------------------------------------ r57577 | hsbt | 2017-02-08 19:05:13 +0900 (Wed, 08 Feb 2017) | 3 lines Added initial gemspec for DBM module. [Feature #13201] ------------------------------------------------------------------------ r57576 | nobu | 2017-02-08 16:06:37 +0900 (Wed, 08 Feb 2017) | 4 lines parse.y: named caputre into match_op_gen * parse.y (match_op_gen): move making named capture assignment nodes. remove repeated conditions. ------------------------------------------------------------------------ r57575 | ko1 | 2017-02-08 12:59:53 +0900 (Wed, 08 Feb 2017) | 2 lines remove warning about enum and int comparison. ------------------------------------------------------------------------ r57574 | svn | 2017-02-08 10:18:56 +0900 (Wed, 08 Feb 2017) | 1 line * 2017-02-08 ------------------------------------------------------------------------ r57573 | nobu | 2017-02-08 10:18:56 +0900 (Wed, 08 Feb 2017) | 4 lines node.c: compress logop sequence * node.c (dump_node): compress sequence of same logical binary operators, NODE_AND/NODE_OR. ------------------------------------------------------------------------ r57564 | kazu | 2017-02-07 21:49:57 +0900 (Tue, 07 Feb 2017) | 1 line {ext,test}/zlib: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57563 | nobu | 2017-02-07 17:16:50 +0900 (Tue, 07 Feb 2017) | 5 lines test/unit.rb: old GNU make * test/lib/test/unit.rb (Test::Unit::Parallel#non_options): support old GNU make, which uses --jobserver-fds option instead of --jobserver-auth. ------------------------------------------------------------------------ r57562 | nobu | 2017-02-07 17:09:23 +0900 (Tue, 07 Feb 2017) | 4 lines test_parallel.rb: match the count * test/testunit/test_parallel.rb (test_should_run_all_without_any_leaks): match the final test count instead of progressing indicators. ------------------------------------------------------------------------ r57561 | hsbt | 2017-02-07 16:14:22 +0900 (Tue, 07 Feb 2017) | 1 line Fix a required ruby version on gemspec of gemified libraries. ------------------------------------------------------------------------ r57560 | hsbt | 2017-02-07 16:14:21 +0900 (Tue, 07 Feb 2017) | 1 line Added initial gemspec for StringScanner class. ------------------------------------------------------------------------ r57559 | nobu | 2017-02-07 14:19:29 +0900 (Tue, 07 Feb 2017) | 4 lines test/unit.rb: most-asserted * test/lib/test/unit.rb (Statistics#record): record most asserted tests. ------------------------------------------------------------------------ r57558 | ko1 | 2017-02-07 13:24:44 +0900 (Tue, 07 Feb 2017) | 2 lines TRUE is not defined here... ------------------------------------------------------------------------ r57557 | ko1 | 2017-02-07 13:14:25 +0900 (Tue, 07 Feb 2017) | 6 lines remove compare with enum value. * vm_core.h (vm_block_handler_verify): some compilers warn about comparison with enum value and 0. Real assertion is in vm_block_handler_type() so we only need to call vm_block_handler_type() and the value should be TRUE. ------------------------------------------------------------------------ r57556 | nobu | 2017-02-07 12:58:07 +0900 (Tue, 07 Feb 2017) | 4 lines test/unit.rb: defined * test/lib/test/unit.rb (Test::Unit::Statistics#record): check if @longest is set first. ------------------------------------------------------------------------ r57555 | nobu | 2017-02-07 12:55:47 +0900 (Tue, 07 Feb 2017) | 7 lines test/unit: record in parallel * test/lib/test/unit.rb (Test::Unit::Parallel#deal): deal with record. * test/lib/test/unit/parallel.rb (Test::Unit::Worker#record): report test records to the master. ------------------------------------------------------------------------ r57554 | nobu | 2017-02-07 11:49:04 +0900 (Tue, 07 Feb 2017) | 4 lines test/unit.rb: statistics * test/lib/test/unit.rb (Test::Unit::Statistics): show statistics. only --longest option is implemented right now. ------------------------------------------------------------------------ r57553 | svn | 2017-02-07 11:49:03 +0900 (Tue, 07 Feb 2017) | 1 line * 2017-02-07 ------------------------------------------------------------------------ r57552 | nobu | 2017-02-07 11:49:02 +0900 (Tue, 07 Feb 2017) | 3 lines rbinstall.rb: umask hack * tool/rbinstall.rb (Gem::Installer#install): moved umask hack. ------------------------------------------------------------------------ r57551 | kazu | 2017-02-06 22:23:39 +0900 (Mon, 06 Feb 2017) | 1 line {ext,test}/strscan: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57550 | hsbt | 2017-02-06 18:51:17 +0900 (Mon, 06 Feb 2017) | 3 lines Added initial gemspec for FileUtils module. [Feature #13197] ------------------------------------------------------------------------ r57549 | nobu | 2017-02-06 16:34:13 +0900 (Mon, 06 Feb 2017) | 13 lines date_core.c: [DOC] revise docs [ci skip] * fix malformed rdoc for Date#today, Date._strptime, and DateTime._strptime * add code examples for Date#<< and Date#>> to demonstrate that different dates can result in the same return value * use Date::ITALY in call-seq instead of only ITALY * fix some copy/paste mistakes where Date should be DateTime * fix various errors and grammar * fix cross references and formatting [ruby-core:79433] [Bug #13193] Author: Marcus Stollsteimer <sto.mar@web.de> ------------------------------------------------------------------------ r57548 | nobu | 2017-02-06 11:35:48 +0900 (Mon, 06 Feb 2017) | 5 lines rdoc: suppress warnings in eval * lib/rdoc/markup/to_html.rb (RDoc::Markup::ToHtml): the argument text may contain warnings, which are useless to check if parseable. merge rdoc/rdoc#440. ------------------------------------------------------------------------ r57547 | nobu | 2017-02-06 11:35:47 +0900 (Mon, 06 Feb 2017) | 1 line common.mk: suppress debugging messages ------------------------------------------------------------------------ r57546 | nobu | 2017-02-06 08:52:49 +0900 (Mon, 06 Feb 2017) | 4 lines rbinstall.rb: Gem::Installer lacks dir_mode option * tool/rbinstall.rb (bundle-gems): Gem::Installer does not support directory permission option, set umask to owner writable. ------------------------------------------------------------------------ r57545 | nobu | 2017-02-06 08:52:48 +0900 (Mon, 06 Feb 2017) | 1 line rbinstall.rb: rename tags ------------------------------------------------------------------------ r57544 | nobu | 2017-02-06 01:23:12 +0900 (Mon, 06 Feb 2017) | 1 line tool/rbinstall.rb: add new tags ------------------------------------------------------------------------ r57543 | nobu | 2017-02-06 01:23:11 +0900 (Mon, 06 Feb 2017) | 6 lines rbinstall.rb: default umask * tool/rbinstall.rb: revert r49841 and default umask to just prohibit all from writing. symlink(2) has no argument to set permissions but is affected by umask. [ruby-dev:49975] [Bug #13194] ------------------------------------------------------------------------ r57542 | svn | 2017-02-06 01:07:31 +0900 (Mon, 06 Feb 2017) | 1 line * 2017-02-06 ------------------------------------------------------------------------ r57541 | naruse | 2017-02-06 01:07:30 +0900 (Mon, 06 Feb 2017) | 1 line @job_tokens is defined iff @jobserver is true ------------------------------------------------------------------------ r57540 | yui-knk | 2017-02-05 23:16:52 +0900 (Sun, 05 Feb 2017) | 3 lines node.c: Fix a typo * node.c (dump_node): Fix a typo of || operator example ------------------------------------------------------------------------ r57539 | nobu | 2017-02-05 20:15:49 +0900 (Sun, 05 Feb 2017) | 5 lines rational.c: fix rdoc [ci skip] * rational.c (rb_rational_plus): [DOC] fix an example. A patch by Trygve Flathen <at.ruby-lang AT flathen.net> in [ruby-core:71755]. [Bug #11752] ------------------------------------------------------------------------ r57538 | kazu | 2017-02-05 16:54:32 +0900 (Sun, 05 Feb 2017) | 1 line {ext,test}/ripper: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57537 | nobu | 2017-02-05 10:26:27 +0900 (Sun, 05 Feb 2017) | 4 lines pty/shl.rb: update [ci skip] * sample/pty/shl.rb: leap exited child process. [ruby-dev:49974] [Bug #13191] ------------------------------------------------------------------------ r57536 | normal | 2017-02-05 09:22:03 +0900 (Sun, 05 Feb 2017) | 9 lines doc: Add example for Symbol#to_s * string.c: add example for Symbol#to_s. The docs for Symbol#to_s only include an example for Symbol#id2name, but not for #to_s which is an alias; the docs should include examples for both methods. From: Marcus Stollsteimer <sto.mar@web.de> ------------------------------------------------------------------------ r57535 | svn | 2017-02-05 03:14:43 +0900 (Sun, 05 Feb 2017) | 1 line * 2017-02-05 ------------------------------------------------------------------------ r57534 | naruse | 2017-02-05 03:14:42 +0900 (Sun, 05 Feb 2017) | 1 line fix description for current implementation ------------------------------------------------------------------------ r57533 | nobu | 2017-02-04 19:48:15 +0900 (Sat, 04 Feb 2017) | 4 lines pty/shl.rb: update [ci skip] * sample/pty/shl.rb: do not manage array length separately. [ruby-dev:49974] [Bug #13191] ------------------------------------------------------------------------ r57532 | nobu | 2017-02-04 19:48:14 +0900 (Sat, 04 Feb 2017) | 4 lines pty/shl.rb: update [ci skip] * sample/pty/shl.rb: use io/console instead of stty. [ruby-dev:49974] [Bug #13191] ------------------------------------------------------------------------ r57531 | nobu | 2017-02-04 19:48:13 +0900 (Sat, 04 Feb 2017) | 5 lines pty/shl.rb: update [ci skip] * sample/pty/shl.rb: stop writer loop when the child exited. PTY::ChildExited no longer raises asynchronously since r20298. [ruby-dev:49974] [Bug #13191] ------------------------------------------------------------------------ r57530 | kazu | 2017-02-04 15:49:07 +0900 (Sat, 04 Feb 2017) | 5 lines sample/pty/shl.rb: update sample * Specify frozen_string_literal: true. * Fix TypeError of raise. * Use a character literal instead of Integer. ------------------------------------------------------------------------ r57529 | kazu | 2017-02-04 15:49:06 +0900 (Sat, 04 Feb 2017) | 1 line sample/pty/script.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57528 | kazu | 2017-02-04 15:49:04 +0900 (Sat, 04 Feb 2017) | 5 lines sample/pty/expect_sample.rb: Update sample * Fix regexp capture scope bug. * Specify frozen_string_literal: true. * Use passive mode. ------------------------------------------------------------------------ r57527 | kazu | 2017-02-04 15:49:00 +0900 (Sat, 04 Feb 2017) | 1 line ext/pty: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57526 | nobu | 2017-02-04 14:23:48 +0900 (Sat, 04 Feb 2017) | 5 lines test/unit.rb: jobserver for workers * test/lib/test/unit.rb (Test::Unit::Parallel#process_args): initialize @run_options to pass jobserver auth pipes to worker processes. ------------------------------------------------------------------------ r57525 | nobu | 2017-02-04 12:28:17 +0900 (Sat, 04 Feb 2017) | 4 lines test/unit.rb: job tokens * test/lib/test/unit.rb (_run_parallel): deal with job tokens for each workers. ------------------------------------------------------------------------ r57524 | nobu | 2017-02-04 11:17:35 +0900 (Sat, 04 Feb 2017) | 4 lines test/unit.rb: initialize instance variable * test/lib/test/unit.rb (Test::Unit::Parallel#non_options): initialize @jobserver instance variable to suppress warnings. ------------------------------------------------------------------------ r57523 | nobu | 2017-02-04 10:04:14 +0900 (Sat, 04 Feb 2017) | 4 lines test_gem.rb: exclude default gems * test/rubygems/test_gem.rb: check difference to exclude default gems from the expected results. [Feature #13186] ------------------------------------------------------------------------ r57522 | normal | 2017-02-04 08:58:18 +0900 (Sat, 04 Feb 2017) | 14 lines doc: restore class documentation for Struct * struct.c: restore class documentation for Struct that disappeared with r46663. Due to r46663, the class documentation for Struct disappeared. (The revision inserted the definition of `InitVM_Struct` between the rdoc and the definition of `Init_Struct`.) The docs are rendered for 2.1: <https://docs.ruby-lang.org/en/2.1.0/Struct.html>, but not for later versions, see: <https://docs.ruby-lang.org/en/2.2.0/Struct.html> (Same for `ri` pages). [ruby-core:79416] [Bug #13189] ------------------------------------------------------------------------ r57521 | normal | 2017-02-04 08:55:06 +0900 (Sat, 04 Feb 2017) | 8 lines symbol.c (rb_id2str): eliminate branch to set class Since the fstring table encompasses all strings in the symbol table, we may reuse the fstring table walk to set the class and eliminate the branch in rb_id2str. * string.c (Init_String): use rb_cString immediately after definition * symbol.c (rb_id2str): eliminate branch to set class ------------------------------------------------------------------------ r57520 | nobu | 2017-02-04 08:50:41 +0900 (Sat, 04 Feb 2017) | 5 lines ruby.h: unused parameter * include/ruby/ruby.h (rb_scan_args_set): remove unused parameter for more pedantic extension libraries. [ruby-core:79399] [Feature #13184] ------------------------------------------------------------------------ r57519 | normal | 2017-02-04 08:40:59 +0900 (Sat, 04 Feb 2017) | 1 line .gitignore: add ext/rbconfig/sizeof/limits.c ------------------------------------------------------------------------ r57518 | normal | 2017-02-04 08:40:05 +0900 (Sat, 04 Feb 2017) | 3 lines ext/rbconfig/sizeof: add limits.c to svn:ignore ------------------------------------------------------------------------ r57517 | normal | 2017-02-04 08:34:48 +0900 (Sat, 04 Feb 2017) | 8 lines doc: Fix error for escape sequences in string literals Backslash goes first in escape sequences, so it must be "any other character following a backslash is interpreted as ...", while the doc says "...followed by...". Author: Marcus Stollsteimer <sto.mar@web.de> [ruby-core:79418] [Bug #13190] ------------------------------------------------------------------------ r57516 | svn | 2017-02-04 03:25:29 +0900 (Sat, 04 Feb 2017) | 1 line * 2017-02-04 ------------------------------------------------------------------------ r57515 | marcandre | 2017-02-04 03:25:28 +0900 (Sat, 04 Feb 2017) | 3 lines lib/ostruct.rb: Fix returned value of each_pair. From a patch by Marcus Stollsteimer. [Fixes #13169] ------------------------------------------------------------------------ r57514 | nobu | 2017-02-03 21:52:09 +0900 (Fri, 03 Feb 2017) | 4 lines test/unit.rb: share job slots * test/lib/test/unit.rb (Test::Unit::Parallel#_run_parallel): share job slots with GNU 'make'. ------------------------------------------------------------------------ r57513 | nobu | 2017-02-03 21:52:08 +0900 (Fri, 03 Feb 2017) | 4 lines test/unit.rb: job testing flag * test/lib/test/unit.rb (Parallel#non_options): split testing flag and job count by OptionParser. ------------------------------------------------------------------------ r57512 | hsbt | 2017-02-03 21:39:04 +0900 (Fri, 03 Feb 2017) | 3 lines Added initial gemspec for zlib module. [Feature #13186] ------------------------------------------------------------------------ r57511 | nobu | 2017-02-03 15:48:02 +0900 (Fri, 03 Feb 2017) | 4 lines ensured.c: fix conflict * ext/-test-/exception/ensured.c (exc_raise): get rid of conflict with raise(2) in the standard. [ruby-core:79371] [Bug #13176] ------------------------------------------------------------------------ r57510 | nobu | 2017-02-03 15:23:34 +0900 (Fri, 03 Feb 2017) | 4 lines eval.c: hide internal objects * eval.c (rb_ensure): veil internal exception objects not to leak in ensure functions. [ruby-core:79371] [Bug #13176] ------------------------------------------------------------------------ r57509 | nobu | 2017-02-03 15:11:32 +0900 (Fri, 03 Feb 2017) | 4 lines internal.h: fix r57507 * internal.h (rb_overflowed_fix_to_int): invert sign bit. should not set LSB of fixnum value, which is always set, to MSB. ------------------------------------------------------------------------ r57508 | normal | 2017-02-03 03:59:40 +0900 (Fri, 03 Feb 2017) | 10 lines io.c: remove rb_ensure usage for rb_str_tmp_frozen_* calls Using rb_ensure pessimizes the common case and makes the code more difficult to read and follow. If we hit an exceptions during write, just let the GC handle cleanup as the exception is already bad for garbage. * io.c (io_fwrite): call rb_str_tmp_frozen{acquire,release} directly (rb_io_syswrite): ditto (fwrite_do, fwrite_end, swrite_do, swrite_end): remove ------------------------------------------------------------------------ r57507 | naruse | 2017-02-03 02:07:28 +0900 (Fri, 03 Feb 2017) | 1 line fix typo and argument of r57506 ------------------------------------------------------------------------ r57506 | naruse | 2017-02-03 00:54:51 +0900 (Fri, 03 Feb 2017) | 13 lines Use carry flag to reduce instructions NOTE: (1) Fixnum's LSB is always 1. It means you can always run `x - 1` without overflow. (2) Of course `z = x + (y-1)` may overflow. Now z's LSB is always 1, and the MSB of true result is also 1. You can get true result in long as `(1<<63)|(z>>1)`, and it equals to `(z<<63)|(z>>1)` == `ror(z)`. GCC and Clang have __builtin_add_ovewflow: * https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html * https://clang.llvm.org/docs/LanguageExtensions.html#checked-arithmetic-builtins ------------------------------------------------------------------------ r57505 | svn | 2017-02-03 00:12:30 +0900 (Fri, 03 Feb 2017) | 1 line * 2017-02-03 ------------------------------------------------------------------------ r57504 | kazu | 2017-02-03 00:12:29 +0900 (Fri, 03 Feb 2017) | 1 line ext/fcntl: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57503 | kazu | 2017-02-02 21:38:41 +0900 (Thu, 02 Feb 2017) | 1 line Add class name to assert messages ------------------------------------------------------------------------ r57502 | hsbt | 2017-02-02 17:38:54 +0900 (Thu, 02 Feb 2017) | 3 lines Added initial gemspec for Date module. [Feature #13183] ------------------------------------------------------------------------ r57501 | nobu | 2017-02-02 17:02:36 +0900 (Thu, 02 Feb 2017) | 4 lines escape.c: check argument * ext/cgi/escape/escape.c (optimized_unescape): check accept_charset encoding argument. ------------------------------------------------------------------------ r57500 | hsbt | 2017-02-02 16:49:19 +0900 (Thu, 02 Feb 2017) | 3 lines Added initial gemspec for CMath module. [Feature #13182] ------------------------------------------------------------------------ r57499 | nobu | 2017-02-02 16:03:59 +0900 (Thu, 02 Feb 2017) | 6 lines test_cgi_util.rb: encoding tests * test/cgi/test_cgi_util.rb (test_cgi_unescape): \u is useless on old versions. * test/cgi/test_cgi_util.rb (test_cgi_include_unescape): ditto. ------------------------------------------------------------------------ r57498 | nobu | 2017-02-02 14:56:06 +0900 (Thu, 02 Feb 2017) | 5 lines compile.c: restore catch entry sp * compile.c (iseq_build_from_ary_exception): restore stack depth of catch entries. accurate stack depths cannot be calculated from dumped array. ------------------------------------------------------------------------ r57497 | nobu | 2017-02-02 14:45:22 +0900 (Thu, 02 Feb 2017) | 4 lines compile.c: restore misc params * compile.c (rb_iseq_build_from_ary): restore misc params. accurate stack depths cannot be calculated from dumped array. ------------------------------------------------------------------------ r57496 | nobu | 2017-02-02 14:45:21 +0900 (Thu, 02 Feb 2017) | 4 lines compile.c: keyword table for required kwarg * compile.c (iseq_build_kw): keyword table is necessary also when required keyword argumetns only. ------------------------------------------------------------------------ r57495 | nobu | 2017-02-02 14:43:58 +0900 (Thu, 02 Feb 2017) | 6 lines test_iseq_load.rb: refine test_require_integration * test/-ext-/iseq_load/test_iseq_load.rb (test_require_integration): assert with diff. [ci skip] ------------------------------------------------------------------------ r57494 | nobu | 2017-02-02 07:18:28 +0900 (Thu, 02 Feb 2017) | 4 lines test_time.rb: use UTC * test/ruby/test_time.rb (test_strftime_no_hidden_garbage): fix failure due to timezone offset. ------------------------------------------------------------------------ r57493 | svn | 2017-02-02 07:14:23 +0900 (Thu, 02 Feb 2017) | 1 line * 2017-02-02 ------------------------------------------------------------------------ r57492 | nobu | 2017-02-02 07:14:22 +0900 (Thu, 02 Feb 2017) | 5 lines test_queue.rb: fix portability * test/thread/test_queue.rb (test_queue_with_trap): fix portability. use SIGINT instead of SIGUSR2 which is supported on not all platforms. ------------------------------------------------------------------------ r57491 | hsbt | 2017-02-01 18:12:53 +0900 (Wed, 01 Feb 2017) | 6 lines Prepare to make CSV module to default gem. * lib/csv.gemspec: initial gemspec for csv gem. * tool/rbinstall.rb: support gemspec located under lib direcotry like `lib/foo.gemspec` [Feature #13177] ------------------------------------------------------------------------ r57490 | nobu | 2017-02-01 16:40:58 +0900 (Wed, 01 Feb 2017) | 5 lines configure.in: use AC_SEARCH_LIBS * configure.in (--with-gmp, --with-jemalloc): use AC_SEARCH_LIBS to check if no library is required, instead of AC_CHECK_LIB. [ruby-core:79368] [Bug #13175] ------------------------------------------------------------------------ r57489 | nobu | 2017-02-01 13:54:04 +0900 (Wed, 01 Feb 2017) | 7 lines common.mk: remove explicit MFLAGS It is unnecessary to pass MFLAGS to sub-makes, because it is evaluated implicitly if set by make. GNU make 4.2 sets both of -jN and --jobserver-auth (or --jobserver-fds in older versions) options which conflict. And it is useless for command line macros since Microsoft NMAKE does not set them. ------------------------------------------------------------------------ r57488 | nobu | 2017-02-01 13:54:03 +0900 (Wed, 01 Feb 2017) | 1 line win32/setup.mak: reorder ------------------------------------------------------------------------ r57487 | svn | 2017-02-01 02:46:52 +0900 (Wed, 01 Feb 2017) | 1 line * 2017-02-01 ------------------------------------------------------------------------ r57486 | tenderlove | 2017-02-01 02:46:51 +0900 (Wed, 01 Feb 2017) | 6 lines Add IMEMO type to heap dump output. IMEMO objects have many types. Without this change, we cannot see what types of IMEMO objects are being used when dumping the heap. Adding the type to the IMEMO object will allow us to gather statistics about IMEMO objects being used. ------------------------------------------------------------------------ r57485 | nobu | 2017-01-31 21:55:00 +0900 (Tue, 31 Jan 2017) | 4 lines ruby.c: defining DATA * ruby.c (load_file_internal): define DATA here instead of ensure func. ------------------------------------------------------------------------ r57484 | nobu | 2017-01-31 21:54:59 +0900 (Tue, 31 Jan 2017) | 5 lines ruby.c: forbid options * ruby.c (forbid_setid): constified. * ruby.c (process_options): forbid if setid earlier. ------------------------------------------------------------------------ r57483 | naruse | 2017-01-31 19:37:50 +0900 (Tue, 31 Jan 2017) | 4 lines Describe about RUBY_CODESIGN With RUBY_CODESIGN people can avoid pushing many OK button of firewall dialogs on macOS through test-all. ------------------------------------------------------------------------ r57482 | rhe | 2017-01-31 19:08:22 +0900 (Tue, 31 Jan 2017) | 24 lines openssl: import v2.0.3 Import Ruby/OpenSSL 2.0.3. Only bugfixes. The full commit log since 2.0.2 (imported at r57146) can be found at: https://github.com/ruby/openssl/compare/v2.0.2...v2.0.3 ---------------------------------------------------------------- Corey Bonnell (1): Fix for ASN1::Constructive 'each' implementation Kazuki Yamaguchi (10): Fix build with static OpenSSL libraries on Windows ([ruby-core:78878] [Bug #13080]) Merge pull request #96 from CBonnell/master Merge branch 'topic/windows-static-linking-without-pkg-config' into maint appveyor.yml: update OpenSSL version to 1.0.2j buffering: fix typo in doc test/envutil: fix assert_raise_with_message x509: fix OpenSSL::X509::Name#eql? ([ruby-core:79310] [Bug #13170]) ruby-openssl-docker: update versions of Ruby and OpenSSL .travis.yml: test with Ruby 2.4 Ruby/OpenSSL 2.0.3 ------------------------------------------------------------------------ r57481 | hsbt | 2017-01-31 17:48:14 +0900 (Tue, 31 Jan 2017) | 3 lines Initial commit for gem release of webrick. [Feature #13173] ------------------------------------------------------------------------ r57480 | nobu | 2017-01-31 17:03:08 +0900 (Tue, 31 Jan 2017) | 3 lines mkmf.rb: message format string * lib/mkmf.rb (checking_for): message needs format string. ------------------------------------------------------------------------ r57479 | ko1 | 2017-01-31 16:00:38 +0900 (Tue, 31 Jan 2017) | 7 lines allow Queue operation in trap. * thread_sync.c: allow spurious wakeup to check Queue status just after trap. [Bug #12405] * test/thread/test_queue.rb: add a test for it. ------------------------------------------------------------------------ r57478 | ko1 | 2017-01-31 15:39:01 +0900 (Tue, 31 Jan 2017) | 6 lines define rb_thread_sleep_deadly_allow_spurious_wakeup(). * thread.c, thread_sync.c: define new function rb_thread_sleep_deadly_allow_spurious_wakeup() and use it instead of using sleep_forever() directly. ------------------------------------------------------------------------ r57477 | ko1 | 2017-01-31 15:31:06 +0900 (Tue, 31 Jan 2017) | 2 lines use TRUE/FALSE. ------------------------------------------------------------------------ r57476 | normal | 2017-01-31 11:18:58 +0900 (Tue, 31 Jan 2017) | 7 lines time.c (time_strftime): avoid garbage in common case strftime format strings which are dynamically-generated will benefit from avoiding garbage, here. * time.c (time_strftime): use rb_str_tmp_frozen_{acquire,release} * test/ruby/test_time.rb (test_strftime_no_hidden_garbage): new test ------------------------------------------------------------------------ r57475 | nobu | 2017-01-31 11:01:31 +0900 (Tue, 31 Jan 2017) | 4 lines limits.c.tmpl: fallback ULLONG_MAX * template/limits.c.tmpl (ULLONG_MAX): add a fallback definition. On old CentOS lacks ULLONG_MAX. ------------------------------------------------------------------------ r57474 | nobu | 2017-01-31 10:18:10 +0900 (Tue, 31 Jan 2017) | 4 lines test_io.rb: separate a test * test/ruby/test_io.rb (test_closed_stream_in_rescue): run in a separated process. ------------------------------------------------------------------------ r57473 | normal | 2017-01-31 09:41:56 +0900 (Tue, 31 Jan 2017) | 8 lines sprintf.c: avoid garbage in common (no exception) case Format strings which are dynamically-generated will benefit from this. This won't cover exceptions, but exceptions for sprintf should be too uncommon to care about (unlike IO) * sprintf.c (rb_str_format): use rb_str_tmp_frozen_{acquire,release} * test/ruby/test_sprintf.rb (test_no_hidden_garbage): new test ------------------------------------------------------------------------ r57472 | normal | 2017-01-31 07:03:57 +0900 (Tue, 31 Jan 2017) | 8 lines io.c (rb_io_syswrite): avoid leaving garbage after write As with IO#write, IO#syswrite also generates garbage which can be harmful in hand-coded read-write loops. * io.c (swrite_arg, swrite_do, swrite_end): new (rb_io_syswrite): use new functions to cleanup garbage [ruby-core:78898] [Bug #13085] ------------------------------------------------------------------------ r57471 | normal | 2017-01-31 06:54:32 +0900 (Tue, 31 Jan 2017) | 8 lines string.c (rb_str_tmp_frozen_release): release embedded strings Handle the embedded case first, since we may have an embedded duplicate and non-embedded original string. * string.c (rb_str_tmp_frozen_release): handled embedded strings * test/ruby/test_io.rb (test_write_no_garbage): new test [ruby-core:78898] [Bug #13085] ------------------------------------------------------------------------ r57470 | svn | 2017-01-31 05:40:19 +0900 (Tue, 31 Jan 2017) | 1 line * 2017-01-31 ------------------------------------------------------------------------ r57469 | normal | 2017-01-31 05:40:18 +0900 (Tue, 31 Jan 2017) | 37 lines io.c: recycle garbage on write * string.c (STR_IS_SHARED_M): new flag to mark shared mulitple times (STR_SET_SHARED): set STR_IS_SHARED_M (rb_str_tmp_frozen_acquire, rb_str_tmp_frozen_release): new functions (str_new_frozen): set/unset STR_IS_SHARED_M as appropriate * internal.h: declare new functions * io.c (fwrite_arg, fwrite_do, fwrite_end): new (io_fwrite): use new functions Introduce rb_str_tmp_frozen_acquire and rb_str_tmp_frozen_release to manage a hidden, frozen string. Reuse one bit of the embed length for shared strings as STR_IS_SHARED_M to indicate a string has been shared multiple times. In the common case, the string is only shared once so the object slot can be reclaimed immediately. minimum results in each 3 measurements. (time and size) Execution time (sec) name trunk built io_copy_stream_write 0.682 0.254 io_copy_stream_write_socket 1.225 0.751 Speedup ratio: compare with the result of `trunk' (greater is better) name built io_copy_stream_write 2.680 io_copy_stream_write_socket 1.630 Memory usage (last size) (B) name trunk built io_copy_stream_write 95436800.000 6512640.000 io_copy_stream_write_socket 117628928.000 7127040.000 Memory consuming ratio (size) with the result of `trunk' (greater is better) name built io_copy_stream_write 14.654 io_copy_stream_write_socket 16.505 ------------------------------------------------------------------------ r57468 | nobu | 2017-01-30 21:00:34 +0900 (Mon, 30 Jan 2017) | 6 lines common.mk: limits.c * common.mk (ext/rbconfig/sizeof/sizes.c): specify the target explicitly. * common.mk (ext/rbconfig/sizeof/limits.c): add the recipe. ------------------------------------------------------------------------ r57467 | nobu | 2017-01-30 20:45:00 +0900 (Mon, 30 Jan 2017) | 1 line VC18 or later support stdbool.h ------------------------------------------------------------------------ r57466 | svn | 2017-01-30 19:12:19 +0900 (Mon, 30 Jan 2017) | 1 line * properties. ------------------------------------------------------------------------ r57465 | shyouhei | 2017-01-30 19:12:18 +0900 (Mon, 30 Jan 2017) | 15 lines make FIXNUM_MAX visible from Ruby Because our tests now have several places where FIXNUM_MAX is needed, we decided to provide it along with several other constants. * template/limits.c.tmpl: new file, defining RbConfig::Limits * ext/rbconfig/sizeof/depend (limits.c): rule to generate limits.c * test/-ext-/num2int/test_num2int.rb: use RbConfig::Limits * bootstraptest/test_insns.rb: ditto. * .gitignore: ignore new generated file. ------------------------------------------------------------------------ r57464 | ko1 | 2017-01-30 16:39:27 +0900 (Mon, 30 Jan 2017) | 2 lines add a ticket number. ------------------------------------------------------------------------ r57463 | nobu | 2017-01-30 14:09:13 +0900 (Mon, 30 Jan 2017) | 1 line reduce iterations for slower machines ------------------------------------------------------------------------ r57462 | nobu | 2017-01-30 13:54:52 +0900 (Mon, 30 Jan 2017) | 4 lines fix up r57461 * internal.h: Microsoft Visual C++ has never supported C99 yet, even in 2017. ------------------------------------------------------------------------ r57461 | nobu | 2017-01-30 13:47:44 +0900 (Mon, 30 Jan 2017) | 4 lines refine assertions * test/irb/test_ruby-lex.rb (test_prompt): invert confinue flag by FIXME comments. adjust line numbers. ------------------------------------------------------------------------ r57460 | shyouhei | 2017-01-30 13:42:04 +0900 (Mon, 30 Jan 2017) | 30 lines #include <stdbool.h> 17+ years passed since standardized in ISO, 8 years since we added AC_HEADER_STDBOOL to configure.in. I'm quite confident that it's already safe to use <stdbool.h>. I understand that when we introduced AC_HEADER_STDBOOL, <stdbool.h> was remain not included because C standard and SVR4 curses conflicted miserably back then (#1). Though I believe such situation has been fixed already(#2), I'm afraid of your operating system might ship a proprietary curses that still conflicts with the standard. So to avoid potential problem, we limit the inclusion to our internal use only. #1 : 1997 version of SUSv2 said bool is "defined though typedef" in <curses.h>, while C99 said bool is a macro, plus in C++ bool is a keyword. AFASIK the curses library has never been a part of POSIX. #2 : In reality ncurses and NetBSD curses both just follow C99 to include <stdbool.h> from <curses.h>. I think C99 is now widely adopted. ---- * internal.h: #include <stdbool.h> if present. That is believed to be the case for 99.9% systems that lives today. Non-C99, non-C++ situations are intentionally left undefined, advised by Motohiro Kosaki. If you have such compiler, please fill the definition appropriately. ------------------------------------------------------------------------ r57459 | nobu | 2017-01-30 12:57:46 +0900 (Mon, 30 Jan 2017) | 1 line more checks for prompt ------------------------------------------------------------------------ r57458 | svn | 2017-01-30 12:21:16 +0900 (Mon, 30 Jan 2017) | 1 line * 2017-01-30 ------------------------------------------------------------------------ r57457 | nobu | 2017-01-30 12:21:15 +0900 (Mon, 30 Jan 2017) | 1 line test for prompt ------------------------------------------------------------------------ r57456 | nobu | 2017-01-29 21:53:24 +0900 (Sun, 29 Jan 2017) | 1 line test for immature statement ------------------------------------------------------------------------ r57455 | nobu | 2017-01-29 21:53:23 +0900 (Sun, 29 Jan 2017) | 1 line test for top level statement ------------------------------------------------------------------------ r57454 | nobu | 2017-01-29 21:20:26 +0900 (Sun, 29 Jan 2017) | 1 line test for comment ------------------------------------------------------------------------ r57453 | nobu | 2017-01-29 18:51:55 +0900 (Sun, 29 Jan 2017) | 1 line tests for irb lexer ------------------------------------------------------------------------ r57452 | svn | 2017-01-29 10:35:24 +0900 (Sun, 29 Jan 2017) | 1 line * 2017-01-29 ------------------------------------------------------------------------ r57451 | kazu | 2017-01-29 10:35:23 +0900 (Sun, 29 Jan 2017) | 1 line {ext,test}/etc: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57450 | nobu | 2017-01-28 20:27:32 +0900 (Sat, 28 Jan 2017) | 4 lines test/unit.rb: minimum workers * test/lib/test/unit.rb (_run_parallel): launch only necessary workers. ------------------------------------------------------------------------ r57449 | nobu | 2017-01-28 14:31:25 +0900 (Sat, 28 Jan 2017) | 4 lines extmk.rb: remove clean and install mode * ext/extmk.rb (parse_args): remove clean and install mode, now configure mode only. ------------------------------------------------------------------------ r57448 | nobu | 2017-01-28 14:23:39 +0900 (Sat, 28 Jan 2017) | 4 lines extmk.rb: remove direct build mode * ext/extmk.rb (parse_args): --command-output is now mandatory. remove direct build mode. ------------------------------------------------------------------------ r57447 | nobu | 2017-01-28 14:02:41 +0900 (Sat, 28 Jan 2017) | 5 lines extension gems in static-linked-exts * template/configure-ext.mk.tmpl: --no-extstatic option to gems. * template/exts.mk.tmpl: include extension gems. ------------------------------------------------------------------------ r57446 | nobu | 2017-01-28 14:02:39 +0900 (Sat, 28 Jan 2017) | 4 lines mkmf.rb: fix script installation * lib/mkmf.rb (MakeMakefile): fix condition to install script files. ------------------------------------------------------------------------ r57445 | kazu | 2017-01-28 13:36:08 +0900 (Sat, 28 Jan 2017) | 1 line {ext,test}/dbm: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57444 | nobu | 2017-01-28 10:43:29 +0900 (Sat, 28 Jan 2017) | 3 lines exts.mk.tmpl: ruby names * template/exts.mk.tmpl: extract configured ruby names. ------------------------------------------------------------------------ r57443 | svn | 2017-01-28 00:32:50 +0900 (Sat, 28 Jan 2017) | 1 line * 2017-01-28 ------------------------------------------------------------------------ r57442 | naruse | 2017-01-28 00:32:50 +0900 (Sat, 28 Jan 2017) | 1 line fix typo ------------------------------------------------------------------------ r57441 | nobu | 2017-01-27 17:05:06 +0900 (Fri, 27 Jan 2017) | 5 lines extmk.rb: fix for static-linked-ext * ext/extmk.rb (extmake): fix up r57424 for static-linked-ext. separate maybestatic argument from basedir which is given always now. ------------------------------------------------------------------------ r57440 | nobu | 2017-01-27 16:51:58 +0900 (Fri, 27 Jan 2017) | 1 line template/exts.mk.tmpl: fix missing dependencies ------------------------------------------------------------------------ r57439 | nobu | 2017-01-27 16:23:21 +0900 (Fri, 27 Jan 2017) | 1 line template/exts.mk.tmpl: consider EXEEXT ------------------------------------------------------------------------ r57438 | nobu | 2017-01-27 16:16:36 +0900 (Fri, 27 Jan 2017) | 4 lines exts.mk.tmpl: for not GNU makes * template/exts.mk.tmpl: use `cd` then `make` instead of `make -C` when not GNU make. ------------------------------------------------------------------------ r57437 | nobu | 2017-01-27 14:01:18 +0900 (Fri, 27 Jan 2017) | 5 lines leakchecker.rb: get rid of uninitialized Tempfile * test/lib/leakchecker.rb (LeakChecker#find_tempfiles): get rid of errors on uninitialized Tempfile, which can be left when Dir.tmpdir failed or by Tempfile.allocate. ------------------------------------------------------------------------ r57436 | nobu | 2017-01-27 12:24:45 +0900 (Fri, 27 Jan 2017) | 3 lines enum.c: write barrier * enum.c (rb_nmin_run): set the class with write barrier. ------------------------------------------------------------------------ r57435 | nobu | 2017-01-27 12:24:44 +0900 (Fri, 27 Jan 2017) | 1 line enum.c (rb_nmin_run): adjust indent [ci skip] ------------------------------------------------------------------------ r57434 | nobu | 2017-01-27 12:24:43 +0900 (Fri, 27 Jan 2017) | 9 lines Enumerable#{min,min_by,max,max_by} [ci skip] * enum.c: [DOC] Enumerable#{min,min_by,max,max_by} return a sorted array when +n+ argument is used. * enum.c: Small typo : minimum -> maximum [Bug #13161] Author: Eric Duminil <eric.duminil@gmail.com> ------------------------------------------------------------------------ r57433 | nobu | 2017-01-27 11:55:02 +0900 (Fri, 27 Jan 2017) | 4 lines configure-ext.mk.tmpl: fix ext build * template/configure-ext.mk.tmpl: fixed inverted names of target and directory, and chomp the last slash. ------------------------------------------------------------------------ r57432 | kazu | 2017-01-27 09:29:21 +0900 (Fri, 27 Jan 2017) | 1 line {ext,test}/date: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57431 | kazu | 2017-01-27 00:14:02 +0900 (Fri, 27 Jan 2017) | 1 line [DOC] Use Integer instead of Fixnum [ci skip] ------------------------------------------------------------------------ r57430 | svn | 2017-01-27 00:14:01 +0900 (Fri, 27 Jan 2017) | 1 line * 2017-01-27 ------------------------------------------------------------------------ r57429 | kazu | 2017-01-27 00:14:00 +0900 (Fri, 27 Jan 2017) | 1 line lib/weakref.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57428 | kou | 2017-01-26 21:47:51 +0900 (Thu, 26 Jan 2017) | 6 lines Add document for lib/rss/atom.rb [fix GH-1520] Patch by Tsehau Chao. Thanks!!! ------------------------------------------------------------------------ r57427 | ko1 | 2017-01-26 18:57:41 +0900 (Thu, 26 Jan 2017) | 5 lines skip T_IMEMO for VMDEBUG * vm_dump.c (vm_stack_dump_each): skip T_IMEMO object to display for VMDEBUG=3. [Bug #13030] ------------------------------------------------------------------------ r57426 | ko1 | 2017-01-26 18:40:25 +0900 (Thu, 26 Jan 2017) | 2 lines * vm_dump.c: enable to compile with VMDEBUG == 3. ------------------------------------------------------------------------ r57425 | svn | 2017-01-26 17:19:35 +0900 (Thu, 26 Jan 2017) | 1 line * 2017-01-26 ------------------------------------------------------------------------ r57424 | nobu | 2017-01-26 17:19:34 +0900 (Thu, 26 Jan 2017) | 1 line Parallel gem configuration ------------------------------------------------------------------------ r57423 | hsbt | 2017-01-26 16:09:58 +0900 (Thu, 26 Jan 2017) | 4 lines Fix function name for DBM on extension document. Patch by Yuji Yaginuma, @y-yagi <yuuji.yaginuma@gmail.com> [ci skip][fix GH-1519] ------------------------------------------------------------------------ r57422 | nobu | 2017-01-25 23:34:07 +0900 (Wed, 25 Jan 2017) | 4 lines io.c: close before wait * io.c (io_close_fptr): notify then close, and wait for other threads before free fptr. [ruby-core:79262] [Bug #13158] ------------------------------------------------------------------------ r57421 | kazu | 2017-01-25 23:28:42 +0900 (Wed, 25 Jan 2017) | 3 lines [DOC] Add empty example to enum.all? and any? [ci skip] ------------------------------------------------------------------------ r57420 | nobu | 2017-01-25 15:08:16 +0900 (Wed, 25 Jan 2017) | 3 lines regcomp.c: debug function [ci skip] * regcomp.c (print_indent_tree): make a function for debug static. ------------------------------------------------------------------------ r57419 | nobu | 2017-01-25 15:05:51 +0900 (Wed, 25 Jan 2017) | 4 lines .gdbinit: fix on empty strings [ci skip] * .gdbinit (output_string): get rid of "Invalid number 0 of repetitions" error on empty strings. ------------------------------------------------------------------------ r57418 | nobu | 2017-01-25 15:05:50 +0900 (Wed, 25 Jan 2017) | 3 lines .gdbinit: op symbols [ci skip] * .gdbinit (rp_id): add unhandled operator symbols. ------------------------------------------------------------------------ r57417 | svn | 2017-01-25 12:03:53 +0900 (Wed, 25 Jan 2017) | 1 line * 2017-01-25 ------------------------------------------------------------------------ r57416 | ko1 | 2017-01-25 12:03:52 +0900 (Wed, 25 Jan 2017) | 6 lines swithc id_table data structure. * id_table.c: swtich to "simple open addressing with quadratic probing" by Yura Sokolov. For more detail measurements, see [Feature #12180] * id_table.c: remove other algorithms to simplify the source code. ------------------------------------------------------------------------ r57415 | nobu | 2017-01-24 23:52:07 +0900 (Tue, 24 Jan 2017) | 4 lines eval.c: copy special exception * eval.c (setup_exception): make unfrozen copy of special exception before setting up a cause. ------------------------------------------------------------------------ r57414 | nobu | 2017-01-24 16:52:41 +0900 (Tue, 24 Jan 2017) | 1 line parse.y (parser_yylex): remove wrong warning ------------------------------------------------------------------------ r57413 | svn | 2017-01-24 11:38:58 +0900 (Tue, 24 Jan 2017) | 1 line * remove trailing spaces. ------------------------------------------------------------------------ r57412 | hsbt | 2017-01-24 11:38:57 +0900 (Tue, 24 Jan 2017) | 4 lines Update Rubygems 2.6.10 * https://github.com/rubygems/rubygems/commit/2ee5bf9fd3bd7649d3e244bc40107ff32070ef47 * https://github.com/rubygems/rubygems/commit/be510dd4097e65c6a256a6e173d6b724a3a96472 ------------------------------------------------------------------------ r57411 | naruse | 2017-01-24 02:02:08 +0900 (Tue, 24 Jan 2017) | 3 lines Fix typo of URI#escape [Bug #13147] patched by Steve Hill <sghill.dev@gmail.com> ------------------------------------------------------------------------ r57410 | naruse | 2017-01-24 01:58:27 +0900 (Tue, 24 Jan 2017) | 5 lines Prevent GC by volatile [Bug #13150] test/ruby/test_marshal.rb test_context_switch (load) and test_gc (dump) are failed on FreeBSD 10.3 and gcc7 (FreeBSD Ports Collection) 7.0.0 20170115 (experimental); RB_GC_GUARD looks not worked well. ------------------------------------------------------------------------ r57409 | svn | 2017-01-24 00:47:33 +0900 (Tue, 24 Jan 2017) | 1 line * 2017-01-24 ------------------------------------------------------------------------ r57408 | kazu | 2017-01-24 00:47:32 +0900 (Tue, 24 Jan 2017) | 1 line test/test_tmpdir.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57407 | nobu | 2017-01-23 15:16:04 +0900 (Mon, 23 Jan 2017) | 5 lines object.c: no TypeError at Symbol * object.c (special_object_p): uninterned Symbol also should not raise a TypeError but return itself instead, as well as interned Symbols. [ruby-core:79216] [Bug #13145] ------------------------------------------------------------------------ r57406 | nobu | 2017-01-23 14:59:28 +0900 (Mon, 23 Jan 2017) | 4 lines csv.rb: fix field_size_limit check * lib/csv.rb (CSV#shift): the last column is an Array in extended column since r55985. [ruby-dev:49964] [Bug #13149] ------------------------------------------------------------------------ r57405 | nobu | 2017-01-23 13:49:19 +0900 (Mon, 23 Jan 2017) | 6 lines error.c: fixed doc [ci skip] * error.c (exc_message): fixed doc regarding the presence of to_str. [Fix GH-1517] Author: Marc Gauthier <marcg.gauthier@gmail.com> ------------------------------------------------------------------------ r57404 | nobu | 2017-01-23 13:22:23 +0900 (Mon, 23 Jan 2017) | 4 lines configure-ext.mk.tmpl: embed macros * template/configure-ext.mk.tmpl: embed MINIRUBY and SCRIPT_ARGS to get rid of quoting problems of nmake. ------------------------------------------------------------------------ r57403 | nobu | 2017-01-23 12:51:25 +0900 (Mon, 23 Jan 2017) | 11 lines Fix for nmake * common.mk (EXT_MK): use double-quotes and remove SCRIPT_ARGS which contains both types of quotes. * template/configure-ext.mk.tmpl (all): use single-quotes for MAKE which is set by nmake and contains spaces in the path. do not use SCRIPT_ARGS. * template/exts.mk.tmpl (all, static): separate dependency lines, not to become a default target unintentionally. ------------------------------------------------------------------------ r57402 | nobu | 2017-01-23 12:43:43 +0900 (Mon, 23 Jan 2017) | 4 lines configure-ext.mk.tmpl: FORCE * template/configure-ext.mk.tmpl (FORCE): add missing target for BSD make. ------------------------------------------------------------------------ r57401 | nobu | 2017-01-23 11:50:23 +0900 (Mon, 23 Jan 2017) | 7 lines Parallel ext configuration * ext/configure-ext.mk: configure each directories underneath ext in parallel. * template/exts.mk.tmpl: then collect the results. ------------------------------------------------------------------------ r57400 | svn | 2017-01-23 11:47:17 +0900 (Mon, 23 Jan 2017) | 1 line * properties. ------------------------------------------------------------------------ r57399 | shyouhei | 2017-01-23 11:47:16 +0900 (Mon, 23 Jan 2017) | 14 lines improve C0 coverage of insns.def from 65.9% to 96.1% While I was developing my private topic branch I found that the VM itself is not tested very much in `make test` tests. Of course `make test-all` covers vast majority of the VM but running that task is not an immediately possible thing when we are touching the VM. In order to boost development in a rapid cycle I decided to add some tests to the bootstraptest. Here it is. * test_insns.rb: new test that covers insns.def. * runner.rb (#assert_equal): pass extra options to the target so that we can test frozen_string_literal: true situation. ------------------------------------------------------------------------ r57398 | nobu | 2017-01-23 11:19:00 +0900 (Mon, 23 Jan 2017) | 4 lines extinit.c.tmpl: drop after dot * template/extinit.c.tmpl: drop rest from the first dot in the base name of a feature is ignored since r30464. ------------------------------------------------------------------------ r57397 | svn | 2017-01-23 11:18:59 +0900 (Mon, 23 Jan 2017) | 1 line * 2017-01-23 ------------------------------------------------------------------------ r57396 | nobu | 2017-01-23 11:18:59 +0900 (Mon, 23 Jan 2017) | 5 lines extmk.rb: EXTINITS to sub make * ext/extmk.rb: pass EXTINITS to sub make. if the template for extinit.c is modified after extinit.c got compiled, extinit.c will be re-generated together with ruby. ------------------------------------------------------------------------ r57395 | nobu | 2017-01-22 21:50:36 +0900 (Sun, 22 Jan 2017) | 3 lines template/extinit.c.tmpl * template/extinit.c.tmpl: separate from ext/extmk.rb. ------------------------------------------------------------------------ r57394 | nobu | 2017-01-22 17:04:37 +0900 (Sun, 22 Jan 2017) | 5 lines Makefile.sub: refine distclean-ext * win32/Makefile.sub (distclean-ext, realclean-ext): remove extinit.c and suppress error message when failed to remove ext directory. ------------------------------------------------------------------------ r57393 | shyouhei | 2017-01-22 13:14:21 +0900 (Sun, 22 Jan 2017) | 2 lines NEWS for SecureRandom's random source [ci skip] ------------------------------------------------------------------------ r57392 | shyouhei | 2017-01-22 13:02:42 +0900 (Sun, 22 Jan 2017) | 2 lines NEWS for SipHash13 [ci skip] ------------------------------------------------------------------------ r57391 | svn | 2017-01-22 12:06:18 +0900 (Sun, 22 Jan 2017) | 1 line * 2017-01-22 ------------------------------------------------------------------------ r57390 | kazu | 2017-01-22 12:06:17 +0900 (Sun, 22 Jan 2017) | 4 lines Hash#fetch: fix grammar in documentation. [Fix GH-1515][ci skip] Author: Alyssa Ross <hi+services.github@alyssa.is> ------------------------------------------------------------------------ r57389 | kazu | 2017-01-21 21:21:05 +0900 (Sat, 21 Jan 2017) | 1 line lib/tempfile.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57388 | svn | 2017-01-21 15:17:08 +0900 (Sat, 21 Jan 2017) | 1 line * 2017-01-21 ------------------------------------------------------------------------ r57387 | nobu | 2017-01-21 15:17:07 +0900 (Sat, 21 Jan 2017) | 1 line Makefile.in: clean ruby-runner [ci skip] ------------------------------------------------------------------------ r57386 | kazu | 2017-01-20 22:33:06 +0900 (Fri, 20 Jan 2017) | 5 lines Remove deprecated rbconfig/datadir This is deleted at https://github.com/rubygems/rubygems/commit/0e3c2c1f04182990c4c7a0aa53435ad8427342fd in upstream. ------------------------------------------------------------------------ r57385 | nobu | 2017-01-20 19:59:47 +0900 (Fri, 20 Jan 2017) | 4 lines extmk.rb: ignore generated sources * ext/extmk.rb (extract_makefile): ignore generated source files not to reconfigure when in-place build. ------------------------------------------------------------------------ r57384 | shyouhei | 2017-01-20 17:00:00 +0900 (Fri, 20 Jan 2017) | 24 lines SecureRandom should try /dev/urandom first [Bug #9569] * random.c (InitVM_Random): rename Random.raw_seed to Random.urandom. A quick search seems there are no practical use of this method than securerandom.rb so I think it's OK to rename but if there are users of it, this hunk is subject to revert. * test/ruby/test_rand.rb (TestRand#test_urandom): test for it. * lib/securerandom.rb (SecureRandom.gen_random): Prefer OS- provided CSPRNG if available. Otherwise falls back to OpenSSL. Current preference is: 1. CSPRNG routine that the OS has; one of - getrandom(2), - arc4random(3), or - CryptGenRandom() 2. /dev/urandom device 3. OpenSSL's RAND_bytes(3) If none of above random number generators are available, you cannot use this module. An exception is raised that case. ------------------------------------------------------------------------ r57383 | nobu | 2017-01-20 16:45:10 +0900 (Fri, 20 Jan 2017) | 4 lines Keep -jN option * {cygwin,template}/GNUmakefile.in (MFLAGS, MAKEFLAGS): keep -jN option. ------------------------------------------------------------------------ r57382 | shyouhei | 2017-01-20 15:01:23 +0900 (Fri, 20 Jan 2017) | 16 lines switch SipHash from SipHash24 to SipHash13 variant SipHash13 is secure enough to be used in hash-tables, and SipHash's author confirms that. Rust already considered switch to SipHash13: https://github.com/rust-lang/rust/issues/29754#issue-116174313 Jean-Philippe Aumasson confirmation: https://github.com/rust-lang/rust/issues/29754#issuecomment-156073946 Merged pull request: https://github.com/rust-lang/rust/pull/33940 From: Sokolov Yura aka funny_falcon <funny.falcon@gmail.com> Date: Thu, 8 Dec 2016 20:31:29 +0300 Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org> Fixes: [Feature #13017] ------------------------------------------------------------------------ r57381 | nobu | 2017-01-20 13:27:55 +0900 (Fri, 20 Jan 2017) | 5 lines compile.c: optimization of defined? in condition * compile.c (compile_branch_condition): trivial optimization of defined? expression in a branch condition, where a string is not needed, but just a boolean. ------------------------------------------------------------------------ r57380 | nobu | 2017-01-20 11:39:27 +0900 (Fri, 20 Jan 2017) | 5 lines array.c: improve Array#sample * array.c (rb_ary_sample): improve performance when many samples from a large array. based on the patch by tomoya ishida <tomoyapenguin AT gmail.com> in [ruby-dev:49956]. [Bug #13136] ------------------------------------------------------------------------ r57379 | nobu | 2017-01-20 11:27:28 +0900 (Fri, 20 Jan 2017) | 1 line benchmarks for Bug#13136 ------------------------------------------------------------------------ r57378 | svn | 2017-01-20 10:02:38 +0900 (Fri, 20 Jan 2017) | 1 line * 2017-01-20 ------------------------------------------------------------------------ r57377 | nobu | 2017-01-20 10:02:37 +0900 (Fri, 20 Jan 2017) | 4 lines error.c: print default RS * error.c (rb_warn_m): print the default RS instead of an empty string with a newline. [Feature #12944] ------------------------------------------------------------------------ r57376 | nobu | 2017-01-19 18:54:58 +0900 (Thu, 19 Jan 2017) | 4 lines parse.y: rescue/else/ensure in do-end * parse.y (do_body): allow rescue/else/ensure inside do/end blocks. [Feature #12906] ------------------------------------------------------------------------ r57375 | naruse | 2017-01-19 18:34:30 +0900 (Thu, 19 Jan 2017) | 1 line More description about the protected attribute of a method ------------------------------------------------------------------------ r57374 | shugo | 2017-01-19 17:13:03 +0900 (Thu, 19 Jan 2017) | 3 lines string.c: rindex(//) should set $~. This seems a bug introduced by r520 (1.4.0). [ruby-core:79110] [Bug #13135] ------------------------------------------------------------------------ r57373 | nobu | 2017-01-19 16:18:23 +0900 (Thu, 19 Jan 2017) | 4 lines parse.y: chomp by -l * parse.y (rb_parser_while_loop): should chomp but not chop by -l option. [ruby-core:78099] [Bug #12926] ------------------------------------------------------------------------ r57372 | hsbt | 2017-01-19 16:07:17 +0900 (Thu, 19 Jan 2017) | 3 lines Fix documentation of options for all of methods in FileUtils. Patch by galia traub( @galiat ). [Fix GH-1510][ci skip] ------------------------------------------------------------------------ r57371 | nobu | 2017-01-19 15:39:44 +0900 (Thu, 19 Jan 2017) | 4 lines ENV#fetch: fix documentation of raised exception [Fix GH-1514] Author: Misty De Meo <mistydemeo@github.com> ------------------------------------------------------------------------ r57370 | nobu | 2017-01-19 15:25:06 +0900 (Thu, 19 Jan 2017) | 15 lines Change Kernel#warn to call Warning.warn This allows Warning.warn to filter/process warning messages generated by Kernel#warn. Currently, Warning.warn can only handle messages generated by the rb_warn/rb_warning C functions. The Kernel#warn API is different than the Warning.warn API, this tries to get similar behavior, but there are probably corner cases where the behavior is different. This makes str_end_with_asciichar in io.c no longer static so it can be called from error.c. [Feature #12944] Author: Jeremy Evans <code@jeremyevans.net> ------------------------------------------------------------------------ r57369 | nobu | 2017-01-19 14:24:34 +0900 (Thu, 19 Jan 2017) | 1 line id_table.c: fix typo ------------------------------------------------------------------------ r57368 | nobu | 2017-01-19 12:42:07 +0900 (Thu, 19 Jan 2017) | 4 lines compile.c: check err_info * compile.c (iseq_setup): bail out if any errors found. [ruby-core:76531] [Bug #12613] ------------------------------------------------------------------------ r57367 | nobu | 2017-01-19 10:38:59 +0900 (Thu, 19 Jan 2017) | 3 lines parse.y: warn space * parse.y (parser_yylex): warn parentheses after space. ------------------------------------------------------------------------ r57366 | svn | 2017-01-19 03:23:49 +0900 (Thu, 19 Jan 2017) | 1 line * 2017-01-19 ------------------------------------------------------------------------ r57365 | svn | 2017-01-19 03:23:49 +0900 (Thu, 19 Jan 2017) | 1 line * properties. ------------------------------------------------------------------------ r57364 | normal | 2017-01-19 03:23:49 +0900 (Thu, 19 Jan 2017) | 4 lines another benchmark for IO.copy_stream socket writing For testing Linux socket-only workaround for https://bugs.ruby-lang.org/issues/13085 ------------------------------------------------------------------------ r57363 | kazu | 2017-01-18 21:35:10 +0900 (Wed, 18 Jan 2017) | 1 line lib/profiler.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57362 | nobu | 2017-01-18 14:23:53 +0900 (Wed, 18 Jan 2017) | 4 lines vm_method.c: resolve refined method to undef * vm_method.c (rb_undef): resolve the method entry which refines a prepended method entry. [ruby-core:78944] [Bug #13096] ------------------------------------------------------------------------ r57361 | svn | 2017-01-18 12:38:53 +0900 (Wed, 18 Jan 2017) | 1 line * 2017-01-18 ------------------------------------------------------------------------ r57360 | nobu | 2017-01-18 12:38:52 +0900 (Wed, 18 Jan 2017) | 4 lines class.c: non-keyword hash class * class.c (rb_extract_keywords): keep the class of non-keyword elements hash as the original. [ruby-core:77813] [Bug #12884] ------------------------------------------------------------------------ r57359 | nobu | 2017-01-17 21:54:35 +0900 (Tue, 17 Jan 2017) | 4 lines uri/generic.rb: fix exception on non-IP format * lib/uri/generic.rb (URI::Generic#find_proxy): match IP address no_proxy against resolved self IP address. [Fix GH-1513] ------------------------------------------------------------------------ r57358 | kazu | 2017-01-17 21:47:38 +0900 (Tue, 17 Jan 2017) | 1 line lib/pstore.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57355 | normal | 2017-01-17 12:31:57 +0900 (Tue, 17 Jan 2017) | 4 lines rinda/ring.rb (make_socket): do not keep socket on failures This prevents leaked FD warnings on test/rinda/test_rinda.rb when testing on a machine without multicast support. ------------------------------------------------------------------------ r57354 | normal | 2017-01-17 06:42:05 +0900 (Tue, 17 Jan 2017) | 4 lines basicsocket (rsock_bsock_send): do not truncate return value send(2) and sendto(2) syscalls return `ssize_t', use the proper type and macro for converting to a Numeric VALUE. ------------------------------------------------------------------------ r57353 | svn | 2017-01-17 06:08:13 +0900 (Tue, 17 Jan 2017) | 1 line * 2017-01-17 ------------------------------------------------------------------------ r57352 | normal | 2017-01-17 06:08:12 +0900 (Tue, 17 Jan 2017) | 9 lines doc: improve documentation for Binding [ci skip] * remove explicit return from code examples * grammar fixes * other small fixes Patch by: Marcus Stollsteimer <sto.mar@web.de> [ruby-core:79082] [Bug #13132] ------------------------------------------------------------------------ r57339 | kazu | 2017-01-16 21:37:42 +0900 (Mon, 16 Jan 2017) | 1 line Fix a typo [ci skip] ------------------------------------------------------------------------ r57338 | nobu | 2017-01-16 11:56:28 +0900 (Mon, 16 Jan 2017) | 4 lines test_rational.rb: messages * test/ruby/test_rational.rb (test_parse): add messages to assertions. ------------------------------------------------------------------------ r57337 | svn | 2017-01-16 11:43:56 +0900 (Mon, 16 Jan 2017) | 1 line * 2017-01-16 ------------------------------------------------------------------------ r57336 | nobu | 2017-01-16 11:43:55 +0900 (Mon, 16 Jan 2017) | 4 lines file.c: refine message * file.c (rb_get_path_check_convert): refine the error message when the path name contains null byte. ------------------------------------------------------------------------ r57335 | a_matsuda | 2017-01-15 22:45:12 +0900 (Sun, 15 Jan 2017) | 7 lines s/SaveStringValue/SafeStringValue/ Fix a typo in extension.rdoc. Signed-off-by: Akira Matsuda <ronnie@dio.jp> closes #1512 ------------------------------------------------------------------------ r57334 | nobu | 2017-01-15 15:08:09 +0900 (Sun, 15 Jan 2017) | 4 lines .gdbinit: refine rp [ci skip] * .gdbinit (rp, output_string, rp): show the contents after NUL char. ------------------------------------------------------------------------ r57333 | nobu | 2017-01-15 14:50:41 +0900 (Sun, 15 Jan 2017) | 5 lines rbinstall.rb: mimic rubygems wrapper script * tool/rbinstall.rb (app_script_text): move shell script part after comments generated by RubyGems. '#'-lines are comments in both of ruby and shell script. ------------------------------------------------------------------------ r57332 | kazu | 2017-01-15 11:56:04 +0900 (Sun, 15 Jan 2017) | 1 line lib/profile.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57331 | nobu | 2017-01-15 09:45:10 +0900 (Sun, 15 Jan 2017) | 6 lines rbinstall.rb: do nothing if bin script is same * tool/rbinstall.rb (check_executable_overwrite): do nothing if the existing file equals to the wrapper script to be generated. * tool/rbinstall.rb (generate_bin_script): ditto. ------------------------------------------------------------------------ r57330 | svn | 2017-01-15 08:09:56 +0900 (Sun, 15 Jan 2017) | 1 line * 2017-01-15 ------------------------------------------------------------------------ r57329 | normal | 2017-01-15 08:09:55 +0900 (Sun, 15 Jan 2017) | 28 lines mention behavior of Array#join for nested arrays [ci skip] The current documentation for Array#join does not mention the special treatment of nested arrays. It says: > Returns a string created by converting each element of the > array to a string, separated by the given separator. Expected behavior according to the docs would be: [ "a", [1, 2, [:x, :y]], "b" ].join("-") #=> "a-[1, 2, [:x, :y]]-b" # because of: [1, 2, [:x, :y]].to_s #=> "[1, 2, [:x, :y]]" Actual behavior: [ "a", [1, 2, [:x, :y]], "b" ].join("-") #=> "a-1-2-x-y-b" because join is applied recursively for nested arrays. The patch clarifies this behavior. (Also: small markup and grammar fix.) Patch by Marcus Stollsteimer <sto.mar@web.de> [ruby-talk:437238] [ruby-core:79079] [Bug #13130] ------------------------------------------------------------------------ r57328 | nobu | 2017-01-14 18:38:56 +0900 (Sat, 14 Jan 2017) | 5 lines revert r57323 StringIO.new makes the buffer IO.default_external, while StringIO.new("".dup) makes source encoding which is defaulted to UTF-8. ------------------------------------------------------------------------ r57327 | nobu | 2017-01-14 15:13:23 +0900 (Sat, 14 Jan 2017) | 3 lines fix up r57322 * tool/rbinstall.rb: ruby_install_name is used too. ------------------------------------------------------------------------ r57326 | nobu | 2017-01-14 11:26:49 +0900 (Sat, 14 Jan 2017) | 4 lines resolv.rb: byte buffer * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder): treat the data as a byte buffer. ------------------------------------------------------------------------ r57325 | nobu | 2017-01-14 11:26:48 +0900 (Sat, 14 Jan 2017) | 8 lines Made #decode_rdata client to catch errors * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder#get_rr): re-raise an exception from decode_rdata as DecodeError, so it can report them to the top in more informative way. It was not reflecting on errors of data and thus breaking. Client code expects `DecodeError` and knows how to handle broken messages. [Fix GH-1511] ------------------------------------------------------------------------ r57324 | svn | 2017-01-14 11:06:23 +0900 (Sat, 14 Jan 2017) | 1 line * 2017-01-14 ------------------------------------------------------------------------ r57323 | nobu | 2017-01-14 11:06:22 +0900 (Sat, 14 Jan 2017) | 1 line StringIO.new makes a RW buffer ------------------------------------------------------------------------ r57322 | nobu | 2017-01-13 23:15:00 +0900 (Fri, 13 Jan 2017) | 1 line fix prolog in gem wrapper scripts ------------------------------------------------------------------------ r57321 | kazu | 2017-01-13 21:08:29 +0900 (Fri, 13 Jan 2017) | 1 line lib/observer.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57320 | nobu | 2017-01-13 14:58:44 +0900 (Fri, 13 Jan 2017) | 4 lines rbinstall.rb: LIBRUBY_RELATIVE * tool/rbinstall.rb: see LIBRUBY_RELATIVE in CONFIG instead of reading config.h. ------------------------------------------------------------------------ r57319 | nobu | 2017-01-13 14:49:43 +0900 (Fri, 13 Jan 2017) | 4 lines insns.def: float comparison * insns.def (opt_lt, opt_le, opt_gt, opt_ge): optimize flonum and on-heap float comparison. ------------------------------------------------------------------------ r57318 | nobu | 2017-01-13 12:24:22 +0900 (Fri, 13 Jan 2017) | 4 lines error.c: moved * error.c (preface_dump, postscript_dump): CrashReporter directory was used before Mac OS X 10.6. ------------------------------------------------------------------------ r57317 | nobu | 2017-01-13 11:57:45 +0900 (Fri, 13 Jan 2017) | 5 lines error.c: moved * error.c (preface_dump, postscript_dump): moved from rb_vm_bugreport to place the last important message at the very last after [NOTE]. ------------------------------------------------------------------------ r57316 | svn | 2017-01-13 10:46:45 +0900 (Fri, 13 Jan 2017) | 1 line * 2017-01-13 ------------------------------------------------------------------------ r57315 | nobu | 2017-01-13 10:46:45 +0900 (Fri, 13 Jan 2017) | 4 lines vm_dump.c: postscript_dump * vm_dump.c (postscript_dump): mention crash report log twice because important. ------------------------------------------------------------------------ r57314 | kazu | 2017-01-12 21:17:33 +0900 (Thu, 12 Jan 2017) | 1 line lib/net/smtp.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57313 | nobu | 2017-01-12 16:41:35 +0900 (Thu, 12 Jan 2017) | 11 lines immediate message mode of compile error * compile.c (append_compile_error): set Qtrue for erred state with showing the message immediately. * iseq.c (prepare_iseq_build): make immediate message mode if main or top level context, not to show the failed path twice in the first line. * iseq.c (cleanup_iseq_build): raise default message exception if immediate message mode. ------------------------------------------------------------------------ r57312 | nobu | 2017-01-12 14:43:00 +0900 (Thu, 12 Jan 2017) | 4 lines compile.c: invalid yield in main * compile.c (iseq_compile_each): yield cannot be in the main context as well as a top context. ------------------------------------------------------------------------ r57311 | shugo | 2017-01-12 11:19:17 +0900 (Thu, 12 Jan 2017) | 5 lines lib/net/protocol.rb: preserve backtrace information BufferedIO#rbuf_fill should preserve backtrace information when raising EOFError. Otherwise, users get confused when EOFError is leaked out from Net::SMTP etc. [ruby-core:78550] [Bug #13018] ------------------------------------------------------------------------ r57310 | normal | 2017-01-12 08:53:05 +0900 (Thu, 12 Jan 2017) | 5 lines test/rinda/test_rinda: skip multicast tests for unsupported systems This allows "test-all" to pass on systems without multicast support. I leave CONFIG_IP_MULTICAST unset in my Linux kernel .config, nowadays. ------------------------------------------------------------------------ r57309 | normal | 2017-01-12 08:46:05 +0900 (Thu, 12 Jan 2017) | 10 lines test/fiddle/helper: remove special case for x86_64-linux RUBY_PLATFORM is "x86_64-linux" on a 32-bit (x86) Ruby built and running on a 64-bit Linux kernel. I also have a /lib64 directory nowadays because I just installed multi-arch support in userspace. So, fall back to loading based in the size of a packed "unsigned long" type instead of special-casing. Tested with both x86 and x86_64 userspace on 64-bit Linux kernel, as well as x86 with a 32-bit Linux kernel. ------------------------------------------------------------------------ r57308 | svn | 2017-01-12 07:38:51 +0900 (Thu, 12 Jan 2017) | 1 line * 2017-01-12 ------------------------------------------------------------------------ r57307 | normal | 2017-01-12 07:38:50 +0900 (Thu, 12 Jan 2017) | 10 lines random.c (fill_random_bytes_syscall): use "__NR_" prefix on Linux glibc still does not define the SYS_getrandom alias for __NR_getrandom in the Linux kernel. However, installing up-to-date Linux kernel headers (linux-libc-dev >= 3.17 package on Debian) will get the __NR_getrandom syscall number defined properly without relying on glibc. This allows users with a modern kernel+headers to use the getrandom syscall without waiting on glibc support. ------------------------------------------------------------------------ r57306 | kazu | 2017-01-11 23:48:51 +0900 (Wed, 11 Jan 2017) | 1 line lib/net/protocol.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57305 | nobu | 2017-01-11 13:12:56 +0900 (Wed, 11 Jan 2017) | 5 lines variable.c: fix the condition to cache * variable.c (rb_const_set): fix the condition to cache the class path and cache permanent or temporary path corresponding to the outer klass. [ruby-core:79039] [Bug #13120] ------------------------------------------------------------------------ r57304 | nobu | 2017-01-11 11:31:02 +0900 (Wed, 11 Jan 2017) | 4 lines string.c: replacement and block * string.c (rb_enc_str_scrub): only one of replacement and block is allowed. [ruby-core:79038] [Bug #13119] ------------------------------------------------------------------------ r57303 | nobu | 2017-01-11 11:18:45 +0900 (Wed, 11 Jan 2017) | 4 lines string.c: yield invalid part * string.c (rb_enc_str_scrub): yield the invalid part only with ASCII-incompatible. [ruby-core:79039] [Bug #13120] ------------------------------------------------------------------------ r57302 | nobu | 2017-01-11 10:03:37 +0900 (Wed, 11 Jan 2017) | 4 lines string.c: block for scrub with ASCII-incompatible * string.c (rb_enc_str_scrub): honor the given block with ASCII-incompatible encoding. [ruby-core:79039] [Bug #13120] ------------------------------------------------------------------------ r57301 | svn | 2017-01-11 00:28:12 +0900 (Wed, 11 Jan 2017) | 1 line * 2017-01-11 ------------------------------------------------------------------------ r57300 | nobu | 2017-01-11 00:28:11 +0900 (Wed, 11 Jan 2017) | 4 lines compile.c: check compile * compile.c (iseq_compile_each): check if sub nodes succeeded. [ruby-core:76531] [Bug #12613] ------------------------------------------------------------------------ r57299 | nobu | 2017-01-10 22:41:18 +0900 (Tue, 10 Jan 2017) | 4 lines rational.c: short circuit optimization * rational.c (nurat_reduce): short circuit when arguments are ONE, nothing is needed. ------------------------------------------------------------------------ r57298 | nobu | 2017-01-10 22:37:34 +0900 (Tue, 10 Jan 2017) | 3 lines rational.c: f_idiv * rational.c (f_idiv): call rb_int_idiv directly if possible. ------------------------------------------------------------------------ r57297 | kazu | 2017-01-10 21:32:56 +0900 (Tue, 10 Jan 2017) | 1 line lib/net/pop.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57296 | nobu | 2017-01-10 21:18:21 +0900 (Tue, 10 Jan 2017) | 4 lines numeric.c: short circuit optimization * numeric.c (fix_mul): short circuit when multiplication of Bignum and 0 or 1 not to make a Bignum unnecessarily. ------------------------------------------------------------------------ r57295 | svn | 2017-01-10 19:57:26 +0900 (Tue, 10 Jan 2017) | 1 line * 2017-01-10 ------------------------------------------------------------------------ r57294 | nobu | 2017-01-10 19:57:26 +0900 (Tue, 10 Jan 2017) | 4 lines thread.c: fix todo * thread.c (rb_threadptr_pending_interrupt_check_mask): traverse the super class chain instead of making ancestors array. ------------------------------------------------------------------------ r57293 | nobu | 2017-01-09 11:55:39 +0900 (Mon, 09 Jan 2017) | 5 lines vm_insnhelper.c: block argument at tailcall * vm_insnhelper.c (vm_call_iseq_setup_tailcall): check interrupts after set up the new frame, not the passed block to be clobbered by invoked finalizers and so on. [ruby-core:78981] [Bug #13107] ------------------------------------------------------------------------ r57292 | svn | 2017-01-09 11:45:29 +0900 (Mon, 09 Jan 2017) | 1 line * 2017-01-09 ------------------------------------------------------------------------ r57291 | nobu | 2017-01-09 11:45:28 +0900 (Mon, 09 Jan 2017) | 4 lines slex.rb: japanese comment [ci skip] * lib/irb/slex.rb (postproc): translated a japanese comment in ISO-2022-JP. [ruby-core:79017] [Misc #13117] ------------------------------------------------------------------------ r57290 | kazu | 2017-01-08 13:17:08 +0900 (Sun, 08 Jan 2017) | 1 line lib/getoptlong.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57289 | nobu | 2017-01-08 13:04:29 +0900 (Sun, 08 Jan 2017) | 4 lines test_io_console.rb: fix of old CentOS5 * test/io/console/test_io_console.rb (test_winsize): on old CentOS5 window size seems unable to be set across a pty. ------------------------------------------------------------------------ r57288 | nobu | 2017-01-08 12:51:35 +0900 (Sun, 08 Jan 2017) | 4 lines driver.rb: measure_target option [ci skip] * benchmark/driver.rb (BenchmarkDriver.load): restore measure_target option from the loaded results. ------------------------------------------------------------------------ r57287 | nobu | 2017-01-08 12:50:32 +0900 (Sun, 08 Jan 2017) | 4 lines driver.rb: out output file when loading [ci skip] * benchmark/driver.rb: default output file is not used when loading rawdata. ------------------------------------------------------------------------ r57286 | nobu | 2017-01-08 12:46:17 +0900 (Sun, 08 Jan 2017) | 4 lines driver.rb: extract loop times [ci skip] * benchmark/driver.rb (BenchmarkDriver.load): extract loop times from the loaded results to adjust the results. ------------------------------------------------------------------------ r57285 | nobu | 2017-01-08 12:45:34 +0900 (Sun, 08 Jan 2017) | 4 lines driver.rb: adjust name width [ci skip] * benchmark/driver.rb (show_results): count adjusted result marks as the name width. ------------------------------------------------------------------------ r57284 | nobu | 2017-01-08 10:59:54 +0900 (Sun, 08 Jan 2017) | 5 lines variable.c: resolve permanent name only * variable.c (rb_const_set): resolve and cache class name immediately only if the outer class/module has the name, otherwise just set the ID. [ruby-core:79007] [Bug #13113] ------------------------------------------------------------------------ r57283 | nobu | 2017-01-08 10:46:10 +0900 (Sun, 08 Jan 2017) | 1 line benchmarks for [Bug #13113] [ci skip] ------------------------------------------------------------------------ r57282 | nobu | 2017-01-08 08:02:29 +0900 (Sun, 08 Jan 2017) | 4 lines console.c: unpaired size * ext/io/console/console.c (console_set_winsize): reject unpaired pixel size. ------------------------------------------------------------------------ r57281 | svn | 2017-01-08 07:52:03 +0900 (Sun, 08 Jan 2017) | 1 line * 2017-01-08 ------------------------------------------------------------------------ r57280 | nobu | 2017-01-08 07:52:03 +0900 (Sun, 08 Jan 2017) | 4 lines console.c: OOB access * ext/io/console/console.c (console_set_winsize): fix out-of-bounds access. [ruby-core:79004] [Bug #13112] ------------------------------------------------------------------------ r57279 | nobu | 2017-01-07 20:54:10 +0900 (Sat, 07 Jan 2017) | 1 line adjust indent [ci skip] ------------------------------------------------------------------------ r57278 | eregon | 2017-01-07 20:31:53 +0900 (Sat, 07 Jan 2017) | 8 lines fix optimization for hash aset/aref with fstring Patch by Eric Wong [ruby-core:78797]. I don't like the idea of making insns.def any bigger to support a corner case, and "test_hash_aref_fstring_identity" shows how contrived this is. [ruby-core:78783] [Bug #12855] ------------------------------------------------------------------------ r57277 | nobu | 2017-01-07 17:31:03 +0900 (Sat, 07 Jan 2017) | 4 lines bignum.c: unnecessary check * bignum.c (rb_cstr_parse_inum): remove unnecessary check. successive sign is rejected by conv_digit. ------------------------------------------------------------------------ r57276 | svn | 2017-01-07 11:14:08 +0900 (Sat, 07 Jan 2017) | 1 line * 2017-01-07 ------------------------------------------------------------------------ r57275 | kazu | 2017-01-07 11:14:07 +0900 (Sat, 07 Jan 2017) | 1 line lib/fileutils.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57274 | nobu | 2017-01-06 12:11:45 +0900 (Fri, 06 Jan 2017) | 4 lines prelude.rb: Binding#irb [ci skip] * prelude.rb (Binding#irb): [EXPERIMENTAL] automatically require irb and run. [ruby-core:78960] [Bug #13099] ------------------------------------------------------------------------ r57273 | nobu | 2017-01-06 12:02:38 +0900 (Fri, 06 Jan 2017) | 4 lines test_io.rb: squiggly heredoc * test/ruby/test_io.rb (test_threaded_flush): use squiggly here document to strip leading spaces. ------------------------------------------------------------------------ r57272 | svn | 2017-01-06 11:05:36 +0900 (Fri, 06 Jan 2017) | 1 line * 2017-01-06 ------------------------------------------------------------------------ r57271 | kazu | 2017-01-06 11:05:35 +0900 (Fri, 06 Jan 2017) | 1 line lib/delegate.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57270 | nobu | 2017-01-05 16:27:19 +0900 (Thu, 05 Jan 2017) | 3 lines numeric.c: short circuit * numeric.c (int_pow): short circuit when y is 0, always return 1. ------------------------------------------------------------------------ r57269 | nobu | 2017-01-05 16:27:18 +0900 (Thu, 05 Jan 2017) | 4 lines bignum.c: fix rb_cstr_parse_inum endp * bignum.c (rb_cstr_parse_inum): stores the address of the first invalid character when str is too big or contains an underscore. ------------------------------------------------------------------------ r57268 | svn | 2017-01-05 10:00:02 +0900 (Thu, 05 Jan 2017) | 1 line * 2017-01-05 ------------------------------------------------------------------------ r57267 | kazu | 2017-01-05 10:00:01 +0900 (Thu, 05 Jan 2017) | 1 line lib/debug.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57266 | nobu | 2017-01-04 20:06:16 +0900 (Wed, 04 Jan 2017) | 4 lines win32/registry.rb: registry type names * ext/win32/lib/win32/registry.rb (Win32::Registry#read): show registry type names instead of numeric values. ------------------------------------------------------------------------ r57265 | nobu | 2017-01-04 17:21:14 +0900 (Wed, 04 Jan 2017) | 7 lines win32/resolv.rb: ad hoc workaround * ext/win32/lib/win32/resolv.rb (Win32::Resolv::SZ): an ad hoc workaround for broken registry. SearchList and other registry values must be REG_SZ, or Windows ignores anything in those values otherwise. [ruby-dev:49924] [Bug #13081] https://github.com/rubygems/rubygems/issues/1700 ------------------------------------------------------------------------ r57264 | kazu | 2017-01-04 14:47:52 +0900 (Wed, 04 Jan 2017) | 1 line lib/cmath.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57262 | nobu | 2017-01-04 09:30:45 +0900 (Wed, 04 Jan 2017) | 1 line adjust indent [ci skip] ------------------------------------------------------------------------ r57261 | svn | 2017-01-04 07:42:11 +0900 (Wed, 04 Jan 2017) | 1 line * 2017-01-04 ------------------------------------------------------------------------ r57260 | tenderlove | 2017-01-04 07:42:10 +0900 (Wed, 04 Jan 2017) | 16 lines Add `full` option to `ObjectSpace.dump_all` The `full` option includes all slots (even `T_NONE`) in the JSON output. This is to help with debugging heap fragmentation. Here is an example usage: ```ruby File.open('heap.json', 'w') do |f| ObjectSpace.dump_all(output: f, full: true) end ``` The `heap.json` file contains all slots, including empty slots. [Feature #13001] [ruby-core:78468] ------------------------------------------------------------------------ r57259 | nobu | 2017-01-03 19:49:12 +0900 (Tue, 03 Jan 2017) | 4 lines compile.c: fallback nil * compile.c (iseq_compile_each): push fallback nil only when defined guard is added. ------------------------------------------------------------------------ r57258 | nobu | 2017-01-03 18:48:43 +0900 (Tue, 03 Jan 2017) | 4 lines compile.c: omit unnecessary defined guard * compile.c (defined_expr): omit unnecessary defined guard when method call has no receiver and no arguments. ------------------------------------------------------------------------ r57257 | nobu | 2017-01-03 18:47:16 +0900 (Tue, 03 Jan 2017) | 4 lines forwardable.rb: fix branches * lib/forwardable.rb (instance_delegate, single_delegate): fix inverted branches. ------------------------------------------------------------------------ r57256 | nobu | 2017-01-03 18:35:26 +0900 (Tue, 03 Jan 2017) | 5 lines forwardable.rb: use defined? * lib/forwardable.rb (_delegator_method): use defined? operator instead of binding and calling unbound Kernel#respond_to?. a remedy for an performance bottleneck. ------------------------------------------------------------------------ r57255 | nobu | 2017-01-03 17:40:51 +0900 (Tue, 03 Jan 2017) | 5 lines forwardable.rb: use defined? * lib/forwardable.rb (_delegator_method): use defined? operator instead of binding and calling unbound Kernel#respond_to?. a remedy for an performance bottleneck. ------------------------------------------------------------------------ r57254 | svn | 2017-01-03 11:00:02 +0900 (Tue, 03 Jan 2017) | 1 line * 2017-01-03 ------------------------------------------------------------------------ r57253 | kazu | 2017-01-03 11:00:01 +0900 (Tue, 03 Jan 2017) | 1 line lib/benchmark.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57252 | kazu | 2017-01-02 21:20:09 +0900 (Mon, 02 Jan 2017) | 1 line lib/English.rb: Specify frozen_string_literal: true. ------------------------------------------------------------------------ r57251 | duerst | 2017-01-02 10:40:12 +0900 (Mon, 02 Jan 2017) | 1 line adjust spacing [ci skip] ------------------------------------------------------------------------ r57250 | nobu | 2017-01-02 09:22:46 +0900 (Mon, 02 Jan 2017) | 5 lines object.c: rb_class_alloc * object.c (rb_obj_alloc): add pathological check of klass for extension libraries which do not check given arguments properly. [ruby-core:78934] [Bug #13093] ------------------------------------------------------------------------ r57249 | nobu | 2017-01-02 09:03:28 +0900 (Mon, 02 Jan 2017) | 5 lines object.c: rb_class_s_new * object.c (rb_class_new_instance): add pathological check of klass for extension libraries which do not check given arguments properly. [ruby-core:78934] [Bug #13093] ------------------------------------------------------------------------ r57248 | nobu | 2017-01-02 07:20:38 +0900 (Mon, 02 Jan 2017) | 4 lines dir.c: getattrlist on OSX 10.5 * dir.c (is_case_sensitive): use getattrlist() if fgetattrlist() is unavailable, on OSX 10.5. [ruby-core:68829] [Bug #11054] ------------------------------------------------------------------------ r57247 | svn | 2017-01-02 01:42:44 +0900 (Mon, 02 Jan 2017) | 1 line * 2017-01-02 ------------------------------------------------------------------------ r57246 | naruse | 2017-01-02 01:42:43 +0900 (Mon, 02 Jan 2017) | 1 line fix typo [Bug #13091] ------------------------------------------------------------------------ r57245 | nobu | 2017-01-01 18:17:10 +0900 (Sun, 01 Jan 2017) | 1 line test for [Feature #11547] ------------------------------------------------------------------------ r57244 | nobu | 2017-01-01 18:07:56 +0900 (Sun, 01 Jan 2017) | 4 lines variable.c: top-level constant look-up * variable.c (rb_const_search): [EXPERIMENTAL] remove top-level constant look-up. [Feature #11547] ------------------------------------------------------------------------ r57243 | nobu | 2017-01-01 17:22:02 +0900 (Sun, 01 Jan 2017) | 1 line passed block should keep the lambda-ness ------------------------------------------------------------------------ r57242 | svn | 2017-01-01 07:44:32 +0900 (Sun, 01 Jan 2017) | 1 line * 2017-01-01 ------------------------------------------------------------------------ r57241 | hsbt | 2017-01-01 07:44:31 +0900 (Sun, 01 Jan 2017) | 1 line Update submaintainer of default gems. ------------------------------------------------------------------------ r57240 | nobu | 2016-12-31 17:07:58 +0900 (Sat, 31 Dec 2016) | 6 lines vm.c: fix return in lambda * vm.c (invoke_block_from_c_splattable): pass lambda-ness. * vm_eval.c (yield_under): invoke lambda proc properly. [ruby-core:78917] [Bug #13090] ------------------------------------------------------------------------ r57239 | svn | 2016-12-31 09:41:15 +0900 (Sat, 31 Dec 2016) | 1 line * 2016-12-31 ------------------------------------------------------------------------ r57238 | svn | 2016-12-31 09:41:15 +0900 (Sat, 31 Dec 2016) | 1 line * properties. ------------------------------------------------------------------------ r57237 | normal | 2016-12-31 09:41:14 +0900 (Sat, 31 Dec 2016) | 4 lines add benchmark for IO.copy_stream IO#write case I will attempt to reduce garbage in proposed fix for https://bugs.ruby-lang.org/issues/13085 ------------------------------------------------------------------------ r57236 | nobu | 2016-12-30 17:01:34 +0900 (Fri, 30 Dec 2016) | 5 lines rational.c: memory leak in gcd * rational.c (rb_gcd_gmp): fix memory leak. patched by KISHIMOTO, Makoto <ksmakoto AT dd.iij4u.or.jp> in [ruby-dev:49934]. [Bug #13089] ------------------------------------------------------------------------ r57235 | svn | 2016-12-30 01:16:33 +0900 (Fri, 30 Dec 2016) | 1 line * 2016-12-30 ------------------------------------------------------------------------ r57234 | rhe | 2016-12-30 01:16:32 +0900 (Fri, 30 Dec 2016) | 9 lines test/ruby/test_pack.rb: fix test case added by r57187 The test case for String#unpack added by r57187 is not properly testing because the String will be filled after the block invocation. [ruby-core:78841] [Bug #13075] Thanks to nagachika for pointing this out: http://d.hatena.ne.jp/nagachika/20161226/ruby_trunk_changes_57184_57194#r57187 ------------------------------------------------------------------------ r57233 | nobu | 2016-12-29 19:32:48 +0900 (Thu, 29 Dec 2016) | 4 lines rational.c: refactor to_r * rational.c (read_num, read_rat_nos): refactor to curtail creating Rational objects. ------------------------------------------------------------------------ r57232 | nobu | 2016-12-29 18:26:45 +0900 (Thu, 29 Dec 2016) | 4 lines rational.c: fix for mathn * rational.c (read_num, read_rat_nos): dispatch by the type of numerator, for mathn. [ruby-core:78893] [Bug #13084] ------------------------------------------------------------------------ r57231 | svn | 2016-12-29 18:06:00 +0900 (Thu, 29 Dec 2016) | 1 line * 2016-12-29 ------------------------------------------------------------------------ r57230 | nobu | 2016-12-29 18:05:59 +0900 (Thu, 29 Dec 2016) | 4 lines rational.c: canonicalization * rational.c (canonicalization): define always regardless CANON, and remove unnecessary ifdefs. ------------------------------------------------------------------------ r57228 | svn | 2016-12-28 13:40:59 +0900 (Wed, 28 Dec 2016) | 1 line * 2016-12-28 ------------------------------------------------------------------------ r57227 | nobu | 2016-12-28 13:40:58 +0900 (Wed, 28 Dec 2016) | 4 lines numeric.c: reduce fdiv * numeric.c (rb_int_fdiv_double): reduce first for more precise result. [ruby-core:78886] [Bug #13078] ------------------------------------------------------------------------ r57224 | nobu | 2016-12-27 20:43:34 +0900 (Tue, 27 Dec 2016) | 5 lines io.c: fix race between read and close * io.c (io_fillbuf): fix race between read and close and bail out in the case the IO gets closed before the reading thread achieve the lock. [ruby-core:78845] [Bug #13076] ------------------------------------------------------------------------ r57206 | usa | 2016-12-27 18:07:02 +0900 (Tue, 27 Dec 2016) | 5 lines revert a part of r57199 * io.c (io_fillbuf): revert a part of r57199 because it broke IO#getch. see also [Bug #13076] ------------------------------------------------------------------------ r57205 | normal | 2016-12-27 17:52:32 +0900 (Tue, 27 Dec 2016) | 4 lines cont.c: change fiber stack size doc [ci skip] It's many years since we had tiny 4KB fiber stacks :< point to the manpage instead for current, larger sizes. ------------------------------------------------------------------------ r57204 | nobu | 2016-12-27 16:39:29 +0900 (Tue, 27 Dec 2016) | 1 line io.c: use io_close to close ARGF ------------------------------------------------------------------------ r57203 | nobu | 2016-12-27 16:18:27 +0900 (Tue, 27 Dec 2016) | 4 lines io.c: ARGF fd leak * io.c (argf_next_argv): fix leak of fd after breaking in #each method. ------------------------------------------------------------------------ r57202 | nobu | 2016-12-27 16:10:11 +0900 (Tue, 27 Dec 2016) | 5 lines thread.c: fix race between read and close * thread.c (rb_thread_fd_close): wait until all threads using the fd finish the operation, not to free the buffer in use. [ruby-core:78845] [Bug #13076] ------------------------------------------------------------------------ r57201 | svn | 2016-12-27 10:40:40 +0900 (Tue, 27 Dec 2016) | 1 line * 2016-12-27 ------------------------------------------------------------------------ r57200 | hsbt | 2016-12-27 10:40:39 +0900 (Tue, 27 Dec 2016) | 1 line Ignored extracted gem files. ------------------------------------------------------------------------ r57199 | nobu | 2016-12-26 23:14:18 +0900 (Mon, 26 Dec 2016) | 5 lines io.c: fix race between read and close * io.c (io_fillbuf): fix race between read and close, in the case the IO gets closed before the reading thread achieve the lock. [ruby-core:78845] [Bug #13076] ------------------------------------------------------------------------ r57198 | nobu | 2016-12-26 22:31:03 +0900 (Mon, 26 Dec 2016) | 4 lines parse.y: preserve cmdarg stack * parse.y (do_body): preserve cmdarg stack around do/end block. [ruby-core:78837] [Bug #13073] ------------------------------------------------------------------------ r57197 | svn | 2016-12-26 21:00:03 +0900 (Mon, 26 Dec 2016) | 1 line * properties. ------------------------------------------------------------------------ r57196 | kazu | 2016-12-26 21:00:02 +0900 (Mon, 26 Dec 2016) | 1 line Add NEWS for Ruby 2.5.0 ------------------------------------------------------------------------ r57195 | kazu | 2016-12-26 21:00:01 +0900 (Mon, 26 Dec 2016) | 1 line Move from NEWS to doc/NEWS-2.4.0 ------------------------------------------------------------------------ r57194 | nobu | 2016-12-26 19:00:36 +0900 (Mon, 26 Dec 2016) | 4 lines vm_eval.c: Symbol#to_proc and instance_exec * vm_eval.c (yield_under): should evaluate the proc on the first argument. [ruby-core:78839] [Bug #13074] ------------------------------------------------------------------------ r57193 | nobu | 2016-12-26 19:00:34 +0900 (Mon, 26 Dec 2016) | 1 line test/ruby/test_symbol.rb: use begin;end; hack ------------------------------------------------------------------------ r57192 | nobu | 2016-12-26 18:32:07 +0900 (Mon, 26 Dec 2016) | 1 line [Bug #12705] ------------------------------------------------------------------------ r57191 | nobu | 2016-12-26 18:28:48 +0900 (Mon, 26 Dec 2016) | 3 lines get rid of sprintf * missing/strerror.c (strerror): use snprintf instead of sprintf. ------------------------------------------------------------------------ r57190 | nobu | 2016-12-26 18:28:47 +0900 (Mon, 26 Dec 2016) | 4 lines get rid of strcat * regerror.c (onig_vsnprintf_with_pattern): use memcpy with the known length instead of strcat. ------------------------------------------------------------------------ r57189 | nobu | 2016-12-26 18:28:46 +0900 (Mon, 26 Dec 2016) | 10 lines get rid of strcpy * addr2line.c (follow_debuglink): insert global_debug_dir by using memmove instead of copying to temporary buffer. * dln.c (dln_load): use memcpy with the known length instead of strcpy. * gc.c (rb_gc_unprotect_logging): use strdup instead of malloc and strcpy. ------------------------------------------------------------------------ r57188 | nobu | 2016-12-26 17:01:37 +0900 (Mon, 26 Dec 2016) | 5 lines Makefile.sub: refine configuration check * win32/Makefile.sub (config.status): check configured target by reading from config.status, and remove version dependent values from config.h. ------------------------------------------------------------------------ r57187 | rhe | 2016-12-26 15:32:00 +0900 (Mon, 26 Dec 2016) | 7 lines pack.c: avoid returning uninitialized String Fix unpacking with 'b', 'B', 'h' and 'H' format. Do not return an uninitialized String to Ruby before filling the content bytes. Fixes r11175 ("pack.c (pack_unpack): execute block if given with unpacked value instead of creating an array", 2006-10-15). [ruby-core:78841] [Bug #13075] ------------------------------------------------------------------------ r57186 | nobu | 2016-12-26 14:07:54 +0900 (Mon, 26 Dec 2016) | 4 lines Makefile.sub: fix dependency of RUBYDEF * win32/Makefile.sub (RUBYDEF): fix dependency, win32/mkexports.rb requires rbconfig.rb. ------------------------------------------------------------------------ r57185 | nobu | 2016-12-26 08:56:55 +0900 (Mon, 26 Dec 2016) | 4 lines string.c: CRLF in paragraph mode * string.c (rb_str_enumerate_lines): allow CRLF to separate paragraphs. ------------------------------------------------------------------------ r57184 | nobu | 2016-12-26 08:50:09 +0900 (Mon, 26 Dec 2016) | 5 lines string.c: consistent paragraph mode with IO * string.c (rb_str_enumerate_lines): in paragraph mode, do not include newlines which separate paragraphs, so that it will be consistent with IO#each_line. ------------------------------------------------------------------------ r57183 | matz | 2016-12-26 01:53:00 +0900 (Mon, 26 Dec 2016) | 2 lines include/ruby/version.h: Update API version. ------------------------------------------------------------------------ r57182 | svn | 2016-12-26 01:35:52 +0900 (Mon, 26 Dec 2016) | 1 line * 2016-12-26 ------------------------------------------------------------------------ r57181 | matz | 2016-12-26 01:35:51 +0900 (Mon, 26 Dec 2016) | 2 lines version.h (RUBY_VERSION): 2.5.0 development has started. ------------------------------------------------------------------------