Jennifer - User Guide
Jennifer is a small, experimental, interpreted programming language. This
guide covers everything you can do in Jennifer. Run
jennifer version to see which build you’re on; the language history
lives in docs/milestones.md.
Design stances
A handful of decisions shape every feature in Jennifer. Read them before the topical chapters - they explain why the language looks the way it does and rule out the “but why don’t you just…” reflex.
See docs/design-stances.md for the full seven-stance table.
Contents
- Installing & running - building the binary, running a program, the interactive REPL, the inspection and formatting commands.
- Your first program - a one-screen
hello.jand a walkthrough of what each line does. - Editor & AI support - syntax highlighting for your editor,
and the drop-in
JENNIFER.mdthat lets an AI assistant write Jennifer. - Syntax - tokens, comments, identifier rules.
- Types and values - the primitive types,
variables and constants, scoping rules, and the compound types
listandmap. - Methods - declaring methods, parameters, return values, recursion, hoisting, the no-shadowing rule for builtins.
- Control flow - operators, precedence,
if/while/for/ for-each. - Imports -
use LIB;for libraries,import "file.j";for source files, the library catalog. - Examples - small programs that exercise the language end-to-end.
- Style guide - the canonical source style that
jennifer fmtproduces; the spacing/indentation rules, the names convention, the[]and{}literal layout. - Best practices - stylistic guidance and code-smell heuristics for writing Jennifer that ages well. Not enforced by the language; click through if you want the “why”.
Related
- docs/libraries/ - one reference page per
standard library (
io,convert,math,strings, …). - docs/modules/ - the Jennifer-coded modules that
ship with the interpreter, brought in with
import(ansi,csv,mime,redis, …). - docs/technical/ - interpreter internals for contributors.
- docs/glossary.md - canonical project terminology. When two words could plausibly name the same concept (function vs method, library vs module, list vs array), this page picks the one the project uses everywhere.
- docs/milestones.md - what’s shipped, what’s planned.