I started with the goal to write a C implementation just after I could verify the idea. Yet this is a list of reasons why, back then at least, Tcl was a great choice to write a prototype:
- Tcl reference counting automatic mem management is extermely solid: it does not introduce any pause and is very consistent in long running processes. Another language I love is Ruby: when I used it for similar reasons, a few years later, I was shocked by how impossible it was to run long running processes in Ruby because of the garbage collector limitations.
- Now many languages support event-driven programming very well, but Tcl used to have this for many many years in 2009, it was rock solid.
So Tcl allowed to write something that was not fragile, but only limited in speed and with a large memory footprint. And that served very well as a proof of concept to validate the idea, and then switch to the C implementation.
This code never ran in production, if I remember correctly: I stopped the experiment as soon as I saw it working well and as soon as I understood the fork-based persistence I wanted to implement was impractical in Tcl.
- Tcl reference counting automatic mem management is extermely solid: it does not introduce any pause and is very consistent in long running processes. Another language I love is Ruby: when I used it for similar reasons, a few years later, I was shocked by how impossible it was to run long running processes in Ruby because of the garbage collector limitations.
- Now many languages support event-driven programming very well, but Tcl used to have this for many many years in 2009, it was rock solid.
So Tcl allowed to write something that was not fragile, but only limited in speed and with a large memory footprint. And that served very well as a proof of concept to validate the idea, and then switch to the C implementation.
This code never ran in production, if I remember correctly: I stopped the experiment as soon as I saw it working well and as soon as I understood the fork-based persistence I wanted to implement was impractical in Tcl.