# Rubinius : Use Ruby™
Rubinius is an implementation of the Ruby programming language. The Rubinius bytecode virtual machine is written in C++. The bytecode compiler is written in pure Ruby. The vast majority of the core library is also written in Ruby, with some supporting primitives that interact with the VM directly.
Author: Less Than Three. <3. http://less.thanthree.com

1.2.3

## Overview

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

1.2.3 is a bugfix release for 1.2.2. It contains a complement of bugfixes 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.

## Summary

#### Stats

- Release Date: Mar 15, 2011
- Commits: 212
- Days since last release: 21
- Issues fixed: 10 since 1.2.2

#### Authors

- Evan Phoenix
- Chuck Remes
- Brian Ford
- Dirkjan Bussink
- Graham (stormbrew)
- burningTyger
- Jeff Siegel
- Christopher Bertels
- Wayne E. Seguin
- Eoin Coffey
- David Waite
- Jari Bakken
- John Mair
- Thiago Pradi
- Ivan Samsonov
- Evan Shaw
- Semyon Perepelitsa
- Wim Looman
- Benedikt Müller
- Aman Gupta

##### Closed Issues

- 678ac9d Use Type.obj_kind_of? to a mocked #kind_of? Fixes #762
- acfa7b7 Module#include should return the target include is called on, Fixes #756
- a6fa69b Revert “Use empty binding to eval gemspecs for caching. Fixes #725”
- ee0c62a Use empty binding to eval gemspecs for caching. Fixes #725
- dda607b Handle last_match in an inline block properly. Fixes #720
- f92ec4e Bound the C-API cache for a String when first creating it. Fixes #702
- 33c8117 Handle an Alias for an indistinct superclass method. Fixes #722
- 5bd938b Fix typo in doc links. Fixes #717
- ca0c7ef Fixed arity checking for BlockAsMethod. Fixes #686
- 27a4872 Fixed File.expand_path. Fixes #708

##### Performance

- Begin fleshing out benchmarks with new ips framework
- Performance improvements for Hash#replace, #dup, #reject!, and #reject
- Speed up String#chomp! quite a bit
- Speed up Date._parse by removing clever and adding simple
- Improve performance of Time.at with float values
- Speed up Dir[] by breaking out specific cases and reducing stats
- Improve Array#flatten[!] substantially
- Speed up: Array#delete_at, Array#slice!, and Array#[]=

##### Additions

- Add JOBS= and .be_gentle to control the number of parallel builds
- Introdue Daedalus, a new native code builder
- Update to RubyGems 1.5.2

##### C-API

- Handle ST_DELETE returns from the rb_hash_foreach callback
- Use single identifier to cause compile error on RHASH(_TBL).

##### Platform

- FreeBSD doesn’t need -ldl and OpenBSD already explicitly has it
- Store the make to use in a variable and default to gmake on BSD platforms
- Modify configuration and VM to support both LLVM 2.8 and 2.9 (rc)

##### Bug Fixes

- (CRASH) Handle break and return in various scopes properly
- (CRASH) Fix reading the number of slots a tuple has
- (CRASH) Ensure VM doesn’t improperly unwind into a process exit.
- JIT: Fix returning from a lambda closure
- JIT: Be sure to sign extend the result of an FFI call
- Remove bad $~ assignment code
- Use correct constness for strings returned from the C API
- Update the -v build rev hash every build.
- Fix Hash marshal dump
- Fix YARD bug, don’t use the custom classes #initialize
- Fixed Kernel#abort to coerce non-String arguments.
- JIT: Handle raise_return in all contexts properly (fancy)
- Clarify language/break specs for non-compliant rbx behavior.
- Preserve ancestor chain of singleton class for a dupped class.
- Fix for Exception#backtrace returning nil when @locations are missing.
- Fix URI() to return the argument if it is a URI object
- Remove old references to Rubinius::Scheduler
- Run IO finalizers after we’ve shut down all other threads
- Eval the gemspec cache in an empty binding.
- Fix how and where eval locals are created
- Fixing Hash[] method when passing an array
- Properly detect a constant directory in Dir::Glob
- Permit inspecting a Method having NativeMethod.
- Reset allocations_ so we don’t keep recontributing them
- JIT: Use the custom static scope in a block (dbussink)
- Fixed Kernel#singleton_methods to return a unique list.
- Added Module#define_method with block specs for arity checking.
- raise ArgumentError when no block is given in Module#define_method