[MacRuby-devel] roadmap for 0.5
Laurent Sansonetti
lsansonetti at apple.com
Mon Jul 27 00:30:56 PDT 2009
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
More information about the MacRuby-devel
mailing list