[ANN] Jruby 0.7.0

Jruby, after a long nap, is starting up development again. This
release offers a number of changes:

  • Interpreter now thinks it is a ruby 1.8 interpreter (though it still
    sometimes behaves like a 1.6 interpreter)

  • Simplified build environment (now eclipse friendly) (Thanks to Joey Gibson)

  • Added functions Float,Integer,String,Array to Kernel module

  • Various fixes to Kernel, Array, Dir, File, and String

  • IO expanded support for

    • Random Access of files (seek, rewind,…)
    • File descriptors
    • reopen, dup
    • sysread, syswrite
    • many other IO fixes
  • Added FileTest

  • Backout of inneffective callindexed optimization

  • Able to run rubicon without hacking rubicon itself

  • many other changes…

    Thanks to Jan Arne Petersen, Anders Bengtsson, Thomas E Enebo,
    Benoit Cerrina. Joey Gibson, Hunter Kelly and Pergiuliani Bossi for
    submitting fixes since the last release.

    This version also boasts improved results in rubicon passing nearly
    100 more tests which translates into about 800 more assertions. Here is
    a test summary:

···

========================================================================
All Tests Test Results V0.3.5

             Name   OK?   Tests  Asserts      Failures   Errors
        ------------------------------------------------------------
Rubicon::TestCase             1        5             
    AccessControl             3       18             
            Array   FAIL     65      469          2        1
           Arrays             0        0             
       Assignment   FAIL      4       36          2  
 BasicExpressions   FAIL      3       12          1  
           Bignum            29     1598             
          Binding             0        0             
      BlocksProcs   FAIL      3        9          1  

BooleanExpressions 1 2
CatchThrow 1 1
Class 5 16
Classes 1 5
Comparable 7 26
Constants 3 20
Continuation FAIL 5 0 5
Dir FAIL 21 62 4 1
Enumerable 17 76
Eval FAIL 9 18 2 5
Exception FAIL 5 8 2
Exceptions 6 6
FalseClass 6 17
File FAIL 33 175 6 24
FileTest FAIL 4 16 4
File__Stat FAIL 32 128 32
Fixnum 35 414
Flip FAIL 7 26 1
Float 28 178
Floats FAIL 4 22 1
GC 4 1
Hash FAIL 42 269 1
Hashes 1 5
IO FAIL 53 1177 17
IfUnless 1 2
Integer 9 347
Integers 1 5
Invocation FAIL 6 14 4
KanjiIndex FAIL 20 63 14
Kernel FAIL 108 992 17 23
LoopStuff 16 71
Marshal FAIL 6 26 2 2
MatchData FAIL 11 17 2
Math 2 62
Method 4 11
Methods 3 11
Module FAIL 25 91 1
ModulePrivate 15 41
Modules 1 5
Names 1 5
NilClass 7 20
Numeric 10 21
Object 0 0
ObjectSpace FAIL 4 3 2
PredefinedVariables FAIL 2 6 1
Proc FAIL 4 6 1
Range 10 46
Ranges 1 5
Regexp FAIL 14 29 2 1
RegularExpressions FAIL 4 25 2
Scope FAIL 13 20 2 6
SourceLayout FAIL 8 20 3
String FAIL 79 1196 1 1
Strings 6 32
Struct 11 47
Struct__Tms FAIL 1 0 1
Symbol 8 20
Symbols 1 5
Thread FAIL 32 0 64
ThreadGroup FAIL 4 0 4
Time FAIL 41 1484 13 1
TrueClass 6 17

     All 71 files   FAIL    933     9580         82      200

========================================================================

The source and binary releases can be found at:

http://prdownloads.sourceforge.net/jruby/jruby-src-0.7.0.tar.gz?download
http://prdownloads.sourceforge.net/jruby/jruby-bin-0.7.0.tar.gz?download

-Tom

Thomas E Enebo, Protagonist | “A word is worth a thousand |
> pictures” -Bruce Tognazzini |

great to hear this!
There is a chance of ever see something like jrubyc to create jvm
bytecode from ruby sources?

···

il Sat, 13 Mar 2004 02:33:49 +0900, Thomas E Enebo enebo@acm.org ha scritto::

http://jruby.sourceforge.net/

Jruby, after a long nap, is starting up development again. This
release offers a number of changes:

Did you checkout rubicon from its new home on rubyforge? It’s been
updated quite a bit since the last version from the Ruby CVS
repository. We’ve moved it here temporarily to try to bring it update
to date with Ruby 1.8.* and Test::Unit. It’s in pretty good shape but
needs the kinks worked out on a variety of different platforms.

Anyone who cares to check it out from CVS and give it a go, please do
and send in your results.

http://rubyforge.org/projects/rubytests

Chad

···

On Mar 12, 2004, at 12:33 PM, Thomas E Enebo wrote:

