From: "Glenn M. Lewis" Date: 2006-10-12T12:40:11+09:00 Subject: Re: Rubychess > No apology necessary... how many projects out there have major > version numbers less than 1? :) Thanks, Hal! I appreciate it. > When you say it crashes, do you mean that literally? Or what? No, sorry. It exits with an error message, like this, for example: kingix is NIL!!! color=-1... about to crash ./nchess6.rb:1924:in `[]': no implicit conversion from nil to integer (TypeError) from ./nchess6.rb:1924:in `Eval' from ./nchess6.rb:1918:in `each' from ./nchess6.rb:1918:in `Eval' from ./nchess6.rb:1781:in `Eval' from ./nchess6.rb:2407:in `ABnegaSearchZWTail' from ./nchess6.rb:2383:in `times' from ./nchess6.rb:2383:in `ABnegaSearchZWTail' from ./nchess6.rb:2457:in `ABnegaSearchZWTail' ... 11 levels... from board.rb:1028:in `PrepareForNextMoveWhenOpponentThinks' from board.rb:812:in `replaystart' from board.rb:230:in `build' from board.rb:1079 While I could easily prevent that particular �crash� from happening, it is indicative of an error somewhere in the engine that needs to be fixed, so I�m not just plugging the hole, if that makes any sense. > Is part of this in C? No, it is 100% pure Ruby. It is a line-by-line port of the Pythonchess-0.6, with only one tiny tweak I made myself because I had always wanted the python version to draw a red box around where it last moved from to where it last moved to, in case I was looking away when it moved. :-) > Is Ruby's performance acceptable (up till the time it dies)? Well, that is an excellent question. At work, I�ve got a brand new screaming Core Duo machine, and the performance is great. But if you run the python version side-by-side with the Ruby version, the python version is easily 10x faster, and sometimes 100x faster based purely on the �number of nodes� it processes during the game, which it reports in the GUI. So most of the time Ruby will process ~200 nodes/second while python would be processing ~4000 nodes/second. Sad, but true. I wish someone would just step in and make an �-O� flag for ruby that either byte-compiled the script or native-compiled it and then ran it. :-) -- Glenn > Hal