# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased ## [0.6.0] - October 22, 2023 ### Added - Start using [human-readable changelogs](https://keepachangelog.com/en/1.0.0/). - The `Program` struct, which represents a parsed bytecode executable, along with utility methods to facilitate the conversion between binary file format and in-memory representation. - The `Executor` trait, which modularizes instruction execution by associating opcodes with pieces of code executing instructions, along with the following new implementations: - `HaltExecutor` - `LoadExecutor` - `CalculateExecutor` - `InterruptExecutor` - A new `executors` hash map in `Strontium` associating opcodes with `Executor` implementations. - A `Registers` struct which stores register values and allocates new slots if needed. - A `RegisterValue` enum which provides type tags for registers. - Conversion utilities to convert `Instruction`s to a vector of bytes. ### Changed - Replace the old `Memory` struct in favor of typed registers for atomic and complex data types. All virtual machine state is now stored in the in the `registers` property of the `Strontium` struct, including the bytecode and instruction pointer. ### Removed - GitLab CI configuration.