永井@知能.九工大です.

Ruby/Tk でスレッドが絡んだ際の segmentation fault の
原因となっていたものとして,「 Tcl/Tk の vwait や tkwait が
独自にイベントループを動かしてしまうために Ruby のスレッドとの
相性が非常に悪い」という問題があったのですが,
これに対する Ruby/Tk の改修を完了しました.
結局のところ,vwait と tkwait とを tcltklib.c の上でインプリメント
し直して,もともとの Tcl/Tk のものを置き換えています.
もし良かったらテストしてみていただけると助かります.

また多国語表示へのサポート強化として,Tcl で使われている
「 \uXXXX という表現での UNICODE 文字列指定 」を 
Ruby/Tk 上で使えるようにちょっとしたクラスを作成してみました.
こちらについても良かったら試してみてください.

いずれの修正も commit 済みですから, CVS から最新版を
取り寄せることで試すことができます.
以下に ChangeLog から抜き出したものを添えておきます.

----------------------------------------------
Wed Oct 15 00:20:15 2003  Hidetoshi NAGAI  <nagai / ai.kyutech.ac.jp>

        * ext/tcltklib/tcltklib.c: replace Tcl/Tk's vwait and tkwait to
          switch on threads smoothly and avoid seg-fault.

        * ext/tcltklib/tcltklib.c: add TclTkIp._thread_vwait and
          _thread_tkwait for waiting on a thread. (Because Tcl/Tk's vwait
          and tkwait command wait on an eventloop.)

        * ext/tk/lib/multi-tk.rb: support TclTkIp._thread_vwait and
          _thread_tkwait.

        * ext/tk/lib/tk.rb: now, TkVariable#wait has 2 arguments.
          If 1st argument is true, waits on a thread. If false, waits on
          an eventloop. If 2nd argument is true, checks existence of
          rootwidgets. If false, doesn't. Default is wait(true, false).

        * ext/tk/lib/tk.rb: add TkVariable#tkwait(arg) which is equal to
          TkVariable#wait(arg, true). wait_visibility and wait_destroy
          have an argument for waiting on a thread or an eventloop.

        * ext/tk/lib/tk.rb: improve of accessing Tcl/Tk's special variables.

        * ext/tk/lib/tkafter.rb: support 'wait on a thread' and 'wait on
          an eventloop'.
----------------------------------------------
Thu Oct 16 16:40:51 2003  Hidetoshi NAGAI  <nagai / ai.kyutech.ac.jp>

        * ext/tk/lib/tk.rb: 
          Add Tk::EncodedString and Tk::UTF8_String class to support 
          characters using the \uXXXX escape to the UNICODE string.

        * ext/tk/sample/{demos-en,demos-jp}/unicodeout.rb
          new demo-scripts (samples of Tk::UTF8_String)

        * ext/tk/sample/{demos-en,demos-jp}/widget
          add entries for 'unicodeout.rb'
----------------------------------------------
-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp