ELENA in a Nutshell



Functional

ELENA supports both first class functions and first class messages.

Object-oriented

ELENA supports rich set of object-oriented features: abstract classes, interfaces, singletons, class constants, named constructors, variadic methods / constructors and class extensions. Several advanced features are implemented: re-sending and dispatching methods.

Dynamic

A number of of dynamic features is supported : multi-constructors / multi-methods and generic methods. It is possible to provide a custom message dispatcher to implement mix-ins, dynamic records and so on.

Interpretable

It is possible to build code at run-time without runtime-compilation.

Free

ELENA is licensed under the MIT license, free for everyone to use. All source code is publicly viewable on GitHub.





About



ELENA is a general-purpose language with late binding. It is multi-paradigm, combining features of functional and object-oriented programming. It supports both strong and weak types, run-time conversions, boxing and unboxing primitive types, direct usage of external libraries. Rich set of tools are provided to deal with message dispatching : multi-methods, message qualifying, generic message handlers. Multiple-inheritance can be simulated using mixins and type interfaces. Built-in script engine allows to incorporate custom defined scripts into your applications. Both stand-alone applications and Virtual machine clients are supported

Features




Installation



To install just unzip all the files into a directory you want.

You may need to add a path to BIN folder to system environment (e.g. <app root>\bin), or use setup executable.

The language requires Visual C++ Redistributable for VS 2017

To open, compile or debug the programs and libraries use ELENA GUI IDE (<app root>\bin\elide.exe) or ELENA Command Line Compiler (\bin\elc.exe).

In ELENA IDE you may select File-Open-Open Project option and open an appropriate project file (*.prj). Then select Project-Compile option to compile the project and Project-Debug to debug it.





Sponsorship



If you like the project you may help to support it by becoming a sponsor