Skip to content

Releases: cartesi/machine-emulator

v0.17.0

23 Apr 17:13
v0.17.0
Compare
Choose a tag to compare

Added

  • Added --no-rollback and --remote-fork options
  • Added rebind() API to JSONRPC
  • Added commit() API for discarding machine snapshots
  • Added send_cmio_response function
  • Added integration tests
  • Added C API to translate virtual address
  • Added optimizations for fdiv and fsqrt instructions for uarch
  • Added --env, --workdir, and --hostname command line options
  • Added new runtime option to skip storing machine root hash
  • Introduced the --user command line option
  • Used Sv39 address spacing by default to support nodejs and improve performance
  • Decoded uarch ECALL and EBREAK
  • Added support for VirtIO
  • Added VirtIO command line options
  • Added support for binding different host addresses in VirtIO net device
  • Added iunrep CSR for unreproducible machines, VirtIO configs to C/Lua APIs, VirtIO net device, VirtIO 9P device, VirtIO console device, and PLIC device
  • Made --volume create guest directory before mounting

Changed

  • Simplified solidity step generation
  • Split reasons for manual and auto yields
  • Reworked rollup and renamed it to cmio
  • Optimized out state accessor initialization in uarch interpret
  • Replaced uarch mmio with ecall
  • Included uarch-reset log in catalog.json
  • Combined uarch state accessors

Removed

  • Removed gRPC features
  • Removed unmaintained and broken benchmarks script

Fixed

  • Fixed ilog2 function which was always returning 0
  • Aligned output merkle tree depth with solidity
  • Corrected compile error with slirp=no on Linux
  • Allowed using --network in read-only filesystems
  • Resolved compile errors with WASI toolchain
  • Corrected reset_uarch documentation
  • Removed trailing comma in jsonrpc-discover.json
  • Fixed Homebrew libslirp options
  • Resolved build issue on macOS with macports lua-luarocks
  • Set yield_data typo
  • Fixed EADDRNOTAVAIL on rapid successive requests

Continuous Integration

  • Sped up uarch testing in CI.
  • Implemented vm.mmap_rnd_bits workaround for the ubuntu-22.04 runner.

v0.16.1

29 Mar 04:28
v0.16.1
Compare
Choose a tag to compare

Fixed

  • Fixed amd64 debian package build in release mode

Changed

  • Made uarch compilation independent of release/debug build settings

v0.16.0

09 Feb 16:01
v0.16.0
Compare
Choose a tag to compare

Added

  • Implemented the UARCH reset feature
  • Added soft yield runtime configuration using hints of the SRAIW instruction
  • Added shadow uarch state
  • Embedded the uarch RAM binary
  • Added instructions on how to build libcartesi.a in standalone
  • Supported compiling libcartesi_jsonrpc.a static library
  • Added file mapping and terminal support for Windows
  • Added the possibility to compile libcartesi without mmap()
  • Supported compiling libcartesi as a static library
  • Added memory range introspection
  • Introduced -it option for colored and bigger interactive terminal
  • Replaced MTD drives with PMEM drives
  • Initialized random entropy from the device tree
  • Added root hashes to catalog.json
  • Replaced proof with sibling_hashes

Changed

  • Built device tree automatically into the machine's ROM, eliminating the need for a ROM image
  • Enabled rollup by default
  • Updated libboost version to 1.81
  • Changed stored machine configs from protobuf to JSON
  • Removed remote-cartesi-machine-proxy
  • Moved uarch generated files to the uarch source directory
  • Organized all tests under the tests directory
  • Added emulator major and minor versions to the device tree
  • Used new rootfs provided by the tools repository
  • Used static libraries when compiling executables
  • Made it possible to compile libcartesi without threading support
  • Reimplemented a portable OS time function
  • Allowed compiling libcartesi without GRPC or Lua installed
  • Didn't expose internal symbols in the public C API
  • Added support for cross-compiling libcartesi
  • Removed std::filesystem use from libcartesi (unsupported by WASI)
  • Made termios non-mandatory in libcartesi (unsupported by WASI)
  • Improved makefile for packaging
  • Adjusted bootargs and renamed bootargs command line option
  • Introduced machine init and entrypoint config and options
  • Removed dump_pmas method
  • Removed Lua md5 dependency by using keccak instead
  • Simplified machine hash computation in tests
  • Replaced ROM with DTB
  • Bumped kernel and rootfs versions
  • Replaced crypto++ with tiny sha3 to compute Keccak hash
  • Replaced boost filesystem with std filesystem
  • Updated mongoose to 7.12 and refactored how it's bundled
  • Bundled nlohmann-json into third-party
  • Replaced libb64 with a custom base64 implementation
  • Removed the unused --json-steps option
  • Added support for compiling libcartesi to WebAssembly

Fixed

  • Made append options work when empty
  • Included missing climits in json-util.cpp
  • Correctly counted optional arguments
  • Fixed protoc compile errors on Ubuntu
  • Fixed the build on MacOS with Homebrew
  • Reserved memory for firmware M-mode code in FDT
  • Fixed lint errors and warnings

v0.15.3

25 Jan 21:52
v0.15.3
Compare
Choose a tag to compare

Fixed

  • Fixed missing lua modules in docker image
  • Fixed upload and download of artifacts on CI
  • Fixed protoc compile errors on Ubuntu
  • Fixed build on MacOS with homebrew

v0.15.2

21 Aug 19:36
v0.15.2
Compare
Choose a tag to compare
Release v0.15.2

v0.15.1

17 Aug 21:43
v0.15.1
Compare
Choose a tag to compare
Release v0.15.1

v0.15.0

16 Aug 22:19
v0.15.0
Compare
Choose a tag to compare
Release v0.15.0

v0.14.0-bullseye

17 May 05:53
v0.14.0-bullseye
011bb49
Compare
Choose a tag to compare
v0.14.0-bullseye Pre-release
Pre-release
debian based image

v0.14.0

15 May 15:30
v0.14.0
Compare
Choose a tag to compare
Release v0.14.0

v0.13.0

17 Feb 14:12
v0.13.0
Compare
Choose a tag to compare
Release v0.13.0