This version also boasts improved results in rubicon passing nearly
100 more tests which translates into about 800 more assertions. Here
is
a test summary:

Download jruby-src-0.7.0.tar.gz (JRuby)
Download jruby-bin-0.7.0.tar.gz (JRuby)

Thanks a lot for your efforts. I was a little frustrated as I thought
the JRuby project might have been died in case of less interest.

I’ll looking forward to new announces from the jruby group :wink:

TIA.

Daniel

On Sat, 13 Mar 2004, gabriele renzi defenestrated me:

great to hear this!
There is a chance of ever see something like jrubyc to create jvm
bytecode from ruby sources?

There is a chance…Someone (Anders) had worked on this some time ago.
I am not sure how far he got, but he currently is not working on it
(as far as I know). Still, some ground work has been done towards
supporting it.

-Tom

···

Thomas E Enebo, Protagonist | “A word is worth a thousand |
> pictures” -Bruce Tognazzini |

This version also boasts improved results in rubicon passing nearly
100 more tests which translates into about 800 more assertions. Here
is
a test summary:

Did you checkout rubicon from its new home on rubyforge? It’s been
updated quite a bit since the last version from the Ruby CVS
repository. We’ve moved it here temporarily to try to bring it update
to date with Ruby 1.8.* and Test::Unit. It’s in pretty good shape but
needs the kinks worked out on a variety of different platforms.

Anyone who cares to check it out from CVS and give it a go, please do
and send in your results.
Where should I send my results? I have some errors using ruby-1.9 from cvs, i.e.
in rubicon.rb VERSION constant is used, but in 1.9 it doesn’t exists.
not defined?(VERSION) and VERSION = RUBY_VERSION
fixes that, but not too clean though. So about my initial question, where should I send
all other errors I got from running ‘make test’?

···

On Saturday 13 March 2004 10:20, Chad Fowler wrote:

On Mar 12, 2004, at 12:33 PM, Thomas E Enebo wrote:

Chad


sdmitry -=- Dmitry V. Sabanin
MuraveyLabs.
Spam Here → postmaster@sco.com

I am posting this on behalf of Kevin Smith:

This long-awaited version is available from rubyforge:
http://rubyforge.org/projects/wxruby/

The big news, of course, is that it includes binary builds for MS
Windows and Mac OS X Panther. I may add one or more Linux binaries
later, or they may have to wait for 0.3.

This is still an early beta release, so it still has a number of known
problems. If you find a problem that is not mentioned in the README or
in one of the rubyforge trackers, please let me know.

Thanks to everyone for your help with this, and especially to Curt and
Nick for building the binary packages.

Kevin

You can either send them using the post.rb that is included with
Rubicon:

ruby AllTests.rb -op xml|ruby post.rb

or you can email them.

Thanks,
Chad

···

On Mar 13, 2004, at 2:57 AM, Dmitry V. Sabanin wrote:

On Saturday 13 March 2004 10:20, Chad Fowler wrote:

On Mar 12, 2004, at 12:33 PM, Thomas E Enebo wrote:

This version also boasts improved results in rubicon passing nearly
100 more tests which translates into about 800 more assertions. Here
is
a test summary:

Did you checkout rubicon from its new home on rubyforge? It’s been
updated quite a bit since the last version from the Ruby CVS
repository. We’ve moved it here temporarily to try to bring it update
to date with Ruby 1.8.* and Test::Unit. It’s in pretty good shape but
needs the kinks worked out on a variety of different platforms.

Anyone who cares to check it out from CVS and give it a go, please do
and send in your results.
Where should I send my results? I have some errors using ruby-1.9 from
cvs, i.e.
in rubicon.rb VERSION constant is used, but in 1.9 it doesn’t exists.
not defined?(VERSION) and VERSION = RUBY_VERSION
fixes that, but not too clean though. So about my initial question,
where should I send
all other errors I got from running ‘make test’?

Hi Kevin (and Curt). I happened to be watching my RSS inbox right as
you posted this last night, so I downloaded it (Mac OS) and gave it a
try. As you say in the release notes, it’s obviously still beta
quality, but I was very excited about what’s to come! Great work.
I’m looking forward to using this library more and more in the future.

Chad

···

On Mar 13, 2004, at 1:04 AM, Curt Hibbs wrote:

I am posting this on behalf of Kevin Smith:

This long-awaited version is available from rubyforge:
http://rubyforge.org/projects/wxruby/

The big news, of course, is that it includes binary builds for MS
Windows and Mac OS X Panther. I may add one or more Linux binaries
later, or they may have to wait for 0.3.

This is still an early beta release, so it still has a number of known
problems. If you find a problem that is not mentioned in the README or
in one of the rubyforge trackers, please let me know.

Thanks to everyone for your help with this, and especially to Curt and
Nick for building the binary packages.

