﻿
Some notes on Irony Interpreter implementation

Goals and non-goals 
1. Interpreter should be able to support more-less straightforward implementation of a typical dynamic/scripting languages like Python, Ruby or Lua - except maybe most fancy features like continuations and co-routines.
2. Interperter must be free-threaded - it should allow execution of scripts in parallel on multiple threads. Interpreter should not crash or "loose" data because of concurrent access from different threads. Note that we do NOT intend to solve automatically the concurrency problems of scripting code: script author should use some locking mechanism to preserve integrity of complex data. But no matter what kind of actions script code performs on concurrent threads, the data is not corrupted or lost by the interpreter. 
3. And of course, we want a good performance. Good enough for implementations to compete with "native" implementations.  
4. Non-goals: this version of interpreter will not support such advanced features as continuations, co-routines, and fibers (light threads). This is a minor setback for languages like Ruby, but a major trouble for Scheme - continuations are important part of the languages. Scheme will have to wait for Interpreter2 - more sophisticated version which I plan to build in the future (and already have some designs and code for it).   







