brentr edited this page Oct 12, 2011 · 16 revisions
Clone this wiki locally

This is a forked repository. Have a look at
rubyspec’s matzruby wiki
for more information.

This git fork picks up from where the code posted here leaves off. Please read this first

The working branches are called:

v1_8_7_352-mbari #MBARI patches for MRI 1.8.7 patchlevel 352

v1_8_7_72-mbari #MBARI patches for MRI 1.8.7 patchlevel 72

v1_8_6_287-mbari #MBARI patches for MRI 1.8.6 patchlevel 287

The V1_8_7_352-mbari branch is was added Oct. 12, 2011. It passes all tests in the ruby “make check” suite, running them about 5% faster using about 5% less memory than unpatched MRI ruby 1.8.7-352. More dramatic performance improvements typically are observed with long running, multithreaded ruby apps.

What’s new here:

By default, the current MBARI patches from git hub identify themselves as:

ruby 1.8.7 (2011-10-12 MBARI 8/0x8770 on patchlevel 352)

They include some of the clean ups contributed by Nobuyoshi Nakada at ruby-core.
All API changes disabled by default. Normally, one would enable the API changes documented on the website very by adding:


to configure command.

There’s also a —wipe-sites=0xHEX configure option to override the default stack clearing policy.

configure --help

will show details about this and other configuration options.

MBARI patched versions without support for the new API will identify themselves as:

ruby -v

ruby 1.8.x (2009-mm-dd mbari …

Versions with the MBARI_API support identify themselves like this:

ruby -v

ruby 1.8.x (2009-mm-dd MBARI

How to build from scratch:

git clone git://github.com/brentr/matzruby
git checkout -b mbari origin/v1_8_7_352-mbari
./configure --enable-pthread --enable-mbari-api  #add CFLAGS as appropriate per comment below
make install   #will install patches Ruby version under /usr/local

If using gcc version later than 4.1, I recommend configuring with the following CFLAGS:

./configure --enable-pthread --enable-mbari-api  CFLAGS="-Wall -g -O2 -fno-stack-protector"

The -fno-stack-protector option has been found to improve the performance of the MBARI patches’ stack clearing algorithm.
—enable-pthread is required for compatibility with Debian tcl libraries. Your platform may not require it.
Ruby threads will be faster if the —enable-pthread option can be omitted from configure.