1.2.3

## Overview

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

1.2.0 is the first feature release since 1.1, containing various feature introductions, performance improvements, and bugfixes.

## 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: December 21th, 2010
- Commits: 242
- Days since last release: 36
- Issues fixed: 17 since 1.1.1, 52 since 1.1.0

#### Authors

- Evan Phoenix
- Brian Ford
- Dirkjan Bussink
- Christopher Bertels
- Matthew Draper
- Victor Hugo Borja
- Ivan Samsonov
- Konstantin Haase
- Eric Kidd
- Adam Gardiner

## Summary

##### Major additions

- Upgrade to LLVM 2.8
- Add a VM level bytecode verifier
- Add Module#dynamic_method for easily creating bytecode methods
- Compile printf strings to rbx bytecode

##### Tooling

- Various debugger fixes
- Fix incorrect line number issues
- Fix Debugger.start in ruby-debug compat mode

##### Performance

- Improve performance of Array#[]=
- General Array performance improvements
- Improve performance of Fixnum#pow and Bignum#pow
- Fix bug in JIT FFI inliner

##### System

- Add fixes for OpenBSD on a few platforms
- Improve build system to use system settings better
- Run through testing on PPC Linux
- Cleaned up /bin dir. Added links for common commands
- Add detection for gem exes in ARG0 check
- Allow rbx to be linked as a different name to start subcommand

##### Documentation

- Add new docs/website setup
- Add documentation on VM instructions
- Begin German and Spanish translations of docs
- Fix ‘rbx report’ to use HTTPS

##### Bug fixes

- Allow for English pseudo globals
- Import fix from MRI for Complex
- Fix IO.select bug related to STDIN
- Add meta_to_s for use in string interpolation
- Add/fix/improve instruction documentation
- Fix crashing bug in string_build instruction
- Fix edge case in Bignum#»
- Fixed MatchData#names to return strings
- Fixed Hash#initialize to return self
- Fixed Bignum#<=> with an object instance
- Conform to MRI behavior for strings with malformed characters
- Fix heap dump to walk Data objects properly from the Query Agent
- Sort out proper logic for Proc.new relating to C-API.
- Don’t call Module.append_features from Kernel#extend

##### C-API

- Implement rb_yield_splat
- Implement rb_f_sprintf
- Add rb_proc_new
- Fix C-API IO from consuming all file descriptors
- Convert C-API T_xxx enums to defines

##### Closed Issues

- 1a3dce7 %0f is also an allowed format. Fixes #613
- 069061e Force the timezone on checking a Time object. Fixes #615
- a101f9c Test what a pipe is properly. Fixes #605.
- 8833997 Add fixes for OpenBSD on a few platforms. Fixes #586
- 3bb893d Detect and reject rtti being off. Fixes #602
- 4377c50 Only consider certain lines. Fixes #578
- a6952da Remove pathalogical case from Array#[]=. Fixes #604
- ae95ec3 Fix line tuple generation. Fixes #598
- 2624302 Allow for English pseudo globals. Fixes #584
- 94f68ec Be able to select on fd 0. Fixes #591
- be57451 Add ability to know what ip really means. Fixes #590
- 3b2cbad Pull in compiling env flags into RbConfig. Fixes #597
- fa335af Add meta_to_s for use in string interpolation. Fixes #596
- 9c38609 Implement rb_yield_splat. Fixes #588
- bf27a3b Fix the position of a method call to be the position of the recv. Fixes #571
- 79f4069 Dir.glob yields if there is a block. Fixes #579
- 8912734 Match an empty string properly. Fixes #573