From: Keefe Hayes Date: 2007-09-15T10:51:38+09:00 Subject: Re: Port ruby to z/OS UNIX Greetings, I have built Ruby 1.8.6 on z/OS as an ASCII application. I have installed rubygems and Rails. I can run irb and ruby scripts, and I can generate a Rails application. The problem I run into is that the pseudo threads implementation in eval.c depends on a technique of stack swapping from heap that the z/OS C runtime setjmp/longjmp and getcontext/setcontext functions do not support. The C runtime insists on stack integrity. When stack_extend needs to be called, a valid chainback no longer exists. Ruby abnormally ends (abends) with a stack check exception. So long as Ruby threading is not used, e.g. in a typical script, all is well. However, running a server application, where threading is essential to support multiple clients, does not work. If the pseudo threads implementation could be replaced with pthreads, even if the pthreads were all synchronized (due to the lack of thread safety for global variable access), then I believe a z/OS implementation of the Ruby interpreter would work. I have attempted this myself, but I need some more pthread API expertise. I have built JRuby on z/OS, and it works reasonably well, if slowly. I can build and run a Rails application, and I have run it using mongrel-jruby. I have fiddled with ActiveRecord-JDBC to get this to work with DB2 on z/OS. ActiveRecord-JDBC had some problems with Rails using quoted numerics, but copying the jdbc-derby code to use with DB2 helped there. However, BLOB/CLOB support is a bit unconventional on z/OS DB2, and ActiveRecord-JDBC did not work with that (so Camping session, which uses a text type that maps to a CLOB, does not work). (Note that if you are using ibm_db from a workstation Ruby session to z/OS DB2, that Camping runs fine. BLOB/CLOB support in ibm_db is robust). I would be interested in working with folks to facilitate their efforts at Ruby on z/OS, and who could help me with the bowels of eval.c. Ruby's utility as a scripting language suggests it could offer a lot to sysprogs, dba's, and testers. It would also be helpful to write servers to provide health check info and access into the system. Rails might also be an interesting exercise there. -- Posted via http://www.ruby-forum.com/.