All appearances of condemnation aside, proponents of the Rubinius X project are embarking on an effort to modernize the Ruby language, bringing it into the Internet era and focusing on improved concurrency.
A glance at the recent formal announcement of Rubinius X could give the impression it was written by a Ruby antagonist, as it belittles the language, saying, "Ruby is a dying language. Business is over its dalliance with Ruby. No major startup is lauding their use of Ruby, and existing businesses are migrating away or simply writing new applications in a different language."
But the engineer who unveiled Rubinius X, Brian Shirai, of Engine Yard, emphasized he is an advocate, not an opponent: "I love Ruby. I think it's a fantastic language."
Ruby, he said, is more accessible than newer languages like Scala, but it needs to be brought into the networked, Internet era. "The motivating idea behind Rubinius X today is that there are no computers that do anything interesting without talking to at least one other computer. The Internet is forever." But Ruby's core library was built back in the Windows 3.0 days in the 1990s, before Internet dominance, Shirai added. Rubinius X is focused on the writing of collaborative, concurrent applications.
Recently, Ruby founder Yukihiro Matsumoto said he saw no need for major improvements to Ruby in his CRuby implementation, but Rubinius X advocates will continue overhauling the language anyway. Rubinius X builds on Rubinius, an implementation of Ruby that also stressed concurrency via native threads, but version 10 takes concurrency a step further. "More than any specific feature in Rubinius X, it is that the entire system is being reworked from the bottom up to support the highest degree of concurrency and parallelism possible," Shirai said. "Certain APIs are being changed, further concurrency abstractions are being added, and all of this is built-in, instead of being an afterthought relegated to the 'standard library' or other libraries."
Key features of Rubinius X for concurrency include promises and nonblocking I/O. "Promises are a more modern mechanism for concurrency," Shirai said. Promises refer to constructs used for synchronizing in some languages, in which an object acts a proxy for result that is initially unknown, often because the computation of its value is not yet complete.
Version X also is slated to include persistent and concurrent data structures, as well as mirrors and object capabilities. Mirrors are a construct providing structure for composition through encapsulation and separation of object and meta-data object operations, according to Rubiniux X advocates; object capabilities structure interactions to control collaboration. Code-loading in Rubinius X, meanwhile, enables the combining of components into a single, running program.
Matsumoto gave an endorsement to Rubinius X, despite the criticism heaped on Ruby itself. "I am a true believer of diversity," he said. "So I consider Rubinius itself diversity." But Matsumoto said he was not sure Rubinius would survive. Still, he expects it to enrich the Ruby ecosystem.
"[Shirai] claimed 'Ruby is a dying language,' but as long as Ruby continues evolving, [including Rubinius], I think it will keep growing."
This story, "Rubinius seeks to modernize, not bury, the Ruby language," was originally published at InfoWorld.com. Get the first word on what the important tech news really means with the InfoWorld Tech Watch blog. For the latest developments in business technology news, follow InfoWorld.com on Twitter.