[MacRuby-devel] experimental branch: status update
Laurent Sansonetti
lsansonetti at apple.com
Sun Jun 7 19:39:58 PDT 2009
Another week, another status update on the experimental branch!
Highlights are:
- A much better Cocoa support. We are almost as stable as trunk, I
think. I was able to run a significant internal MacRuby application
with the experimental branch.
- The project is now able to be installed and used on Mac OS 10.6. It
should theoretically work with the latest seeded build, using the same
building instructions as mentioned in README.rdoc, and pass our spec
suite. Please contact me offline if you have any problem or question,
since 10.6 cannot be discussed here.
- Lots of RubySpec-related work. We enabled most of the "core" specs
and the spec:ci rake task is now running about 15,000 expectations (vs
2,000 before). Several bugs discovered by these RubySpec were fixed,
but surprisingly we didn't have so much failing specs. Huge kudos to
Eloy!
- Patrick started working on optimizing floating point arithmetic (in
a branch, called fp-optimized-experimental). The idea is to make Float
objects immediate so that we don't have to allocate memory in order to
do float arithmetic. The work is still under progress, it will be
merged back to the experimental branch once it's done and stable.
Changes:
- Fixed a crash when trying to symbolicate a backtrace when the JIT
compiler has not been initialized yet (command line argument parsing).
- Disable the recursive dispatch optimization in case there is an
arity mismatch (optional arguments).
- Fixed a bug in the #send optimization compilation where the basic
block created by the exception handler was not honored.
- Fixed a GC-related bug in File.readlink.
- Removed the builtin oniguruma copy which wasn't working great with
our GC, because it was using GC memory and missing some write
barriers, and added a snapshot of the latest one (5.9.1) which works
using regular malloc memory.
- Fixed several bugs in the way we create CF IO streams and do error
reporting.
- Fixed lots of 10.6-only bugs in the way we check for mutability on
builtin types (string, array, hash, set).
- Fixed a critical bug in the code path that was used to verify if a
given builtin type is tainted or not.
- We now require LLVM revision 72741. The MacRuby source code won't
compile anymore with the previous revision because of an API change in
LLVM. Markus Prinz graciously offered a binary installer for this very
specific version of LLVM that you can use instead of compiling your
own (read http://lists.macosforge.org/pipermail/macruby-devel/2009-June/001908.html
for more information).
- When subclassing a builtin type class, only insert the mutable
primitives if the subclass is the mutable version of this builtin type.
- Don't forget to reload class constants every time a new framework is
loaded.
- Fixed a bug when we weren't actually passing the method selector
from the dispatcher to -2 arity methods defined in C.
- Added some preliminary support to call variadic C functions /
Objective-C methods.
- Implemented implemented String#bytesize and String#each_byte.
- Fixed Bignum#+.
- ByteString objects can now be frozen/tainted.
- Define Encoding::ASCII_8BIT as a shortcut to US_ASCII (for now).
- Fixed ByteString#encoding to always return US_ASCII (for now).
- Implemented the undefinition of methods.
- Undefined Symbol#to_str.
- Fixed lex_io_gets_fast() to deal better with scripts containing non-
ASCII characters. This allows us to parse and compile scripts
containing non-ASCII characters.
- Fixed a bug in the file loader, when the given path is absolute and
contains the file extension.
- Ported process.c to the new runtime API.
- Implemented File#chown.
- Before calling #method_missing, raise an ArgumentError in case we
tried to call a method with an argument when there exists a method
under the same Ruby name that accepts no argument.
- Made Eumerator a top-level class.
- Fixed lots of bugs in the Struct class, it's now usable again.
- Fixed bugs discovered by RubySpec in the following Array methods:
#choice (deleted), #concat, #fill, #flatten, #initialize, #insert,
#pack, #push, #sample (added), #sort, #unshift, #zip,
- Fixed bugs discovered by RubySpec in the following String methods:
#capitalize, #center, #chomp, #delete, #downcase, #dump, #gsub,
#ljust, #rjust, #squeeze, #sub, #swapcase, #tr_s, #tr, #upcase
- Enabled most of the RubySpec core specifications!
Laurent
More information about the MacRuby-devel
mailing list