HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
howerj
muxleq
Forth2025–2026
howerj / muxleq

muxleq

A two instruction set computer that greatly speeds things up over SUBLEQ

2Distinct people
14Mentions
0Explicit recommenders
13GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A two instruction set computer that greatly speeds things up over SUBLEQ

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

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 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 month14 dated mentions

Observed mentions: 2025-05-01 18:47:46 UTC to 2026-05-25 12:50:34 UTC.

01232025-05-01 00:00:00 UTC to 2025-06-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsMay 20252025-06-01 00:00:00 UTC to 2025-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-07-01 00:00:00 UTC to 2025-08-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-08-01 00:00:00 UTC to 2025-09-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-09-01 00:00:00 UTC to 2025-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-01 00:00:00 UTC to 2025-11-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-01 00:00:00 UTC to 2025-12-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsNov 20252025-12-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-01 00:00:00 UTC to 2026-02-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-02-01 00:00:00 UTC to 2026-03-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-03-01 00:00:00 UTC to 2026-04-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-04-01 00:00:00 UTC to 2026-05-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2026-05-01 00:00:00 UTC to 2026-06-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 commentsMay 2026

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
May 20252025-05-01 00:00:00 UTC2025-06-01 00:00:00 UTC202
Jun 20252025-06-01 00:00:00 UTC2025-07-01 00:00:00 UTC000
Jul 20252025-07-01 00:00:00 UTC2025-08-01 00:00:00 UTC000
Aug 20252025-08-01 00:00:00 UTC2025-09-01 00:00:00 UTC000
Sep 20252025-09-01 00:00:00 UTC2025-10-01 00:00:00 UTC000
Oct 20252025-10-01 00:00:00 UTC2025-11-01 00:00:00 UTC000
Nov 20252025-11-01 00:00:00 UTC2025-12-01 00:00:00 UTC101
Dec 20252025-12-01 00:00:00 UTC2026-01-01 00:00:00 UTC202
Jan 20262026-01-01 00:00:00 UTC2026-02-01 00:00:00 UTC000
Feb 20262026-02-01 00:00:00 UTC2026-03-01 00:00:00 UTC101
Mar 20262026-03-01 00:00:00 UTC2026-04-01 00:00:00 UTC202
Apr 20262026-04-01 00:00:00 UTC2026-05-01 00:00:00 UTC303
May 20262026-05-01 00:00:00 UTC2026-06-01 00:00:00 UTC303

What Hacker News says

