# Robert-van-Engelen/tinylisp

Lisp in 99 lines of C and how to write one yourself. Includes 21 Lisp primitives, garbage collection and REPL. Includes tail-call optimized versions for speed and reduced memory use.

Repository: https://github.com/Robert-van-Engelen/tinylisp
Canonical: https://ross.abutalabs.com/products/tinylisp
Language: C
License: BSD-3-Clause
License Family: permissive
Topics: lisp, lisp-interpreter, pc-g850, tiny
Last push: 2026-08-26T13:39:03+00:00

## Health v2 (maintenance only)
Score: 77/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 35, longevity 100
- inputs: {"age_days": 1512, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1594, forks 99 (observed 2026-08-28T04:05:08.955295+00:00)

## What it is
A tiny Lisp interpreter written in 99 lines of C, accompanied by an article explaining how to build it yourself. It includes 21 Lisp primitives, garbage collection, a REPL, and tail-call optimized variants, and even runs on a vintage Sharp PC-G850 pocket computer.

## Use cases
- learn how to write a Lisp interpreter in C
- study a minimal Lisp implementation with garbage collection
- understand NaN boxing value representation
- run a tiny Lisp on embedded or vintage hardware
- extend a small interpreter with new Lisp features
- teach programming language implementation concepts

## When to choose
- you want a compact, readable codebase for learning interpreter internals
- you need a minimal Lisp that runs on constrained or retro hardware
- you want a tutorial-style project with an accompanying article

## When to avoid
- you need a production-grade Lisp or Scheme with full standard library
- you require high performance or a mature ecosystem
- you want batteries-included tooling like package management or debugging

## Facets
- artifact type: learning-resource
- maturity: stable
- function: interpreter, programming-language, parser
- domain: programming-languages, education, tutorials
- platform: c, cross-platform, cli
- tags: lisp, interpreter, nan-boxing, garbage-collection, repl, tail-call-optimization, minimalist, retro-computing

## Member repositories
- Robert-van-Engelen/tinylisp (main) score 77

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:08.955295+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:54:09.959267+00:00, confidence not recorded.
  - readme: https://github.com/Robert-van-Engelen/tinylisp (fetched 2026-08-28T04:05:08.955295+00:00, sha 75e9ff5c1295)
- Data as of 2026-08-30T08:39:29.467469+00:00.
