>>7
>highly customizable.
Why is it with these types that have only seen Python and some other languages whose main implementation is interpreted think that compiled is incompatible with customizable.
Had they understood how compilers work, they wouldn't be having that thought. In fact, in practice, best speed are achieved by either full compilation or JIT, with pure interpretation being the slowest. Optional interpretation at runtime is also possible for certain kinds of code. But straight-out dismissing compilation is very silly. That is not to say that if your design is as braindead as PHP's or newLISP's, in that you constantly eval dynamically constructed code(FEXPRs) because you can't make real macros, or the whole thing is based on dynamic scope, with no trace of real lexical scope (there's nothing wrong with dynamic scoping, as long as you're not forcing that kind of scope on by default and without giving the users options). Just look at languages like Common Lisp - almost all implementations are compiled, and it's a very dynamic language which allows you to change just about anything at runtime, but while you can do that and it does carry some speed penalties for the initial change (for example, you recompiled a set of functions in a system), the majority of code doesn't do that too often, if at all, so it benefits from compilation heavily. Other languages prefer JIT compilers, such as JVM/.NET-based ones, or Lua.
A full-fledged compiler or a JIT will almost always have better speeds, unless all you're doing is constantly compiling/recompiling the code, which in my experience is something you don't do to often at runtime, and if you really are doing that as much at runtime, you can optimize the compiler for speed or just switch to a runtime interpreter(quite a few Lisp implementations do have an interpreter for evaluating simple pieces of code which would cost more to compile).
Just admit that it's a lot more work to make a full-fledged compiler than it is to make an interpreter.