summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-05-23skip on Solaris 11naruse
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 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23Dir as base optionnobu
* dir.c (glob_helper): support Dir instance as `base` option. [Feature#13056] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23test_dir.rb: sortnobu
* test/ruby/test_dir.rb (test_glob_base): sort the globbed result to compare. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23Dir.glob base optionnobu
* dir.c (dir_s_aref, dir_s_glob): add new optional keyword argument, `base`. [Feature#13056] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23readonly srcdirnobu
.travis.yml: make srcdir unwritable during build and tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23out-of-place on travisnobu
* .travis.yml (before_script, script): out-of-place build. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23fix FD leaksnobu
* test/net/http/test_http.rb (test_s_start): finish connections to get rid of FD leaks. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58855 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23LABEL_FORMATnobu
* compile.c (LABEL_FORMAT): extract format string for labels. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23unused membernobu
* vsnprintf.c (__sFILE): _lbfsize is not used. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23Use test-unit 3.2.4kou
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23readonly srcdirnobu
appveyor.yml: make srcdir unwritable during build and tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58851 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-23appveyor.yml: remove unused UNICODE_DATA_DIRnobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22* 2017-05-23svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22variable.c (autoload_sleep_done): avoid needless list_node initnormal
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/ git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22source directory may not be writablenobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22lib/net/protocol.rb: account read_bytes before caller sees itnormal
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 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22hash.c: [DOC] fix docs for Hash#transform_values!rhe
Hash#transform_values! returns the receiver rather than a new Hash object. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22net/imap: separate @continuation_request_exception from @exceptionshugo
Otherwise literal data will be sent even if NO response is returned because @exception is set to nil in receive_responses. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22downloader.rb: true symlink on cygwinnobu
* 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58843 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22erb.rb: Skip creating regexpk0kubun
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] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22fix r58833nobu
* tool/downloader.rb (Downloader.download): just link to the cache when downloaded to the cache but not the target file. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21lib/net/protocol: clear short-lived read buffernormal
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) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21String#casecmp no longer raises TypeErrorstomar
* See https://bugs.ruby-lang.org/issues/13312 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21NEWS: String#{casecmp,casecmp?} [Bug #13312]stomar
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58838 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21string.c: fix String#{casecmp,casecmp?} for non-string argumentsstomar
* 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] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21test_string.rb,test_symbol.rb: add some testsstomar
* test/ruby/test_string.rb: add more test cases for String#casecmp. * test/ruby/test_symbol.rb: ditto for Symbol#{casecmp,casecmp?}. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58836 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21Use should_receive expectation instead of singleton methodstomar
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21* 2017-05-22svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21downloader cachenobu
* tool/downloader.rb (Downloader.download): manage download cache. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21remove verify optionnobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21downloader.rb: utilize dir argumentnobu
* tool/downloader.rb (Downloader::RubyGems.download): utilize `dir` argument of Downloader.download. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21Add missing word in transform_values methods descriptionkazu
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> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21Improve Time#+ & Time#- performancewatson1978
* 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 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58829 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21Improve Time#<=> performancewatson1978
* 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 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58828 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21Remove redundant square bracketskazu
Use character class directly instead of character class in character class. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20erb.rb: Allow trimming CR in all trim_modesk0kubun
to unify a behavior with r58823 and r58825. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20erb.rb: Allow explicit trimming carriage returnk0kubun
when trim_mode is "-", for Windows environments. [ruby-core:39625] [Bug #5339] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20doc/maintainers.rdoc: Add me to ERB maintainersk0kubun
The current maintainer suggested this in ruby-dev:50113. Please ping me if an issue happens in ERB. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20erb.rb: Allow trimming carriage returnk0kubun
when trim_mode is "<>", for Windows environments. [Bug #11464] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20erb.rb: Prevent potential unexpected rescuek0kubun
of LoadError in some method calls, not from `require "strscan"`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58822 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20* 2017-05-21svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20Clean proxynaruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58820 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20erb.rb: Drop unused scanner implementationk0kubun
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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20* properties.svn
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20Add coverage measurement mode by using gcovmame
This experimental feature is only for Ruby-core team, not for casual users. Usage: `./configure --enable-gcov && make && make exam && make gcov` git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20ripper.c should have `#line "ripper.c"`, not `#line "parse.c"`mame
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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20compile.c: optimize branchesnobu
* compile.c (compile_branch_condition, iseq_compile_each0): eliminate unreachable branches in NODE_IF. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58815 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20compile.c: binary logop checknobu
* compile.c (compile_branch_condition): turn recursion at binary logical operator into loop by goto, and check the result of RHS of NODE_OR. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20prime.rb: remove alias after timeout teststomar
* test/test_prime.rb: remove alias after timeout test. * lib/prime.rb: fix typo. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-20speed up IO#close with many threadsnormal
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 :< git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58812 b2dd03c8-39d4-4d8f-98ff-823fe69b080e