Граф коммитов

28725 Коммитов

Автор SHA1 Сообщение Дата
nobu 096137e84f file.c: File.empty?
* file.c (Init_File): add alias File.empty? to File.zero?.
  [Feature #9969]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-13 05:47:49 +00:00
nobu 134d1ce892 parse.y: massign in cond
* parse.y (assign_in_cond): allow multiple assignment in
  conditional expression.  [Feature #10617]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54558 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-13 05:36:26 +00:00
nobu 1ea1d2e4a7 numeric.c: int_round_zero_p
* bignum.c (rb_big_size): add wrapper function of BIGSIZE and
  rename the method funtion with _m suffix.
* numeric.c (int_round_zero_p): extracted from rb_int_round.
  optimize for Bignum, and convert VALUE returned by Numeric#size
  to long.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-13 05:12:01 +00:00
ko1 9d25813745 * test/ruby/test_basicinstructions.rb: add a test to check access
instance variables on special const objects.

  All of such objects are frozen, so that we can not set instance
  variables for them. But we can read instance variables and return
  default value (nil).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-13 03:03:37 +00:00
nobu 456523e2ed date_core.c: preserve timezone
* ext/date/date_core.c (time_to_time): should preserve timezone
  info.  [ruby-core:74889] [Bug #12271]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-12 11:40:37 +00:00
nobu 6648d61578 compile.c: initialize LABEL fields
* compile.c (new_label_body): initialize bit fields, since
  compile_data_alloc does not clear the memory.  [Bug #12082]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-12 02:51:20 +00:00
kazu 88c7ffb251 fix typos [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-11 12:39:31 +00:00
ko1 6278420729 * vm_backtrace.c (frame2klass): filter only for imemo_ment.
T_IMEMO/imemo_iseq can be passed here.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-11 11:19:52 +00:00
nobu f0226f0a3c compile.c: disable tco with rescue
* compile.c (iseq_optimize): disable tail call optimization in
  rescued, rescue, and ensure blocks.
  [ruby-core:73871] [Bug #12082]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-11 08:43:06 +00:00
nobu 03bf343a9f file.c: apply to argv
* file.c (apply2files): apply to a VALUE vector instead of a
  temporary array.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-10 21:54:41 +00:00
nobu 21992b6cbd registry.rb: fix API names
* ext/win32/lib/win32/registry.rb (DeleteValue, DeleteKey): fix
  API names.  [ruby-core:74863] [Bug #12264]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-10 11:54:17 +00:00
nobu 3cd3c9d74c no argument conversions in rb_realpath_internal
* file.c (rb_realpath_internal): no argument conversions since
  this internal function does not need to_path and encoding
  conversions, not to be affected by the default internal
  encoding.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-10 08:47:44 +00:00
nobu 56417d1f24 load.c: raise name before conversion
* load.c (rb_f_load): raise with the original path name before
  encoding conversion.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-09 01:03:15 +00:00
nobu 3b6c4dad0c bignum.c: rb_cstr_parse_inum
* bignum.c (rb_cstr_parse_inum): [EXPERIMENTAL] new function to
  parse integer in C-string with length.  the name and the
  arguments may be changed in the future.
* bignum.c (rb_str_to_inum): preserve encoding of the argument in
  error messages, and no longer needs to copy non-terminated
  strings.
* bignum.c (rb_str2big_{poweroftwo,normal,karatsuba,gmp}): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-08 17:05:12 +00:00
kazu 990d2d73f1 fix a typo [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-07 16:43:36 +00:00
nobu bcdfef89ae regexp.rdoc: terminators in comments [ci skip]
* doc/regexp.rdoc (comments): [DOC] terminators cannot appear in
  comments.  [ruby-core:74838] [Bug #12256]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-07 10:04:05 +00:00
nobu de3f0a42d8 tkutil.c: fix overrun
* ext/tk/tkutil/tkutil.c (cbsubst_initialize): fix out-of-bound
  access when no arguments given.  `p Tk::Event.new` crashed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-07 02:24:16 +00:00
eregon 4225b29df9 * ext/coverage/coverage.c: Fully reset coverage to not persist global state.
It was returning old file coverages as empty arrays to the user.
  [ruby-core:74596] [Bug #12220]
* ext/coverage/coverage.c (rb_coverages): remove unused static state.
* thread.c: Moved and renamed coverage_clear_result_i to reset_coverage_i.
* test/coverage/test_coverage.rb: improve precision of tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-06 14:29:17 +00:00
nobu 6a79276edd configure.in: fix lgamma_r condition
* configure.in (rb_cv_lgamma_r_m0): fix the condition for
  lgamma_r(-0.0).  [Bug #12249]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-06 13:41:33 +00:00
usa 3f1fc5e42b * tool/downloader.rb (RubyGems.download): follow the change of the
rubygems ssl_certs directory tree introduced by previous commit.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-06 08:40:02 +00:00
hsbt 469bac0f92 * lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.3.
Please see entries of 2.6.3 on
  https://github.com/rubygems/rubygems/blob/master/History.txt

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-06 06:01:14 +00:00
nobu ea736d55f9 configure.in: check lgamma_r(-0.0)
* configure.in (rb_cv_lgamma_r_m0): check if lgamma_r(-0.0)
  returns negative infinity.  [Bug #12249]
* math.c (ruby_lgamma_r): define by the configured result.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-06 05:13:29 +00:00
nobu 84d818678f Logger: simple refactoring
* lib/logger.rb (Logger#level=): remove unnecessary local
  variable.
* lib/logger.rb (Logger#initialize, Logger#reopen): [DOC] mention
  the default values.  cherrypicked from [GH-1319].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-06 01:56:16 +00:00
nobu 39330d6b79 lgamma_r.c: fix at -0.0
* math.c (ruby_lgamma_r): missing/lgamma_r.c is used on Windows,
  since msvcrt does not provide it.
* missing/lgamma_r.c (lgamma_r): fix lgamma(-0.0).
  [ruby-core:74823] [Bug #12249]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-06 01:17:55 +00:00
usa bb7a4c2a00 * math.c (ruby_lgamma_r): mswin's lgamma_r also seems to be wrong.
cf. [Bug #12249]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-05 16:23:39 +00:00
nobu 542d3a071f math.c: fix lgamma
* math.c (ruby_lgamma_r): fix lgamma(-0.0) on mingw and OSX.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-05 15:53:32 +00:00
nobu 41c533446f math.c: fix tgamma
* math.c (ruby_tgamma): fix tgamma(-0.0) on mingw.
  [ruby-core:74817] [Bug #12249]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-05 15:52:02 +00:00
naruse eee2769c0d * ext/nkf/nkf-utf8/nkf.c (mime_putc): fix typo.
[Bug #12202] [ruby-core:74802]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54489 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-05 05:54:03 +00:00
kazu 8fba800f73 fix typos [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-04 16:12:03 +00:00
nobu 176976db33 openssl: Access to ephemeral TLS session key
* ext/openssl/ossl_ssl.c (ossl_ssl_tmp_key): Access to ephemeral
  TLS session key in case of forward secrecy cipher.  Only
  available since OpenSSL 1.0.2.  [Fix GH-1318]
* ext/openssl/extconf.rb: Check for SSL_get_server_tmp_key.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-04 15:06:46 +00:00
nobu 990d709eeb at_exit list
* vm_core.h (rb_vm_struct): make at_exit a single linked list but
  not RArray, not to mark the registered functions by the write
  barrier.  based on the patches by Evan Phoenix.
  [ruby-core:73908] [Bug #12095]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-04 14:37:07 +00:00
svn dc58fbeade * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-04 08:49:18 +00:00
ko1 02f7507453 * gc.c: change deafult value of
RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO 0.3 -> 0.2
  RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO 0.8 -> 0.65

  These values are same as Ruby 2.0.0.

  This change cause GC counts.
  However, generational GC reduced each (minor) GC time and
  increase memory locality. So that not so big impact on my
  benchmarking results.
  (surprizingly, this fix speed up programs on some cases)

  You can change these values by environment variables
  if you feel wrong.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-04 08:49:17 +00:00
ko1 3287bad257 * gc.c (get_envparam_double): take an upper_bound.
And also take an accept_zero flag which allow to accept zero
  even if lower_bound is set.

* gc.c (ruby_gc_set_params): fix parameters.

  RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO set 0.9 as *lower_bound*, so that
  it should be upper_bound.
  Set RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO as lower bound.

  Also set lower/upper bound of RUBY_GC_HEAP_FREE_SLOTS_GOAL_RATIO to
  RUBY_GC_HEAP_FREE_SLOTS_MIN/MAX_RATIO.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-04 08:41:55 +00:00
ko1 eddbebcb19 * vm.c (Init_VM): should pass tokens.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-04 07:42:51 +00:00
nobu b4c0aac4c8 numeric.c: dbl2ival no longer rounds
* numeric.c (flodivmod): round division if it is a finite number
  and module is required.
* numeric.c (dbl2ival): do not round here.
* numeric.c (flo_ceil): use dbl2ival.
* numeric.c (flo_round): round explicitly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-03 00:34:31 +00:00
nobu d2e214736f rb_check_arity returns argc now
* include/ruby/intern.h (rb_check_arity): returns argc.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-02 06:24:19 +00:00
kazu 3e0512bd38 fix typos [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-01 13:00:20 +00:00
duerst 5e9d33ad49 * enc/unicode/case-folding.rb, casefold.h: Data generation to implement
swapcase functionality for titlecase characters. Swapcase isn't defined
  by Unicode, because the purpose/usage of swapcase is unclear anyway.
  The implementation follows a proposal from Nobu, swaping the case of
  each component of a titlecase character individually.
  This means that the titlecase characters have to be decomposed.
* enc/unicode.c: Code using the above data.
* test/ruby/enc/test_case_mapping.rb: Tests for the above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-01 11:58:47 +00:00
nobu 69d6e315b5 improve git repository detection
* configure.in (AC_CONFIG_FILES): $srcdir/.git can be a file pointing
  the real git_dir, such as when the git working tree is a "linked
  working tree" (a working tree created by git-worktree). So use
  git-rev-parse --git-dir to check if $srcdir is the top-level of a git
  repository, not just checking if the $srcdir/.git directory does exist
  or not.  [ruby-core:74759] [Bug #12239]
* tool/change_maker.rb: use tool/vcs.rb to detect VCS. This used to have
  its own VCS detection code, while we have tool/vcs.rb.
* tool/vcs.rb (detect): remove code duplication

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-01 05:55:30 +00:00
normal 280f732215 openssl: accept moving write buffer for write_nonblock
By setting the SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag.
This flag was introduced at the same time as
SSL_MODE_ENABLE_PARTIAL_WRITE in OpenSSL 0.9.4 and makes usage
with non-blocking sockets much easier.

Before this, a Rubyist would need to remember the exact object
which failed to write and reuse it later when the socket became
writable again.  This causes problems when the buffer is given
by another layer of the application (e.g. a buffer is given
by a Rack middleware or application to a Rack web server).

* ext/openssl/ossl_ssl.c (ossl_sslctx_s_alloc):
  enable SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER by default
  [Bug #12126]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 20:33:55 +00:00
eregon 8dd2435877 * thread.c (update_coverage): Do not track coverage in loaded files
after Coverage.result. Avoids out-of-bounds access. [Bug #12237]
* ext/coverage/coverage.c (coverage_clear_result_i): document.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 16:14:52 +00:00
ko1 5951bbecb0 * gc.c: need to set initial value of GC_HEAP_FREE_SLOTS_GOAL_RATIO.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 10:16:48 +00:00
ko1 867693fe3d * gc.c: change additional allocation policy.
Introduce new environement variable
  GC_HEAP_FREE_SLOTS_GOAL_RATIO (goal_ratio) to calculate the ratio
  of additional memory.

  Before this change, we add pages with the following formula
  (when free_slots < total_pages * RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO):
    next_pages = total_pages * RUBY_GC_HEAP_GROWTH_FACTOR

  This addition can allocate too much.

  With this change, we increase pages to satisfy the following formula:
    next_free_slots = next_total_slots * goal_ratio
  where
    next_free_slots = free_slots + adding_slots
    next_total_slots = total_slots + adding_slots.

  If you want to prepare many free slots, increase this ratio.

  If this variable is 0, then simply multiply
  RUBY_GC_HEAP_GROWTH_FACTOR.

* gc.c (get_envparam_double): enable to accept 0.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 09:16:48 +00:00
ko1 9bb740d2ec * gc.c (gc_marks_finish): fix syntax error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 08:49:09 +00:00
ko1 49369ef173 * gc.c: simplify allocate/free detecting logic at the end of marking.
Before this change, heap_pages_min_slots are calculated at the
  beggining sweeping phase. And this value is used at the end of
  *next* marking phase.

  To simplify it, we use this value at the end of this marking phase.
  It means that we don't need to store this value as global state.

  Also heap_pages_max_slots is calculated at the begging of sweeping
  phase and used at the end of sweeping phase.
  To simplify this logic, we introduced new global value
  heap_pages_freeable_pages it means extra pages count we can free.
  gc_sweep_step() checks this value and moves empty pages to tomb_heap
  not more than this value.

  Because of this fix, heap_pages_swept_slots is no longer needed.

* gc.c (rb_objspace_t::heap_pages): restruct the objspace global
  status.

  remove the following fileds
    * swept_slots (and heap_pages_swept_slots)
    * min_free_slots (and heap_pages_min_free_slots)
    * max_free_slots (and heap_pages_max_free_slots)
  And add the following filed.
    * freeable_pages (and heap_pages_freeable_pages)

* gc.c (heap_pages_free_unused_pages): unlink tomb heap pages
  because tomb heap should have only freeable pages.

* gc.c (heap_extend_pages): add parameters for future extension.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 08:21:35 +00:00
ko1 555f6cb089 * gc.c: add GC parameters to configure the following values:
* RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO:
    allocate additional pages when free slots is lower than
    the value (total_slots * (this ratio)).
  * RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO:
    allow to free pages when free slots is greater thatn
    the value (total_slots * (this ratio)).

  Before this change, these values are hard coded.

* gc.c (ruby_gc_params_t): ditto.

* gc.c (ruby_gc_set_params): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 07:45:13 +00:00
ko1 9a008c5865 * gc.c (gc_verify_heap_page): check the number of zombies.
* gc.c (gc_verify_heap_pages): check also tomb heap.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 07:02:40 +00:00
ko1 f46b5bcfaf * gc.c (gc_page_sweep): return free slots count.
* gc.c (gc_sweep_step): use returned free slots count.

* gc.c (gc_sweep_step): change variable name `next'
  to `next_sweep_page'.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 06:51:27 +00:00
nobu add0ae5103 date_core.c: fix indent
* ext/date/date_core.c (d_lite_strftime, dt_lite_strftime): [DOC]
  fix indent not to be a big sole verbatim.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-31 02:33:51 +00:00