So, we are progressing well, but there are still many things to do before reaching the major goal: the 0.5 release.

Here is a roadmap I cooked. Let me know if you have any feedback (or if I forgot anything).

First, we need to merge the experimental branch merge into trunk. I think we need 3 important things first:

* irb should work. This mostly implies minor bug fixes around the Binding class.

* rake should work. Also, minor bug fixes.

* hotcocoa should work. Most of the hotcocoa framework is already working except the part where it loads YAML expressions, because the yaml library doesn't exist yet. We need a yaml implementation and I personally don't want syck. I think we will go with a quick wrapper around the libyaml C library (http://pyyaml.org/wiki/LibYAML), which seems to be fast and stable.

We expect to reach this goal within a few days. Then, we will merge experimental into trunk and we can finally start polishing the project to prepare the next release.

Here is the list of things I think we must support for the release:

* implement/port Marshal, Enumerable::Enumerator, Rational, Complex to the new runtime APIs.

* 32-bit support should be back. This implies fixing the compilation of C stubs and backporting the floating point optimization to 32-bit floats.

* Array/Hash subclasses for immediates. We need a new subclass that can hold immediates (fixnums, floats, true, false, nil) directly, for performance reasons.

* Backtracing/symbolication. As you could surely experience, backtraces from MacRuby are mostly empty, because this part has not been implemented yet!

* try/catch should use a C++ exception instead of SjLj.

* rewrite of load.c. The current file is just too evil and it contains silly bugs.

* FFI API should be fully implemented. The current implementation is super minimal (we only have #attach_function) and all the specs are in the repository, so we can start.

* rubyspec: pass almost all language+core+library specs only with a very few and well controlled exceptions.

* compiler should always generate valid code. To achieve this, we need to enable the module verifier (disabled by default because it's super slow) and try to run spec:ci.

* the bigdecimal, stringio, json, zlib extensions should be implemented in pure Ruby (with FFI calls when needed).

* socket APIs should be implemented, preferably using CFStreams, for performance reasons.

* rubygems should fully work (except for C extensions gems). This means we need the socket APIs and most likely a few bug fixes. We will run the rubygems test suite.

* merge stdlib with ruby 1.9.2 upstream.

Now, here is a list of tentative items, things that are not necessarily critical for the release but nevertheless important. Some of them might be completed by then, some not.

* rakefile-ize the instruby.rb script. Chance: low.

* massign arrays elimination pass. Multiple assignments generate an array as the return value. Most of the time, this array is not needed. Chance: medium.

* bignum vectorization. Use a bignum vectorization library to re- implement Bignum. Chance: medium.

* Finish the AOT compiler. Chance: high.

* multithreaded JIT. Compiling Ruby from different threads to improve startup time when loading large libraries. Requires the new LLVM trunk changes. Chance: low.

* debugger interface. Chance: low.

* work with LLVM trunk / future 2.6 release. LLVM trunk moves too fast, adds lots of API changes and sometimes doesn't build at all. Chance: low.

Laurent
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to