Lfyre is a programming language and the interactive compiler for the same language.
Its key features are flexibility, performance and simplicity.
For instance, lfyre code can be compiled or interpreted and can define new language keywords and operators.
Lfyre programming language and interactive compiler aim at many things at once:
first of all, the compiler is really interactive: you can compile, uncompile, run and debug source code from its prompt.
second, lfyre aims at filling the gap between low and high level languages by a modular approach:
the compiler provides a minimal set of features, most notably support for basic types and extensions, while modules written in lfyre provide the rest:
most keywords and operators, classes library, etc.
Lfyre code can be compiled (at the moment by translating it into C) or interpreted by a high performance virtual machine built in the compiler. The virtual machine is used by the compiler to execute and debug source code interactively, or while compiling (this allows a program to define new keywords, whose associated code must run while compiling).
All parts of the compiler (parser, resolver, C and vm translators, virtual machine) can be programmatically accessed from lfyre code. For example, a program can reuse lfyre parser to read a configuration file or can compile some modules at run-time and load them.
Or even, a program may load untrusted or untested code and run it safely inside the virtual machine.
Lfyre interactive compiler is portable, except for some exotic techniques used to speedup the virtual machine. Such speedups can anyway be disabled, obtaining fully portable code.
Lfyre compiled code aims and is expected to run at least as fast as hand-written C.
From the downside, lfyre is a "classic" procedural language with templates, reflection and single inheritance. Some features typical of functional languages are being investigated but are probably out of scope.
The name "lfyre" is a shortcut of Lfyre - a Language designed for FlexibilitY, Reflection and Extensibility.