A History of Tcl in the Browser Oh No, Not Again!

A History of Tcl in the Browser Oh No, Not Again!

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.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    47 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us