Hacker News new | ask | show | jobs
by rkeene2 2910 days ago
Tcl is very easy to embed into your application. Tcl has a very simple syntax (with just 13 syntax rules). Tcl is very portable. Tcl supports threads and threading using the apartment threading model, where threads generate messages to send to each other. Tcl is asynchronous event-based. Tcl supports virtual filesystems (and virtual time...). Tcl can be compiled to machine code (TclQuadCode, still in progress, but functional). Tcl supports big integers natively. Tcl has excellent documentation for all the library, C API. Tcl has extreme backwards compatibility for binary extensions since all function calls and most data structures are versioned -- if you compile with Tcl version X, your binary extension will work with Tcl version >=X. Tcl has a large library of extensions and a uniform way to fetch them (Teapot). Tcl-based applications can be compiled into a single executable with their interpreter and other resources for single file deployment (that does not extract to disk and run on the run side, it uses the virtual filesystem capabilities to mount the executable and run from there). Tcl is easy to program in and most new Tcl developer's programs work. Tcl can be as small as you want, if you are willing to give up library support. Tcl has excellent unicode support within the BMP (basic multilingual plane; outside the BMP Tcl needs to be compiled differently than the default, which requires a breaking ABI change, though older extensions will still work thanks to versioning). Tcl is extensible within Tcl -- since most of Tcl is composed of the library and there are very few syntax rules most of Tcl can be modified from within Tcl -- you can rewrite "if" and "for" in Tcl if you want, or create your own control structures. Tcl has an option for Safe Interpreters, which can execute untrusted code safely.

What's not to love ?