Skip to content

Releases: Vigintillionn/hart

Release list

HART v0.0.1-alpha

HART v0.0.1-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Jun 16:30

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 I set 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; ebreak instructions 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 ecall syscalls 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.app to Applications
    and run xattr -cr /Applications/HART.app in 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)
  • li not 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 li correctly 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...
Read more