SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Tcl/Tk 8.6
 Current development branch (or 9.0?)
 In final release candidates right now
  8.6a1 development initiated April 2008
    Same month of 8.4.19 release
  8.6b1 released December 2008
  8.6b2 released August 2011
  8.6b3 released September 2012
  8.6.0 in RC now
Tcl/Tk 8.6 TIPs
 Numerous TIPs implemented for 8.6
  65 TIPs Final
   +14 from 2011; +3 previous year
   +1 also in 8.5.11 (tk_getSaveFile change)
   1 more in accepted state (T399)
   5 more in Draft state (3 redundant or out-dated)
  81 TIPs targeting 8.7 (in Draft state)
   3 more already Withdrawn
   +9 from 2011; +5 previous year
  7 TIPs targeting 9.0 (in Draft state)
   +0 since 2010
   1 withdrawn, 1 rejected
Tcl 8.6 OO
 Core OO! (T257 T320 T354 T380
 T381 T397)                          % oo::class create example {
                                       variable foo
  Foundational OO system               constructor {{value 10}} {
  inspired by XOTcl and snit              set foo 0
                                          my bar $value
  Provided in core (no package)        }
                                       destructor { }
  oo::class, oo::define, oo::copy,     method bar {input} {
  oo::object, ...                         incr foo $input
                                       }
  Class-based object system with     }
                                     => ::example
  dynamic redefinition allowed       % example create b 4
  Per-object customization with      => ::b
                                     % b bar 3
  filters, mixins and more           => 7
  Has C API to create and
  manage classes, instances and
  methods
Tcl 8.6 NRE
 New non-recursive bytecode engine
  Less stack hammering (aka stackless)
 Proper tailcalls (T327)
 Enables coroutines, aka generators
  coroutine, info coroutine, yield (T328)
    Symmetric coroutines, multiples args, yieldto (T396)
    tcl::unsupported::yieldTo/yieldm
  Coroutines still in development
 C API to allow user commands to be restartable
  Tcl_NR* (T322 T353 T356)
  Not all Tcl commands can yield
Tcl 8.6 string handling
 Simplified Tcl prefix matching (T195)
  tcl::prefix,   with C API for option parsing (T265)
 Unicode aware string is space/trim* (T318
 T413)
  BOM and zero-width spaces added
 New string is entier (T395)
  Number of any size (accounts for bignums)
Tcl 8.6 list handling
 Find insertion point in sorted list lsearch -bisect
 (T313)
 Grouped sort with lsort -stride (T326)
  Great for use with array get or dict output
 Allow lset to extend lists (T331)
  lset myList end+1 foo equivalent to lappend      myList foo
 Collecting loops with lmap and dict map (T405)
   Simplified (and faster) than foreach or apply
   set good [lmap x $vals {expr {[isGood $x] ? $x : [continue]}}]
Tcl 8.6 interp and namespace
 Ability to cancel script evaluation (T285)
  interp cancel,  C API helper Tcl_CancelEval
  Check if interp is active Tcl_InterpActive (T335)
 namespace ensemble create -parameters (T314)
 encoding system at startup is iso8859-1, not
 identity
 info errorstack, -errorstack return dict (T348)
 tcl::unsupported::representation
  Get Tcl_Obj internal rep
Tcl 8.6 extras
 New binary encode|decode with base64 (T317)
  binary   is now a namespace ensemble
 Base-2 support in format and scan with %b (T343)
 dict filter takes multiple patterns args (T341)
 Windows registry has 64-bit support (T362)
 Added tcl_platform(pathSeparator) key (T315)
  For $::env(PATH), not file paths (use file)
 Unicode literals past the BMP (T388)
 load adds -global and -lazy options (T416)
More 8.6 stuff!
 More commands take no args gracefully (T323)
  Reduce non-essential error cases, good with {*}

 New try/finally syntax (T329)             set f [open $file a]
                                           try {
  try body ?handler...? ?finally script?
                                               puts $f "oops ..."
  throw type message                           # ...
    Alternative to error                   } finally {
                                               close $f
                                           }
   try {
       set f [open $file]
   } trap {POSIX EISDIR} {}     {
       puts "failed to open     $file: it's a directory"
   } trap {POSIX ENOENT} {}     {
       puts "failed to open     $file: it doesn't exist"
   }
