Ruby Gets An Official Spec: Heading To Become An ISO International Standard
rubyinside.com
rubyinside.com
"Well, there goes innovation in Ruby".
But they should advertise themselves as non-conformant to the standard.
My understanding is that the standard will largely be compliant with RubySpec, pioneered by Rubinius.
We're zombies!? Actually, that's kinda cool.
You can consider the Smalltalk image as a single program, with branching, mutating clones, which has been running continuously, modulo suspending (image save) since sometime in the 1970s. Maybe that's where our unkillable, repeatedly come-back-from-the-dead nature comes from?
(You can't build a Smalltalk-80 image from scratch because of "strange loops." We've been doing binary transformations to pre-existing images all this time! Even the Squeak image was produced this way. (Dolphin image as well, I believe))
But back to "standards." The Smalltalk standard was pretty wimpy for most if its iterations. It was a watered-down inter-corporate Détente. Not sure about the most recent one.
Wow! You mean a Squeak image can't be fully built from source?
That's kind of... scary.
It also reminds me of how we do Plone upgrades... I always cross my fingers.
Lots of things in Smalltalk evoke that reaction. But while others get to tremble in fear of imagined disasters, we Smalltalkers get to know the truth: that lots of the "conventional wisdom" is nonsense!
You could sort of say the same thing about C, except that the "image" is a *nix partition.
There are some deliberate modifications. Like the "command line" array is whatever the command line was when the VM was re-invoked. Sockets deliberately aren't active for security reasons. But where the state isn't exactly the same, it's for a specific reason.
Even processes (green threads) are frozen halfway through, and continue chugging along when we return from snaphot!
Some advantages I can see being based on ruby 1.8.7 is that now people will have a specific language to develop libraries for, also new people to ruby can have something specific to start with (rather than having to chose between 1.9/1.8).
Those that still want to move so quickly can still choose to do so and continue to use and support 1.9 they just might not have the same following as before.
Plus, it's important to note that the current draft spec actually supposedly covers the existing 1.9 implementation and all other existing implementations by excluding features that differ between them. From the Drafting Guidelines (http://ruby-std.netlab.jp/):
Second, we intend that existing implementations such as Ruby 1.8.7, Ruby 1.8.6, Ruby 1.9, JRuby, Rubinius, and IronRuby can conform to the specification without modifying them. There are some features which are not implemented in some of the implementations or are different among the implementations. Those features are excluded from the specification, or described as either "implementation defined" or "implementation dependent."
For example, "blah"[0] should return an Object instance which represents "b". Could be a Fixnum. Could be a String. Could be a JPEG of some ASCII art representing the essence of "B." Any of those responses would be valid according to RubySpec.
What happens when you shadow a local variable with a block variable is unspecified, too. In 1.8.x, it overwrites the variable. In 1.9, it doesn't.
Even with a "RubySpec-compatible" implementation, you have no way of knowing if your application will run or not, which kind of defeats the purpose.
hey, certification-backed trolls! Time to get new certs! =)
Usually certification does not required for a gifted artist, because his abilities are self-evident, but for low-skilled craft man to prove that he possibly could not fail. It is a trick to not to show your abilities each time, because it is extremely difficult to you - think a certificate of sexual ability for impatient - for a healthy man it is not a problem to "prove his ability" =))
mr. Nabokov, for example, didn't got TOEFL before he wrote his "Lolita". TOEFL is required only for pidgin-speakers, like me, and after some amount of practicing it become useless.