Interested *nix users can easily test drive the TCS multi-platform optimizations (sans Fenix) via RVM or rbenv. A huge THANK YOU to Michał Papis for adding TCS to RVM so quickly.
https://github.com/thecodeshop/ruby/wiki/FAQ#wiki-rvm
https://github.com/thecodeshop/ruby/wiki/FAQ#wiki-rbenv
Last but not least, I'm pleased to announce the retirement of Hiroshi's `winio/ruby_1_9_3` patch branch (5d1c0f0) because his work has been committed upstream...for both trunk and 1.9.3.
Bravo!
=== Notable Updates from Previous Release ===
* Yura's 1.9.3 backport of the MRI Bitmap Marking GC. His initial benchmark data at https://docs.google.com/spreadsheet/ccc?key=0AiAJhny-k9SgdFpHWnN2cndNN0NCM3l1OUhDNDRKUXc
* Yura's updated Hash optimizations
* Hiroshi's pull requests merged into Luis' Fenix File optimizations
* Official ruby-core 1.9.3 backports as of ruby_1_9_3@34690
* RubyGems 1.8.17
Recall that Fenix optimizations (a.k.a use the Windows API to make `File.expand_path` much faster) must be explicitly enabled similar to `set RUBYOPT=-rfenix/replace` or `ruby -rfenix/replace ...`
=== Built and Tested On ===
* Windows 7 32bit/MinGW 4.6.2 (1)
* Windows 7 32bit/Windows SDK 7.1 (2)
* Arch 3.2.6 32bit/GCC 4.6.2 (3)
* FreeBSD 9.0 32bit/GCC 4.6.2 (4)
(1) RUBYOPT="-rfenix/replace" make test &&
RUBYOPT="-rfenix/replace" make test-all TESTS='openssl fiddle psych zlib io json mkmf pathname stringio erb fileutils ruby/test_io.rb ruby/test_io_m17n.rb ruby/test_file.rb'
(2) nmake test
(3) make test && make test-all [2 version string failures, 2 WEBrick failures]
(4) make test
=== Build Recipe Summary ===
git co -b tcs-ruby_1_9_3 codeshop/ruby_1_9_3
git rebase winstat/ruby_1_9_3
git rebase st_pool_alloc/ruby_1_9_3
git rebase st_upack/ruby_1_9_3
git rebase fileload-ok/ruby_1_9_3
git rebase cached-lp/ruby_1_9_3
git rebase sorted-lf/ruby_1_9_3
git rebase backport_gc/ruby_1_9_3
git rebase fenix/ruby_1_9_3
# fix `load.c:rb_get_expanded_load_path` merge conflict, `git rebase --continue`
# replace missed `rb_file_expand_path` in `load.c` and `ruby.c`
rake ruby19 local=C:\Users\Jon\Documents\RubyDev\ruby-git dkver=mingw-32-4.6.2
# add Fenix extension (built with MinGW 4.6.2) to sandboxed `site-ruby/1.9.1/i386-msvcrt/`
# run tests
=== Rails 3.2.1 (Win7 32bit) Startup Performance ===
# `rails new rails-empty`
C:\rails-empty>ruby --version
ruby 1.9.3p134 (2012-02-19 revision 34690) [i386-mingw32]
C:\rails-empty>timer ruby script\rails r "puts %Q{$: = %s\n$\" = %s} % [ $LOAD_PATH.size, $LOADED_FEATURES.size ]"
$: = 59
$" = 739
real 7.737
system 5.647
user 2.074
# `rails new rails-empty -d jdbcsqlite3`
C:\rails-empty>set JRUBY_OPTS=
C:\rails-empty>jruby --version
jruby 1.6.6 (ruby-1.8.7-p357) (2012-01-30 5673572) (Java HotSpot(TM) Client VM 1.7.0_02) [Windows 7-x86-java]
C:\rails-empty>timer jruby script\rails r "puts %Q{$: = %s\n$\" = %s} % [ $LOAD_PATH.size, $LOADED_FEATURES.size ]"
$: = 60
$" = 739
real 7.316
system 1.544
user 6.552
# `rails new rails-empty`
C:\rails-empty>ruby --version
tcs-ruby 1.9.3p134 (2012-02-19, TCS patched 2012-02-20) [i386-mingw32]
C:\rails-empty>timer ruby script\rails r "puts %Q{$: = %s\n$\" = %s} % [ $LOAD_PATH.size, $LOADED_FEATURES.size ]"
$: = 59
$" = 739
real 3.744
system 2.542
user 1.201
# TCS + Fenix superpowers...
C:\rails-empty>timer ruby -rfenix/replace script\rails r "puts %Q{$: = %s\n$\" = %s} % [ $LOAD_PATH.size, $LOADED_FEATURES.size ]"
$: = 59
$" = 741
real 1.981
system 1.092
user 0.920
Linux performance results (Ubuntu 11.10 32bit) using a ChiliProject https://www.chiliproject.org/ workload summarized at http://hastebin.com/kiximulepa.prompt
Jon
---
Fail fast. Fail often. Fail publicly. Learn. Adapt. Repeat.
http://thecodeshop.github.com | http://jonforums.github.com/
twitter: @jonforums