Jennifer is an interpreted language for real tools: 43 built-in libraries and
76 modules - SQL, JSON / YAML / TOML / XML, HTTP client and server, mail,
crypto, MQTT, S3, MCP and more - in one self-contained static binary, with
no runtime to install and no dependency tree to resolve. Its design is strict
and explicit: conditions must be bool, conversions are spelled out, names
never shadow, and an error says where it happened.
use io;
use strings;
def name as string init "world";
io.printf("hello, %s!\n", strings.upper($name));
jennifer-lang.dev - documentation, examples and downloads. Linux is the supported platform; unsupported macOS and Windows builds come with every release.
| Repository | What it is |
|---|---|
jennifer |
The interpreter (Go, plus an embeddable TinyGo build), its built-in libraries and modules, and the docs |
jvc |
The deck manager: resolves, pins and vendors decks into a project, and publishes them |
registry |
The deck registry: the index jvc resolves against, and its operator CLI |
grimoire |
A documentation site and a printable PDF from a directory of Markdown; builds every deck's manual. Plugins: grimoire-katex, grimoire-mermaid |
cantrip |
Markdown slide decks: an HTML slideshow and a PDF from one file |
website |
www.jennifer-lang.dev, served by a Jennifer program |
deck-template |
The starting point for a new deck, and the CI layer every deck shares |
Decks are Jennifer's packages. They are vendored into your project with jvc, never installed globally:
jvc add @jennifer/influxdbimport "@jennifer/influxdb/" as influxdb;
| Deck | What it does |
|---|---|
@jennifer/discord |
Post messages to a Discord channel through a webhook |
@jennifer/gotify |
Push notifications to a Gotify server |
@jennifer/influxdb |
InfluxDB 1.x, 2.x and 3.x: line-protocol writes, InfluxQL and Flux queries |
@jennifer/oauthext |
Vendor OAuth2: Google and Microsoft presets, Google service accounts |
@jennifer/prometheus |
Prometheus metrics in the text exposition format, and queries against its HTTP API |
@jennifer/slack |
Post messages to Slack through an Incoming Webhook |
@jennifer/statsd |
StatsD over UDP: counters, gauges, timings and sets, with DogStatsD tags and batching |
@jennifer/telegram |
A Telegram Bot API client |
Every published deck, official or not, can be found in the official
deck registry, the index jvc
installs from. Community decks live at Deckyard:
API clients, file formats, science and more, each with a named maintainer.
demo-jsnake- a multiplayer snake game for the Linux console, over UDP and TCPdemo-micrograd- a scalar reverse-mode autodiff engine
Bug reports and pull requests are welcome in each repository. Report a security problem privately to security@jennifer-lang.dev, not as a public issue; the interpreter's SECURITY.md says what a useful report holds.
Jennifer is licensed under LGPL-3.0-only.