14 sources
I ran EForth under the Subleq from Howe R.J at https://github.com/howerj/muxleq (the subleq one) first at QuickJS (trivial tasks, almost a 1:1 map from the C code, made in a hurry) and under... jsinterp.py from the infamous yt-dlp but using arrays instead of printing functions. But... if yt-dlp's "mini-JS" implements some captcha input functions... you can add I/O with ease and run EForth with what they call (not me) a "Not totally functional interpreter". Not totally... until people there run the 110 rule program, Conway's Life, Subleq+EForth...
In Bytecode VMs in surprising places (2024)
Nils Holm does permacomputing without writting fancy manifestos: https://t3x.org T3X/0 will assemble binaries for Unix/DOS (maybe Windows) and CP/M. S9 can do great stuff with very little. Klong it's a mini APL-like CAS more bound to Statistics than Calculus. No fancy Unicode needed. Also, Luxferre doing an ultra-minimal numeric VM: https://codeberg.org/luxferre/mu808 Read the instructions, that mini VM it's surprisingly able. Finally, Subleq+EForth from https://github.com/howerj/muxleq (muxleq it's just subleq with parallel mux running the exact same intstructions). From the book you can boostrap EForth from itself with a minimal Subleq DEC file. Enough to run a Sokoban, a calculator (set complex numbers as binomials), and you can implement q+ q- q* q/ to calculate and reduce (lcm/mcm) fractions: 2 3 1 3 q+ .s 3 3 <ok>
Read the rest
/ . 1 <ok> Luxferre's Scoundrel C port can trivially ported to UXN and even maybe mu808. Eforth for sure, with cells and a minimal 'vector/array/' like implementation.
In Permacomputing Principles
- Algol 68 docs: https://algol68-lang.org/resources 'a68g' it's a free as in freedom compiler. - Forth: you can use PFE,Gforth for ANS Forth requeriments. Or EForth if you reached high skills levels where the missing stuff can be just reimplemented. EForth under Muxleq: https://github.com/howerj/muxleq I can provide a working config where a 90% of it would be valid across SF. Starting Forth, ANS version: https://www.forth.com/starting-forth/ Thinking Forth, do this after finishing SF: https://thinking-forth.sourceforge.net/ Also, Forth Scientific Library. You can make it working with both GForth and PFE, just read the docs. Full pack: https://www.taygeta.com/fsl/library/Library.tgz Helping Forth code for GForth/PFE. If you put it under scilib/fs-util.fs, load it with: s" scilib/fsu-util.fs" included https://www.taygeta.com/fsl/l
Read the rest
ibrary/fsl-util.fs - Lisp. s9fes, it will compile under any nix/Mac/BSD out there, even with MinC. S9fes: http://www.t3x.org/s9fes/ Pick the bleeding edge version, it will compile just fine. For Windows users: MinC, install both EXE under Windows. First, mincexe, then buildtools*exe: https://minc.commandlinerevolution.nl/english/home.html Then get 7zip to decompress the s9fes TGZ file, cd to that directory, and run 'make'. Run ./s9 to get the prompt, or ./s9 file.scm where file.scm it's the source code. In order to learn Scheme, there's are two newbie recommended books before "SICP". Pick any, CACS, SS, it doesn't matter, both will guide you before SICP, the 'big' book on Scheme: Simply Scheme https://people.eecs.berkeley.edu/~bh/pdf/ Simply.scm file, select from ';;; simply.scm version 3.13 (8/11/98)' to '(strings-are-numbers #t)' and save it as simply.scm https://people.eecs.berkeley.edu/~bh/ssch27/appendix-simply.... Concrete Abstractions Book: https://www.d.umn.edu/~tcolburn/cs1581/ConcreteAbstractions.... The SCM files needed to be (load "foo.scm") ed in the code in order to do the exercises: https://github.com/freezoo/scheme-concabs If you are en Emacs user, just read the Elisp intro, it will work for a different Lisp family but with similar design. Spot the differences: Scheme (like s9): (define (square x) (* x x)) We try: >(square 20) 400 Elisp/Common Lisp (as the web site shows): (defun square (x) (* x x)) Same there: >(square 20) 400 - Ok, ML like languages: https://www.t3x.org/mlite/index.html If you follow the instructions on compiling s9, mlite it's similar with MinC for Windows. If you are a Unix/Linux/Mac user, you already know how to do that. You got the whole docs in the TGZ file, and the web.
In The seven programming ur-languages (2022)
This like Subleq where you can run EForth and EForth itself self-bootstraps: https://github.com/howerj/muxleq PD: you don't need gforth to compile: cc -O2 -o muxleq muxleq.c Edit muxleq.fth, add some goodies by editing these values: 1 constant opt.multi ( Add in large "pause" primitive ) 1 constant opt.editor ( Add in Text Editor ) 1 constant opt.info ( Add info printing function ) 0 constant opt.generate-c ( Generate C code ) 1 constant opt.better-see ( Replace 'see' with better version ) 1 constant opt.control ( Add in more control structures ) 0 constant opt.allocate ( Add in "allocate"/"free" ) 1 constant opt.float ( Add in floating point code ) 0 constant opt.glossary ( Add in "glossary" word ) 1 constant opt.optimize ( Enable extra optimizat
Read the rest
ion ) 1 constant opt.divmod ( Use "opDivMod" primitive ) 0 constant opt.self ( self-interpreter [NOT WORKING] ) Here are my settings. Then, create a new ".dec" file (subleq program) : ./muxleq muxleq.dec < muxleq.fth > new.dec Now, to run EForth everytime: ./muxleq new.dec add these further in muxleq.fth code to have them: : d. tuck dabs <# #s rot sign #> type ; : */ */mod nip ; The ideal place would be just below the ': dabs ' defition.
In All elementary functions from a single binary operator
I ran calypso.z3, tristam_island.z3 and a few more Zmachine text adventures under an interpreter created in PostScript. Also if I want I can cross-compile a static build of Frotz for Linux/Misc and emulate it under a RISC interpreter for Linux syscalls written in... Perl, runable in every modern Perl port out there. Linux/RISC binary under Perl for NetBSD/Vax? Yes. Slow? Not much, it's a text game in the end. But, as for the ZMachine, you can run text adventures in Android, Game Boy, Amiga, MSDOS, Windows, Palm PDA's... anything 8bit and up. Also, damn Sokoban under Eforth written in Subleq, a VM which can just: - set up a 2^16 RAM size - single opcode: substract A from B, if less than 0, go to addr in C. - A < 0? Get ASCII input in B - B < 0? Put ASCII output in B - C < 0? End This, just this, and people wrote Subleq simulators in C, AW
Read the rest
K, Python, TCL, FPGA's and whatnot. And it will run Eforth, and that means... you can write a ZMachine interpreter on it and be really slow if emulated in a Pentium 4 (maybe 3/5 seconds per command with a ZMachine on top of Eforth for Muxleq instead of Subleq), but the game will be playable and a great exercise on Turing completeness. If a Mandlebrot render under Muxleq+EForth (with no floats used, just integers) is as fast as a C64/Amiga with a native Forth. then having that tiny EForth+Muxleq is not that useless. https://github.com/howerj/muxleq
In CSS is DOOMed
Begin reimplementing a subleq/muxleq VM with GPU primitive commands: https://github.com/howerj/muxleq (it has both, muxleq (multiplexed subleq, which is the same but mux'ing instructions being much faster) and subleq. As you can see the implementation it's trivial. Once it's compiled, you can run eforth, altough I run a tweked one with floats and some beter commands, edit muxleq.fth, set the float to 1 in that file with this example: 1 constant opt.float The same with the classic do..loop structure from Forth, which is not enabled by default, just the weird for..next one from EForth: 1 constant opt.control and recompile: ./muxleq ./muxleq.dec < muxleq.fth > new.dec run: ./muxleq new.dec Once you have a new.dec image, you can just use that from now on.
In A CPU that runs entirely on GPU
Muxleq and Subleq: https://github.com/howerj/subleq https://github.com/howerj/muxleq Muxleq because of performance: cd muxleq cc -O2 -ffast-math -o muxleq muxleq.c Edit muxleq.fth, set these values like this: 1 constant opt.multi ( Add in large "pause" primitive ) 1 constant opt.editor ( Add in Text Editor ) 1 constant opt.info ( Add info printing function ) 0 constant opt.generate-c ( Generate C code ) 1 constant opt.better-see ( Replace 'see' with better version ) 1 constant opt.control ( Add in more control structures ) 0 constant opt.allocate ( Add in "allocate"/"free" ) 1 constant opt.float ( Add in floating point code ) 0 constant opt.glossary ( Add in "glossary" word ) 1 constant opt.optimize ( Enable extra optimization ) 1 constant opt.
Read the rest
divmod ( Use "opDivMod" primitive ) 0 constant opt.self ( self-interpreter [NOT WORKING] ) Then run: ./muxleq ./muxleq.dec < muxleq.fth > new.dec new.dec it's the enhanced SUBLEQ EForth image. To run it: ./muxleq new.dec For the available words, run words inside the interpreter. Enter bye to exit. Get Starting Forth but the ANS version (there's some PDF in search engines) and Thinking Forth.
In FORTH? Really!?
I've seen ZMachine games under a pen and also under a PostScript file. PS, unlike Doom fanboys claiming otherwise with PDF files embedding JS (and I daily play FreeDoom with daily build WADs). ZMachine games are the 2nd most ported game in existence. The first one must be Tetris. Which has been interpreted under the ZMachine itself. A Z3 game can run platforms which Doom can just dream: - A PostScript virtual machine - An FPGA implementation - Kaypro/Altair with CP/M 2.2 - MSX 1/2 - Amiga/Atari/Mac68k - ZX Spectrum 128 - Amstrap CPC - TRS I-IV - C64 - Apple II (maybe Apple 1 with a 16k RAM expansion) - GB/C - PDA's/Palms - Maybe the NES with an on-screen keyboard - Ditto with the Master System - PS1 and PS2, N64 with an OSK again. - Windows/Linux/Mac/Android/Whatever - Damn Minix 2.0 under a homebrew CPU with TTL's - Ebooks - Maybe a shad
Read the rest
er - Subleq+Eforth + a VM written in Eforth. At OFC glacial speeds but with Muxleq it might run fast enough even under my shitty n270 netbook: https://github.com/howerj/muxleq The Perl muxleq implementation already ran muc h faster than subleq, it was a literal two-line patch. Literal, as-is. A dumb IF clause. so the C one can be fast enough maybe to run Z3 games with a bit of patience. Output? - screens - speakers - printers - Braille outputs - Morse (yes you can hook any TTY output to morse audio with ease unde Unix) Sorry, Doom can't compete.
In Show HN: KiDoom – Running DOOM on PCB Traces
This is fun too https://github.com/howerj/subleq/ but you might need to edit subleq.fth and create a new image with some of the constants named opt.* settings set to 1 (enabled) in order to enable do...loop support and such. After you enabled them, try ./sublec ./sublrec.dec < ./sublec.fth > new.dec, wait a lot, and then run ./subleq sublec.dec . In order to save lots of time, clone the muxleq repo https://github.com/howerj/muxleq , edit muxleq.fth as always, and then run ./muxleq ./muxlec.dec < muxlec.fth > new.dec, and ./muxlec ./new.dec to run the new DEC EForth image. Is not especially fast but it's a ready to run Forth and the Subleq machine can be compiled even under Windows XP and up with Min-C or any bundled C compiled on GNU/Linux BSD, from cproc to tcc, gcc or clang. If some of your code runs fast under Muxleq+EForth,
Read the rest
it will fly under PForth and GForth. https://minc.commandlinerevolution.nl/english/home.html The speeds I get under an n270 atom with Muxleq are almost like a Forth machine under a boosted up 8 bit machine, kinda like an 8MHZ z80 with a native Forth, or a very low end M68k machine.
In Moving Forth: a series on writing Forth kernels
Would subleq work on this? Also, the 'ascii' output array/grid would be like a whiteboard, and a Forth on this would look like the computers from "Slouching towarsf Bedlam" text adventure. Maybe it would need 5 minutes to show a prompt, but, if it works, it would be the greatest homage to computing (and Chuck Moore) ever. There's Eforth for subleq, and the muxleq version feels almost like a native Forth on speed. https://github.com/howerj/muxleq The muxleq repo has the original subleq too. You can set the options for floating point and the do...loop (among others) in the Forth file and then you could just recompile the DEC file. With the do...loop it's closer to the standards. And, yes, I can mimic for...next with ease with most ans forths such as pforth. If any, I can link an already recompiled and more featured DEC file here. BTW: Yo
Read the rest
u would like the book from the author too. https://howerj.github.io/subleq.htm
In Show HN: Mechanical Computer Kit (Roons)

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.