
A History of Tcl in the Browser Oh no, not again! Wednesday, 26 October 11 1 The Motivation • need a scripting language Anyway I know only one programming language worse than C and that is Javascript ....the most horrible kluge in the history of computing Robert Cailliau - CERN Wednesday, 26 October 11 2 We don’t compile Everything is a string Types are for wimps Eschew obsfucation! Speed is overrated We are the 0.1% Wednesday, 26 October 11 3 The Motivation • need our scripting language - portability - productivity - deployment - relevancy Wednesday, 26 October 11 4 Wednesday, 26 October 11 5 The Motivation • Android - no mainstream Tcl release - no Tk • iOS - Objective C / Javascript only - Tcl - feasible and practical? - deployment Wednesday, 26 October 11 6 The Survey Wednesday, 26 October 11 7 1995 - Eolas WebRouser • the first Web Tcl • one of the first plugins HTML Tcl/Tk WebWish MEAPI Browser Wednesday, 26 October 11 8 1995 - Eolas WebRouser • the first Web Tcl • one of the first plugins Pros Cons • Tcl + Tk • plugin • security model • no longer available • web apps Wednesday, 26 October 11 9 1996 - The Tcl Plugin • SunLabs Tcl Group • one of the first Netscape plugins HTML Tcl/Tk Tcl Plugin NPAPI Browser Wednesday, 26 October 11 10 1996 - The Tcl Plugin • SunLabs Tcl Group • one of the first Netscape plugins Pros Cons • Tcl + Tk • plugin • Safe-Tcl security • not on mobile • still available FF + IE • deployment Wednesday, 26 October 11 11 1998 - Proxy Tk • Java applet + custom server • efficient client/server protocol Tk HTML ProxyTk Tcl Java VM Tcl interpeter Browser Web Server Wednesday, 26 October 11 12 1998 - Proxy Tk • Java applet + custom server • efficient protocol Pros Cons • Tcl + Tk • no offline support • client / server • subset of Tk • deployment • no longer available Wednesday, 26 October 11 13 2003 - TkWeb • render Tcl/Tk using HTML + CGI HTML Tcl/Tk CGI Browser Web Server Wednesday, 26 October 11 14 2003 - TkWeb • render Tcl/Tk using HTML + CGI Pros Cons • Tcl + Tk • experimental • Javascript • incomplete • no plugin • no offline support Wednesday, 26 October 11 15 2006 - Æjaks • Tcl in the server (via Jacl) • Ajax-based windowing system Tk Echo2 Tcl HTML Javascript Echo2 Jacl Java VM Browser Web Server Wednesday, 26 October 11 16 2006 - Æjaks • Tcl in the server (via Jacl) • Ajax-based windowing system Pros Cons • Tcl + Tk • subset of features • Javascript • no offline support • no plugin Wednesday, 26 October 11 17 2007 - JsTcl • Tcl interpreter in Javascript • transliteration of Picol Tcl HTML Javascript Browser Wednesday, 26 October 11 18 2007 - JsTcl • Tcl interpreter in Javascript • transliteration of Picol Pros Cons • Javascript • experimental • no plugin • incomplete Wednesday, 26 October 11 19 2010 - WubTk • Tcl in server • Tk over jQuery over Javascript in browser Tk jQuery HTML Javascript Tcl Tcl interpeter Browser Web Server Wednesday, 26 October 11 20 2010 - WubTk • Tcl in server • Tk over jQuery over Javascript in browser Pros Cons • Tcl + Tk • subset of Tk • Javascript • no client-side Tcl • no plugin • no offline use Wednesday, 26 October 11 21 2011 - NaTcl • Tcl in Google Native Client (NaCl) sandbox • real Tcl, native code Tcl HTML NaTcl NaCl Browser Wednesday, 26 October 11 22 2011 - NaTcl • Tcl in Google Native Client sandbox • Tk over jQuery over Javascript in browser Pros Cons • speed • no Tk • full Tcl in the browser • Google Chrome only • interface with the DOM • plugin Wednesday, 26 October 11 23 2011 - IncrTcl in Javascript • Tcl in Google Native Client sandbox • Tk over HTML/CSS/Javascript in browser Tk Tcl HTML Javascript Browser Wednesday, 26 October 11 24 2011 - IncrTcl in Javascript • Tcl in Google Native Client sandbox • Tk over jQuery over Javascript in browser Pros Cons Wednesday, 26 October 11 25 2011 - NaTk • Tk over jQuery over Javascript • client-side Wednesday, 26 October 11 26 2011 - NaTk • Tk over jQuery over Javascript • client-side Tk Tk jQuery HTML Javascript Browser Wednesday, 26 October 11 27 2011 - NaTk • Tk over jQuery over Javascript • client-side Tk Pros Cons • Javascript • proof of concept • HTML5/CSS3 • subset of Tk • offline use Wednesday, 26 October 11 28 Summary • several options available - the Venerable Plugin - Æjaks - WubTk - NaTcl - incrTcl in Javascript Wednesday, 26 October 11 29 Summary • several options available • arguably none ready for prime time Wednesday, 26 October 11 30 Oh no, not again! Wednesday, 26 October 11 31 Three approaches • translate application code to Javascript • implement the TEBC engine in Javascript • implement Tcl in Javascript Wednesday, 26 October 11 32 Linux in a browser • PC emulator Javascript • small • fast • Linux boots in the browser Wednesday, 26 October 11 33 Wednesday, 26 October 11 34 Linux in a browser • PC emulator Javascript • small • fast • Linux boots in the browser • hand-coded Javascript Wednesday, 26 October 11 35 Emscripten • translate C to Javascript C Code LLVM bitcode Emscripten Javascript Wednesday, 26 October 11 36 Emscripten • translate C to Javascript C Code LLVM bitcode Emscripten Javascript • acceptable performance • other languages + packages ported • which Tcl codebase? Wednesday, 26 October 11 37 Jim Tcl • small footprint • small codebase • advanced features • high degree of compatibility Wednesday, 26 October 11 38 Jim JS • build environment • invoking Tcl function execute(text) { Module.run(text); } function print(text) { console.log(text); } Wednesday, 26 October 11 39 Jim JS • build environment • invoking Tcl • malloc 0 • missing functions Wednesday, 26 October 11 40 Jim JS • build environment • invoking Tcl • malloc 0 • missing functions • performance time {set a 10; set b $a} ActiveTcl 8.6b1.2 0.43 Jim/Firefox 30 Jim/Safari 27 Wednesday, 26 October 11 41 Jim JS • build environment • invoking Tcl • malloc 0 • missing functions • performance • tactical not strategic solution Wednesday, 26 October 11 42 Deja vu all over again • technoarchaeology ? • archeotechnophilia ? • technonecrophilia ! Wednesday, 26 October 11 43 Wednesday, 26 October 11 44 Demo Wednesday, 26 October 11 45 Where to now? • Tcl - tactical - Jim JS • Tcl - strategic - ubiquity - optimized Javascript - speed - native or NaTcl • Tk over HTML5 / CSS3 - desktop + browser Wednesday, 26 October 11 46 Typple anyone? Typeless Programming Language typple.net Wednesday, 26 October 11 47.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages47 Page
-
File Size-