# About AluVM

AluVM (algorithmic logic unit VM) is a pure functional RISC virtual machine designed for deterministic portable computing tasks. It was designed & implemented by [Dr Maxim Orlovsky](https://dr.orlovsky.ch) at Pandora Prime AG and maintained by [LNP/BP Standards Association](https://lnp-bp.org).

Unlike many other virtual machines, AluVM is register-based and does not allow random memory access. This makes AluVM perfectly suited for such domains as smart contracts, remote code execution, distributed & edge computing because of AluVM determinism combined with unprecedented robustness and possibility of formal code analysis.

{% content-ref url="/pages/-MdUePffqT-XXfoiy7-x" %}
[Use cases](/use-cases-1)
{% endcontent-ref %}

## Key characteristics

* Exceptionless
* Portability
* Sandboxing
* Security
* Extensibility

Instruction set architecture (ISA) supports extensions, which allows creation of runtime environments targeting different use cases.

## Using AluVM

The simplest way to use AluVM is AluREX: a runtime environment, package manager & developer toolchain which allows creation, distribution & execution of Alu binaries.


# Motivation


# Design


# Standards & specs


# Use cases

Smart contracts

Lightning network

Internet & Web

Edge computing

Distributed computing

Machine learning

Genetic algorithms


# Ecosystem


# Roadmap

AluVM development roadmap, which include technical specifications, standards, reference implementation, language-specific wrappers, programming languagues and toolchain, is managed at .

## AluVM implementation

The current version of reference AluVM implementation, written as Rust library, embeddable into specific runtime environments, is 0.3.

We are targeting 1.0 release until the end of the year. The release must cover the following functionality:

* [x] Instruction set arthitecture design
* [x] Reference implementation in Rust
* [x] Floating point operation implementation
* [x] Virtual machine and control flow implementation
* [x] Separation of code & data segment
* [x] Library management & packaging
* [x] ISA extensions support
* [x] Core cryptography implementation (digests, Secp256k1 operations)
* [ ] LNPBP standards and specification writeup
* [ ] Complete implementation of arithmetic operations for domain-specific floating types: BFloat16 (machine learning), IEEE binary256 and 512-tapered float (near-arbitrary precision float arithmetics)
* [ ] Complete implementation of complex byte-string operations
* [ ] Implement operations on Curve25519
* [ ] Complete test coverage of the reference VM implementation

For more details on AluVM reference implementation development tasks and roadmap please check <https://github.com/internet2-org/rust-aluvm/issues>

## Language-specific bindings & toolchain

**2021 H2**

* [x] Assembly language and assembler (compiler) as domain-specific language inside rust code
* [ ] ALURE ISA extension for basic I/O
* [ ] Binary code packaging and execution
* [ ] Complete assembly language specification
* [ ] Standalone command-line assembler

**2022**

* [ ] AluREX library & package distribution website
* [ ] Write WASM bindings for AluVM library
* [ ] Create C bindings for AluVM library
* [ ] LLVM cross-compiler
* [ ] Parsel language specification & compiler

## Applications

**2021**

* [ ] Bitcoin-specific ISA extensions
* [ ] RGB-specific ISA extensions & RGB Core runtime
* [ ] ISA extensions for Lightning network & LNP Core runtime
* [ ] Citadel runtime for smart contract UI

**2022**

* [ ] Genetic algorithms ISA extensions and ReBICA runtime environment
* [ ] SIMD/machine learning ISA extensions
* [ ] ISA extensions for Internet2 networking and Web4 remote code execution

**2023**

* [ ] AluROS operating system for distributed computing


# Evolution


# Contributions


# Educational materials


# Programming languages

Alu assembly language


# Embeddable libraries


# AluREX runtime


# AluWASM

Web runtime


# Other environments


# AluRE


# Citadel Runtime


# LNP Core


# RGB Core


# ReBICA


# Overview


# Registers


# Bytecode


# ALU instructions


# ISA Extensions


# Code polymorphism


# Machine learning


# Domain-specific I/O


# Cryptography


