- Run source programs directly.
- Generates machine binaries via C++ instead of bytecode.
- Statically typed for reliability and scalability.
- Supports both ML-like functional and C-like imperative programming styles.
- Rich set of datatypes in standard library
- Core support for coroutines and lightweight threads.
- Asynchronous socket I/O integrated.
- User defined grammar.
Felix is a highly performant, extensible, and safe programming language suitable for rapid development of software systems.
Felix transparently compiles programs down to C++ and then feeds them into a C++ compiler (e.g. g++, clang++, MSVC). The native C++ compiler does the hard work of low-level optimisation whilst Felix does high-level optimisations and type-checking. The C++ compiler allows Felix to reach fast speeds, but it also provides compatibility and easy interopability with existing C and C++ code bases. The resulting code is very fast, sometimes even faster than C/C++ alone. Context switching is achieved by a pointer swap, and state is maintained by a spaghetti stack.
Felix supports user defined macros (hygenic) and syntactic customizations. This extensibility allows a developer to write embedded domain specific sub-languages (eDSLs) with ease. These customizations can be applied locally in part of a program or as part of library to be used by others.
Felix's type system is similar to that of OCaml or Haskell, supporting typeclasses and discriminated unions but also adding proper sum types. It provides strong support for functional programming, whilst also supporting imperative programming. The type system is strong, strict, and includes first-order polymorphism at its core. Felix supports open overloading like C++, but only allows exact matches.
Deployments are flexible, you can distribute the source files and run them like a scripting language, or distribute them as a native binary. Regular expression support and other features provide string handling on par with Perl. Web programming is enabled by built-in async socket I/O combined with cooperatively multi-tasked fibres.
about the release