Frequently Asked things about Indri, in no particular order.

  • Why use JavaScript?

    Well, I wanted a language that you could buy a book on, in most bookstores. I am also biased to languages with C++ / Java -like syntax, and had been working extensively with Mozilla in my day job, so JavaScript was a natural choice. Also, the Mozilla implementation, SpiderMonkey, supports very fine-grained locking of interpreter data, making it very suitable for a heavily threaded server.

  • So why replace JavaScript with a custom language?

    Because after a year of development, it's clear that the level of integration indri requies with the script runtime is nearly impossible to achieve with the SpiderMonkey engine. This is partly because the code is highly-optimized C, and partly because forking the code significantly from the Mozilla version would be a maintenance nightmare. Other problem points are the complex object ownership model, which doesn't mesh terribly well (and hence leads to garbage collection crashes and hangs), and the large amounts of code in indri itself which exists purely to interoperate with JS.