8.4 Tcl Overview - Tcl Developer Xchange

Download Report

Transcript 8.4 Tcl Overview - Tcl Developer Xchange

Tcl 8.4 Overview
9th Annual Tcl/Tk Conference
Jeff Hobbs
ActiveState Corporation
Tcl'2002
Agenda
• Introduction
• Development timeline
• New features
• Steps to 8.4.0
Tcl'2002
About ActiveState
• ActiveState provides multi-language, crossplatform software & services
– Tcl, Perl, PHP, Python, XSLT
– Linux, Solaris, Windows, HP-UX, AIX, …
• We make it easy to use new technologies
– Web Services and .NET
• Mission: Make Programming Easier
– Our IDEs
– Active distributions
– ASPN
Tcl'2002
History of Tcl
1. Tcl created as general-purpose
command/scripting language
by John Ousterhout
6.0 Sept
4. Scriptics formed:
• Evolve and extend Tcl platform
• Create development tools
7.0 Sept
7.4 July
7.6 Oct
8.0 Aug
7. ActiveState
introduces Tcl
support and services
8.1 Apr
8.3 Feb
1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001
…
8.2 Aug
5. Tcl Core Team
formed (August)
2. Open source distributions
from U.C. Berkeley:
• Easy GUIs under Unix
• Extensible applications
6. Scriptics/Ajuba Acquired
by Interwoven (Nov.)
3.
•
•
•
100
1000
Tcl enhanced at Sun Microsystems:
Windows, Macintosh ports
Web/Internet support
Java support
10,000
Tcl'2002
100,000
You are here
500,000
1M ?
Recent History of Tcl
6. ActiveState introduces Tcl
support and services (Feb)
1. Tcl’2K in Austin (Feb)
2. Scriptics becomes
Ajuba (May)
8.3.1 Apr
9. 8th Tcl Conference
(July)
8.3.2 Aug
8.3.3 May
2000
8.3.0 Feb
8.4.0 Sept
8.4a3 Mar
2001
2002
8.4a3 July
8.4a1 June
8.4a2 Nov
8.3.4 Oct
7. Tcl’Europe 2001
(June)
3. Tcl’Europe 2000
(June)
R.I.P
4. Tcl Core Team
formed (August)
8.4b2
5. Scriptics/Ajuba acquired by
Interwoven; Tcl/Tk core
moves to SourceForge;
TclPro open sourced (Nov.)
Tcl'2002
10. ActiveState
TclPro (Dec)
8.4b1
11. ActiveTcl
8.3.4.3 (July)
12. ActiveState Tcl Dev
Kit 2.0 (Aug)
You are here
Tcl 8.4 Development: TIPs
• Over 2 years in the making
• First time the TIP process has defined a Tcl release
http://www.tcl.tk/cgi-bin/tct/tip/
• TIPs are intended to guide and document
development on the core
– Initially rough, but process has improved
• Of the 100+ TIPs, most targeted 8.4
• Many thanks to the maintainers and contributors
Tcl'2002
Tcl Changes
• 25+% improved performance over 8.3
http://wiki.tcl.tk/1611.html
• Completely new Virtual File System (VFS)
http://wiki.tcl.tk/vfs
• Improvements to numerous commands
• 64-bit integer and file system support
• CONSTification of the C API
– Source incompatible – with a compatability
#define
Tcl'2002
Minor command enhancements
•
•
•
•
•
•
•
•
•
array statistics
array names arrayName ?mode? ?pattern?
interp recursionlimit
regsub ?switches? exp string subSpec ?varName?
unset ?-nocomplain? ?..? ?name ...?
expr ‘eq’ and ‘ne’ for true string comparisons
glob -tails pattern ...
namespace exists
info script ?filename?
Tcl'2002
Updated list commands
• New lset command
– Efficient way to replace elements
• lindex list ?index ...?
– Index into nested lists easily
• lsearch -all -ascii -decreasing -dictionary
-increasing -inline -integer -not -real
-sorted -start
Tcl'2002
‘file’ enhancements
• Virtual File Sytem
– Allows hooks into all FS functionality
• Full support for 64-bit file sizes on 32-bit
operating systems
• file normalize
• file separator
• file system
• file link
Tcl'2002
Tcltest 2.0
•
•
•
•
Greatly enhanced ‘test’ command
Supports multiple error match types
Runs multi-process for robustness
100% backwards compatible with v1.0
Tcl'2002
Serial Port Control
• fconfigure serial
-mode baud,parity,data,stop
-handshake type
-queue
-timeout msec
-ttycontrol signalMap
-ttystatus
-xchar charPair
-pollinterval msec
-sysbuffer sizeList
• fconfigure -lasterror
Tcl'2002
64-bit “wide” integers
• Uses int64 or long long
• Not completely transparent 32/64-bit barrier
– expr wide(…)
• ::tcl_platform(wordSize)
• binary command support
– binary format wW ...
– binary scan string wW ...
Tcl'2002
Changed behavior
• fcopy now respects encodings of its channels
• format %ld and likewise treat argument as wide
integer
• scan %ld and likewise no longer ignore the field
width specifier
• source treats the byte 0x1a (^Z) as an EOF char on
all platforms
• subst treats break and continue during command
substitution differently
• tcl_traceExec and tcl_traceCompile only available
with TCL_COMPILE_DEBUG build.
Tcl'2002
Updated ‘trace’ command
• trace add
– command rename | delete
– execution enter | leave | enterstep | leavestep
– variable array | read | write | unset
•
•
•
•
trace remove
trace info
Command tracing now possible
Old style trace command deprecated
Tcl'2002
Formalized ‘memory’ command
• Useful for debugging memory problems
• Requires compilation with
TCL_MEM_DEBUG
• memory active
• memory init
• memory onexit
• memory tag
• Removed memory display
Tcl'2002
Tk Changes
•
•
•
•
Widget styling support (TIP #48)
New widgets
Significant widget enhancements
Improved I18N and L10N
– Improved XIM and IME support
• bell ?-nice?
– First new feature of 8.4
Tcl'2002
New Widgets
• spinbox
– Builds on the entry widget
– Fast, feature rich and efficient
• panedwindow
– Part widget, part geometry manager
• labelframe
– Separate from frame to not bloat it
Tcl'2002
New Tk subcommands
• clipboard get
• image inuse
• photo transparency
– Now we can properly animate GIFs
• tk caret window ?-x x? ?-y y? ?-height h?
– For controlling global caret
– Also directs placement of IME/XIM window
• tk windowingsystem
– To distinguish between Xlib and native Aqua
Tcl'2002
‘text’ Changes
• New undo/redo support with ‘edit’
– -undo, -autoseparators and -maxundo option
• ‘get’ takes multiple range pairs
• ‘delete’ takes multiple range pairs
– Atomic deletes
• New virtual events
– <<Selection>>
– <<Modified>>
Tcl'2002
‘wm’ Changes
• wm stackorder
– View/Control the stacking order of toplevels
• wm attributes
– For controlling the platform specific aspects of
toplevels
– Implementations for Mac and Windows
• May get Unix features in the future
– Finally: topmost functionality on Windows
Tcl'2002
Compound widgets
• Allow both image and text to be displayed
simultaneously
– Orientation can be controlled with -compound
option
• Support for all button types and label
widget, as well as in menus
Tcl'2002
Updated widgets
• button -disabledbackground –
disabledforeground -compound
• entry -state readonly -readonlybackground
• checkbutton -compound -overrelief
• listbox -disabledforeground -state activestyle
• menu add -compound
• menubutton -compound
• radiobutton -overrelief
Tcl'2002
Asymmetric padding
• Allows left/right or top/bottom asymmetry in
padding (-padx -pady)
• Applies to widgets …
– frame
– toplevel
– labelframe
• And geometry managers …
– pack
– grid
• grid columnconfigure master index -uniform
• grid rowconfigure master index -uniform
Tcl'2002
Tk dialog changes
• tk_getOpenFile -multiple -message
• tk_getSaveFile -message
• tk_getOpenFile and tk_getSaveFile are
different in whether the returned file name
includes the extension.
Tcl'2002
Removed Tk Privates
• tkPriv
• tk[A-Z]*
• Replace with ::tk::Priv and tk::…
– Support for ‘exporting’ the private commands
– … but don’t use them anyways
Tcl'2002
8.4 Change Details
• Wiki Changes in Tcl/Tk 8.4 page
– http://wiki.tcl.tk/3099.html
– Local mode wiki on the conference CD
• Source ChangeLogs
• Documentation
– http://www.tcl.tk/man/tcl8.4/
• Details in BoF later
• Books
Tcl'2002
8.4 Books
• Coming soon
to a store near
you
– Welch 4th ed.
– Flynt 2nd ed.
Tcl'2002
Where to get it
• Tcl Developer Xchange
– Points to everything
– http://www.tcl.tk/
• ActiveState ActiveTcl
– Binary distributions with extensions
– http://www.activestate.com/Products/ActiveTcl/
• SourceForge
– Core source distributions
– http://tcl.sourceforge.net/
• Conference CD
– ActiveTcl and Tclkit binaries
Tcl'2002