Releases: sysprog21/rv32emu
Releases · sysprog21/rv32emu
v1.1
Version 1.1 emphasizes the system emulation capable of running Linux kernel and user-space binaries, aligning with the research paper "Design and Evaluation of a Lightweight RISC-V System-Level Emulator for Booting Linux," which was presented at the CTHPC 2025 conference.
What's Changed
- Preliminary support for trap handling during block emulation by @ChinYikMing in #463
- CI: Fix error when running on host-arm64 by @ChinYikMing in #503
- Ask to install RISCOF before running arch-test locally by @ChinYikMing in #507
- Preliminary support for MMU emulation by @ChinYikMing in #438
- CI: Bump Clang to 18 by @ChinYikMing in #509
- Fix unmatch close function call by @ChinYikMing in #512
- Drop unused structure "chain_entry_t" by @vacantron in #515
- CI: Bump riscv-gnu-toolchain by @jserv in #516
- Fix unused function warning in 'mult_frac' by @eleanorLYJ in #517
- jit: Replace LFU with LRU cache replacement policy by @vacantron in #518
- Bring up Linux kernel by @ChinYikMing in #508
- Fix Linux image path during prebuilt by @ChinYikMing in #520
- Check Safari version if it supports TCO for Wasm by @ChinYikMing in #522
- Add bitmanip extension support by @visitorckw in #525
- Fix undefined behavior in qsort comparison functions for rv_histogram by @visitorckw in #526
- Fix LTO warning by enabling parallel compilation by @eleanorLYJ in #523
- Use instruction-based emulation for debug mode by @RinHizakura in #530
- Fix declaration error when using clang by @ChinYikMing in #532
- Avoid to wrongly allocate memory in map_file() by @RinHizakura in #531
- Handle signals properly by @ChinYikMing in #529
- Unify MMU translation APIs by @ChinYikMing in #533
- Customize bootargs for system emulation by @RinHizakura in #534
- Fix build failures and expand test coverage by @eleanorLYJ in #535
- CI: Enable parallel build for riscv-tests.sh by @ChinYikMing in #538
- Refine hard-coded memory layout for system emulation by @ChinYikMing in #537
- tests: donut: Enhance ANSI graphics by @jserv in #542
- Code cleanup by @ChinYikMing in #543
- CI: Use newer Aarch64/Linux host by @jserv in #548
- Add support for the RV32E variant by @eleanorLYJ in #541
- CI: Build check with various optimization levels by @ChinYikMing in #546
- Ensure Compatibility with BSD sha1sum implementation by @otteryc in #549
- CI: Bump prebuilt GNU Toolchains by @jserv in #550
- Trap guestOS to run SDL-oriented applications by @ChinYikMing in #551
- Implement VirtIO block device by @otteryc in #539
- Standardize logging utility by @ChinYikMing in #552
- CI: Specify larger INITRD_SIZE for larger rootfs by @ChinYikMing in #553
- Fix performance regression check with logger by @vacantron in #554
- jit: Add architecture test by @vacantron in #547
- CI: Eliminate unintended dist-upgrade for Arm64 host by @jserv in #555
- Fix F register count to 32 for RV32E with F extension by @eleanorLYJ in #558
- CI: Make apt-get more quiet by @jserv in #559
- Suppress logging outputs to honor -q option by @ChinYikMing in #562
- CI: Reduce HTTP requests when possible by @jserv in #560
- CI: Activate virtual enviornment before arch-test by @vacantron in #563
- Allow macOS build by @jserv in #556
- Use upstream SoftFloat and unify build system by @jserv in #557
- Consolidate helper functions for pretty messages by @jserv in #565
- CI: Drop unstable architecture test on Arm64 by @vacantron in #567
- Enable installing xPack toolchain on macOS/arm64 by @ChinYikMing in #568
- Allow JIT compilation for system emulation by @vacantron in #521
- Address linter issues on Dockerfiles by @henrybear327 in #570
- Enhance shell compatibility by @ChinYikMing in #571
- Return error code -1 when closing file descriptors < 3 (stdin, stdout, stderr) by @banglday in #566
- Remove redundant break by @404allen404 in #573
- Allow emcc build and validate in CI by @ChinYikMing in #576
- Fix deploy-wasm CI trigger condition by @ChinYikMing in #577
- Eliminate Linux SUBLEVEL bump and decouple Linux image build CI by @ChinYikMing in #574
- Correct the filename of Linux image when verification by @ChinYikMing in #579
- CI: Integrate macOS/arm64 by @ChinYikMing in #569
- Raise exception when RV32E instructions use x16-x31 by @eleanorLYJ in #578
- CI: Add commit hash into prebuilt release tag by @vacantron in #582
- Update README to clarify make arch-test usage by @vestata in #583
- Fix Docker image build by @ChinYikMing in #580
- Support readonly feature of VirtIO block device by @ChinYikMing in #584
- Dynamically configure VirtIO node of Device Tree by @ChinYikMing in #586
- Enable VirtIO block to access hostOS /dev/ block devices by @ChinYikMing in #572
- CI: Add missing JIT system emulation test on macOS by @ChinYikMing in #587
- Refine rbtree comment for clarity and accuracy by @jserv in #588
- Update mini-gdbstub with the API changes by @RinHizakura in #589
- Update arch-test guides by @vacantron in #590
- Update guides to run prebuilt executables by @vacantron in #591
- Advance timer properly during JIT execution by @vacantron in #592
- Fix T2C in system simulation by @vacantron in #593
- CI: Use upstream Run-On-Arch by @jserv in #594
- CI: Bump package versions by @jserv in #595
New Contributors
- @eleanorLYJ made their first contribution in #517
- @otteryc made their first contribution in #549
- @banglday made their first contribution in #566
- @404allen404 made their first contribution in #573
- @vestata made their first contribution in #583
Full Changelog: v1.0...v1.1
v1.0
Version 1.0 marks the first public release of the rv32emu project, aligning with the research paper "Accelerating RISC-V Instruction Set Simulation with Tiered JIT Compilation," which was presented at the VMIL'24 conference.
What's Changed
- Fix the range of for loop in memory_delete() by @sammer1107 in #1
- Use computed-goto to lower instruction dispatch overhead by @sammer1107 in #2
- Fix #6 by @eecheng87 in #8
- Fix csrrwi instruction behavior according to risc-v spec by @feathertw in #10
- Support RISC-V Compressed Instructions by @xiaohan484 in #11
- adding Quake binary and usage information by @Korin777 in #13
- Integrate riscv-arch-test by @xiaohan484 in #12
- Check instruction misalignment for RV32C in the op_branch function by @dougpuob in #14
- build/quake: Lower resolution to speed up game execution by @Korin777 in #15
- Remove duplicate code by @LambertWSJ in #16
- remove
goto quit
by @LambertWSJ in #17 - fix build issue when close ENABLE_COMPUTED_GOTO by @LambertWSJ in #19
- Unify comment style by @2011eric in #23
- Detect NaN in FADD and FSUB by @2011eric in #24
- Fail to run RV32C tests by @LambertWSJ in #31
- Implement an input event specific system call for SDL by @alanjian85 in #35
- Update demo executable along with manual by @alanjian85 in #38
- Add input system support to Doom demo by @alanjian85 in #41
- Fix set PC restriction when RV32C is enabled by @RinHizakura in #44
- Implement GDB stub for remote debugging by @RinHizakura in #45
- Manage breakpoints with red-black tree by @RinHizakura in #46
- Add support of FCLASS.S by @2011eric in #47
- Enforce zero register in floating point operation by @2011eric in #48
- Fix gdbstub read memory error by @RinHizakura in #50
- Improve fmin/fmax by @2011eric in #51
- Fix comment for consistent comment style by @EagleTw in #54
- Add comments for educational usage by @EagleTw in #55
- gdbstub: Implement memory write and register write by @RinHizakura in #56
- Lower branches in red-black tree by @steven1lung in #58
- Lower branches in red-black tree again by @steven1lung in #59
- Implement ebreak properly by @Risheng1128 in #60
- Apply bidirectional queue design to the input system by @alanjian85 in #62
- Avoid duplications in RISC-V exception handlers by @Risheng1128 in #63
- Pass several privilege tests and fix RV32I comment by @Risheng1128 in #65
- Refactor rbtree previous iterator by @steven1lung in #67
- Implement environment call properly by @Risheng1128 in #66
- Eliminate memory allocations in the system call
setup_queue
by @alanjian85 in #68 - Add comment for better understanding and consistency by @EagleTw in #70
- Fix memory access violations in queue operation functions by @alanjian85 in #71
- Fix red-black tree's implementation by @alanjian85 in #72
- Refine relative mode submission mechanisms by @alanjian85 in #76
- Detect toolchain automatically by @Risheng1128 in #77
- Update demo binaries by @alanjian85 in #83
- SDL: Allow window resizing by @alanjian85 in #84
- an annotation typo in elf.h by @zoanana990 in #85
- Place floating point routines into a dedicated header by @2011eric in #86
- Decouple instruction decoding from emulation unit by @Risheng1128 in #79
- Introduce basic block by @Risheng1128 in #91
- Shorten the time spent checking instruction length by @qwe661234 in #92
- Break instruction decoding and emulation into separate stage by @jserv in #93
- Set rv->compressed for instruction ecall and ebreak by @qwe661234 in #96
- Patch for issue #98 by @qwe661234 in #100
- Refine the SDL-oriented system calls declaration by @alanjian85 in #102
- tests: line: Use fixed-point arithmetic by @maromaSamsa in #107
- Use interger shortcut in floating point routines by @2011eric in #109
- Migrate to RISC-V Compatibility Framework (RISCOF) by @Risheng1128 in #108
- Edit pointer incremental according to CodeQL analysis by @EagleTw in #112
- Add CodeQL workflow for GitHub code scanning by @lgtm-com in #89
- Fix memory leak by @qwe661234 in #113
- Reflect the introduction of RISCOF by @2011eric in #111
- Rollback partial wrong implemented code in pr #89 by @EagleTw in #114
- Update mini-gdbstub for the on_interrupt feature by @RinHizakura in #115
- Remove the computed-goto option by @Risheng1128 in #116
- Prevent the misleading information about RISCOF by @Risheng1128 in #117
- Add adaptive replacement cache by @qwe661234 in #118
- fix: Fix the typo pyton by @howjmay in #119
- Extend basic block without aggressive memory copy by @qwe661234 in #121
- Improve memory read/write by @qwe661234 in #123
- Correct the API descriptions for memory pool by @willwillhi1 in #124
- Implement LFU as default cache along with memory pool by @qwe661234 in #125
- Fix the implementations of FCVT.S.W and FCVT.S.WU by @alanjian85 in #126
- Fix make misalign in Makefile by @qwe661234 in #127
- Update mini-gdbstub and the corresponding API by @RinHizakura in #129
- Consolidate CI/CD test for gdbstub by @RinHizakura in #130
- Employ tracing extended basic blocks by @qwe661234 in #133
- Introduce preliminary macro operation fusion by @qwe661234 in #132
- Fix spicious pointer scaling by @qwe661234 in #138
- Add an option to dump registers as JSON by @long-long-float in #128
- Fix incorrect performance counter by @qwe661234 in #140
- Add test case for map API by @EagleTw in #141
- Map enhancement by @EagleTw in #144
- tests: Add script to extract CoreMark results by @qwe661234 in #143
- Add missing EBB information in cbeqz and cbnez by @qwe661234 in #147
- CI: Enforce newline at end of files by @jserv in #154
- Fix incorrectly generated config file by @2011eric in #174
- Correct a typo in mpool.h by @felixonmars in #178
- Fix typo in comment by @ChinYikMing in #179
- Improve consistency of accessing rv's registers by @ChinYikMing in #180
- Fix return NULL when malloc failed by @ChinYikMing in #181
- Call appropriate release function by @ChinYikMing in #182
- Improve macro-op fusion: skip nop and add lui + addi by @qwe661234 in #184
- Support passing argc and argv to target program by @ChinYikMing in https://github.c...