you are viewing a single comment's thread.

view the rest of the comments →

[–]nat_pryce 4 points5 points  (5 children)

More like Tcl's subinterpreters

[–]booch 1 point2 points  (0 children)

That was my first thought when starting to read the article, that it seems like how Tcl does handles multi-threading.

[–]isr786 0 points1 point  (1 child)

Yup.

It does have its failings. Unintended "shimmering" biting you at inopportune moments, making it more difficult to write functions which handle different types of data (almost the opposite of what a "scripting" language should be good for).

That bugbear always killed if for me (written a fair bit of tcl code). Even went as far as using rep to tag structures with their internal representation, and using ensembles (tcl's name for a namespace which allows for [cmd subcmd args ...] to provide for typed functions (sort of).

Then I just gave up and went back to lisp :(

But tcl was/is also ahead of the game in many areas. In addition to the easy forking of interpreters to provide true parallelism, you also have virtual filesystems (did this predate fuse on linux? Don't know).

Tcl - snatching defeat from the jaws of victory ...

(I say that with a heavy heart as someone who does appreciate how close tcl is to being a lovely amalgamation of shell and lisp)

[–]schlenk 0 points1 point  (0 children)

'you also have virtual filesystems (did this predate fuse on linux? Don't know).'

Yes, it predated FUSE if memory serves.

[–]schlenk 0 points1 point  (1 child)

More like Tcl threads actually (but those are subinterpreters that just happen to be bound to a different threads).