very cool.
thanks for your work. let’s hope that it will be as successful as wxPython.

markus

Curt Hibbs wrote:

···

I am posting this on behalf of Kevin Smith:

This long-awaited version is available from rubyforge:
http://rubyforge.org/projects/wxruby/

The big news, of course, is that it includes binary builds for MS
Windows and Mac OS X Panther. I may add one or more Linux binaries
later, or they may have to wait for 0.3.

This is still an early beta release, so it still has a number of known
problems. If you find a problem that is not mentioned in the README or
in one of the rubyforge trackers, please let me know.

Thanks to everyone for your help with this, and especially to Curt and
Nick for building the binary packages.

Kevin

wrote (more or less):

I am posting this on behalf of Kevin Smith:

This long-awaited version is available from rubyforge:
http://rubyforge.org/projects/wxruby/

The big news, of course, is that it includes binary builds for MS
Windows and Mac OS X Panther. I may add one or more Linux binaries
later, or they may have to wait for 0.3.

This is still an early beta release, so it still has a number of known
problems. If you find a problem that is not mentioned in the README or
in one of the rubyforge trackers, please let me know.

Thanks to everyone for your help with this, and especially to Curt and
Nick for building the binary packages.

Woo-hoo!

How easy is it to build GUI apps in Ruby/wxRuby for cross-platform use
on Windows, MacOSX, and Linux?

Is this it? Or will it be, post-beta?

Cheers,
Euan
Gawnsoft: http://www.gawnsoft.co.sr
Symbian/Epoc wiki: http://html.dnsalias.net:1122
Smalltalk links (harvested from comp.lang.smalltalk) http://html.dnsalias.net/gawnsoft/smalltalk

···

On Sat, 13 Mar 2004 15:04:40 +0900, “Curt Hibbs” curt@hibbs.com

Gawnsoft wrote:

wrote (more or less):

I am posting this on behalf of Kevin Smith:

This long-awaited version is available from rubyforge:
http://rubyforge.org/projects/wxruby/

The big news, of course, is that it includes binary builds for MS
Windows and Mac OS X Panther. I may add one or more Linux binaries
later, or they may have to wait for 0.3.

This is still an early beta release, so it still has a number of known
problems. If you find a problem that is not mentioned in the README or
in one of the rubyforge trackers, please let me know.

Thanks to everyone for your help with this, and especially to Curt and
Nick for building the binary packages.

Woo-hoo!

How easy is it to build GUI apps in Ruby/wxRuby for cross-platform use
on Windows, MacOSX, and Linux?

Is this it? Or will it be, post-beta?

You can do this now. The wxRuby distribution comes with a about 20 sample
apps that run on all platforms. Kevin has written an email client (although
that is not part of the wxRuby distribution).

Curt

···

On Sat, 13 Mar 2004 15:04:40 +0900, “Curt Hibbs” curt@hibbs.com

Markus Jais wrote:

very cool.
thanks for your work. let’s hope that it will be as successful as wxPython.

I hate to say it but, as long as we’re still using Ruby 1.x, it probably
won’t be. Sometimes we just need real/OS threads, which won’t be present
until Ruby2.

···


dave

Quoteing lists@zara.6.isreserved.com, on Sun, Mar 14, 2004 at 11:10:19AM +0900:

Markus Jais wrote:

very cool.
thanks for your work. let’s hope that it will be as successful as wxPython.

I hate to say it but, as long as we’re still using Ruby 1.x, it probably
won’t be. Sometimes we just need real/OS threads, which won’t be present
until Ruby2.

I don’t know much about gui programming, and nothing about wxWidgets.
Could you explain why native threads are so important?

Just curious,
Sam

Hello Sam,

Sunday, March 14, 2004, 3:59:30 AM, you wrote:

Quoteing lists@zara.6.isreserved.com, on Sun, Mar 14, 2004 at 11:10:19AM +0900:

Markus Jais wrote:
>very cool.
>thanks for your work. let's hope that it will be as successful as wxPython.

I hate to say it but, as long as we're still using Ruby 1.x, it probably
won't be. Sometimes we just need real/OS threads, which won't be present
until Ruby2.

I don't know much about gui programming, and nothing about wxWidgets.
Could you explain why native threads are so important?

They are important for programming but you are right, they are not
very important for GUI programming. Most GUI Toolkits are not really
multithread safe, some offer a few hooks, but they do this because
they don't support fibers (cooperative threads like ruby).

In fact a good event loop implementation can have the same performance
as python at the moment. But this would require that for example
even file operations are also implemented as async operations.

I doubt that there are so many reasons for native threads, most of
them are only necessary for native C extensions.

TCL has a good implementation of threads and the only useful
for a script language. They separate the "threads" memory space
and only do event passing with marshal/unmarshal data. But most people
don't call this a 'thread implementation'.

