A simple procedural language with hot code reloading
Find a file
2025-12-16 17:55:34 +02:00
assets/fonts init 2025-12-13 16:08:41 +02:00
src return 2025-12-16 17:55:34 +02:00
.gitignore init 2025-12-13 16:08:41 +02:00
Cargo.lock lexer tests and improvements 2025-12-15 00:40:01 +02:00
Cargo.toml lexer tests and improvements 2025-12-15 00:40:01 +02:00
LICENSE init 2025-12-13 16:08:41 +02:00
Makefile lexer tests and improvements 2025-12-15 00:40:01 +02:00
readme.md blocks 2025-12-16 17:42:48 +02:00
rustfmt.toml init 2025-12-13 16:08:41 +02:00

Ayin

  • Tiny, procedural, gamedev
  • only user input is controller input
  • Live code reload
  • int, float, string, char, bool, key
  • arrays and maps
  • variables and functions
  • if, loop, continue, break, return
  • function call
  • first class functions
let init = fn() {
  return {
    player: { position: { x: 10, y: 20 }, },
  }
};

let update = fn(state, events) {
  return state';
};

let draw = fn(frame, state) {
  frame.clear(0,0,0);
};

let migrate = fn(state) {
    return { player: { pos: state.player.position } },
};
  • dynamic software updating could occur every frame
  • user might be required to migrate the state (migrate function is hashed and only applied on updates when it is changed)

Build instructions

WASM

rustup target add wasm32-unknown-unknown
make wasm