socket (rsock_connect): fix and refactor for blocking

* ext/socket/init.c (rsock_connect): refactor for blocking
  (wait_connectable): clear error before wait
  [Bug #9356]

We no longer use non-blocking sockets to emulate blocking behavior,
so eliminate error-prone and confusing platform-dependent code.
According to POSIX, connect() only needs to be called once in the
face of EINTR, so do not loop on it.

Before waiting on connect, drop any pending errors, since
rb_wait_for_single_fd may not clear the existing error
properly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 2014-09-18

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
ext/zlib/zlib.c (struct gzfile): pack (288 => 272 bytes) on 64-bit

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47619 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
test/-ext-/string/test_modify_expand.rb: increase limit for {je,tc}malloc

In this test, jemalloc and tcmalloc are both more hesitant to
release memory to the kernel than the stock glibc allocator.

Tested on jemalloc 3.6.0 (self-built) and libtcmalloc-minimal 2.0-2
(Debian package) on x86_64-linux

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
vm_method.c: configurable global method cache size

* vm_method.c (Init_Method): make global method cache size
  configurable by environment variable
  "RUBY_GLOBAL_METHOD_CACHE_SIZE"  [Fix GH-719]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
add .tar.xz

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/rubygems/test_gem_specification.rb: '/' is not always the root.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47623 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/rubygems/test_gem_commands_setup_command.rb: @ui uses StringIO
  as its streams, and Encoding.default_external does not effect to
  stringIOs already exist.  so, we need to set external_encoding of
  @ui.outs directly.  this problem (test failure) does not appear in
  the environments default_external is us-ascii or utf-8.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47624 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
string.c: UTF-8 string function

* string.c (rb_utf8_str_new, rb_utf8_str_new_cstr): make UTF-8
  string.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
fbuffer.h: expand arguments

* ext/json/fbuffer/fbuffer.h (fbuffer_to_s): expand arguments, for
  fix with rb_str_new macro.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
NEWS: note --with-jemalloc option [ci skip]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 2014-09-19

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47632 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
class.c: do not freeze meta-meta-class

* class.c (rb_freeze_singleton_class): should not propagate to
  meta-meta-class, and so on, which is shared with the original
  class.  fix occational exceptions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47633 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
error.c: preserve encoding

* error.c (rb_error_frozen_object): preserve encoding of class
  name in error message.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
test_math.rb: use Float#infinite?

* test/ruby/test_math.rb (TestMath#assert_infinity): Float#finite?
  returns true also for NaN, so use Float#infinite? instead.
  [ruby-core:65117] [Feature #10261]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
ruby.h: err rb_check_safe_str explicitly

* include/ruby/ruby.h (rb_check_safe_str, Check_SafeStr): show
  error message to update for obsolete function and macro.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
class.c: do not freeze class of hidden object

* class.c (rb_freeze_singleton_class): get rid of freeze class of
  hidden object to fix segfaults.

* include/ruby/ruby.h (rb_obj_freeze_inline): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47637 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
README.EXT: utf-8 string functions

* README.EXT (String Functions): rb_utf8_str_new() and
  rb_utf8_str_new_cstr().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
string.c: rb_str_new_static

* string.c (rb_str_new_static): create string object with static
  buffer.  incorporated from mruby.

* string.c (rb_{usascii,utf8,enc}_str_new_static): ditto with
  encodings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
intern.h: rb_str_new_literal

* include/ruby/intern.h (rb_str_new_literal): make ruby string
  from literal C-string.  incorporated from mruby.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e