Tcl 8.6 files and channels
 New file tempfile ?nameVar? ?template?
  Creates tempfile and returns a channel (T210)
 Enhanced chan command
  close can close only read or write side (T332)
  Anonymous pipes with chan pipe (T304)
  Tcl level channel transformations chan push|pop (T230)
 IPv6 support in socket (T162)
  Currently uses OS preference for AF selection
 Exit quickly with non-blocking block channels (T398)
But wait, there’s more!
 Zlib compression included with new core zlib
 command (T234 T400)
  Builds on standard zlib sources
  Full zip and unzip support for gzip and zlib formats
  Supports channel streaming for transforms
  Includes adler32 and crc32 checksumming
  Includes Tcl_Zlib* C API
And on the C side of 8.6
 Make Tcl_Interp more opaque
  No more interp->result (T330)
   Use Tcl_GetStringResult(interp) instead
  API for interp->errorLine (T336)
    Tcl_Get|SetErrorLine
 Access to startup scripts from C (T338)
  Tcl_Obj *Tcl_GetStartupScript(const char **encodingNamePtr)
  void Tcl_SetStartupScript(Tcl_Obj *pathPtr, const char *encodingName)

 Exported Tcl_TransferResult (T307)
 Portable Tcl_StatBuf access (T316)
  Tcl_Get*FromStat
 New Tcl_BackgroundException for bgerror (T337)
More 8.6 Under the Hood
 Exported library loading functions (T357)
  Tcl_LoadFile, Tcl_FindSymbol, Tcl_FSUnloadFile
 Windows moving to full -DUNICODE build
  Supports Windows XP or later
 OS X moving to Cocoa
  Supports OS X 10.5 or later, allows 64-bit builds
 Next version of [incr Tcl] (v4) uses TclOO
 Thread extension to be included with core sources
  Thread builds (--enable-threads) now default (T364)
  Several other extensions included too
Tcl 8.6 TDBC
     Standard interface for database connectors (T308)
      Currently has drivers for sqlite, mysql, odbc and postgres
     Leverages TclOO framework

package require tdbc::sqlite3      db transaction {
tdbc::sqlite3::connection create     set firstname "Fred"
   db "phonebook.sqlite3"            set lastname "Flintstone"


set statement [db prepare {            $statement foreach row {
 SELECT phone_num FROM directory         puts [dict get $row phone_num]
                                       }
 WHERE first_name = :firstname
                                   }
 AND last_name = :lastname
}]                                 $statement close
                                   db close
Tk 8.6 Features
 Windows Vista/7 theme support for Ttk
  Backported to 8.5.8
 Updated mouse-wheel behavior (T171)
 Tk OS X Cocoa
  Enables 64-bit builds
  Requires OS X 10.5+
  Available for Tk 8.5
 New canvas features
  Absolute canvas item positioning (T236)
  Canvas item vertex editing (T97)
  Angled text items (T119)
Tk 8.6 font dialog
 Uses native dialog on Windows, OS X (T324)
 % tk fontchooser show
 % tk fontchooser configure
 -parent . -title {} -font {{Gill Sans} 12 bold roman}
 -command {} -visible 1
Tk 8.6 PNG support
 Full PNG support with compression (T244)
  Leverages zlib support
 image create photo -file ouster.png 
                    -format "png -alpha 0.5"
Tk 8.6 extras
 New tk busy adapted from BLT’s busy (T321)
 User can generate <Focus*> events
 Unfocussed text insertion cursor control (T197)
 GIF image writing uses LZW compression
 wm attributes -type on X11 (T359)
 Modernized X11 menus (T360)
 Web colors for Tk (T403)
 New ttk::spinbox widget (also in 8.5.9)
  Consider the alternate widgets combobox and menubutton
In summary ...
 8.5 is 99% compatible with 8.4 at Tcl level
  Over 100 new features for developers
  Stable and ready for all task loads
    Slightly slower than 8.4
 8.6 currently in final RC
  Final release date: taking bets!
  Lots of new features
    Slightly slower than 8.5, performance wasn’t a focus
  Further discussion at the conference

 Tcl Dev Kit and Komodo support both 8.5 and 8.6
  Final 8.6 will require further an update