···

--
Best regards,
Lothar mailto:mailinglists@scriptolutions.com

Smalltalk dialects got around native threads in their GUIs for a very
long time. But Smalltalk GUIs are completely written in Smalltalk
which has it’s own lightweight process model. Ruby uses GUI toolkits
written in C/C++. Those toolkits nearly always use nativ
multithreading, don’t they?

Cheers
Sascha

···

Lothar Scholz mailinglists@scriptolutions.com wrote:

I don’t know much about gui programming, and nothing about wxWidgets.
Could you explain why native threads are so important?

They are important for programming but you are right, they are not
very important for GUI programming. Most GUI Toolkits are not really
multithread safe, some offer a few hooks, but they do this because
they don’t support fibers (cooperative threads like ruby).

Hello Sascha,

Wednesday, March 17, 2004, 10:14:38 AM, you wrote:

> I don't know much about gui programming, and nothing about wxWidgets.
> Could you explain why native threads are so important?

They are important for programming but you are right, they are not
very important for GUI programming. Most GUI Toolkits are not really
multithread safe, some offer a few hooks, but they do this because
they don't support fibers (cooperative threads like ruby).

Smalltalk dialects got around native threads in their GUIs for a very
long time.

But now they must support it. There are to many important blocking
libraries they must use. Oracles DB driver has a non blocking
interface but AFAIK there is nothing for MySQL or Interbase
and i'm 100% that there is nothing like this for Sqllite.

But Smalltalk GUIs are completely written in Smalltalk
which has it's own lightweight process model. Ruby uses GUI toolkits
written in C/C++. Those toolkits nearly always use nativ
multithreading, don't they?

No, for example FOX is not multithreading safe. FLTK or TK have a
simple mutex for calling into the GUI code which 95% of all use cases
works, but not for the 5% of sophisticated ones.

···

Lothar Scholz <mailinglists@scriptolutions.com> wrote:

--
Best regards,
Lothar mailto:mailinglists@scriptolutions.com

Quoteing mailinglists@scriptolutions.com, on Wed, Mar 17, 2004 at 08:31:36PM +0900:

But now they must support it. There are to many important blocking
libraries they must use. Oracles DB driver has a non blocking
interface but AFAIK there is nothing for MySQL or Interbase
and i’m 100% that there is nothing like this for Sqllite.

Ok, I start to see. Most of the demand that I’ve seen for “real”/os
native threads seemed to be based around the assumption that they
were in some way “better” than ruby’s threads, based around io
multiplexing. It wasn’t very convincing.

The Sqllite API is a lot more convincing! So, in summary,
native threads are useful for writing C extensions to:

  • blocking APIs, like you mention above

  • APIs that use threads as part of their interface – doesn’t gnome/gtk
    make extensive use of threading?

With a blocking API, couldn’t you write an extension module that did
its work in a thread, notifying the main thread when the work was done?

Sam

Hello Sam,

Wednesday, March 17, 2004, 6:00:11 PM, you wrote:

With a blocking API, couldn't you write an extension module that did
its work in a thread, notifying the main thread when the work was done?

Sure you can do that, but often the synchronize overhead will be very high
and more important then that (we are still a script language, so highest
performance is not so important) is that it requires much more work
and a skilled developer. Most API's like the SQLite can't be wrapped
in an easy way. Every fetch of a row may block and take a long time -
for example 5 disk seeks can cost around 150 ms, so you would have to
write a sync handling for this on each call. But maybe the next rows
are already cached, then the synchronisation can add an overhead of
a few 100%. Most accesses are cached, so you have 3 alternatives:

a) non blocking slow API
b) blocking API
c) non natural and non blocking API
   (for example a function that delivers rows in chunks of 50 or so)

I use GNU Eiffel on work and we have the same problem with it because
it neither supports user level threads nor native threads.
It's no problem to solve the problems, but it is not so much fun.

···

--
Best regards,
Lothar mailto:mailinglists@scriptolutions.com

Sam Roberts wrote:

But now they must support it. There are to many important blocking
libraries they must use. Oracles DB driver has a non blocking
interface but AFAIK there is nothing for MySQL or Interbase
and i’m 100% that there is nothing like this for Sqllite.

Ok, I start to see. Most of the demand that I’ve seen for “real”/os
native threads seemed to be based around the assumption that they
were in some way “better” than ruby’s threads, based around io
multiplexing. It wasn’t very convincing.

The Sqllite API is a lot more convincing! So, in summary,
native threads are useful for writing C extensions to:

  • blocking APIs, like you mention above

  • APIs that use threads as part of their interface – doesn’t gnome/gtk
    make extensive use of threading?

Also, don’t forget another benefit of OS/kernel threads: SMP.

Basically, threads are used for paralellism and only OS/kernel threads
provide true paralellism.

···


dave