ELENA Programming Language
[elena-lang.github.io](https://elena-lang.github.io/) | [Docs](https://github.com/ELENA-LANG/elena-lang/wiki/ELENA-Programming-Manual) | [Changelog](https://github.com/ELENA-LANG/elena-lang/blob/master/CHANGELOG.md) | [Contributing](https://github.com/ELENA-LANG/elena-lang/blob/master/CONTRIBUTING.md)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. A rich set of tools is provided to deal with message dispatching : multi-methods, message qualifying, generic message handlers. Multiple-inheritance can be simulated using mixins and type interfaces. The built-in script engine allows incorporating custom-defined scripts into your applications. Both stand-alone applications and Virtual machine clients are supported.
Features
- Free and open-source (MIT licensed)
- Complete source code
- Unicode support (utf-8)
- GUI IDE & Debugger
- Optional types
- Multiple dispatching / multi-methods
- Returning Multiple Values
- Support of variadic methods
- Support of yieldable methods
- Closures
- Mixins
- Type interfaces / conversions
- Class / code templates
- Script Engine
Currently Supported Platforms
- Windows : x86 (32-bit) / x86-64 (64-bit)
- Linux : x86 (32-bit) / x86-64 (64-bit) / ppc64le / arm64 (a64)
Source Download and Compilation
To acquire the source code clone the git repository:
git clone https://github.com/ELENA-LANG/elena-lang.git
Windows:
The compiler code is implemented in C++ and does not require external dependencies. You just need Visual Studio 2019.
You have to add a path to BIN folder to the system environment PATH or copy elenavm.dll and elenart.dll to Windows\System32 folder.
To build the compiler and API under VS2019 / VS2022 you have to go to the root folder and type:
recompile60.bat
Source Code Organization
Windows:
The ELENA source code is organized as follows:
bin binaries and shared libraries
bin\scripts scripts used by the script engine and VM console
bin\templates ELENA project templates
asm source for core routines implemented in assembly
dat\sg language grammar file
dat\og language optimization rules
doc some documentations
elenasrc3\elc source for the compiler
elenasrc3\elenart source for the run-time shared library
elenasrc3\elenasm source for the script engine
elenasrc3\elenavm source for the virtual machine
elenasrc3\gui source for IDE
elenasrc3\tools source for ELENA utilities
examples60 ELENA examples
src60 source for ELENA libraries
Community
We want your contributions and suggestions! One of the easiest ways to contribute is to participate in Github discussions or on Discord.
Please take a look at our contributor page
1. Bugs, questions, suggestions?
If you’ve noticed a bug or have a question go ahead and make one!
Join design discussions or take part in general talks.
2. Implement “up for grab” issues
Good first issue is a good starting point for a first-time contributors.
3. Rosetta code
You may try to implement some of Rosetta code tasks which are not yet implemented
Contact Us
Reach out with any questions you may have and we’ll make sure to answer them as soon as possible!
Platform | Link |
---|---|
💬 Instant Message Chat | |
elenaprolang@gmail.com | |
@elena_language |
Resources
- Nightly builds: https://ci.appveyor.com/project/arakov/elena-lang/build/artifacts
- ELENA Documentation https://github.com/ELENA-LANG/elena-lang/wiki/ELENA-Programming-Manual
- ELENA API 6.0 https://elena-lang.github.io/api/index.html
- Git clone URL: <git://github.com/ELENA-LANG/elena-lang.git>
- Tutorials: https://github.com/ELENA-LANG/tutorials
- ELENA reddit: https://www.reddit.com/r/elena_lang/
- Source code: https://github.com/ELENA-LANG/elena-lang
- Twitter: https://twitter.com/elena_language
- Rosetta code: http://rosettacode.org/wiki/Category:Elena
License
The compiler and executables distributed in this package fall under MIT License, for more information read the file LICENSE.