Programming Languages on Power

 View Only

ELENA programming language

  • 1.  ELENA programming language

    Posted Tue March 07, 2023 02:33 AM

    After a long time of work, my good friend Aleksey Rakov, implemented support for ppc64le and aarch64 in his project, ELENA programming language

    A brief explanation of why this project is very interesting, for the IBM Power language community
    Different from other programming languages and compilers, which use LLVM to generate the final code, the ELENA language follows an idea more similar to Java/.net, where there is a VM that executes the ELENA byte-code, the conversion of the ELENA byte-code for machine code, uses a conversion table directly in assembly, that is, for each e-code, there is its equivalent in x86, x64, ppc64le and aarch64.
    The project has an assembler for each architecture, that is, the conversion assembly code is easy to read and understand, as can be seen in this code:  ppc64le_core.asm

    Another point that is VERY interesting, the compiler generates an executable file native to the architecture and operating system, EXE for windows and ELF for Linux, that is, to run the program, it is not necessary to run the VM to run the object file of the VM , that is, it follows the idea of .NET on Windows

    The language is influenced by some well-known market languages, such as C# and SmallTalk

    Here a small sample code:

    import system'routines;
    import extensions;
    
    public program()
    {
        console.printLine(console.readLine()
                                  .split()
                                  .selectBy(mssgconst toInt<intConvertOp>[1])
                                  .summarize())
    }
    
    public program_alternative()
    {
        var A := Integer.new();
        var B := Integer.new();
     
        console.loadLine(A,B).printLine(A + B)
    }

    The project has undergone a massive refactoring in recent years to support RISC architectures and also the general syntax of the language.



    ------------------------------
    Alexandre Bencz
    ------------------------------