Mais conteúdo relacionado

Mais procurados

Clojure made simple - Lightning talk
Clojure made simple - Lightning talkClojure made simple - Lightning talk
Clojure made simple - Lightning talkJohn Stevenson
 
The TclQuadcode Compiler
The TclQuadcode CompilerThe TclQuadcode Compiler
The TclQuadcode CompilerDonal Fellows
 
Scala - where objects and functions meet
Scala - where objects and functions meetScala - where objects and functions meet
Scala - where objects and functions meetMario Fusco
 
The best language in the world
The best language in the worldThe best language in the world
The best language in the worldDavid Muñoz Díaz
 
Euro python2011 High Performance Python
Euro python2011 High Performance PythonEuro python2011 High Performance Python
Euro python2011 High Performance PythonIan Ozsvald
 
An Intro to Python in 30 minutes
An Intro to Python in 30 minutesAn Intro to Python in 30 minutes
An Intro to Python in 30 minutesSumit Raj
 
T3chFest 2016 - The polyglot programmer
T3chFest 2016 - The polyglot programmerT3chFest 2016 - The polyglot programmer
T3chFest 2016 - The polyglot programmerDavid Muñoz Díaz
 
Clojure: The Art of Abstraction
Clojure: The Art of AbstractionClojure: The Art of Abstraction
Clojure: The Art of AbstractionAlex Miller
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrainsit-people
 
Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Kel Cecil
 
The Ring programming language version 1.6 book - Part 37 of 189
The Ring programming language version 1.6 book - Part 37 of 189The Ring programming language version 1.6 book - Part 37 of 189
The Ring programming language version 1.6 book - Part 37 of 189Mahmoud Samir Fayed
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Introthnetos
 

Mais procurados (20)

Clojure made simple - Lightning talk
Clojure made simple - Lightning talkClojure made simple - Lightning talk
Clojure made simple - Lightning talk
 
The TclQuadcode Compiler
The TclQuadcode CompilerThe TclQuadcode Compiler
The TclQuadcode Compiler
 
Scala - where objects and functions meet
Scala - where objects and functions meetScala - where objects and functions meet
Scala - where objects and functions meet
 
The best language in the world
The best language in the worldThe best language in the world
The best language in the world
 
Initial Java Core Concept
Initial Java Core ConceptInitial Java Core Concept
Initial Java Core Concept
 
Euro python2011 High Performance Python
Euro python2011 High Performance PythonEuro python2011 High Performance Python
Euro python2011 High Performance Python
 
Python
PythonPython
Python
 
Kotlin, why?
Kotlin, why?Kotlin, why?
Kotlin, why?
 
Comparing JVM languages
Comparing JVM languagesComparing JVM languages
Comparing JVM languages
 
An Intro to Python in 30 minutes
An Intro to Python in 30 minutesAn Intro to Python in 30 minutes
An Intro to Python in 30 minutes
 
Hw09 Hadoop + Clojure
Hw09   Hadoop + ClojureHw09   Hadoop + Clojure
Hw09 Hadoop + Clojure
 
T3chFest 2016 - The polyglot programmer
T3chFest 2016 - The polyglot programmerT3chFest 2016 - The polyglot programmer
T3chFest 2016 - The polyglot programmer
 
Clojure: The Art of Abstraction
Clojure: The Art of AbstractionClojure: The Art of Abstraction
Clojure: The Art of Abstraction
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
 
Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!
 
Faster Python, FOSDEM
Faster Python, FOSDEMFaster Python, FOSDEM
Faster Python, FOSDEM
 
Hands on lua
Hands on luaHands on lua
Hands on lua
 
The Ring programming language version 1.6 book - Part 37 of 189
The Ring programming language version 1.6 book - Part 37 of 189The Ring programming language version 1.6 book - Part 37 of 189
The Ring programming language version 1.6 book - Part 37 of 189
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
 

Destaque

Programación en OTcl
Programación en OTclProgramación en OTcl
Programación en OTclJesus Vilchez
 
Making an Object System with Tcl 8.5
Making an Object System with Tcl 8.5Making an Object System with Tcl 8.5
Making an Object System with Tcl 8.5Donal Fellows
 
