Releases: sysprog21/rv32emu
Releases · sysprog21/rv32emu
v1.2
Version 1.2 brings major improvements in performance, system emulation, and build infrastructure.
What's Changed
- Remove misleading TRACE log comment by @Lzzz666 in #597
- CI: Bump gcc on macOS host by @ChinYikMing in #599
- Add shell script formatter by @ChinYikMing in #598
- Enhance CI formatting checks for Python files by @Lzzz666 in #600
- Enable System Emulation in Web Browsers by @ChinYikMing in #602
- CI: Push wasm commit on changes only by @ChinYikMing in #603
- Update README by @ChinYikMing in #604
- Enhance docker image by @kaiii708 in #606
- Bump mini-gdbstub to latest version by @RinHizakura in #608
- Support multiple virtio block devices by @ChinYikMing in #605
- Fix Wrong MSTATUS_MXR_SHIFT by @snnbyyds in #610
- Make bar generation bound-safe by @jserv in #615
- CI: Add curl-or-wget wrapper and shared download functions by @jserv in #612
- Improve red-black tree map implementation by @jserv in #611
- Fix build with clang by using llvm-ar by @visitorckw in #607
- Fix -Werror=maybe-uninitialized warning by @jserv in #616
- Fix critical memory safety issues by @jserv in #617
- Fix llvm-ar detection for macOS builds by @jserv in #620
- Fix DTB conditional build regression by @jserv in #621
- Support ~ in virtio-blk paths and improve error handling by @ChinYikMing in #623
- Fix JIT compilation with SYSTEM/ELF_LOADER enabled by @jserv in #622
- Support CSR_INSTRETH for insn counter high bits by @jserv in #624
- CI: Bump prebuilt GNU Toolchains by @jserv in #627
- Improve CI/CD by @jserv in #626
- Refine build system for efficient configurations by @jserv in #619
- Add simplefs as new Linux image artifact by @ChinYikMing in #625
- Improve the Makefile speed by simple assignment by @eastWillow in #628
- Add RISCOF compliance test support by @jserv in #629
- CI: Enhance workflow reliability and consistency by @jserv in #631
- CI: Retry apt ops for mirror sync resilience by @jserv in #633
- Add make format target by @ChinYikMing in #632
- Fix csr cycle unasync by @Max042004 in #630
- Fix heap buffer overflow with -x option by @visitorckw in #634
- Adopt preserve_none attribute for MUST_TAIL optimization by @visitorckw in #636
- Fix PLIC priority tie-breaking to favor lowest ID by @visitorckw in #635
- Leverage dtsfmt as the standard formatter for DTS and DTSI files by @ChinYikMing in #637
- Fix preserve_none attribute usage for macOS by @jserv in #639
- Update formatting to require clang-format-20 by @jserv in #641
- Fix broken Timidity download URL by @jserv in #642
- Fix hart halt when non-SDL programs exit via syscall 93 by @ChinYikMing in #643
- Fix emcc build inheriting stale SYSTEM config by @jserv in #645
- CI: Fix failures due to dtc availability issues by @jserv in #647
- Fix JIT non-deterministic execution on Arm64 by @jserv in #644
- CI: Consolidate artifact fetch with retry logic by @jserv in #649
- CI: Reduce optimization level matrix by @jserv in #650
- CI: Consolidate extension disable tests into unified loop by @jserv in #651
- CI: Remove redundant emcc builds from macOS job by @jserv in #652
- CI: Centralize LLVM version management by @jserv in #653
- CI: Parallelize architecture tests by @jserv in #654
- Restore wall-clock time source for user mode by @visitorckw in #646
- Implement demand paging for automatic memory management by @jserv in #655
- Fix unsafe string handling in virtio-blk path by @jserv in #656
- Emulate misaligned access in default trap handler by @jserv in #657
- CI: Fix ext4 mount failure on macOS by @jserv in #658
- Fix initrd size handling for SDL-enabled rootfs by @jserv in #659
- CI: Fix duplicate options in boot-linux script by @jserv in #662
- Introduce Kconfig-based build system by @jserv in #661
- Fix C23 compatibility by @jserv in #663
- Fix artifact fetch regression by @jserv in #664
- Fix C23 compatibility by @jserv in #665
- Fix system emulation segfault with proper MMU by @jserv in #666
- CI: Fix C23 compatibility in Doom by @jserv in #667
- Add build-linux-image target to CONFIG_TARGETS by @ChinYikMing in #669
- Fix gdbstub exit handling for fd close syscalls by @jserv in #668
- Add TLB for MMU and fix trap handling by @jserv in #660
- Fix verify and bump by @ChinYikMing in #672
- Add instruction fusion patterns and RAM fast-path optimization by @jserv in #671
- CI: Unify ASSERT for expect-style scripts by @jserv in #673
- Fix MMU page fault handling in JIT block-trans by @jserv in #674
- Build(deps): Bump setuptools from 75.8.0 to 78.1.1 in /.ci by @dependabot[bot] in #675
- Build(deps): Bump jinja2 from 3.1.5 to 3.1.6 in /.ci by @dependabot[bot] in #677
- Build(deps): Bump gitpython from 3.1.17 to 3.1.41 in /.ci by @dependabot[bot] in #676
- Build(deps): Bump pyyaml from 5.2 to 5.4 in /.ci by @dependabot[bot] in #678
- Lazy fetching Linux source code by @ChinYikMing in #679
- Fix PyYAML build failure on Python 3.12 by @jserv in #680
- Fix scause handling in MMU test by @jserv in #681
- CI: Fix wasm-system-deploy failure by @jserv in #683
- Refine build system with Kconfig integration by @jserv in #670
- Fix build system regressions in external/artifact by @jserv in #684
- Fix make build-linux-image by @ChinYikMing in #686
- Refine artifact build system by @jserv in #685
- Implement Goldfish RTC by @ChinYikMing in #613
- Refactor JIT code generation infrastructure by @jserv in #687
- Unify benchmark scripts with improved robustness by @jserv in #688
- Use memory pool for macro-op fusion arrays by @jserv in #690
- Fix T2C thread synchronization by @jserv in #691
- Harden memory pool with NULL safety by @jserv in #692
- CI: Bump GitHub Actions versions by @jserv in #693
- Fix make format to show error message by @ChinYikMing in #696
- CI: Fix Linux images rebuild logic by @ChinYikMing in #697
- Reduce interpreter/JIT overhead by @jserv in #694
- Enable T2C-based system emulation with thread-safe jit_cache by @jserv in #695
- Add inline caching for T2C indirect jump by @jserv in #699
- Add configurable T2C optimization level by @jserv in #702
- Parallelize x64 boot tests with...
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 quitby @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_queueby @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...