Tk Library Source Code

View Ticket
Login
Ticket UUID: 1492630
Title: Installer not creating tcllibc + related uuid issue
Type: Bug Version: None
Submitter: juliannoble Created on: 2006-05-21 21:05:09
Subsystem: Installer Assigned To: andreas_kupries
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2024-06-03 18:54:11
Resolution: Not Applicable Here Closed By: aku
    Closed on: 2024-06-03 18:54:11
Description:
installer.tcl (on windows at least) doesn't create the 
tcllibc module - nor does INSTALL.txt mention how to 
build it.

I found out about 'sak.tcl critcl' through a c.l.t 
article where the original poster was complaining 
about slow pure tcl implementations.

A missing tcllibc module means that the uuid package 
at least, will fallback to Tcl only mode even though 
critcl is installed.

for uuid without tcllibc - the faster version can be 
accessed by first package requiring critcl..
then directly calling the c proc.

e.g on a machine without tcllibc installed.

%package require critcl
0.35
%package require uuid
1.0.1
%uuid::tostring [uuid::generate_c]
<some guid>
%time {uuid::tostring [uuid::generate_c]} 100
150.0 microseconds per iteration
%time {uuid::uuid generate}
51560 microseconds per iteration

As you can see there's a huge performance difference 
(due to exec call to ipconfig I guess) so it seems 
that the fast critcl version is usable without 
tcllibc - yet the default in this case is to still use 
the pure Tcl version.

Note that if critcl is 'package required' after uuid 
then you just get:
invalid command name "uuid::generate_c"

I guess I'm suggesting that either uuid shouldn't 
depend on tcllibc being present - just critcl... 
and/or that tcllibc should be built by the tcllib 
installer and documented, or at least just explained 
in INSTALL.txt.
User Comments: aku added on 2024-06-03 18:54:11:

Shifted to https://core.tcl-lang.org/tcllib/tktview/4799af766d8045f8524e8b576879c82473119865

Tcllib actually has tcllibc. Tklib here has nothing to do with tcllibc, nor critcl.


andreas_kupries added on 2006-06-14 05:31:49:
Logged In: YES 
user_id=75003

Hm. There are a number of packages which can use tcllibc,
and IIRC none of them look for and use an installed critcl
to compile the acceleration codes dynamically.

Yes, extending the installer should be possible, to have it
look for critcl, and build tcllibc if it is present. That
should alleviate most concerns I think. Otherwise we have go
deeper into the code of all the packages loading their
various accelerators and have it check for critcl alone as well.

The other stuff are documentation issues I will address
after we have consensus regarding tcllibc/critcl. I have
notified Pat Thoyts directly, as he wrote most of the
packages using critcl in general, and uuid in particular.