Tcl tk
Tcl tkTcl tk
Tcl tkTiago
 
Optimizing Tcl Bytecode
Optimizing Tcl BytecodeOptimizing Tcl Bytecode
Optimizing Tcl BytecodeDonal Fellows
 
]project-open[ Package Manager
]project-open[ Package Manager]project-open[ Package Manager
]project-open[ Package ManagerKlaus Hofeditz
 
TAO Fayan_Canvas design by tcltk_Final report
TAO Fayan_Canvas design by tcltk_Final reportTAO Fayan_Canvas design by tcltk_Final report
TAO Fayan_Canvas design by tcltk_Final reportFayan TAO
 
The ActiveState of Tcl
The ActiveState of TclThe ActiveState of Tcl
The ActiveState of TclActiveState
 
Criteria for selecting a research problem
Criteria for selecting a research problemCriteria for selecting a research problem
Criteria for selecting a research problemSelvi Raveendran
 
Lenguajes De Programacion
Lenguajes De ProgramacionLenguajes De Programacion
Lenguajes De ProgramacionROSA859
 

Destaque (12)

Programación en OTcl
Programación en OTclProgramación en OTcl
Programación en OTcl
 
Making an Object System with Tcl 8.5
Making an Object System with Tcl 8.5Making an Object System with Tcl 8.5
Making an Object System with Tcl 8.5
 
Tcl tk
Tcl tkTcl tk
Tcl tk
 
Optimizing Tcl Bytecode
Optimizing Tcl BytecodeOptimizing Tcl Bytecode
Optimizing Tcl Bytecode
 
]project-open[ Package Manager
]project-open[ Package Manager]project-open[ Package Manager
]project-open[ Package Manager
 
Unit vii wp ppt
Unit vii wp pptUnit vii wp ppt
Unit vii wp ppt
 
TAO Fayan_Canvas design by tcltk_Final report
TAO Fayan_Canvas design by tcltk_Final reportTAO Fayan_Canvas design by tcltk_Final report
TAO Fayan_Canvas design by tcltk_Final report
 
Tcl tk howto
Tcl tk howtoTcl tk howto
Tcl tk howto
 
The ActiveState of Tcl
The ActiveState of TclThe ActiveState of Tcl
The ActiveState of Tcl
 
Criteria for selecting a research problem
Criteria for selecting a research problemCriteria for selecting a research problem
Criteria for selecting a research problem
 
Lenguajes De Programacion
Lenguajes De ProgramacionLenguajes De Programacion
Lenguajes De Programacion
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Semelhante a Tcl2012 8.6 Changes

Os Vanrossum
Os VanrossumOs Vanrossum
Os Vanrossumoscon2007
 
The Ring programming language version 1.10 book - Part 34 of 212
The Ring programming language version 1.10 book - Part 34 of 212The Ring programming language version 1.10 book - Part 34 of 212
The Ring programming language version 1.10 book - Part 34 of 212Mahmoud Samir Fayed
 
Mastering Kotlin Standard Library
Mastering Kotlin Standard LibraryMastering Kotlin Standard Library
Mastering Kotlin Standard LibraryNelson Glauber Leal
 
The Ring programming language version 1.10 book - Part 19 of 212
The Ring programming language version 1.10 book - Part 19 of 212The Ring programming language version 1.10 book - Part 19 of 212
The Ring programming language version 1.10 book - Part 19 of 212Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 117 of 202
The Ring programming language version 1.8 book - Part 117 of 202The Ring programming language version 1.8 book - Part 117 of 202
The Ring programming language version 1.8 book - Part 117 of 202Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 94 of 202
The Ring programming language version 1.8 book - Part 94 of 202The Ring programming language version 1.8 book - Part 94 of 202
The Ring programming language version 1.8 book - Part 94 of 202Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 24 of 180
The Ring programming language version 1.5.1 book - Part 24 of 180The Ring programming language version 1.5.1 book - Part 24 of 180
The Ring programming language version 1.5.1 book - Part 24 of 180Mahmoud Samir Fayed
 
The Ring programming language version 1.9 book - Part 124 of 210
The Ring programming language version 1.9 book - Part 124 of 210The Ring programming language version 1.9 book - Part 124 of 210
The Ring programming language version 1.9 book - Part 124 of 210Mahmoud Samir Fayed
 
C cheat sheet for varsity (extreme edition)
C cheat sheet for varsity (extreme edition)C cheat sheet for varsity (extreme edition)
C cheat sheet for varsity (extreme edition)Saifur Rahman
 
2 architecture anddatastructures
2 architecture anddatastructures2 architecture anddatastructures
2 architecture anddatastructuresSolin TEM
 
The Ring programming language version 1.6 book - Part 184 of 189
The Ring programming language version 1.6 book - Part 184 of 189The Ring programming language version 1.6 book - Part 184 of 189
The Ring programming language version 1.6 book - Part 184 of 189Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 5 of 84
The Ring programming language version 1.2 book - Part 5 of 84The Ring programming language version 1.2 book - Part 5 of 84
The Ring programming language version 1.2 book - Part 5 of 84Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 25 of 184
The Ring programming language version 1.5.3 book - Part 25 of 184The Ring programming language version 1.5.3 book - Part 25 of 184
The Ring programming language version 1.5.3 book - Part 25 of 184Mahmoud Samir Fayed
 
Coding convention
Coding conventionCoding convention
Coding conventionKhoa Nguyen
 
Generics in .NET, C++ and Java
Generics in .NET, C++ and JavaGenerics in .NET, C++ and Java
Generics in .NET, C++ and JavaSasha Goldshtein
 
Templates presentation
Templates presentationTemplates presentation
Templates presentationmalaybpramanik
 

Semelhante a Tcl2012 8.6 Changes (20)

Summary of C++17 features
Summary of C++17 featuresSummary of C++17 features
Summary of C++17 features
 
Os Vanrossum
Os VanrossumOs Vanrossum
Os Vanrossum
 
tokyotalk
tokyotalktokyotalk
tokyotalk
 
The Ring programming language version 1.10 book - Part 34 of 212
The Ring programming language version 1.10 book - Part 34 of 212The Ring programming language version 1.10 book - Part 34 of 212
The Ring programming language version 1.10 book - Part 34 of 212
 
Mastering Kotlin Standard Library
Mastering Kotlin Standard LibraryMastering Kotlin Standard Library
Mastering Kotlin Standard Library
 
The Ring programming language version 1.10 book - Part 19 of 212
The Ring programming language version 1.10 book - Part 19 of 212The Ring programming language version 1.10 book - Part 19 of 212
The Ring programming language version 1.10 book - Part 19 of 212
 
The Ring programming language version 1.8 book - Part 117 of 202
The Ring programming language version 1.8 book - Part 117 of 202The Ring programming language version 1.8 book - Part 117 of 202
The Ring programming language version 1.8 book - Part 117 of 202
 
The Ring programming language version 1.8 book - Part 94 of 202
The Ring programming language version 1.8 book - Part 94 of 202The Ring programming language version 1.8 book - Part 94 of 202
The Ring programming language version 1.8 book - Part 94 of 202
 
The Ring programming language version 1.5.1 book - Part 24 of 180
The Ring programming language version 1.5.1 book - Part 24 of 180The Ring programming language version 1.5.1 book - Part 24 of 180
The Ring programming language version 1.5.1 book - Part 24 of 180
 
The Ring programming language version 1.9 book - Part 124 of 210
The Ring programming language version 1.9 book - Part 124 of 210The Ring programming language version 1.9 book - Part 124 of 210
The Ring programming language version 1.9 book - Part 124 of 210
 
C cheat sheet for varsity (extreme edition)
C cheat sheet for varsity (extreme edition)C cheat sheet for varsity (extreme edition)
C cheat sheet for varsity (extreme edition)
 
2 architecture anddatastructures
2 architecture anddatastructures2 architecture anddatastructures
2 architecture anddatastructures
 
The Ring programming language version 1.6 book - Part 184 of 189
The Ring programming language version 1.6 book - Part 184 of 189The Ring programming language version 1.6 book - Part 184 of 189
The Ring programming language version 1.6 book - Part 184 of 189
 
Templates2
Templates2Templates2
Templates2
 
The Ring programming language version 1.2 book - Part 5 of 84
The Ring programming language version 1.2 book - Part 5 of 84The Ring programming language version 1.2 book - Part 5 of 84
The Ring programming language version 1.2 book - Part 5 of 84
 
The Ring programming language version 1.5.3 book - Part 25 of 184
The Ring programming language version 1.5.3 book - Part 25 of 184The Ring programming language version 1.5.3 book - Part 25 of 184
The Ring programming language version 1.5.3 book - Part 25 of 184
 
Coding convention
Coding conventionCoding convention
Coding convention
 
The Future of C++
The Future of C++The Future of C++
The Future of C++
 
Generics in .NET, C++ and Java
Generics in .NET, C++ and JavaGenerics in .NET, C++ and Java
Generics in .NET, C++ and Java
 
Templates presentation
Templates presentationTemplates presentation
Templates presentation
 

Último

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Último (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

Tcl2012 8.6 Changes

  • 1. Tcl/Tk 8.6 Current development branch (or 9.0?) In final release candidates right now 8.6a1 development initiated April 2008 Same month of 8.4.19 release 8.6b1 released December 2008 8.6b2 released August 2011 8.6b3 released September 2012 8.6.0 in RC now
  • 2. Tcl/Tk 8.6 TIPs Numerous TIPs implemented for 8.6 65 TIPs Final +14 from 2011; +3 previous year +1 also in 8.5.11 (tk_getSaveFile change) 1 more in accepted state (T399) 5 more in Draft state (3 redundant or out-dated) 81 TIPs targeting 8.7 (in Draft state) 3 more already Withdrawn +9 from 2011; +5 previous year 7 TIPs targeting 9.0 (in Draft state) +0 since 2010 1 withdrawn, 1 rejected
  • 3. Tcl 8.6 OO Core OO! (T257 T320 T354 T380 T381 T397) % oo::class create example { variable foo Foundational OO system constructor {{value 10}} { inspired by XOTcl and snit set foo 0 my bar $value Provided in core (no package) } destructor { } oo::class, oo::define, oo::copy, method bar {input} { oo::object, ... incr foo $input } Class-based object system with } => ::example dynamic redefinition allowed % example create b 4 Per-object customization with => ::b % b bar 3 filters, mixins and more => 7 Has C API to create and manage classes, instances and methods
  • 4. Tcl 8.6 NRE New non-recursive bytecode engine Less stack hammering (aka stackless) Proper tailcalls (T327) Enables coroutines, aka generators coroutine, info coroutine, yield (T328) Symmetric coroutines, multiples args, yieldto (T396) tcl::unsupported::yieldTo/yieldm Coroutines still in development C API to allow user commands to be restartable Tcl_NR* (T322 T353 T356) Not all Tcl commands can yield
  • 5. Tcl 8.6 string handling Simplified Tcl prefix matching (T195) tcl::prefix, with C API for option parsing (T265) Unicode aware string is space/trim* (T318 T413) BOM and zero-width spaces added New string is entier (T395) Number of any size (accounts for bignums)
  • 6. Tcl 8.6 list handling Find insertion point in sorted list lsearch -bisect (T313) Grouped sort with lsort -stride (T326) Great for use with array get or dict output Allow lset to extend lists (T331) lset myList end+1 foo equivalent to lappend myList foo Collecting loops with lmap and dict map (T405) Simplified (and faster) than foreach or apply set good [lmap x $vals {expr {[isGood $x] ? $x : [continue]}}]
  • 7. Tcl 8.6 interp and namespace Ability to cancel script evaluation (T285) interp cancel, C API helper Tcl_CancelEval Check if interp is active Tcl_InterpActive (T335) namespace ensemble create -parameters (T314) encoding system at startup is iso8859-1, not identity info errorstack, -errorstack return dict (T348) tcl::unsupported::representation Get Tcl_Obj internal rep
  • 8. Tcl 8.6 extras New binary encode|decode with base64 (T317) binary is now a namespace ensemble Base-2 support in format and scan with %b (T343) dict filter takes multiple patterns args (T341) Windows registry has 64-bit support (T362) Added tcl_platform(pathSeparator) key (T315) For $::env(PATH), not file paths (use file) Unicode literals past the BMP (T388) load adds -global and -lazy options (T416)
  • 9. More 8.6 stuff! More commands take no args gracefully (T323) Reduce non-essential error cases, good with {*} New try/finally syntax (T329) set f [open $file a] try { try body ?handler...? ?finally script? puts $f "oops ..." throw type message # ... Alternative to error } finally { close $f } try { set f [open $file] } trap {POSIX EISDIR} {} { puts "failed to open $file: it's a directory" } trap {POSIX ENOENT} {} { puts "failed to open $file: it doesn't exist" }
  • 10. Tcl 8.6 files and channels New file tempfile ?nameVar? ?template? Creates tempfile and returns a channel (T210) Enhanced chan command close can close only read or write side (T332) Anonymous pipes with chan pipe (T304) Tcl level channel transformations chan push|pop (T230) IPv6 support in socket (T162) Currently uses OS preference for AF selection Exit quickly with non-blocking block channels (T398)
  • 11. But wait, there’s more! Zlib compression included with new core zlib command (T234 T400) Builds on standard zlib sources Full zip and unzip support for gzip and zlib formats Supports channel streaming for transforms Includes adler32 and crc32 checksumming Includes Tcl_Zlib* C API
  • 12. And on the C side of 8.6 Make Tcl_Interp more opaque No more interp->result (T330) Use Tcl_GetStringResult(interp) instead API for interp->errorLine (T336) Tcl_Get|SetErrorLine Access to startup scripts from C (T338) Tcl_Obj *Tcl_GetStartupScript(const char **encodingNamePtr) void Tcl_SetStartupScript(Tcl_Obj *pathPtr, const char *encodingName) Exported Tcl_TransferResult (T307) Portable Tcl_StatBuf access (T316) Tcl_Get*FromStat New Tcl_BackgroundException for bgerror (T337)
  • 13. More 8.6 Under the Hood Exported library loading functions (T357) Tcl_LoadFile, Tcl_FindSymbol, Tcl_FSUnloadFile Windows moving to full -DUNICODE build Supports Windows XP or later OS X moving to Cocoa Supports OS X 10.5 or later, allows 64-bit builds Next version of [incr Tcl] (v4) uses TclOO Thread extension to be included with core sources Thread builds (--enable-threads) now default (T364) Several other extensions included too
  • 14. Tcl 8.6 TDBC Standard interface for database connectors (T308) Currently has drivers for sqlite, mysql, odbc and postgres Leverages TclOO framework package require tdbc::sqlite3 db transaction { tdbc::sqlite3::connection create set firstname "Fred" db "phonebook.sqlite3" set lastname "Flintstone" set statement [db prepare { $statement foreach row { SELECT phone_num FROM directory puts [dict get $row phone_num] } WHERE first_name = :firstname } AND last_name = :lastname }] $statement close db close
  • 15. Tk 8.6 Features Windows Vista/7 theme support for Ttk Backported to 8.5.8 Updated mouse-wheel behavior (T171) Tk OS X Cocoa Enables 64-bit builds Requires OS X 10.5+ Available for Tk 8.5 New canvas features Absolute canvas item positioning (T236) Canvas item vertex editing (T97) Angled text items (T119)
  • 16. Tk 8.6 font dialog Uses native dialog on Windows, OS X (T324) % tk fontchooser show % tk fontchooser configure -parent . -title {} -font {{Gill Sans} 12 bold roman} -command {} -visible 1
  • 17. Tk 8.6 PNG support Full PNG support with compression (T244) Leverages zlib support image create photo -file ouster.png -format "png -alpha 0.5"
  • 18. Tk 8.6 extras New tk busy adapted from BLT’s busy (T321) User can generate <Focus*> events Unfocussed text insertion cursor control (T197) GIF image writing uses LZW compression wm attributes -type on X11 (T359) Modernized X11 menus (T360) Web colors for Tk (T403) New ttk::spinbox widget (also in 8.5.9) Consider the alternate widgets combobox and menubutton
  • 19. In summary ... 8.5 is 99% compatible with 8.4 at Tcl level Over 100 new features for developers Stable and ready for all task loads Slightly slower than 8.4 8.6 currently in final RC Final release date: taking bets! Lots of new features Slightly slower than 8.5, performance wasn’t a focus Further discussion at the conference Tcl Dev Kit and Komodo support both 8.5 and 8.6 Final 8.6 will require further an update