HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
maximecb
uvm
Rust2023–2023
maximecb / uvm

uvm

Fun, portable, minimalistic virtual machine.

3Distinct people
7Mentions
0Explicit recommenders
627GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Fun, portable, minimalistic virtual machine.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by 3-hour interval7 dated mentions

Observed mentions: 2023-02-25 16:12:17 UTC to 2023-02-28 18:09:51 UTC.

0122023-02-25 15:00:00 UTC to 2023-02-25 18:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsFeb 25, 15:002023-02-25 18:00:00 UTC to 2023-02-25 21:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-02-25 21:00:00 UTC to 2023-02-26 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-02-26 00:00:00 UTC to 2023-02-26 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-26 03:00:00 UTC to 2023-02-26 06:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-02-26 06:00:00 UTC to 2023-02-26 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-26 09:00:00 UTC to 2023-02-26 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-26 12:00:00 UTC to 2023-02-26 15:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-26 15:00:00 UTC to 2023-02-26 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-26 18:00:00 UTC to 2023-02-26 21:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-26 21:00:00 UTC to 2023-02-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-27 00:00:00 UTC to 2023-02-27 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-27 03:00:00 UTC to 2023-02-27 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsFeb 27, 03:002023-02-27 06:00:00 UTC to 2023-02-27 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-27 09:00:00 UTC to 2023-02-27 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-27 12:00:00 UTC to 2023-02-27 15:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-27 15:00:00 UTC to 2023-02-27 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-27 18:00:00 UTC to 2023-02-27 21:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-27 21:00:00 UTC to 2023-02-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-28 00:00:00 UTC to 2023-02-28 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-28 03:00:00 UTC to 2023-02-28 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-28 06:00:00 UTC to 2023-02-28 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-28 09:00:00 UTC to 2023-02-28 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-28 12:00:00 UTC to 2023-02-28 15:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-28 15:00:00 UTC to 2023-02-28 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-02-28 18:00:00 UTC to 2023-02-28 21:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsFeb 28, 18:00

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Feb 25, 15:002023-02-25 15:00:00 UTC2023-02-25 18:00:00 UTC101
Feb 25, 18:002023-02-25 18:00:00 UTC2023-02-25 21:00:00 UTC202
Feb 25, 21:002023-02-25 21:00:00 UTC2023-02-26 00:00:00 UTC101
Feb 26, 00:002023-02-26 00:00:00 UTC2023-02-26 03:00:00 UTC000
Feb 26, 03:002023-02-26 03:00:00 UTC2023-02-26 06:00:00 UTC202
Feb 26, 06:002023-02-26 06:00:00 UTC2023-02-26 09:00:00 UTC000
Feb 26, 09:002023-02-26 09:00:00 UTC2023-02-26 12:00:00 UTC000
Feb 26, 12:002023-02-26 12:00:00 UTC2023-02-26 15:00:00 UTC000
Feb 26, 15:002023-02-26 15:00:00 UTC2023-02-26 18:00:00 UTC000
Feb 26, 18:002023-02-26 18:00:00 UTC2023-02-26 21:00:00 UTC000
Feb 26, 21:002023-02-26 21:00:00 UTC2023-02-27 00:00:00 UTC000
Feb 27, 00:002023-02-27 00:00:00 UTC2023-02-27 03:00:00 UTC000
Feb 27, 03:002023-02-27 03:00:00 UTC2023-02-27 06:00:00 UTC000
Feb 27, 06:002023-02-27 06:00:00 UTC2023-02-27 09:00:00 UTC000
Feb 27, 09:002023-02-27 09:00:00 UTC2023-02-27 12:00:00 UTC000
Feb 27, 12:002023-02-27 12:00:00 UTC2023-02-27 15:00:00 UTC000
Feb 27, 15:002023-02-27 15:00:00 UTC2023-02-27 18:00:00 UTC000
Feb 27, 18:002023-02-27 18:00:00 UTC2023-02-27 21:00:00 UTC000
Feb 27, 21:002023-02-27 21:00:00 UTC2023-02-28 00:00:00 UTC000
Feb 28, 00:002023-02-28 00:00:00 UTC2023-02-28 03:00:00 UTC000
Feb 28, 03:002023-02-28 03:00:00 UTC2023-02-28 06:00:00 UTC000
Feb 28, 06:002023-02-28 06:00:00 UTC2023-02-28 09:00:00 UTC000
Feb 28, 09:002023-02-28 09:00:00 UTC2023-02-28 12:00:00 UTC000
Feb 28, 12:002023-02-28 12:00:00 UTC2023-02-28 15:00:00 UTC000
Feb 28, 15:002023-02-28 15:00:00 UTC2023-02-28 18:00:00 UTC000
Feb 28, 18:002023-02-28 18:00:00 UTC2023-02-28 21:00:00 UTC101

