L1VM
reliable - fast - secure - type safe - unique - multi platform |
$ l1vm hello -q Hello world! |
|
Donate: |
The L1VM is a fast, secure and reliable open source VM (GPL). It was built with security in mind. It can run bytecode generated by my Brackets compiler and assembler. Brackets is my own language, which is easy to learn. You can even write programs which are using my SDL/GUI module for graphics output. And you can run multiple threads very easy. The L1VM is truly multi platform OS supporting. The L1VM runs on Linux (x86_64, Arm), BSD OS: OpenBSD, FreeBSD, DragonFly BSD, Windows 10, 11 via WSL or native (MSYS2), macOS and Haiku OS. However on Haiku OS the multithreading can't be used. Maybe this works with later betas. The Brackets programs bytecode can run on all supported OS without changes on them! The VM has an preprocessor, assembler and compiler for my own language Brackets. On the Raspberry Pi the GPIO pins can be used with my GPIO module. Also the serial port can be used. The source code is on my GitHub repository: github.com/koder77/l1vm. |
Course1: Hello world, if, if+, else2: switch 3: math 4: functions 5: input 6: strings 7: loops 8: arrays 9: logical operators 10: cli arguments 11: preprocessor 12: assembly VOL I 13: assembly VOL II 14: assembly VOL III 15: assembly VOL IV 16: assembly VOL V 17: multithreading L1VM manual PDF L1VM advanced PDF L1VM code details PDF |
Linux x86_64 binariesI made static build binaries for Linux x86_64. They should run on any 64 bit Linux system. The current L1VM 3.1.0 builds are here: L1VM Linux binaries.The only change from 3.0.10 to 3.1.0 is the linter update. So the other programs show 3.0.10! I did include all modules and their depedencies, so the binaries should run on any Linux system. Here is the sha256 sum of the archive: 089419e8e2a8254b32a672077a4acf05d0075eaca62612028574aa873805ab9c l1vm-linux-x86-64.zip Windows x86_64 binariesI made a port to Windows MSYS2. You need to install MSYS 2 to use this! So now the L1VM can run natively on Windows without the need to install the WSL. I did have to disable the memory bounds checking on the string module. Otherwise it will not work. This strange behaviour is only in the MSYS2 build! The only change from 3.0.10 to 3.1.0 is the linter update. So the other programs show 3.0.10! The 3.1.0 release is here: L1VM Windows MSYS2 binaries.Here is the sha256 sum of the archive: bd361dc3ce4ef362939b61c6a20c72d830b65eab7b97982579ef510a31e19793 l1vm-windows-x86-64.zip |
The modulesThe L1VM can be expanded by modules (shared libraries). A module has an own API to access the functions from the VM. Here is the list of modules:Cells - linked neural networks with FANN library ciphersaber - encrypt/decrypt functions crypto - libsodium encrypt/decrypt functions endianess - convert to big endian, or little endian functions fann - FANN neural networks file - file module - read/write files filetools - file functions like copy, create directory, etc. genann - neural networks module gpio - Raspberry Pi GPIO module math - some math functions math-nofp - math module for use without FPU math-vect - math on arrays functions mem - memory allocating for arrays and vectors mem-obj - memory functions to store different variables into one memory array mem-vect - C++ vector memory library mpfr-c++ - MPFR floating point big num library nanoid - nano ID, create unique IDs net - TCP/IP sockets module pigpio - Raspberry Pi GPIO module process - start a new shell process rs232-libserialport - RS232 serial port using libserialport rs232 - RS232 serial port module sdl 2.0 - graphics primitves module, like pixels, lines..., and GUI with buttons, lists, etc. string - some string functions time - get time and date |
Here is a GUI example: pov-edit
The gadgets are drawn by my SDL graphics/GUI module.