Ruby関係の新刊が3冊 1
TechStyle Newsletterによると、8月にはRubyを扱った書籍が3冊も出るようだ。私的Rubyおすすめ本も更新したいところだけど、できるだろうか。
- るびきち著「Rubyシェルプログラミング irb&irbsh徹底活用」(出版社のページ)
- 熊谷秀武著「Rubyの冒険 旅立ち篇」(出版社のページ)
- 熊谷秀武著「Rubyの冒険 遊々篇」(出版社のページ)
「熊谷秀武」さんって「たけ(tk)」さんかな?
IA64でunknown node type 0 (1.6.8)
Bug#199542の状況を確認しようと思い、1.6.8 (2003-07-09)をIA64上でbuildしてmake testを実行してみたところ、テストにパスしてしまった。では念のためと、1.6.8-4で再現テストをしてみると、これもまたmake testをパスしてしまった。あらら。
いろいろ試している中でruby -e '1.times {load "sample/test.rb"}'とすると[BUG] unknown node type 0になることが分かった。また、ruby -e 'Thread.new {sleep 1; GC.start}; load "sample/test.rb"'とするとSEGVになることも分かった(gcc -O1の場合はillegal hardware instructionとなる)。前者についてはGC.disableすると問題を回避できる。
GC絡みなのかなあとは思ったりするものの、そこから先はどうしたものか。ううん。
追記: その後何度かテストを繰り返しているうちにruby -e '1.times {load "sample/test.rb"}'のほうは再現しなくなってしまった(どこか変にいじってしまっていたのかも…)。ただし-O0でないとテストに失敗するし、ruby -e 'Thread.new {sleep 1; GC.start}; load "sample/test.rb"'がダメなのは変わりない(-O0、-O1でillegal hardware instruction、-O2で[BUG] Segmentation fault)。
追記2: -O0でbuildしたrubyを使うことでBug#199725、Bug#189979、Bug#180166の問題を回避できるようだ。
追記3(2003-07-16): rb_node_newnodeのキャストとプロトタイプを行う変更をたごーさんがbackportしてくれて、それを適用すると-O2でも問題を回避できるようになった。
IA64でtest failed (1.8)
ruby 1.8.0 (2003-07-09)でmake testを実行したところ次のようになった。
% make test
/home/akira/ruby/sample/test.rb:346:in `r': wrong number of arguments(1 for 0) (ArgumentError)
from /home/akira/ruby/sample/test.rb:346
not ok assignment 68 -- /home/akira/ruby/sample/test.rb:113
not ok assignment 69 -- /home/akira/ruby/sample/test.rb:114
not ok assignment 70 -- /home/akira/ruby/sample/test.rb:115
not ok assignment 71 -- /home/akira/ruby/sample/test.rb:116
not ok assignment 72 -- /home/akira/ruby/sample/test.rb:117
not ok assignment 73 -- /home/akira/ruby/sample/test.rb:118
not ok assignment 74 -- /home/akira/ruby/sample/test.rb:119
not ok assignment 75 -- /home/akira/ruby/sample/test.rb:120
not ok assignment 77 -- /home/akira/ruby/sample/test.rb:123
not ok assignment 78 -- /home/akira/ruby/sample/test.rb:124
not ok assignment 80 -- /home/akira/ruby/sample/test.rb:126
not ok assignment 81 -- /home/akira/ruby/sample/test.rb:127
not ok assignment 82 -- /home/akira/ruby/sample/test.rb:129
not ok assignment 84 -- /home/akira/ruby/sample/test.rb:131
not ok assignment 85 -- /home/akira/ruby/sample/test.rb:132
not ok assignment 86 -- /home/akira/ruby/sample/test.rb:133
not ok assignment 87 -- /home/akira/ruby/sample/test.rb:134
not ok assignment 88 -- /home/akira/ruby/sample/test.rb:135
not ok assignment 89 -- /home/akira/ruby/sample/test.rb:136
not ok assignment 90 -- /home/akira/ruby/sample/test.rb:137
not ok assignment 91 -- /home/akira/ruby/sample/test.rb:138
not ok assignment 92 -- /home/akira/ruby/sample/test.rb:139
not ok assignment 94 -- /home/akira/ruby/sample/test.rb:142
not ok assignment 95 -- /home/akira/ruby/sample/test.rb:143
not ok assignment 96 -- /home/akira/ruby/sample/test.rb:144
not ok assignment 98 -- /home/akira/ruby/sample/test.rb:146
not ok assignment 99 -- /home/akira/ruby/sample/test.rb:147
not ok assignment 100 -- /home/akira/ruby/sample/test.rb:148
not ok assignment 101 -- /home/akira/ruby/sample/test.rb:149
not ok assignment 104 -- /home/akira/ruby/sample/test.rb:153
not ok assignment 106 -- /home/akira/ruby/sample/test.rb:155
not ok assignment 108 -- /home/akira/ruby/sample/test.rb:157
not ok assignment 110 -- /home/akira/ruby/sample/test.rb:159
not ok assignment 111 -- /home/akira/ruby/sample/test.rb:160
not ok assignment 113 -- /home/akira/ruby/sample/test.rb:163
not ok assignment 115 -- /home/akira/ruby/sample/test.rb:165
not ok assignment 119 -- /home/akira/ruby/sample/test.rb:169
not ok assignment 120 -- /home/akira/ruby/sample/test.rb:170
not ok assignment 123 -- /home/akira/ruby/sample/test.rb:174
not ok assignment 124 -- /home/akira/ruby/sample/test.rb:175
not ok assignment 125 -- /home/akira/ruby/sample/test.rb:176
not ok assignment 126 -- /home/akira/ruby/sample/test.rb:177
not ok assignment 127 -- /home/akira/ruby/sample/test.rb:178
not ok assignment 128 -- /home/akira/ruby/sample/test.rb:179
not ok assignment 129 -- /home/akira/ruby/sample/test.rb:180
not ok assignment 130 -- /home/akira/ruby/sample/test.rb:181
not ok assignment 132 -- /home/akira/ruby/sample/test.rb:184
not ok assignment 134 -- /home/akira/ruby/sample/test.rb:186
not ok assignment 136 -- /home/akira/ruby/sample/test.rb:188
not ok assignment 138 -- /home/akira/ruby/sample/test.rb:190
not ok assignment 139 -- /home/akira/ruby/sample/test.rb:191
not ok assignment 142 -- /home/akira/ruby/sample/test.rb:195
not ok assignment 143 -- /home/akira/ruby/sample/test.rb:196
not ok assignment 144 -- /home/akira/ruby/sample/test.rb:197
not ok assignment 145 -- /home/akira/ruby/sample/test.rb:198
not ok assignment 146 -- /home/akira/ruby/sample/test.rb:199
not ok assignment 147 -- /home/akira/ruby/sample/test.rb:200
not ok assignment 148 -- /home/akira/ruby/sample/test.rb:201
not ok assignment 149 -- /home/akira/ruby/sample/test.rb:202
not ok assignment 150 -- /home/akira/ruby/sample/test.rb:203
not ok assignment 152 -- /home/akira/ruby/sample/test.rb:206
not ok assignment 154 -- /home/akira/ruby/sample/test.rb:208
not ok assignment 156 -- /home/akira/ruby/sample/test.rb:210
not ok assignment 157 -- /home/akira/ruby/sample/test.rb:211
not ok assignment 159 -- /home/akira/ruby/sample/test.rb:213
not ok assignment 160 -- /home/akira/ruby/sample/test.rb:214
not ok assignment 163 -- /home/akira/ruby/sample/test.rb:218
not ok assignment 165 -- /home/akira/ruby/sample/test.rb:220
not ok assignment 167 -- /home/akira/ruby/sample/test.rb:222
not ok assignment 168 -- /home/akira/ruby/sample/test.rb:223
not ok assignment 170 -- /home/akira/ruby/sample/test.rb:225
not ok assignment 171 -- /home/akira/ruby/sample/test.rb:226
not ok assignment 173 -- /home/akira/ruby/sample/test.rb:229
not ok assignment 175 -- /home/akira/ruby/sample/test.rb:231
not ok assignment 178 -- /home/akira/ruby/sample/test.rb:234
not ok assignment 180 -- /home/akira/ruby/sample/test.rb:236
not ok assignment 181 -- /home/akira/ruby/sample/test.rb:237
test failed
make: *** [test] Error 1
追記: よく似た状況のレポートがRD2REXML - RDTool Visitor Library for REXML
Ruby-TidyLibでも同じようなことをやりたいなと思っていた。参考にさせてもらおう。
gnome-ruby_0.33のtest-gnome.rbでIncompatible libpng version in application and library
debを作って動作確認をしようと思い、test-gnome.rbからcanvasを実行したところ次のようなエラーで落ちてしまった。
libpng warning: Application was compiled with png.h from libpng-1.0.12 libpng warning: Application is running with png.c from libpng-1.2.5 libpng error: Incompatible libpng version in application and library gdk_imlib ERROR: Cannot load image: toroid.png All fallbacks failed.
いろいろと調べたところ、gdk_imlib.soはlibpng10にリンクされているのに、libart.soがlibpng12にリンクされてしまっているのが原因だと分かった。問題を回避するために、libart/extconf.rbのhave_library("png", "png_create_write_struct")をhave_library("png10", "png_create_write_struct")に変更した。
Ruby Way

