Releases: Vigintillionn/hart
Releases · Vigintillionn/hart
Release list
HART v0.0.1-alpha
The first public alpha of HART, a desktop IDE and time-travel debugger for RV32IM assembly. Write RISC-V assembly, run it, and step forwards and backwards while watching every register, CSR, and byte of memory change.
⚠️ This is an early alpha; expect rough edges. Bug reports are very welcome.
What's included
- RV32IM assembler & emulator: a from-scratch Haskell implementation of the base integer ISA, the M (multiply/divide) and Zicsr (control/status register) extensions, the common pseudo-instructions (
li,la,mv,j,call,ret,csrr,csrw, ...), and directives (.text,.data,.string,.word,.space,.align). - Toggleable ISA extensions: enable/disable M and Zicsr from the toolbar; a disabled extension no longer parses, assembles, or runs. The base
Iset is mandatory. - Time-travel debugging: step forward, step back, and rewind to the start. Every CPU state is recorded, so reverse stepping is instant and exact.
- Breakpoints: click the editor gutter to set them;
ebreakinstructions are recognized as breakpoints too. - Live machine state: the PC, all 32 registers (ABI or numeric names), CSRs, and a hex memory view that flashes on writes, with HEX/DEC and signed toggles.
- Source-mapped execution: the current instruction is highlighted in your source as the CPU advances; a disassembly/text-segment view is available.
- Interactive I/O: programs that read stdin pause for input in an embedded terminal. Common
ecallsyscalls are supported (print/read int & string, print char,sbrk, file open/close/read/write, exit). - Built in RISC-V reference: a help window containing the RISC-V reference built into the app.
- Editor & UX: Monaco-based editor with RISC-V highlighting, multiple file tabs, keyboard shortcuts, a resizable panel layout, light/dark themes, session persistence, and a searchable settings panel.
Downloads
| Platform | Files |
|---|---|
| macOS | .dmg / .app |
| Linux | .AppImage, .deb, .rpm |
| Windows | .exe (NSIS installer) |
The emulator is bundled inside the app; there's nothing else to install.
Running an unsigned build
HART isn't code-signed yet, so your OS will flag it as unrecognized. It's safe;
you just need to bypass the warning:
- Windows: SmartScreen shows a blue popup -> More info -> Run anyway.
- macOS: if it says the app is "damaged", move
HART.appto Applications
and runxattr -cr /Applications/HART.appin Terminal, then open it normally.
Full changelog
Bug Fixes
- Parser correctly treats \r\n as newlines (
ec6a6e5) - Renaming of files actually renames now and hovering an open file shows the path (
8f59e13) - Formatting in editor, linter in about panel and wrong repo url in cargo.toml (
6e145f3) - Panel controls beign inconsistent when closing both register and memory panels (
5e3d4cf) - Pipeline (
74bdf24) - Caret in terminal not showing up (
3d890d3) linot sign extending the lower part when value is too large for a single li instruction (f792cb0)- Pretest for svelte unit test workflow (
3681709) - Typo and linter error (
fb69125) - CompileAndLoad checks instructions and sourcemap match length and yields an error instead of truncating if the check fails (
f06d082) - Exit syscall is now POSIX compliant (
ba2a5fc) - Read_int and print_int now work with signed integers (
3be8a7c) - Kernel now does not set break to below the heap base (
402d0ae) - Linear search over opcode (
7245176) - Breakpoints in source viewer (
9b161ef) - CLI also handles breakpoints properly like RPC (
328fd5d) - Memory view couldn't scroll past stack top (
af432f7) - Disable compile button while running (
caf29b2) - Status dot only pulses on running/paused state (
911bea0) - Mutating state inside effect (
641577a) - Properly persist user settings (
ea6402d) - Layout stored incorrectly (
599b028) - Clear terminal now only clears active terminal (
39678a4) - Typing for files in Monaco (
0b1055c) - Layout component is now typed (
1a0b408) - Range check on immediates when linking (
55d8be8) - Syscall not clearing CSR registers (
c95a626) - Breakpoint stepping too far and next instruction being executed eagerly (
64f425e) - Step overriding Pause state (
2d1373d) - Jump instruction not being parsed and formatting (
0ba28cb) - Boundcheck and lazyness in Kernel and Machine (
2f8b1c8) - Release workflows not having write perms (
667e790) - Linker not lowering
licorrectly for large values (7cfbe3a) - CI/CD pipeline and type error (
1cafc43) - Build sidecar building wrong (
f91d0c8) - Shadow warning in linker (
b368207) - Shadow warning in linker (
b799245) - Abi names for registers not being parsed correctly (
54329ad) - Fix cabal file for test-suite (
0ea73df) - Fix immediate for utype instruction (
de78d7b) - Add BLT and BGE to assembler (
958860b) - Fix branches jumping one instruction too far back (
ce2be34) - Remove subi from parser (
4e38e6d) - Remove subbi as it's not a valid riscv instruction (
fcfd537)
Features
- Move CSR instructions to Zicsr extension, added CSR pseudo instructions, proper syntax highlighting and help for it. Also fix an issue where writing numbers too large would hang the program (
2dae289) - Add file associations (
fb10ae9) - Add app icons (
ba757c7) - Add about panel to settings, split up settings into category and fix searching (
2651540) - Make file bar scrollable and add renaming of files in the...