

RubySpec is Reborn - chrisseaton
http://eregon.github.io/rubyspec/2015/07/29/rubyspec-is-reborn.html

======
chralieboy
The problem is that RubySpec isn't used to TDD cross-implementation features.
It isn't a "specification" so much as a reflection of what MRI does.

The Rubinius team's complaints (though hyperbolic) still stand. Developing
features in MRI and then testing other implementations against that is not a
good design process. It makes sense for historical reasons, but there is
significant work to be done cleaning out the cruft of Ruby.

For a sample of such cruft, please refer to the 11k+ line "parse.y":
[https://github.com/ruby/ruby/blob/trunk/parse.y](https://github.com/ruby/ruby/blob/trunk/parse.y)

Done this way, all other implementations are held back by the early mistakes
of MRI and there is little incentive for MRI to change that.

~~~
hobo_mark
I had no idea the main ruby implementation uses plain old bison instead of a
hand written parser, but what exactly is wrong with that? If anything having
all the grammar rules already spelled out means another implementation can
just reuse them, there are bison-like tools for almost any language.

~~~
stormbrew
Over half of those lines are a hand written _lexer_. The grammar is basically
useless without the lexer, which is very complex, full of weird corner cases,
and changes version by version.

And much of it, in both the lexer and the grammar rules, is very heavily tied
into MRI internals.

------
nateberkopec
For anyone that missed the #rubydrama in December when Brian "ended" Rubyspec,
I summarized it here:
[https://gist.github.com/nateberkopec/11dbcf0ee7f2c08450ea](https://gist.github.com/nateberkopec/11dbcf0ee7f2c08450ea)

I think Brian "ending" Rubyspec might end up being the best thing he's done
for it. Suddenly, as soon as he (and Rubinius) left, RubySpec is running and
actively used on MRI for the first time in years, and JRuby and Opal have
already swapped over to the new implementation. @eregon deserves HUGE credit
for making this all happen.

~~~
stormbrew
Perhaps the best thing Brian ever did for RubySpec might be pouring a
significant chunk of his life into starting and maintaining the project?
Whatever you think of the politics, the value RubySpec has now is in large
part due to him, and very likely wouldn't be around for someone else to pick
up now if he hadn't invested so much into it.

~~~
evilduck
Now that MRI is using it and others have picked up where he left off, the work
done before is realizing its true value and is finally fulfilling the original
goal. Quitting was the catalyst for change that may have never occurred
otherwise. Perhaps both were very important.

------
cheald
I'm really glad to see this - RubySpec is a project that always seemed like a
Really Good Idea, but the politics around it seemed to drag it down into not-
productive territory. If it can remain a technically-focused project, it
should be a large asset to the Ruby community.

~~~
aikah
> but the politics around it seemed to drag it down into not-productive
> territory

Hipsters moved to Go and Nodejs so hopefully it will be easier for the ruby
community to focus on the code rather than big egos and petty fights.

I wish the former communities good luck with the hype and the arseholes that
come with it.

------
kawsper
I am sad that the Rubinius team won't join, but I understand that they have
seen it all crumble before, and don't want to invest in a time draining
project again.

I'd also like to see some funny or surprising differences between the
implementations, it could be fun to have a list of that somewhere.

~~~
issaria
Rubinius doesn't want to join is not because they don't want to invest the
effort, they actually invested a lot of efforts before.

That being said, they bring up this project more for political reasons, that
they want to control the language, e.g. If MRI fails on the rubyspec, whose
fault is that? It would be MRI if rubinius controls the project. Now rubyspec
is part of the ruby (MRI) project, and they have made a lot of changes to
conform MRI, and in return rubinius would need to adjust to conform the specs,
for a project that has 24K commit and still doesn't work on windows, you can
imagine why they don't want to join effort.

------
andrewchambers
Anyone think there is value in a C spec of the same style? It is something I
have always wanted but don't want to go at it single handed.

~~~
fyolnish
C already has a very detailed specification.

~~~
andrewchambers
Yeah, A non executable one which requires payment to view. Though I can see
how it is even more important for ruby since it isn't standardized.

~~~
kryptiskt
The draft of the C spec is free, and it contains the same content.

~~~
andrewchambers
Free as in price (and why would the draft be free if it didn't differ), can it
be redistributed freely? Not to mention the gcc extensions that are
essentially required because so many applications rely on them.

~~~
yes_or_gnome
If the C language standardization process is anything like the C++ standard,
then there are no changes between the final, elected draft and what is
published. The drafts have to have near unanimous support between Europe and
the US (organizations, universities, and groups from each region get one
combined vote). Here's a trip report from the C++14 final draft,
[https://isocpp.org/blog/2014/02/trip-
report](https://isocpp.org/blog/2014/02/trip-report).

