tcl 8.4 overview
DESCRIPTION
Tcl 8.4 Overview. 9 th Annual Tcl/Tk Conference Jeff Hobbs ActiveState Corporation. Agenda. Introduction Development timeline New features Steps to 8.4.0. About ActiveState. ActiveState provides multi-language, cross-platform software & services Tcl, Perl, PHP, Python, XSLT - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/1.jpg)
Tcl'2002
Tcl 8.4 Overview
9th Annual Tcl/Tk Conference
Jeff Hobbs
ActiveState Corporation
![Page 2: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/2.jpg)
Tcl'2002
Agenda
• Introduction
• Development timeline
• New features
• Steps to 8.4.0
![Page 3: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/3.jpg)
Tcl'2002
About ActiveState
• ActiveState provides multi-language, cross-platform 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
![Page 4: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/4.jpg)
Tcl'2002
8.0 Aug8.0 Aug
History of Tcl
1988 1989 1990 1991 1992 1993 1995 1997 1998
100 1000 10,000 1M ?100,000
2. Open source distributionsfrom U.C. Berkeley:
• Easy GUIs under Unix• Extensible applications
2. Open source distributionsfrom U.C. Berkeley:
• Easy GUIs under Unix• Extensible applications
3. Tcl enhanced at Sun Microsystems:• Windows, Macintosh ports• Web/Internet support• Java support
3. Tcl enhanced at Sun Microsystems:• Windows, Macintosh ports• Web/Internet support• Java support
4. Scriptics formed:• Evolve and extend Tcl platform• Create development tools
4. Scriptics formed:• Evolve and extend Tcl platform• Create development tools
1. Tcl created as general-purpose command/scripting language by John Ousterhout
1. Tcl created as general-purpose command/scripting language by John Ousterhout
500,000
1994 19991996 2000
6. Scriptics/Ajuba Acquired by Interwoven (Nov.)
6. Scriptics/Ajuba Acquired by Interwoven (Nov.)
2001
7. ActiveState introduces Tcl support and services
7. ActiveState introduces Tcl support and services
5. Tcl Core Team formed (August)
5. Tcl Core Team formed (August)
6.0 Sept6.0 Sept 7.0 Sept7.0 Sept 7.4 July7.4 July 7.6 Oct7.6 Oct 8.1 Apr8.1 Apr
8.2 Aug8.2 Aug
8.3 Feb8.3 Feb
You are here
……
![Page 5: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/5.jpg)
Tcl'2002
Recent History of Tcl
5. Scriptics/Ajuba acquired by Interwoven; Tcl/Tk core moves to SourceForge; TclPro open sourced (Nov.)
5. Scriptics/Ajuba acquired by Interwoven; Tcl/Tk core moves to SourceForge; TclPro open sourced (Nov.)
6. ActiveState introduces Tcl support and services (Feb)
6. ActiveState introduces Tcl support and services (Feb)
4. Tcl Core Team formed (August)
4. Tcl Core Team formed (August)
2000 2001
8.3.3 May8.3.3 May
8.3.0 Feb8.3.0 Feb
8.3.1 Apr8.3.1 Apr 8.3.2 Aug8.3.2 Aug
8.4a1 June8.4a1 June 8.4a2 Nov8.4a2 Nov
1. Tcl’2K in Austin (Feb)1. Tcl’2K in Austin (Feb)
2. Scriptics becomes Ajuba (May)
2. Scriptics becomes Ajuba (May)
7. Tcl’Europe 2001 (June)
7. Tcl’Europe 2001 (June)
9. 8th Tcl Conference (July)
9. 8th Tcl Conference (July)
11. ActiveTcl 8.3.4.3 (July)
11. ActiveTcl 8.3.4.3 (July)
8.4.0 Sept8.4.0 Sept
3. Tcl’Europe 2000 (June)
3. Tcl’Europe 2000 (June)
R.I.P
You are here
8.4a3 July8.4a3 July
2002
8.4b18.4b1
8.4a3 Mar8.4a3 Mar
8.3.4 Oct8.3.4 Oct
10. ActiveState TclPro (Dec)
10. ActiveState TclPro (Dec)
12. ActiveState Tcl Dev Kit 2.0 (Aug)
12. ActiveState Tcl Dev Kit 2.0 (Aug)
8.4b28.4b2
![Page 6: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/6.jpg)
Tcl'2002
Tcl 8.4 Development: TIPs
• Over 2 years in the making• First time the TIP process has defined a Tcl
releasehttp://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
![Page 7: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/7.jpg)
Tcl'2002
Tcl Changes
• 25+% improved performance over 8.3http://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
![Page 8: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/8.jpg)
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?
![Page 9: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/9.jpg)
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
![Page 10: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/10.jpg)
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
![Page 11: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/11.jpg)
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
![Page 12: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/12.jpg)
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
![Page 13: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/13.jpg)
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 ...
![Page 14: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/14.jpg)
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.
![Page 15: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/15.jpg)
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
![Page 16: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/16.jpg)
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
![Page 17: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/17.jpg)
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
![Page 18: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/18.jpg)
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
![Page 19: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/19.jpg)
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
![Page 20: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/20.jpg)
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>>
![Page 21: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/21.jpg)
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
![Page 22: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/22.jpg)
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
![Page 23: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/23.jpg)
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
![Page 24: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/24.jpg)
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
![Page 25: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/25.jpg)
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.
![Page 26: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/26.jpg)
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
![Page 27: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/27.jpg)
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
![Page 28: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/28.jpg)
Tcl'2002
8.4 Books
• Coming soon to a store near you– Welch 4th ed.– Flynt 2nd ed.
![Page 29: Tcl 8.4 Overview](https://reader035.vdocuments.us/reader035/viewer/2022062323/56815a83550346895dc7f158/html5/thumbnails/29.jpg)
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