Work has started on Ruby 2.0
github.com
github.com
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/...
Nonetheless, Ruby compares favorably against stock PHP, Python and Perl nowadays. It's only one benchmark and it's possible to make any look faster than the other, but Ruby is no longer miles behind everyone else: http://shootout.alioth.debian.org/u32/which-programming-lang...
I've been using it outside of a web-based context to do some more computational intensive work and just get a little bummed when I need to re-implement something in C to get the performance I need. (I'm not a C hater either! I've just come to love Ruby.)
Performance problems that stem from implementation can be fixed, and can yield significant benefits. This work is continually ongoing in Ruby (see the recent GC improvements) and the proliferation of alternate implementations will benefit this effort significantly (see the speed improvements to JS resulting from competition between V8, Nitro, and IonMonkey). That said, these sorts of improvements probably won't appear on any roadmap, since they can happen without the knowledge of the language's users.
Performance issues arising from language semantics, on the other hand, are a very real concern for the roadmap going forward. Here, I'm thinking specifically about the refinements feature. Charles Nutter had an excellent breakdown of how this feature might have far-reaching impacts on performance here: http://redmine.ruby-lang.org/issues/4085#note-46 . Additionally, there may be avenues to improve performance by subtly altering the semantics of existing features (such as 'define_method'). Unfortunately, while these changes/features will be discussed as part of the roadmap, performance is typically only addressed in a bit of a side-long manner (i.e. if you want to know what the performance impact will be, you'll probably need to pay attention to the discussions on ruby-core).
All that said, I think you can rest easy knowing that, even though performance may not be a first-class concern for the Ruby 2.0 effort, it is something that the community is very cognizant of and will be paying attention to.
http://confreaks.net/videos/654-rubyconf2011-keynote-ruby-ev...
On a side-note, a lot of folks are also dreamers.
I don't see the MRI team, which has built a whole tool-chain around developing MRI throwing away all that and to switch to a new platform.
I like Rubinius very much, as I do with JRuby, I just don't see Rubinius replacing MRI. Thats what I meant by 'dreaming'. A non-realistic expectation that is not backed by any real events.
If everyone decided to switch en masse to Rubinius, MRI might not go away, but it would definitely be sidelined into irrelevance.
This in itself certainly is a great achievement for the rubinius team and one to be proud of. However, I personally have to see a large production deployment. I consider rbx a serious alternative to mri, just as jruby is a serious alternative. I'll call it "replacement" once heroku starts using rbx and drops mri support. I don't see that happening in the next couple of years, there's just way too much investment behind mri for it to just go away.
And yes, I do see heroku supporting both MRI and rbx as equals, but my point was that that's not replacing.
The only serious piece missing from 1.9 is the encoding support. There's a number of other relatively minor failures remaining, but those are simple enough to fix (and several people, contributors new and old, are doing so at this very moment).
And the switch is -X19.
If it's "just a dream," it's largely for human reasons rather than technical ones.
Also, I have yet to see a purely technological decision of that magnitude, even in the world of compilers.
I see Rubinius and JRuby winning the race, but I don't see any of them _replacing_ MRI.
I understand there are good reasons to keep MRI around, but the idea of making Rubinius the future of core Ruby development is not an outlandish idea.
(note: I'm not following MacRuby Development very closely at the moment.)
One of the big things about the new VM is that it eliminates the global interpreter lock, meaning MacRuby probably has much better parallelization than MRI. With the VM alone I think they are on their way to being their own Ruby implementation.
All of this is a bit disappointing considering that they could have shared their improvements upstream and improved MRI performance for everyone, not just for Mac apps.
That may be true, but don't we all preach that "People matter, not technologies" all the time?
Nobody pretends that MRI 2.0 is round the corner, but rbx at the moment is not in a position to even replace MRI 1.9.2 (lack of windows support anyone?). Their current self-proclaimed status is 93% of the spec, so I don't think that stopping work on MRI and spending the next couple of month bringing RBX to the current MRI state is a valid alternative. Dropping MRI would also imply dropping the whole toolchain and all custom infrastructures based on MRI, lots of knowledge that people have with MRI would suddenly go worthless, etc...
I seriously don't see that coming in the next couple of years.
It's not just for things like Rails apps that Ruby is typically used for, either. I frequently process data, such as large log files, and now and then I try out the different Ruby to see if things have gotten better. So far, 1.9 and JRuby are the winners.
(LuaJIT is typically 2-5 times faster than both, so these days I tend to write my scripts in Lua.)
On my list of gripes: Lua's attempt at OO, being implemented as hash tables, is even more pitiful than JavaScript's. Also, arrays are implemented as hashes (just like PHP!), which is just one notch below JavaScript again. I also wish for a more expressive regex syntax, but then that's the text processing talking.
I'm an outsider looking in, so while I know what the MRI and Rubinius are, I don't know why I'd prefer to use Rubinius instead.
* No GIL
* JIT
* Better garbage collector
* Better debugging tools
Unfortunately, Rubinius is not yet complete, so it's not a suitable MRI replacement for now.
Without the GIL what does that mean for extensions written in C. Would they need to be rewritten?
But I don't think that Evan, Brian, et al.'s goals have been to replace but rather further the movement of Ruby.
The Wall of Shame gives a very partial overview of the situation: http://python3wos.appspot.com/
It does not help that useful stuff from 3.x get backported to 2.x or available via __future__, and that IMHO Python 2.7 is awesome so the urge is not quite there (well, not as much as working with Ruby 1.8 when you tasted 1.9)
https://bitbucket.org/pitrou/t3k/wiki/Home
It's described as "an experimental, work-in-progress port of Twisted to Python 3".
Python 3 is exactly how not to do a major language change. They broke enough that porting isn't trivial, and for many programs there just isn't any benefit. Plus the performance noticeably regressed.
All of that would have been acceptable, if they also implemented some major language fixes and adding some cool new features. Better closure support comes to mind...
The timeline for Python 3 adoption was always measured in years - not one, not two, but more. We're not a development team or group that cough up unicorns about how long adoption of a backwards incompatible version will take.
Django has a Python 3 roadmap, as does twisted, as does PyPy, Numpy, etc. The PSF and companies are now funding Python 3 ports.
The reports of death are grossly overstated.
Already a lot of YEARS have passed, not one, not two, but more. We're even in 3.2 for heaven's sake.
> Django has a Python 3 roadmap
Yeah, has had one for years. How is that going?
> The reports of death are grossly overstated.
The reports of movement in this front are grossly overstated too.
As Jesse Noller has pointed out elsewhere, the transition was never intended to be instantaneous. The Wall of Shame might publicize those packages that are causing pain points, but it offers no prescriptions.
Part of the reason that the urge isn't quite there is because there hasn't been enough time for 3.x to diverge from 2.7, the end of the 2 line. 3.2 came out eight months after 2.7 and the feature differences aren't large, especially considering that 3.2 was developed at the same time as 2.7 so many of the newly added features are the same.
As 3.x continues on with the 3.3 release next fall, the differences will become greater, the feature sets will become different, and the urge may start rising. As was said before, this is all measured in years - we can't expect that 3.x (the interpreter and standard library, on its own merits) just suddenly jumps ahead.
Rails 4 will drop Ruby 1.8 for good.
Check out how quickly 1.9.2 has been adopted in production Rails apps: http://blog.newrelic.com/2011/09/28/state-of-the-stack-a-rub...
I don't see any fierce competition against implementations in Ruby. I see that in Javascript implementations (and in HTML engines), but not in Ruby.
I wish that was not the case, but for real competition to exist, and also be fierce, each implementation should push other implementations to go better, adopt its successful features, etc.
What I do see is just parallel development of different implementations.