Tcl97 Future/Plans
Subject: UPDATE: Tcl'97 Tcl Update Talk
From: jhobbs@cs.uoregon.edu (Jeffrey Hobbs)
Date: 1997/07/16
Newsgroups: comp.lang.tcl
This message is an attempt to summarize John's big talk at Tcl'97
about what happened (and will happen) with Tcl for the conference.
He's talking as I write this, so it's as fresh as you can get.
7.5p1/4.1p1 was the current release as of Tcl'96
7.6/4.2 added dialogs and some other minor stuff
The predicted 7.6plug/4.2plug && 7.7/4.3 && 8.0 were merged into 8.0
Tcl8:
Bytecode compiler: 2-20x speedup
Namespaces
Binary data and I/O (integrated into regular commands)
bin data won't be allowed *everywhere* in Tcl
serial devices for Unix & Windows
new event notifier: coexist with Xt
random numbers (in expr)
windows registry (as a package)
HTTP support (as a package)
safe-tcl improvements
Tk8:
native LAF for Windows/Mac
no core support for selecting LAF, but you can do it yourself
(requires some hacking)
by vote, it was shown that the great majority require just
good LAF on a given platform, rather than consistent (Motif) LAF
on all platforms (about 100+ vs 10)
new font implementation
new menu system
application embedding (incomplete, except under Unix)
image support in text widgets
safe-tcl support
question arose about some new platform specific packages (ie - registry)
response was that in general Tcl/Tk tries to find the best
middle ground to support (like common file dialogs). However,
sometimes there are such important platform specific features
(like the registry), that Tcl should provide access to it in
order to not die due to its limitations of the least common
denominator on all platforms.
Tcl/Tk8 release status:
B2 release June 30, 1997
Final release expected early August
Primary development release vote: (what version is your primary version)
8.0: 12
7.6/4.2: 80
7.5/4.1: 15
7.4/4.0: 8
earlier: 1
Number who have to maintain earlier 3rd party extension software: 20
Why note upgrade (to 8.0):
no need: 2
product life cycle: 20
incompats: 35
docs (lack of): 5
other (stability, win mem leaks): 10
Major extension poll to upgrade to 8.0:
TclX: ready
incr Tcl: end of August (it will be dynamically loadable)
BLT: almost
expect: works now, waiting for better obj/bin support in core
syb/oratcl: ready, but uses old (non-obj) interface
(obj interface late fall)
Tix: works, but not obj'ed
DP: getting there
ObjectTcl: late fall
Browser Plugin:
1.0 released Oct 96
2.0 adds man new features:
customizable security policies
access to frames
HTTP access
JavaScript access
beginnings of trust models
Currently a2, b1 imminent
final release expected september/october (month or two after 8 goes final)
about 100,000 downloads of plugin
2.0 plugin runs outside the web browser (with small stub inside browser)
allows substitution of your own wish
SpecTcl GUI Builder:
1.0 released January 1997
1.1 expect July 1997; many bug fixes
Overall results disappointing:
took too long to complete
not enough functionality
didn't work with existing apps
not clear what to do:
already too easy to create GUIS
Will discontinue development/support after 1.1
Other Projects:
WebTk authorin system: beta release Dec 96
Web server:
written entirely in Tcl
embeddable, for management apps
uses scotty to manage legacy SNMP devices
serves sunscript.sun.com
recently released
FTP Stats:
5000-8000 downloads/week from fp.sunlabs.com of Tcl (not Tk)
expecting more when 8.0 goes final
last year: 2000/week
Platform breakdown (by ftp download):
UNIX: 50%
Windows: 40%
Macintosh: 10%
Plugin 1000-2000 download/week (>100,000 total)
Total worldwide developer community: 500,000?
During polling it was noted:
most people use Unix for primary development, but most
have Windows as a supported platform
about a dozen switched to Windows for primary development,
none switched to Unix
win32s has little need (2 hands), 8.0 might be the last
version to support win32s (a pain).
What they didn't do: (all are remaining on "the list")
Megawidgets
image revision
text improvements
threads
debugger
profiler
drag and drop
OLE/ActiveX support
The SunScript Saga:
Goal: build a business community around Tcl and Tk
Summer/Fall 96: talked with SunSoft and JavaSoft.
Not a good fit
November 96: Eric Schmidt (former Sun CTO)
suggests and independent business group
Winter 96-7: prepare SunScript business plan
Feb 97: business plan approved, began recruiting
April 30, 97: SunScript announced
Bad News:
April 97: Eric left for Novell
April-May 97: without Schmidt, management support waned
June: decision was made to drop business group, do development
Looking forward:
Bad News: commercial efforts on hold
no selling of products
no commercial support
good news:
projects continue, headcount = 14
new efforts in Java integration
ALL SOFTWARE WILL BE FREE
plugin
spectcl
web server
java tools (this includes Jacl)
Future:
Tcl and Java:
Tcl and Java are symbiotic, not competitive
Java for system programming
create components, complex algorithms and data structures
cannot succeed without scripting language
Tcl for scripting
gluing, sytem integration, component assembly
cannot succeed without a good component language
SunTcl goal: integrate Tcl and Java to provide best of both worlds
Bring Java to Tcl:
Use JRE to embed Java virtual machine in Tcl apps
Use JDK 1.1 reflection to find Java classes, invoke methods:
set o [java::new string foo]
set o2 [$o concat bar]
Provide new Java class to invoke scripts, define new Tcl commands:
i = new.Interp();
i.Eval("button .b");
i.CreateCommand("thread", threadCmdObj);
This will provide smooth integration over to Java (from C or Tcl)
Tcl/Tk as Universal Container:
embed JavaBeans components in Tcl/Tk apps, invoke from Tcl
also embed OLE/ActiveX components
use Tcl as glue between JavaBeans and ActiveX
the goal for Tcl is to glue EVERYTHING
Bring Tcl to Java:
reimplement Tcl interpreter in Java
derived from Cornell Jacl work
Same Tcl-level facilities as when Java is embedded in Tcl
allows Tcl commands to be used in 100% Pure Java environment:
web browsers
Java stations
speed will be as good as the JIT compilers
Tcl/Tk 8.1 releases:
Goal: finish by January 1998
Main purpose: compiler consolidation
finish object conversion of Tcl
convert Tk to use compiler objects
fix bugs
A few additional features
INTERNATIONALIZATION (Unicode done with UTF-8)
99% backwards compatible (\x.. not OK)
send for windows/mac
new modular parser for Tcl scripts
tcl scripts that parse tcl scripts
better introspection
Other possible changes:
thread support 60
megawidgets 15
drag and drop 25
OLE/ActiveX support 10
Additional widgets 70 (people are ignorant of the uses of megawidgets)
combobox
tree widget
notebook tabs
printing support 40
rewrite of regexp (I18N, binary data, Perl features) 15
text widget cleanup (smooth scrolling, etc) 5
canvas overhaul (dash patch stuff) 15
image overhaul (more formats, optional dithering, etc) 40
split core into packages 45
continue supporting win32s? 1
continue supporting Mac? 10
CGI (core support) 2
suport extensions 25
plus patches 5