This post originated from an RSS feed registered with Ruby Buzz
by Daniel Berger.
Original Post: Denver/Boulder RUG presentation
Feed Title: Testing 1,2,3...
Feed URL: http://djberg96.livejournal.com/data/rss
Feed Description: A blog on Ruby and other stuff.
A couple nights ago I gave my presentation on Sapphire. It seemed to go over well. No one threw food at me at least. I don't know that I'll post the slides, so let me summarize:
MRI is badly managed
MRI source code is sloppy
Redundant code indicates that zero refactoring has been done.
No comments on internal functions.
No style standards (hard to read).
MRI is badly tested
Less than 1500 core tests.
Some patches break other things that would be caught by tests.
MRI has lots of bugs
MRI has lots of warnings
Warnings are not bugs, but usually indicate a problem of intent.
MRI treats MS Windows as a second class citizen
Solaris, AIX and HP-UX, too.
Laziness or apathy, not the difficulty of the Windows API.
MRI core developers often ignore patches
Probably because the test bed stinks.
NIH and Eastern/Western cultural issues are probably contributors, too.
MRI is stagnating from an evolutionary point of view. Other languages are evolving.
Fortress
Erlang
Perl 6
Python 3000
Faster is good, but speed != evolution
Much more effort could have been put into making 1.8.x faster.
If speed isn't usually the bottleneck, why obsess over speed?
Ruby 1.9
- Is not what I want
Driven by cabal of core developers, not end users
Other implementations: JRuby, IronRuby, Rubinius, Maglev, MacRuby are all:
Bound to a particular platform or...
Bound to a particular toolchain or...
Bound by MRI spec
Means they cannot evolve past MRI without breaking spec.
Evolve or die!
Sapphire:
Is not bound by the MRI spec.
Is not bound by Rails.
Will have a good test suite.
I currently have about 3000 core tests (9000 assertions) currently.
More being added.
Will pick and choose the best of the nuggets from other languages (plus my own)
Method annotations
Structured warnings
Type inferencing
The list goes on ... see the wiki for more details.