C++20 RISC-V RV32/64/128 userspace emulator library
This release stabilizes binary translations. They should now be possible to use with all programs that libriscv can normally run.
Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v1.2...v1.3
double
vmcall arguments are no longer forgotten: They can be used when making function calls into the VMFull Changelog: https://github.com/fwsGonzo/libriscv/compare/v1.1...v1.2
This release is about sandboxing. I have spent some time this past few weeks fuzzing and tinkering with sandbox safety. I have also removed a bunch of code that was not used a lot, reducing attack surface. Some effort has been made to use pointers less. For example, an execute segment is now required at all times, passed only by reference. Instead of a null-check, the default execute segment is an empty segment. I've also added more modes to the fuzzer in an attempt to fuzz APIs I consider part of (or potentially part of) a safe sandboxing configuration. More fuzzing is needed, of course, but I'm happy with the progress.
The C API has been getting some improvements too. There is now enough API to make function calls into the guest programs.
Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v1.0...v1.1
The 1.0 release is finally here, with dynamic ELF loading support. Note that the libriscv Machine will not attempt to find an interpreter, and instead the programmer should find an interpreter locally, load it into the Machine, and then provide the real program as the first argument, with the programs arguments right after that.
Example:
./myprogram myarg0 myarg1
--> /usr/riscv64/lib/ld-linux.so ./myprogram myarg0 myarg1
.
You can test the dynamic loading, which should work out-of-the-box with the CLI.
There is still work to be done with the C API, which while working well is not fully fleshed out, and Debian packing may need additional testing. As usual the emulator has been fuzzed and tested a bit before the release.
Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v0.24...v1.0
<bit>
and designated initializers.Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v0.23...v0.24
Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v0.22...v0.23
Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v0.21...v0.22
Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v0.20...v0.21
Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v0.19...v0.20
This release contains bugfixes and performance improvements along with initial Clang-CL support. libriscv can now be used in Visual Studio with Clang.
Full Changelog: https://github.com/fwsGonzo/libriscv/compare/v0.18...v0.19