What Hacker News says

7 sources
I'm designing a such a system now, based on the pure functional Joy language with two additional data stores: a relational db system (Prolog (or maybe Datalog), not SQL) and what is effectively a git repo although I think of it as a "data oracle". The role of the relational db system is explained in TFA. (Prolog makes a fine Relational Model DB (the "relations" in RMDBs are the same logical relations that Prolog "relations", um, are.) The language is cleaner and simpler and more powerful than stock SQL, there's an ISO standard and several solid implementations, and you can always back it up with SQLite or PostGRES or whatever if you need to.) The trick to integrating it with a purely functional system is to only use "pure and monotonic Prolog code" which you want to do anyway ( https://www.metalevel.at/prolog/debugging ) or as I like t
Read the rest
o say, "Don't put lies in your database." The "data oracle" (which again is more-or-less just a git repo) provides bytes given a three-tuple of (hash, offset, length). These are immutable, so you can cache the results of (pure) computations over them (e.g. a predicate like "is valid UTF-8" is true/false for all time, yeah?) This replaces the filesystem. I was working with Prof. Wirth's Oberon RISC CPU as a basis, but a couple of days ago a fantastic new 64-bit vm went by here on HN and I'm going to use that going forward. https://github.com/maximecb/uvm https://news.ycombinator.com/item?id=34936729
In Out of the Tar Pit (2006) [pdf]
It might be worth linking the instruction set in the sources (there doesn't seem to be a doc yet?) - it gives a fairly decent picture of what kind of VM we're talking about: https://github.com/maximecb/uvm/blob/main/vm/src/vm.rs One thing I didn't quite grok there. It seems that the operand stack is also used directly for locals and hence is indexable, with what looks like an implicit frame base register? But the stack is not addressable. Is the language runtime expected to manage a separate in-memory stack for addressable locals and dynamically allocated arrays, like wasm?
In Building a Minimalistic Virtual Machine
> Does the discussion happen in a public place? If yes I'd be extremely happy to join in since I also got started with making my own system around a month ago, and it feels a bit lonely going on such an endeavor at times. I'm happy to discuss anything in the GitHub discussions for UVM: https://github.com/maximecb/uvm/discussions > Very interesting choice, I did away with such assumptions and ran the other way, my system might feel quite alien/esoteric since I went for something that draws a lot of inspiration from Chuck Moore's work with ColorForth as well as his F18 chip. If you're building a system for fun, or to explore new ideas, then it seems fine to make it as esoteric as you want. However, in my experience, making esoteric choices when designing programming languages for instance, can really alienate potential users. Especially if
Read the rest
you could have obviously gone with some more traditional and familiar choices but you went with something more esoteric that doesn't have any clear value added. IMO it's a bit like when it comes to terminology. If there's a commonly accepted way to refer to something, use it. Don't make up your own nomenclature, you'll just create extra confusion for no reason.
In Building a Minimalistic Virtual Machine
Author here. The creator of UXN is a friend of mine and we chat semi-regularly about our VMs. I have a lot of respect for uxn and credit it as an inspiration, but the goals of each project are different. UXN is a 16-bit system with 64KB of RAM accessible. It will also probably always remain interpreted. These design restrictions are seen as tools to foster creativity. UVM is a 32/64-bit VM. It's currently interpreted, but I've designed the instruction set with JIT compilation in mind. I have a PhD in compiler design and I'm fairly confident that I can make a fast JIT for UVM in a relatively short amount of time, when I feel the design is mature/stable enough. At the moment, UVM is relatively immature, but I want it to be a small/minimalistic VM that you can still build "real" or modern software in that takes good advantage of the capabil
Read the rest
ities and performance of your machine. Another difference is that IMO, UVM is more approachable. UXN's assembly language is fairly esoteric IMO. It doesn't look like any other assembly language I've ever seen. That doesn't make it bad, but it does potentially make it harder to learn and harder to leverage an existing base of programming skills. UVM's assembly is designed to not be surprising if you've ever programmed in assembly and know the basic ideas about how a stack machine works. I also have a WIP C compiler that's already usable to write simple programs. See my little snake game for a fun toy example: https://github.com/maximecb/uvm/blob/main/ncc/examples/snake... Assembly syntax example: https://github.com/maximecb/uvm/blob/main/vm/examples/factor... I'll point to the fact that there is almost no boilerplate necessary to start drawing some pixels on a 2D canvas, which IMO makes it a fun platform to develop for. Like I said, it's immature, but I'll iron out all the bugs I can find and keep making it better.
In Building a Minimalistic Virtual Machine

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.