vitte

Vitte Virtual Machine — Overview

Introduction

La Virtual Machine (VM) de Vitte est le moteur d’exécution du bytecode VITBC.
Elle est conçue pour être portable, rapide et robuste, tout en restant simple à comprendre et à maintenir.
Son rôle est de transformer un fichier .vitbc en exécution concrète, en gérant mémoire, registres et instructions.


Objectifs


Architecture de la VM

1. Loader

2. Memory Model

3. Execution Engine

4. Runtime API

5. Interop / FFI

Exemple :

extern fn c_sqrt(x: float) -> float

Exemple d’Exécution

Code source

fn add(x: int, y: int) -> int {
    return x + y
}

print(add(2, 3))

Bytecode simplifié

FUNC add(x, y)
  LOAD_ARG r1, x
  LOAD_ARG r2, y
  ADD r3, r1, r2
  RETURN r3
END

MAIN
  LOAD_CONST r0, 2
  LOAD_CONST r1, 3
  CALL add, r0, r1
  PRINT r0
END

Trace d’exécution

VM Start
> LOAD_CONST r0, 2
> LOAD_CONST r1, 3
> CALL add
> RETURN r3 (5)
> PRINT 5
VM End

Architecture — Schéma

flowchart TD
    A[.vitbc File] --> B[Loader]
    B --> C[Memory Manager]
    B --> D[Execution Engine]
    C --> D
    D --> E[Runtime API]
    D --> F[FFI / Interop]
    D --> G[Results]

Debug et Outils

Commandes CLI

vitte exec program.vitbc
vitte exec program.vitbc --dump-vm --log trace

Fonctionnalités debug


Roadmap VM


Conclusion

La Virtual Machine Vitte est le cœur de l’écosystème.
Elle combine simplicité et efficacité, et fournit les bases nécessaires pour exécuter le bytecode de manière sûre et portable.
Son design modulaire ouvre la voie vers des optimisations futures (JIT, WASM, FFI avancé) tout en restant fidèle à la philosophie de Vitte : clarté, robustesse, extensibilité.