Dear Sirs and Madams;
We are pleased to release the final draft of Ruby specification document which we have drafted reflecting comments which were submitted for Ruby community’s review on the first version of the draft we came up with in December 2009.
We appreciate everyone who reviewed the first draft with diligence and love.
After the review, we have made much effort to improve the draft, including resolving issues reported as comments.
All the comments we received strongly helped us to improve the draft and derived the final one.
The final draft is supposed to be submitted to the Japanese Industrial Standards Committee (JISC) for official review in short.
[Download the final draft Ruby Specification]
If you have a feedback about the specification, please send it to . We appreciate any comments. The feedbacks will be referred for future versions of the standard document.
IPA Ruby Standardization WG
In drafting the specification, we have set the following guidelines.
- Use Ruby 1.8.7 as the primary reference.
- Intend that existing implementations without modification can conform to the specification.
- Keep the specification as compact as possible.
First, we use Ruby 1.8.7 as the primary reference. That is because Ruby 1.8 is widely used now and there are several implementations which implement Ruby 1.8 features only. Also, it seems that Ruby 1.8 continues to be used in the years to come. Some might argue that we should use Ruby 1.9 as the primary reference, but Ruby 1.9 is still under development phase and its features change so frequently. We afraid that once we draft the specification based on Ruby 1.9, the specification and Ruby 1.9 would get quickly out of sync.
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 it is explicitly stated that the features are not defined in the specification.
Finally, we try to keep the specification as compact as possible. But we would not like the specification to be so compact that no useful program can be written. The current draft therefore includes classes, modules, and methods which are widely used and necessary for basic programming tasks. We would consider to add some other classes, modules, and methods which are useful for advanced programming tasks into future versions of the specification.
The following features are included in the specification:
- The syntax and semantics of the language.
- A part of the built-in classes and modules which are necessary for basic programming tasks.
For the complete list of the features, please consult the table of contents of the draft.
In the specification, classes and modules only include methods which are widely used and necessary for basic programming tasks as mandatory methods of the specification.