1.2.3

## Overview

The Rubinius team is proud to announce the availability of 1.2.1.

1.2.1 is bugfix release for 1.2.0. It contains various bugfixes in functionality and performance improvements.

## About

Rubinius is a high performance environment for running code written in the Ruby programming language. It provides a number of virtual machine features found in other popular language runtimes such as generational garbage collection, Just-In-Time compilation, and compatibility with existing C APIs.

#### Stats

- Release Date: Feb 15th, 2011
- Commits: 258
- Days since last release: 56
- Issues fixed: 21 since 1.2.0

#### Authors

- Brian Ford
- Evan Phoenix
- Dirkjan Bussink
- Victor Hugo Borja
- Yehuda Katz
- Matthew Draper
- Ivan Samsonov
- Konstantin Haase
- Chuck Remes
- Karol Hosiawa
- Michael Jackson
- Santiago Pastorino
- Ari Brown
- Adam Gardiner
- Federico Builes
- Ryan Leavengood
- John Barnette
- burningTyger

## Summary

##### Compatibility

- Fixed compatibility with Passenger 3

##### Closed Issues

- 103e254 FFI: Check for libs by prepending lib too. Fixes #663
- 837ec63 Make set_superclass private to declare intent. Fixes #659
- ab13e56 Return nil for no ip instead of -1, -1 means definition line. Fixes #668
- c3119da Don’t allow nils, so use num2long. Fixes #668
- a42f403 Avoid long DelegatedMethod chains. Fixes #679
- ee5f6b6 Flush data in IO finalizers, run on process exit. Fixes #674
- f276455 Fix lexical scoping issue in eval methods. Fixes #672. Fixes #671
- e473089 Set the proper bytecode position of a when. Fixes #661
- 2758a31 Doesn’t dup & freeze already frozen keys in Hash#[]=. Fixes #665
- 9222e56 msg_controllen should be initialized with CMSG_SPACE, fixes a spec failure on FreeBSD
- dc98d19 Add io/wait. Fixes #648
- a792da8 Remove bunk macro guards. Fixes #655
- b1a7bea Pass the given step through to the enumerator. Fixes #650.
- 3feeacc Support Proc subclasses properly. Fixes #645. Fixes #646.
- 38cfb72 Time.now creates an instance of subclasses if needed. Fixes #644.
- 68f7f11 Use StringValue coercion in String#casecmp. Fixes #626
- c1b4674 Don’t accidently add a nil finalizer. Fixes #643
- f33f88c Descending ranges in String#tr’s to_str aren’t empty. Fixes #620.
- 047a8f4 Added subcommand docs to loader help. Closes #662.
- c3a27b1 String#strip should only remove consecutive null bytes. Closes #625
- ef4166d Use _p in predicates like everywhere else. Closes #658.

##### Bug fixes

- (CRASH) Fix JIT CFG block calculation bug.
- (CRASH) Fix JIT bug creating a block (Fancy).
- (CRASH) Only allow finalizers to be set on references.
- Fix argument coercion to Time.mktime.
- Fix IO.select: it should return any read IO with data buffered.
- Updated RbReadline to 0cc4cb31e.
- Fix Array#inspect to taint the result.
- Fix Array#rindex modication during iteration case.
- Fix Array#inspect to taint result String.
- Fix Array#rindex. It returns an Enumerator when passed no block or argument.
- Fix Array#flatten to ignore nil return from #to_ary.
- Fix Array#product to check the result size first.
- Fix ‘ruby -S gem’ by checking for a gem wrapper before searching PATH.
- Fix Array#[]= from incorrectly changing @start.
- Fix a very broken Array#each_index.
- Ensure Array#shift adjusts indices properly.
- Fix Fixnum#» bit width boundary.
- Create full-named generator methods from insns and aliases for short names.
- Workaround for tr1/unordered_map including on OSX 10.5 GCC 4.0.1.
- Write Agent discovery file to /tmp if possible when TMPDIR not set.
- Improve RUBYOPT support.
- Fix Object#instance_exec. It should raise LocalJumpError.
- Fix Numeric#step.
- Fix Array().
- Fix Array#shuffle! to raise if frozen.
- Fix Array#cycle.
- Remove the Agent thread before exec().
- Add Marshal.restore as an alias for Marshal.load.
- Add UNIXSocket#send_io/recv_io.
- Rename Process.spawn to Process.replace to avoid naming conflict.
- Allow ‘@@’ and ‘@’ to be a valid argument for instance_variable_set.
- Properly mark a thread as dying when it’s killed

##### Minor additions

- Add expect.rb from MRI standard library
- Add thwait.rb from MRI standard library
- Added lib/rss from MRI standard library
- Add missing (and deprecated) alt SHA1 and MD5 classes
- Add thread timing to Struct::Tms, use in benchmark
- Add optional rbc database support

##### Performance

- Fixed melbourne perf regression due to C-API caching.
- Handle String#splice! requests better
- Improve perf of String#[]= ‘’

##### System

- Add Haiku support
- Update config.guess
- A couple changes to build on NetBSD 5.99.

##### Documentation

- Begin documentation of the compiler infrastructure
- Add back Doxygen support for generating VM docs
- Translated contributing and communication into Polish
- Getting-started and contributing Russian translation.
- Translated new troublesooting sections for FreeBSD to spanish.
- Updated troubleshooting docs for FreeBSD execinfo issue.
- Improved howto - write documentation docs.
- Minor improvements to spanish version of memory-analysis

##### C-API

- Add rb_str_buf_new2
- Better RSTRING caching
- Better RARRAY caching
- Add rb_thread_fd_writable