Why does Ruby use both tcl83.dll and tk83.dll (instead of just tk83.dll)?

Hi,

Why does Ruby (on windows) use both tcl83.dll and tk83.dll (instead of just tk83.dll)?

Does tk require tcl? I thought tk was simply a c api...

Thanks.

H. Simpson wrote:

Does tk require tcl?

Absolutely. Tk operations and events are scripted in Tcl.
Look for a 'Scripts' directory under your Tk installation.
Much of the behaviour of buttons, listboxes, menus, and dialogs
is done with Tcl.

I thought tk was simply a c api...

It very well may be... for Tcl! :slight_smile:

Mike Hall wrote:

H. Simpson wrote:

Does tk require tcl?

Absolutely. Tk operations and events are scripted in Tcl.
Look for a 'Scripts' directory under your Tk installation.
Much of the behaviour of buttons, listboxes, menus, and dialogs
is done with Tcl.

I thought tk was simply a c api...

It very well may be... for Tcl! :slight_smile:

Seems that perl-tk somehow removed the Tcl part of Tk.

Hmmm. The compiled part of that project might be useful for other languages (like c/c++ or Ruby) to directly use Tk without the overhead+benefits of Tcl.

Hi,

···

From: "H. Simpson" <nospam@asdlkfjhasldkjfsadlfhskadjfahsldfks.com>
Subject: Re: Why does Ruby use both tcl83.dll and tk83.dll (instead of just tk83.dll)?
Date: Tue, 3 Aug 2004 12:21:34 +0900
Message-ID: <jqDPc.2438$hI.751970@newssvr28.news.prodigy.com>

Seems that perl-tk somehow removed the Tcl part of Tk.

That is a 'ptk' library. It's similar but NOT same as a 'Tk'
library, I think. If linking 'ptk', it should be called 'Ruby/ptk'.

# I never oppose the creation of 'Ruby/ptk'.

Hmmm. The compiled part of that project might be useful for other
languages (like c/c++ or Ruby) to directly use Tk without the
overhead+benefits of Tcl.

I think the overhead is not serious, because almost all part of
Ruby/Tk don't depend on Tcl's command line parser.
Maybe, the cost for converting Ruby/Tk's arguments to Tcl/Tk's
arguments is heavier than the overhead.
If you cannot accept the cost, you can bypass the converting step
in the bottle neck part (Please check ext/tcltklib/demo/lines?.rb).

I hate losing the benefits rather than accepting the overhead.
I'm advocating that the merits of using pure Tcl/Tk libraries are

(1) you can use the newest features at the same time of the new
     Tcl/Tk release, and

(2) you can use almost all of Tcl/Tk extensions under Ruby/Tk.

By this reason, I'll not replace Tcl/Tk libraries to ptk libraries.

To receive the second merit, Ruby 1.8.2 includes the wrapper libraries
for some Tcl/Tk extensions (e.g. Tcllib, IWidgets, BWidgets, TkTable,
vu, and so on; see ext/tk/lib/tkextlib/SUPPORT_STATUS). Of course,
to use those libraries, those extensions must work on your Tcl/Tk.

However, many of current target extensions of the wrappers are
included the ActiveTcl binary package (see http://www.tcl.tk/ and
http://www.activestate.com/Products/ActiveTcl/).
If your tcltklib.so is compiled with libraries of the ActiveTcl
package, you can use those extensions (charts, tables, calendar,
tree, tab-note, and so on) with those wrappers.
--
                                  Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

Hidetoshi NAGAI wrote:

Hi,

From: "H. Simpson" <nospam@asdlkfjhasldkjfsadlfhskadjfahsldfks.com>
Subject: Re: Why does Ruby use both tcl83.dll and tk83.dll (instead of just tk83.dll)?
Date: Tue, 3 Aug 2004 12:21:34 +0900
Message-ID: <jqDPc.2438$hI.751970@newssvr28.news.prodigy.com>

Seems that perl-tk somehow removed the Tcl part of Tk.

That is a 'ptk' library. It's similar but NOT same as a 'Tk' library, I think. If linking 'ptk', it should be called 'Ruby/ptk'.

# I never oppose the creation of 'Ruby/ptk'.

Hmmm. The compiled part of that project might be useful for other languages (like c/c++ or Ruby) to directly use Tk without the overhead+benefits of Tcl.

I think the overhead is not serious, because almost all part of
Ruby/Tk don't depend on Tcl's command line parser. Maybe, the cost for converting Ruby/Tk's arguments to Tcl/Tk's arguments is heavier than the overhead. If you cannot accept the cost, you can bypass the converting step
in the bottle neck part (Please check ext/tcltklib/demo/lines?.rb).

I hate losing the benefits rather than accepting the overhead. I'm advocating that the merits of using pure Tcl/Tk libraries are

(1) you can use the newest features at the same time of the new Tcl/Tk release, and

(2) you can use almost all of Tcl/Tk extensions under Ruby/Tk.

By this reason, I'll not replace Tcl/Tk libraries to ptk libraries.

To receive the second merit, Ruby 1.8.2 includes the wrapper libraries
for some Tcl/Tk extensions (e.g. Tcllib, IWidgets, BWidgets, TkTable, vu, and so on; see ext/tk/lib/tkextlib/SUPPORT_STATUS). Of course, to use those libraries, those extensions must work on your Tcl/Tk.

However, many of current target extensions of the wrappers are included the ActiveTcl binary package (see http://www.tcl.tk/ and http://www.activestate.com/Products/ActiveTcl/). If your tcltklib.so is compiled with libraries of the ActiveTcl
package, you can use those extensions (charts, tables, calendar, tree, tab-note, and so on) with those wrappers.

I see! Thanks for explaining. The BWidgets look really nice so I'm glad you took that approach rather than something like ptk.