Notes on [Jeff Hobbs] [ActiveState] of [Tcl2008] talk. ([MC]'s notes, but please add/enhance/correct ...) Reviewed Tcl history... As of Tcl'2007: * September 24-28 New Orleans * 8.4.16 was the standard stable version * 8.4 now base standard in all distros * 5 years since 8.4.0 * Numerous enhancements and additions * Getting long in the tooth * 8.5b1 released * 8.6 vs 9.0 * Primary topics: 8.5 finalization, ''food'' ... Reviewed formation/history of the [Tcl Core Team] Reviewed [Tcl Improvement Proposal] (TIPs)... * Currently 335 TIPs (divided into process, informational and project TIPs) * TIP page for Tcl: http://tip.tcl.tk/ Maintainers: * Separate from TCT (though substantial overlap) * Maintainers oversee a specific area of the core as defined in TIP #16 (Tcl) and TIP #26 (Tk) * Assist, but not soley responsible for fixing bugs, adding docs, etc. * Responsible for reviewing code and approving code changes to their area * '''Open to anyone willing to learn the core'''; New volunteers always welcome Tcl at [ActiveState]: * Established 1997 * Current tagline "''Dyamic Tools for Dynamic Languages''" (Jeff likes older tagline: "''Programming for the people''" but that doesn't fly as well in the enterprise) * [Jeff Hobbs] and [Andreas Kupries] hired in 2001 * Wealth of scripting knowledge at ActiveState; besides Tcl, Perl, Python, XML/XSLT, etc. * Acquired by Sophos September 2003; freed in February 2006 * ActiveStateremains dedicated to dynamic languages--collectively a wealth of knowledge ActiveState provides the Tcl community with: * Improvements to open source Tcl core (time permitting); changes go through TIP process * Host of the Tcl Developers Xchange (http://www.tcl.tk/) * Enterprise support infrastructure * Professional services for Tcl * Development tools: [ActiveTcl], [Komodo], [Tcl Dev Kit], [ActiveTcl Pro Studio] Now easier to download ActiveTcl--one single download page, no registration hoops to go through, etc. [BOOK ActiveState Tcl Cookbook]. Mailing list archives. ActiveTcl 8.4.19: * Released September 2008 * Many popular extensions: [XOTcl], [incr Tcl], [TclX], [expect], [tcllib], [tklib], [Bwidgets], [Iwidgets], [tktable], [tkcon], [tile], [SQLite], etc. * TEApot code repository via teacup ActiveTcl 8.5.5: * Based on the 8.5.5 Tcl core * Released October 2008--on the conference USB key * Distributed with fewer extensions (as compared to ActiveTcl 8.4); rest available via teacup * Considered the default download * Available for AIX, HP-UX, Linux, Mac OS X, Solaris and Windows (all builds are fully threaded) ''ActiveTcl 8.6.0.0 Beta 1'': (called Beta because ActiveState doesn't like to release things with Alpha names) * Based on Tcl 8.6a3 Tcl core * Not yet released--on conference USB key * Similar to ActiveTcl 8.5 extension set * More discussion on 8.6 to follow The TEApot: * Binary code repository in the style of ActivePerl's PPM * Fully populated for ActiveTcl platforms * Make use of Tcl module system (allows zip archives with special teapot.txt) * Repository is web visible, but rough * Downloads index--local searches (against a [SQLite] database) * Integrated with TclApp package searching (TKD 5) Tcl Dev Kit 5: * Released Monday (in time for the conference) * Enhanced static syntax analysis * Added 8.6 support * Supports multi-architecture starkits, x-platform starkpacks * Includes improved/revamped versions of the [TclPro] tools; checker is extensible, plus some additional new tools (that weren't in TclPro) Komodo 5: * Professional IDE for dynamic languages * Cross platform (Windows, Linux, and OS X) * Deep upport for Tcl, Perl, Python, PHP, Ruby and more * Added upport for git, hg, and bazaar (beyond cvs, p4, svn support that was already in version 4) * Faster and slicker UI Community resources: * Tcl Developer Xchange: http://www.tcl.tk aka http://tcl.activestate.com * Tcl'ers Wiki: now with ~22,000 pages (''really most of it is good'' :-) * Tcl'ers Wiki Chat (HTTP-based with an IRC bridge) * Community contributed and maintained * Tcl-URL! continues to provide weekly news, posted weekly on [comp.lang.tcl] * SourceForge is for developers; core development managed there by TCT and Tcl/Tk maintainers (used by many other extensions and applications) Tcl/Tk 8.4: * 8.4.19 released April 2008 * At end of development life * 8.5 now considered the stable line * Had several enhancements: VFS, [lset], [lsearch], [trace], 64-bit integer and file system support * Had significant work on performance (+20%) Near or better than 8.0, but now Unicode aware and thread-safe * New Tk widgets What about 8.5? * 4 years in development (8.5a1 March 2004, 8.5.0 final December 2007) * 8.5.5 released October 2008 * 8.6a1 development initiated April 2008 * 99.99% backwards compatible with 8.4 at the Tcl level (exceptions are in error cases; bytecodes have changed--watch version compatability) * Over 100 TIP'ed features included in 8.5 * Coming soon: Tcl & Tk Toolkit, 2nd edition (ETA Spring 2009) by [John Ousterhout] and [Ken Jones] * New {*}$aList expansion operator--replacement for oft-misused [eval] (''90% of evals are for list expansion; half of those were probably written in unsafe ways'') * New [dict] data structure (order-preserving key/value pairs kept as Tcl_Objs); some operations byte-coded * 8.4 emulated version in ActiveTcl * New [expr] operators (**, min, max, isqrt, bool, [entier], in, ni) * New ::tcl::mathfunc namespace for functions (define [expr] functions at the Tcl level) * New ::tcl::mathop namespace for operations (allows importing as procs for prefix math; all functions are byte-code compiled) * No more integer overflow because of bignums (''every single bit hand-verified by [Kevin Kenny]'') * Floating point handling improved to reduce rounding errors (roudn trip between IEEE floating point and strings is now lossless) * Added [lrepeat], [lassign], [lreverse] (good to have for programming language benchmarks); extended [lsort], [lsearch]; List indices now support ''int[[+-]]int'' and ''end[[+-]]int'' syntax * [namespace ensemble]: [[::carrot::foo]] == [[::carrot foo]] * [namespace unknown] (per-namespace unknown control) * [namespace path] (name resolution control) * [namespace upvar] (namespace variable resolution efficiency) * Completely revamped [clock] command; no more Y2038 issues (even on 32-bit systems) * Resource limiting with [interp limit] command * Improved background error handling with [interp bgerror] * Enhanced debugging with [info frame] * New [chan] command to consolidate channel operations and to expose channel reflection at the Tcl level * Enhanced [package] versioning (understands ''a'', ''b'' designation in version number (8.5a5)); allows for bounded ranges. * [Tcl Modules] (.tm) package handling * [tclsh] and [source] -encoding option * [encoding dirs] Tcl level control of where to find encodings * Enhanced [catch] and [return] (makes pure Tcl control structures more powerful) * New [apply] operator for anonymous procedures ([lambda]) * Several new [binary] format codes and improved unsigned value support * new tcl_platform(pointerSize) element * [switch] enhancements: -regexp can provide submatch info; added a -nocase option * New [string] is list|wideinteger classification; also a [[string reverse]] subcommand (''added solely for benchmarks'') Tcl 8.5 gotchas: * [global] varName(elemName) raises an error now; also for [upvar] 0 x(1) y(1) * Don't rely on integer overflow (anymore) * [list] properly quotes the # char * [tcl_precision] now defaults to 0 * Auto-initialize for [incr] (previously an undefined var would cause an error); gains semantic parity with [append], [lappend] Tk 8.5: * Themed widgets! Based on [tile] 0.7.8 work by [Joe English]; identifies itself as tile 0.8.0 * Complements most of the classic Tk widgets * Some new widgets: [notebook], [combobox], [progressbar], [separator], [treeview] * Peering and smooth-scrolling text widgets * Standardized font names * [Xft] support in X11 (requires a recent Linux distro) * Enhanced [wm] commands * Cubic Bezier curves on the canvas * Improved [grid] geometry management (row|columnconfigure by widget name; overall grid anchoring) * Virtual event user data (%d) * Control over idle (activity) timer * Enhanced demos * Classic widgets got some cleanup; restorable with tk::classic::restore (only an issue for X11 users) * Themed Tk widgets (non-default alternative in 8.5); likely to become the default in 9.0 * Classic Tk in tk::* (i.e., tk::button) * Ttk in ttk::* (ttk::button) * Tk and Ttk are complementary, not mutually exclusive Question from [Will Duquette] regarding future documentation of the Ttk style command. Jeff said it is still semi-private, subject to change. Will get better over time. Also needs additional introspection ability into styles. Tk Revitalization at ActiveState * ActiveState Perl Dev Kit 6.0 * First commercial use of Tile * Embeds tcl/tk as a .dll Tcl/Tk 8.6: * Currently in very active development * 8.6a3 released October 2008 * Schedule: 8.6b1 (feature freeze) for early December 2008 * 8.6.0 targeted for March 2009 * Numerous TIPs already targeting 8.6: 21 TIPs final, 71 in draft state (most unlikely to make 8.6 final) * Community input is important Tcl 8.6 Highlights: * Core OO!! (TIP #257, TIP #320), major foundational effort by [Donal Fellows], inspired by [XOTcl] and [snit] * New non-recursive bytecode engine by [Miguel Softer]: enables coroutines/generators (TIP #328), Proper tailcalls (TIP #327) * New [binary] encode|decode with base64 (TIP #317) * Simplified Tcl and C option parsing (TIP #195, TIP #265) * Ability to cancel script evaluation: [interp cancel] (TIP #285) * Enhanced [chan] command: Anonymous pipes (TIP #304), channel transformations (TIP #230) * Find insertion point in sorted list (TIP #313) * Add tcl_platform(pathSeparator) key * Unicode aware [string] trim* (TIP #318) * Grouped sort with [lsort] -stride (TIP #326) * No more interp->result (TIP #330); use [Tcl_GetStringResult](interp) instead; may require some extensions to be updated * Allow [lset] to extend lists (TIP #331) Tk 8.6 Highlights: * New [tk busy] adapted from [BLT]'s busy (TIP #321) * Absolute position of canvas items (TIP #236) * Lots of open TIPs targeting TK; need volunteers... Tcl/Tk 9.0: * Still in the wishlist stage * Rationalize C APIs * Possible restructuring of Tcl level commands and global data * Remove octal support * Tcl_Obj improvements (hydra vs stork, improvements?) * Avoid Perl 6 experience Various ideas in the pipeline. See http://tip.tcl.tk ---- !!!!!! %| [Tcl 2008 Conference Talks] |% !!!!!!