Download Latest Version libC1316-0.0.109-20260928.zip (28.6 kB) Google Add to Preferred Sources
Home / implementations
Name Modified Size InfoDownloads / Week
Parent folder
framework-4.8 < 7 hours ago
Totals: 1 Item   5

C13136 Virtual Machine

C13136 is a compact stack-based virtual machine designed as the execution engine, Cencio is its standard runtime.

The project aims to provide a simple, expressive and extensible runtime environment capable of supporting multiple programming paradigms while remaining easy to understand, experiment with and evolve.

Cencio vs C13136

Although closely related, Cencio and C13136 are distinct projects.

Cencio

Cencio is the standard runtime.

It defines the high level functions made availabale for a quickly prototype new programming languages.

C13136

C13136 is the virtual machine.

It executes bytecode generated by the compilers and provides:

  • operand stack management
  • runtime frames and scopes
  • function invocation
  • closures
  • static and dynamic binding
  • branching and iteration
  • multiple return values
  • object interoperability

Design Goals

The project is guided by a few simple principles:

Simplicity

The instruction set remains intentionally compact and easy to understand.

Expressiveness

Despite its small size, the VM is designed to support a wide range of language features including:

  • procedural programming
  • imperative programming
  • functional programming
  • first-class functions
  • closures
  • object-oriented programming

Extensibility

The architecture is intentionally open to future evolution without breaking existing bytecode.

Educational Value

The VM is designed not only as a runtime system but also as a learning and experimentation platform for:

  • language design
  • compiler construction
  • bytecode execution
  • runtime environments
  • closure implementation
  • scope resolution strategies

Current Capabilities

The virtual machine currently supports:

  • stack-based execution
  • nested scopes
  • local and global variables
  • function calls
  • closures
  • static binding
  • dynamic binding
  • loops and branching
  • multiple return values
  • frame pooling
  • constant pool management

Documentation

Detailed information about the architecture, instruction set and language semantics is available in the accompanying manuals and technical documentation contained in this repository.

Status

The project is still alpha. C13136 is an actively evolving experimental project focused on exploring virtual machine architecture and modern language runtime techniques while maintaining a compact and approachable design.

Changelog

2026-09-28 (0.0.109)

Fixed a bug in Capture. We are near a beta. No more hidden variables; every frame holds a tiny Vec(2) and functions directly use that one (for VRY and RET opcodes). FramePool recoded, and tested, going on with the test suite and review. Fixed a serious bug in Frame, removed unused code in in Vec.

2026-09-24 (0.0.105)

This is a breaking change. Many core parts have been rewritten, now we have our own dictionary<int,object>; Slice now is called Vec. Finally added a way to manage closures and static bindings; the old CAL opcode has been renamed JSR. I have added two more opcodes: CLS/CAL for creating and invoking closures. Added a frame pool in order to reduce runtime allocations. This is a quite big release and rewrite and I need to test it carefully. Added a way to die gracefully without a stack trace. Added a way to pass command line arguments. SMR 0 now clears the MR register. Performance improvements.

2026-09-07 (0.0.90)

This is a breaking change. SMR 0 now returns an array, no more a list.

2026-09-01 (0.0.89)

This is a breaking change. Adapted the code for being called by my fantasy console prototype. Managed more data types: single, short, byte.

2026-08-18 (0.0.83)

First documented version

Source: README.md, updated 2026-09-28