Skip to content

v0.19.0

Latest
Compare
Choose a tag to compare
@edubart edubart released this 27 May 18:44
· 3 commits to main since this release
v0.19.0
ce402f9

Added

  • Added libluacartesi.a and libluacartesi_jsonrpc.a static libraries when installing to allow packaging statically linked Lua programs
  • Added --remote-spawn command line option to spawn remote machines
  • Added --remote-health-check command line option to check availability of remote machines
  • Added --store-json-config command line option to store machine configs to JSON files
  • Added --load-json-config command line option to load machine configs from JSON files
  • Added --server-fd command line option to JSON-RPC remote machine
  • Added --setpgid command line option to JSON-RPC remote machine
  • Added cartesi.tobase64, cartesi.frombase64, cartesi.tojson, and cartesi.fromjson Lua functions
  • Added various new methods to JSON-RPC remote machine interface to allow more precise management of remote machine processes
  • Added timeout support to JSON-RPC remote machine requests
  • Added capability to retrieve PID of spawned remote machines
  • Added support for VirtIO devices in JSON configs
  • Added the --log-step command line option to log multiple machine cycles
  • Added the cm_log_step and cm_verify_step methods to log multiple machine cycles and verify with ZK VMs
  • Added the cm_receive_cmio_request method, the counterpart of cm_send_cmio_response method
  • Added timeout support for jsonrpc requests

Fixed

  • Fixed various linting errors with the latest Clang static analyzer
  • Fixed broken link when running make bundle-boost
  • Fixed many broken links in the README and markdown files
  • Fixed issues when using --network option in Alpine guests
  • Fixed issue when using --assert-rolling-template
  • Fixed --skip-root-hash-store not skipping root hash computation
  • Fixed kernel panic bug when feeding 100k stdin inputs into VirtIO console
  • Fixed bug when trying to advance multiple inputs through the cartesi-machine CLI
  • Fixed compile errors when targeting Windows, Alpine Linux, and WebAssembly
  • Fixed conflicting symbols between libcartesi and libcartesi_jsonrpc
  • Fixed --sync-init-date and --virtio-console command line options
  • Fixed various issues when forking jsonrpc machines inside a Go environment
  • Fixed potential data races in multi-threaded environments

Changed

  • Optimized RISC-V instruction decoder to use token threading, computed goto, and big jump tables
  • Optimized RISC-V instruction fetcher to cache latest accessed pages
  • Refactored the code to use C++20 standard, which is now a minimum requirement
  • Refactored the public C API to be simpler and easier to use with other programming languages
  • Refactored the Lua API to make remote and local use the same API interface
  • Refactored and simplified many portions of the code, improving maintainability of the project
  • Changed default GCC compiler flags to better optimize the RISC-V interpreter
  • Changed flash drive start address configuration to be non-mandatory (it will be automatically chosen)
  • Changed sibling hashes ordering in JSON logs to match the expected ordering in Lua test suite
  • Changed rebind method of remote machines to support binding on port 0 and return the bound address
  • Changed to Debian RISC-V toolchain when compiling microarchitecture
  • Changed --remote-fork command line option to accept an address
  • Changed add-generated-files.diff to be applied with patch -Np1 to make packaging easier
  • Changed default machine config to include bootargs
  • Changed machine configs and access logs to be represented as JSON strings in the C API
  • Renamed --log-uarch-step command line option to --log-step-uarch
  • Renamed --log-uarch-reset command line option to --log-reset-uarch
  • Renamed --auto-uarch-reset command line option to --auto-reset-uarch
  • Renamed various C API functions, structs, and enumerations
  • Renamed jsonrpc-remote-cartesi-machine to cartesi-jsonrpc-machine
  • Renamed merkle-tree-hash to cartesi-merkle-tree-hash
  • Removed cartesi- prefix and versioning suffix from CI artifacts names
  • Revamped project README with more up-to-date explanations and simplified instructions
  • Changed help and configs to be printed to stdout instead of stderr
  • Changed the public C API to require less manual memory management
  • Improved documentation in the public C API header
  • Improved CI to use more parallel jobs when testing
  • Improved send_cmio_response bounds checking
  • Split iflags CSR into multiple CSRs
  • Bumped MARCHID version to 19
  • Updated test rootfs to guest tools 0.17.1

Removed

  • Removed publishing of Debian package artifacts in favor of official Linux package repositories
  • Removed use of cartesi/toolchain image
  • Removed automatic strip of binaries when performing make install (stripping should now be done when packaging)
  • Removed no4lvl from bootargs (Sv57 address translation is now disabled at interpreter level to fix NodeJS JIT issues)
  • Removed rootfstype=ext2 from bootargs, allowing use of root filesystems in other formats, such as Ext4 and SquashFS
  • Removed all *-defines.h headers
  • Removed all specific read/write of machine registers from the public API
  • Removed various C API functions
  • Removed dkjson Lua library (not needed since we have our own JSON encoding functions now)
  • Removed GDB documentation from the repository (moved to the wiki)
  • Removed internal development documentation from the README (moved to the wiki)
  • Removed many dead code segments after the refactoring