# 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.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