Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Brian Ford
committed
Jun 7, 2011
1 parent
24758b4
commit 7ae451a
Showing
50 changed files
with
641 additions
and
45 deletions.
There are no files selected for viewing
263 changes: 263 additions & 0 deletions
263
web/_site/2011/06/07/inside-rubinius-20-preview/index.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,263 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>Inside the Rubinius 2.0 Preview Release - Rubinius</title> | ||
<meta content='text/html;charset=utf-8' http-equiv='content-type'> | ||
<meta content='en' http-equiv='content-language'> | ||
<meta content='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.' name='description'> | ||
<meta content='Less Than Three. <3. http://less.thanthree.com' name='author'> | ||
<link href='/' rel='home'> | ||
<link href='/' rel='start'> | ||
|
||
|
||
<link href='/feed/atom.xml' rel='alternate' type='application/atom+xml' title='Rubinius Blog' /> | ||
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script><![endif]--> | ||
<script src="/javascripts/jquery-1.3.2.js" type="text/javascript"></script> | ||
<script src="/javascripts/paging_keys.js" type="text/javascript"></script> | ||
|
||
<script src="/javascripts/application.js" type="text/javascript"></script> | ||
<style>article, aside, dialog, figure, footer, header, hgroup, menu, nav, section { display: block; }</style> | ||
|
||
<link href="/stylesheets/blueprint/screen.css" media="screen" rel="stylesheet" type="text/css" /> | ||
<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" /> | ||
<link href="/stylesheets/blueprint/print.css" media="print" rel="stylesheet" type="text/css" /> | ||
<!--[if IE]><link href="/stylesheets/blueprint/ie.css" media="screen" rel="stylesheet" type="text/css" /><![endif]--> | ||
<!--[if IE]><link href="/stylesheets/ie.css" media="screen" rel="stylesheet" type="text/css" /><![endif]--> | ||
<link href="/stylesheets/pygments.css" media="screen" rel="stylesheet" type="text/css" /> | ||
</head> | ||
<body> | ||
<div class='container'> | ||
<div class='span-21 blog_menu'> | ||
<header> | ||
<nav> | ||
<ul> | ||
<li><a href="/">Home</a></li> | ||
<li><a id="blog" href="/blog/">Blog</a></li> | ||
<li><a id="documentation" href="/doc/en/">Documentation</a></li> | ||
<li><a href="/projects/">Projects</a></li> | ||
<li><a href="/roadmap/">Roadmap</a></li> | ||
<li><a href="/releases/">Releases</a></li> | ||
</ul> | ||
</nav> | ||
|
||
</header> | ||
</div> | ||
<div class='span-3 last'> | ||
<div id='version'> | ||
<a href="/releases/1.2.3">1.2.3</a> | ||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
<div class="container posts_nav"> | ||
<nav> | ||
<a href="/blog/posts_index/">Index of Posts</a> | ||
<a id="feed_icon" href="/feed/atom.xml"><img alt="subscribe" src="/images/feed-icon16x16.png" /></a> | ||
</nav> | ||
</div> | ||
|
||
|
||
<div class="container blog_posts"> | ||
<h2 class="post_title">Inside the Rubinius 2.0 Preview Release</h2> | ||
|
||
<div class="by_line"> | ||
<p><span class="author">Brian Ford</span> | ||
<span class="date">07 June 2011</span> | ||
|
||
</p> | ||
</div> | ||
|
||
<p>Houston, we have a problem. Complex projects are difficult to transition | ||
forward and Rubinius is a complex project. Rubinius is at the point of a major | ||
transition and we need your help to move forward.</p> | ||
|
||
<p>Just over a year ago, Rubinius released version 1.0. Since then, dozens of | ||
contributors have added over 2,200 commits to the master branch and we have | ||
released seven new versions. At the same time, we have added nearly 450 | ||
commits on a development branch to remove the global interpreter lock (GIL) | ||
and begin adding Ruby 1.9 and Windows support.</p> | ||
|
||
<p><img src="/images/rubinius-2-0-developer-preview-blog-post.png" alt="Rubinius 2.0 Developer Preview" /></p> | ||
|
||
<p>Today we are releasing <em>Rubinius 2.0 Developer Preview</em>. The primary focus of | ||
this release is true Ruby multi-threaded concurrency. Additionally, it | ||
contains the beginnings of Ruby 1.9 and Microsoft Windows support.</p> | ||
|
||
<h3 id="rubinius-20-developer-preview">Rubinius 2.0 Developer Preview</h3> | ||
|
||
<p>We are seeking developers interested in running their Ruby and Rails projects | ||
on Rubinius to help us iron out issues as we work toward the final 2.0 | ||
release. Let’s look at the details of the 2.0 developer preview.</p> | ||
|
||
<p>One of the central features of Rubinius 2.0 is a fundamental change in the | ||
threading architecture. In Rubinius 2.0, Ruby threads will run with true | ||
concurrency. This means that if multi-core or multi-CPU hardware is available, | ||
Ruby code on different threads will actually run in parallel.</p> | ||
|
||
<p>Another central feature of Rubinius 2.0 is support for both Ruby 1.8.7 and | ||
Ruby 1.9.2 syntax. The Rubinius 2.0 support for Ruby 1.8.7 should be 100% | ||
backward compatible with the support in the Rubinius master branch. The full | ||
Ruby concurrency is enabled regardless of what language syntax mode is active.</p> | ||
|
||
<h3 id="repository-migration">Repository Migration</h3> | ||
|
||
<p>We are migrating the main Rubinius repository to the <a href="https://github.com/rubinius">Rubinius</a> organization.</p> | ||
|
||
<p>The RVM project has already been updated to work with the new repository. So | ||
<code>rvm install rbx</code> will use the new repository. If you have an existing clone | ||
of Rubinius, update and run <code>rake github</code> to point your existing repository to | ||
the new one.</p> | ||
|
||
<p>You can clone directly from the <a href="https://github.com/rubinius/rubinius">new repository</a>.</p> | ||
|
||
<h3 id="installation">Installation</h3> | ||
|
||
<p>For testing Rubinius with your application, installing with RVM is probably | ||
the easiest. To install the 2.0 developer preview, ensure that RVM is updated:</p> | ||
|
||
<pre><code>rvm get head | ||
rvm reload | ||
</code></pre> | ||
|
||
<p>Then, install the Rubinius 2.0.0pre branch:</p> | ||
|
||
<pre><code>rvm install rbx-2.0.0pre | ||
</code></pre> | ||
|
||
<p>If you are interested in helping develop Rubinius, we suggest you clone the | ||
repository directly and build. Rubinius runs fine from the source directory so | ||
you don’t need to install it. For more details about building from a clone, | ||
see <a href="http://rubini.us/doc/en/getting-started/">Getting Started</a>.</p> | ||
|
||
<h3 id="configuration">Configuration</h3> | ||
|
||
<p>The goal of Rubinius 2.0 is to fully support both Ruby 1.8.7 and 1.9.2 in a | ||
single executable. When running Rubinius, you can select which version to use. | ||
There are configuration options to change which versions are supported and | ||
which version is the default.</p> | ||
|
||
<p>The first configure option is <code>--enable-version=X[,Y]</code>. This option sets which | ||
language versions will be supported. An example is:</p> | ||
|
||
<pre><code>./configure --enable-version=1.8,1.9 | ||
</code></pre> | ||
|
||
<p>The language versions can be specified as <code>18</code> or <code>1.8</code>. Multiple versions are | ||
separated by a comma and no space.</p> | ||
|
||
<p>The second configure option is <code>--default-version=X</code>. This option sets which | ||
language version is the default when running Rubinius. An example is:</p> | ||
|
||
<pre><code>./configure --default-version=1.9 | ||
</code></pre> | ||
|
||
<p>These options are intended to be used together. You must enable a version to | ||
select it as the default, so the options must come in the following order:</p> | ||
|
||
<pre><code>./configure --enable-version=X,Y --default-version=Y | ||
</code></pre> | ||
|
||
<p>Once you have enabled support for a language version, to select that mode when | ||
running Rubinius, use the <code>-X18</code> or <code>-X19</code> command line switches. For example:</p> | ||
|
||
<pre><code>rbx -X19 -v | ||
</code></pre> | ||
|
||
<p>This command will run Rubinius with the 1.9 language mode enabled.</p> | ||
|
||
<p>You may also use the <code>RBXOPT</code> environment variable to select the lanugage | ||
mode. Assuming that 1.8 is the default mode, the following command would run | ||
Rubinius with the 1.9 language mode enabled:</p> | ||
|
||
<pre><code>RBXOPT=-X19 rbx -v | ||
</code></pre> | ||
|
||
<p>Right now, only the 1.8 language mode is enabled in the 2.0.0pre branch. | ||
However, we will be enabling the 1.9 mode in the very near future. The default | ||
mode will continue to be 1.8 unless you configure Rubinius to run in 1.9 mode.</p> | ||
|
||
<h3 id="building-on-windows">Building on Windows</h3> | ||
|
||
<p>On Windows, Rubinius uses the <a href="http://mingw-w64.sourceforge.net/">MinGW-w64</a> | ||
compiler to build a native application. There remains a lot of work to do for | ||
Windows support but the Rubinius VM is currently compiling on Windows 7.</p> | ||
|
||
<p>If you are a bleeding-edge Windows developer interested in diving into | ||
Rubinius, here’s how to get started:</p> | ||
|
||
<ol> | ||
<li>Install <em>MRI 1.9</em> using <a href="http://rubyinstaller.org/">RubyInstaller</a>.</li> | ||
<li>Install <a href="http://code.google.com/p/msysgit/">MSysGit</a>.</li> | ||
<li>Install the 32bit or 64bit MinGW-w64 toolchain.</li> | ||
<li>Clone the Rubinius repository.</li> | ||
<li>In CMD, run <code>ruby configure</code>.</li> | ||
<li>Run <code>rake</code>.</li> | ||
</ol> | ||
|
||
<h3 id="moving-forward">Moving Forward</h3> | ||
|
||
<p>In the near future, we will release another version of Rubinius from the | ||
current master branch. We hope to merge 2.0.0pre into master as soon as | ||
possible and continue working toward the 2.0 final release. We’ll make that | ||
decision based on your reports about how the 2.0.0pre branch is working with | ||
existing 1.8.7 applications.</p> | ||
|
||
<p>We greatly appreciate your help polishing up the Rubinius 2.0 release! Follow | ||
us on <a href="http://twitter.com/rubinius">Twitter</a> for updates and stop by #rubinius | ||
on freenode.net to chat about anything on your mind.</p> | ||
|
||
<h3 id="rubinius-support-on-engineyard-appcloud">Rubinius Support on EngineYard AppCloud</h3> | ||
|
||
<p>Rubinius 1.2.3 is currently in beta on Engine Yard AppCloud, and we encourage | ||
users to <a href="http://docs.engineyard.com/rubinius.html">give it a try</a>. Engine | ||
Yard will support Rubinius 2.0.0 after it’s officially released.</p> | ||
|
||
<p>To learn more about Rubinius, join Engine Yard for a <a href="http://pages.engineyard.com/RubyPlatformOptionsWebinarJuly212011.html">Platform Options Webinar</a> in July.</p> | ||
|
||
|
||
<div id="disqus_thread"></div> | ||
<script type="text/javascript"> | ||
var disqus_shortname = 'rubinius'; | ||
var disqus_identifier = '/2011/06/07/inside-rubinius-20-preview/'; | ||
var disqus_url = 'http://rubini.us/2011/06/07/inside-rubinius-20-preview/'; | ||
|
||
(function() { | ||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; | ||
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; | ||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); | ||
})(); | ||
</script> | ||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> | ||
|
||
</div> | ||
<footer> | ||
<div class='container'> | ||
<nav> | ||
<ul> | ||
<li><a href="http://twitter.com/rubinius">Follow Rubinius on Twitter</a></li> | ||
<li><a href="http://github.com/evanphx/rubinius">Fork Rubinius on github</a></li> | ||
<li><a href="http://engineyard.com">An Engine Yard project</a></li> | ||
|
||
<li id='credit'> | ||
Site design by | ||
<a href="http://less.thanthree.com">Less Than Three</a> | ||
</li> | ||
</ul> | ||
</nav> | ||
</div> | ||
</footer> | ||
<script type="text/javascript"> | ||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); | ||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); | ||
</script> | ||
|
||
<script type="text/javascript"> | ||
try { | ||
var pageTracker = _gat._getTracker("UA-12328521-1"); | ||
pageTracker._trackPageview(); | ||
} catch(err) {}</script> | ||
|
||
</body> | ||
|
||
</html> |
Oops, something went wrong.