浏览 6380 次
锁定老帖子 主题:Ruby On PSP
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-25  
今天下午刚调通,cross compiling + 自己hacking ruby的代码,比想像中简单得多。原以为要重新整理内存布局,白白对着日文的ruby hacking guide看了一遍ruby的gc,eval。附件是ruby代码的patch, 下一个干净ruby source code,打上patch,按下面的方法编译:

./configure-psp
make -f Makefile.psp
cd psp/sampel
make

然后把相应的EBOOT.PBP等文件和测试脚本仍到PSP/GAME(GAME150)就行了。编译之前需要安装psp-gcc和toolchain,PSP需要3.03-oe或native 1.5

patch 我也提交到ruby forge了
https://rubyforge.org/tracker/index.php?func=detail&aid=8134&group_id=426&atid=1700

不过以目前的程度补进ruby core是没太大的希望,下面准备继续把psp sdk包成ruby ext module。

   发表时间:2007-01-25  
能详细介绍下你的这个东西么?干什么用的
在psp上跑ruby的脚本?
0 请登录后投票
   发表时间:2007-01-25  
刚去看了你的介绍,很酷~~
太有用了,我爱psp,也爱ruby,你让我的爱统一了,哈哈

请问,这个东西对ruby支持的程度有多少?
是否所有的标准库都能跑?
如果不能跑所有的,那么哪些能跑?
0 请登录后投票
   发表时间:2007-01-28  
iLibra 写道
刚去看了你的介绍,很酷~~
太有用了,我爱psp,也爱ruby,你让我的爱统一了,哈哈

请问,这个东西对ruby支持的程度有多少?
是否所有的标准库都能跑?
如果不能跑所有的,那么哪些能跑?


今天晚上做了一个简单的测试,就是把ruby自己带的unit test跑了一下。当然了,首先是要保证core的测试正确,目前结果

250 tests, 2137 assertions, 0 failures, 23 errors

主要错误集中在pipe,file i/o(因为底层有几个函数我直接给的dummy implementation)。

速度是

Finished in 22.615069 seconds.

不知道如果改成native thread会由多大提高。或者改用YARV,YARV据称提高50倍,那样的话,速度就可以接近pc上直接解释的ruby了。

出错的记录是

  1) Error:
test_beginendblock(TestBeginEndBlock):
Errno::ENOSYS: Function not implemented - "ruby" "/PSP/GAME150/RubyTest/ruby/beginmainend.rb"
    /PSP/GAME150/RubyTest/ruby/test_beginendblock.rb:16:in `popen'
    /PSP/GAME150/RubyTest/ruby/test_beginendblock.rb:16:in `test_beginendblock'

  2) Error:
test_endblockwarn(TestBeginEndBlock):
Errno::ENOSYS: Function not implemented
    /PSP/GAME150/RubyTest/ruby/test_beginendblock.rb:49:in `system'
    /PSP/GAME150/RubyTest/ruby/test_beginendblock.rb:49:in `test_endblockwarn'

  3) Error:
test_seek(TestDir):
NotImplementedError: the tell() function is unimplemented on this machine
    /PSP/GAME150/RubyTest/ruby/test_dir.rb:30:in `tell'
    /PSP/GAME150/RubyTest/ruby/test_dir.rb:30:in `test_seek'
    /PSP/GAME150/RubyTest/ruby/test_dir.rb:29:in `loop'
    /PSP/GAME150/RubyTest/ruby/test_dir.rb:29:in `test_seek'

  4) Error:
test_each_byte_extended_file(TestFile):
Errno::EACCES: Permission denied - ms0:/PSP/GAME150/RubyTest/test-extended-file.-1.0
    /PSP/GAME150/RubyTest/ruby/test_file.rb:95:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:95:in `open'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:95:in `test_each_byte_extended_file'

  5) Error:
test_eof_1(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-eof.-1.17'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:36:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:36:in `open_file'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:53:in `test_eof_1'

  6) Error:
test_eof_1_seek(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-eof.-1.17'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:36:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:36:in `open_file'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:101:in `open_file_seek'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:118:in `test_eof_1_seek'

  7) Error:
test_eof_2(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-eof.-1.17'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:36:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:36:in `open_file'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:87:in `test_eof_2'

  Error:
test_eof_3(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-eof.-1.17'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:36:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:36:in `open_file'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:94:in `test_eof_3'

  9) Error:
test_getc_extended_file(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-extended-file.-1.10'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:102:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:102:in `test_getc_extended_file'

10) Error:
test_gets_extended_file(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-extended-file.-1.10'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:79:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:79:in `test_gets_extended_file'

11) Error:
test_gets_para_extended_file(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-extended-file.-1.10'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:86:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:86:in `test_gets_para_extended_file'

12) Error:
test_read_all_extended_file(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-extended-file.-1.10'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:72:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:72:in `test_read_all_extended_file'

13) Error:
test_truncate_rbuf(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-truncate.-1.9'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:61:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:61:in `test_truncate_rbuf'

14) Error:
test_truncate_wbuf(TestFile):
RuntimeError: cannot generate tempfile `ms0:/PSP/GAME150/RubyTest/test-truncate.-1.9'
    ./tempfile.rb:46:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:52:in `new'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:52:in `test_truncate_wbuf'

15) Error:
test_unlink_before_close(TestFile):
Errno::EACCES: Permission denied - test_file.rb.-1
    /PSP/GAME150/RubyTest/ruby/test_file.rb:25:in `unlink'
    /PSP/GAME150/RubyTest/ruby/test_file.rb:25:in `test_unlink_before_close'

16) Error:
test_gets_rs(TestIO):
Errno::EBADF: Bad file number
    /PSP/GAME150/RubyTest/ruby/test_io.rb:5:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_io.rb:5:in `pipe'
    /PSP/GAME150/RubyTest/ruby/test_io.rb:5:in `test_gets_rs'

17) Error:
test_eof_0(TestPipe):
Errno::EBADF: Bad file number
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `pipe'
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `open_file'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:5:in `test_eof_0'

18) Error:
test_eof_1(TestPipe):
Errno::EBADF: Bad file number
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `pipe'
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `open_file'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:40:in `test_eof_1'

19) Error:
test_eof_2(TestPipe):
Errno::EBADF: Bad file number
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `pipe'
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `open_file'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:87:in `test_eof_2'

20) Error:
test_eof_3(TestPipe):
Errno::EBADF: Bad file number
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `initialize'
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `pipe'
    /PSP/GAME150/RubyTest/ruby/test_pipe.rb:9:in `open_file'
    /PSP/GAME150/RubyTest/ruby/ut_eof.rb:94:in `test_eof_3'

21) Error:
test_exit_action(TestSignal):
Errno::ENOSYS: Function not implemented - fork(2)
    /PSP/GAME150/RubyTest/ruby/test_signal.rb:7:in `fork'
    /PSP/GAME150/RubyTest/ruby/test_signal.rb:7:in `have_fork?'
    /PSP/GAME150/RubyTest/ruby/test_signal.rb:37:in `test_exit_action'

22) Error:
test_signal(TestSignal):
Errno::ENOSYS: Function not implemented
    /PSP/GAME150/RubyTest/ruby/test_signal.rb:19:in `kill'
    /PSP/GAME150/RubyTest/ruby/test_signal.rb:19:in `test_signal'

23) Error:
test_system(TestSystem):
Errno::ENOSYS: Function not implemented - echo foobar
    /PSP/GAME150/RubyTest/ruby/test_system.rb:12:in ``'
    /PSP/GAME150/RubyTest/ruby/test_system.rb:12:in `test_system'
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics