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]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (exe/ruby): force link exe/ruby with miniruby.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (exe/ruby): make fixed name symbolic link exe/ruby to
exe/$(PROGRAM), to run hardcoded bundler tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60005 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (golf): MAINOBJ must be single object file name, so
moved golf_prelude to EXTOBJS. [ruby-dev:50214] [Bug #13854]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59767 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
- 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
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
To suppress warnings of Fixnum.
Also simplecov-html updated (v0.10.0 -> v0.10.2).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This reverts r58919.
Apparently skipping exts is intentional since r58759
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58923 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (*-rubyspec): rename to *-spec because rubyspec is historical name.
of course, *-rubyspec are still available for compatibility.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58746 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (yes-test-rubyspec): make test-rubyspec-precheck for
fake.rb to setup build configuration.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (ripper.c): use relative path as VPATH instead of
absolute path of the current working directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk: make the directory for extension shared library with
the timestamp directory.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(This is a retry of r58559, it should work now that rubyspec does
no longer check for unicode_normalized to be required. See also
41176ead68.)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58577 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk: use the same timestamp file for architecture specific
directory as the file used in Makefiles under ext.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk ($(ENC_MK)): use $(BOOTSTRAPRUBY) as well as $(RBCONFIG),
instead of $(MINIRUBY).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* It would also #load (because .mspec cannot be #require'd) it twice.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
It is never used. We don't need it anyway as it's part of C89 which is
our current minimum requirement.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (build-ext): separate note from building extensions,
not to be intermingled. [ruby-core:80759] [Feature #13302]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58414 b2dd03c8-39d4-4d8f-98ff-823fe69b080e