HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
stamourv
picobit
C2015–2025
stamourv / picobit

picobit

A Compact Scheme System for Microcontrollers

11Distinct people
13Mentions
0Explicit recommenders
188GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A Compact Scheme System for Microcontrollers

GitHub

Where it is used

No documented product use was verified in the last source check.

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, 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 year13 dated mentions

Observed mentions: 2015-01-06 19:53:47 UTC to 2025-11-23 18:25:14 UTC.

02462015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

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
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC606
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC202
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

13 sources
that's an often repeated misconception about lisps. lisps are pretty good at low-level programming, but then you'll need to make some compromises like abandoning the reliance on the GC and managing memory manually (which is still a lot easier than in other languages due to the metaprogramming capabilities). there are lisps that can compile themselves to machine code in 2-4000 LoC altogether (i.e. compiler and assembler included; https://github.com/attila-lendvai/maru). i'm not saying that there are lisp-based solutions that are ready for use in the industry. what i'm saying is that the lisp langauge is not at all an obstacle for memory-limited and/or real-time programs. it's just that few people use them, especially in those fields. e.g. i'd easily prefer a lisp to put together a specialized byte-code interpreter to shrink firmware size f
Read the rest
or small embedded devices (e.g. for a radio https://github.com/armel/uv-k5-firmware-custom/discussions/4...). and there are interesting experiments for direct compilation, too: BIT: A Very Compact #Scheme System for #Microcontrollers (#lisp #embedded) http://www.iro.umontreal.ca/~feeley/papers/DubeFeeleyHOSC05.... "We demonstrate that with this system it is clearly possible to run realistic Scheme programs on a microcontroller with as little as 3 to 4 KB of RAM. Programs that access the whole Scheme library require only 13 KB of ROM." "Many of the techniques [...] are part of the Scheme and Lisp implementation folklore. [...] We cite relevant previous work for the less well known implementation techniques." BIT inspired PICOBIT (last changed in 2015): https://github.com/stamourv/picobit racket (only a .so into an already running VM): http://download.racket-lang.org/docs/5.1.3/html/raco/ext.htm... scheme: gambit, chicken
In Racket v9.0
I think it depends on how hard-core you want to go. Fennel runs in 2K of ram https://news.ycombinator.com/item?id=31029478 Picbit ran in 256bytes, it's descendent is slightly larger https://github.com/stamourv/picobit Staapl compiles scheme to Forth, to also run on the PIC18 https://www.concatenative.org/wiki/view/Staapl Of course there is also Sectorlisp, the smallest language out there in 436bytes, 64k ram https://justine.lol/sectorlisp2/
In Pikascript: An ultra-lightweight Python engine that can run in 4Kb of RAM
Also from David A. Wheeler's 6502 Language Implementation Approaches (archive.org-ified to the time the links were written, or best approximation): https://web.archive.org/web/20181112182918/https://dwheeler.... Lisp/LOGO The "skimp" page also includes a list of several 8-bit LISP implementations, including several for the 6502 [1]. This discussion lists more [2]. One useful implementation discussion (of many!) is R. Kent Dybvig's "Three Implementation Models for Scheme". University of North Carolina Computer Science Technical Report 87-011 [Ph.D. Dissertation], April 1987 [3]. neslisp [4] is a small subset of Lisp that generates 6502 code (NES); the as of version 0.1 it is released under the GPLv2 license (and thus is open source software). An older version is available via neslisp on Google code [5]. Picobit [6] (GPLv3) looks interestin
Read the rest
g. You program in Lisp (specifically a variant of Scheme) on a larger system; it then compiles to a VM that runs on the target. Currently it does not support the 6502, but the system is designed to be portable and it looks to me that it'd be relatively easy to port to a 6502. Lysp [7] (MIT license) is another small implementation of Lisp. It doesn't directly support 6502 and is in C, but it's small... so it might not be hard to transliterate. A related program from the same developer is Maru [8], which can self-host. This could be a reasonable starting point for creating a 6502 Lisp. Turning the Apple //e into a lisp machine, part 1 [9] refers to this Lisp interpreter for the Apple //e [10] (MIT license). They also show a clever bootstrap approach: they send code via the audio jack (!). There's more that can be done; Lisp was originally developed in 1965, on even smaller systems. The book "Lisp in Small Pieces", Program Transformation in Lisp [11], this Scheme page [12] and these details on implementation [13] are all of interest. R. Kent Dybvig's "Three Implementation Models for Scheme" [14] shows how to implement Scheme while still keeping most stuff on the stack. Tagging could be difficult, but an alternative (that I believe was done for early Lisp implementations) is to partition the memory into regions; to determine the tag, just check which memory region it is in. It might be possible to start with PicoLisp [15] to create a 6502 version. There is a trivial ACL2 implementation of Lisp (GPL) [16] that I converted into Common Lisp ( compiler [17], run-time [18]; See Wolfgang Goerigk's "Compiler Verification Revisited" [19] for more). I know that there was an "InterLISP 65" available for Atari's 6502-based line. Various full LOGO implementations were available as well. [1] skimp: http://web.archive.org/web/20100131151915/http://www.ip9.org... [2] discussion: [missing] [3] Three Implementation Models for Scheme: https://web.archive.org/web/20160817185323/http://www.cs.ind... [4] neslisp: https://web.archive.org/web/20160319025751/http://gomez.yell... sources: https://web.archive.org/web/20160619185108/http://gomez.yell... [5] google code nelisp: [missing] [6] Picobit: https://web.archive.org/web/20150106110223/https://github.co... current: https://github.com/stamourv/picobit [7] Lysp: https://web.archive.org/web/20180929064442/http://piumarta.c... source: browse: https://web.archive.org/web/20170507045957/http://www.piumar... download: https://web.archive.org/web/20180929064442/http://piumarta.c... [8] Maru: https://web.archive.org/web/20181206222700/http://piumarta.c... source: browse: https://web.archive.org/web/20181206222700/http://piumarta.c... download: https://web.archive.org/web/20181206222700/http://piumarta.c... [9] Turning the Apple //e into a lisp machine, part 1: https://web.archive.org/web/20190109003417/http://blog.nulls... [10] google code turtles: https://web.archive.org/web/20180611002847/https://github.co... current: https://github.com/hausdorff/turtles [11] Program Transformation in Lisp: http://www.findinglisp.com/blog/2004/06/program-transformati... [12] this Scheme page: [missing] [13] these details on implementation: https://web.archive.org/web/20180801195133/http://library.re... [14] Three Implementation Models for Scheme: https://web.archive.org/web/20190503102138/https://cs.indian... [15] PicoLisp: https://web.archive.org/web/20181124064229/http://www.softwa... [16] ACL2 implementation of Lisp (GPL): https://web.archive.org/web/20090217043459/http://www.cs.ute... [17] compiler: https://web.archive.org/web/20160320015734/http://www.dwheel... [18] runtime: [missing] [19] Compiler Verification Revisited: [missing] citation: https://dl.acm.org/citation.cfm?id=369101 buy chapter: https://link.springer.com/chapter/10.1007/978-1-4757-3188-0_...
In MakerLisp: Embedded Lisp Machine
I wish people would quit promulgating Forth. Sorry, but it is not a production language. It is a puzzle language. Many things which are straightforward in even the worst programming language are a brain teaser to figure out how to organize in the "Forth Way(tm)". Scheme and Lua come closest to my ideal. However, I just can't deal with 1-based indexing from Lua. Sorry. Too many things talk to C API's. Scheme is okay, but almost none of them are truly small anymore. Even the ones like picobit (https://github.com/stamourv/picobit) require quite some grunty support from a desktop machine outside the processor.
In GRiSP – Erlang-based IoT hardware platform

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.