Repository navigation
Releases
mojo-toml v0.2.4
mojo-toml-public v0.2.4
Released: 2026-11-08 · Commit: 646dc85 · Previous: v0.2.3
What it does
A TOML 1.1 parser written in pure Mojo. It passes the complete official
conformance suite, toml-test v2.2.0:
214/214 valid and 467/467 invalid documents, on Mojo 1.2.0 and on the 1.2 nightly.
from toml import parse
def main() raises:
var doc = parse(open("config.toml", "r").read())
var server = doc["server"]
print(server["host"].as_string(), server["port"].as_int())Highlights
- Packaging only: the conda recipe pins
mojo-compilerto the minor the package was built with (<1.3.0a0), so it cannot be installed on a Mojo it does not load on. - Also: gate scripts capture output instead of piping into grep -q (audit pipe-grepq).
Changes
Changed
recipe.yaml:mojo-compilerrun dependency pinned to the build's minor (<1.3.0a0).
Fixed
- Gate scripts capture output instead of piping into grep -q (audit pipe-grepq).
Verified
| Check | Result |
|---|---|
pkg-conda dry run on the version commit (H1-H3,H6) |
PASS: mojo-toml-0.2.4-hb0f4dca_0.conda |
Known limits
- Packages are built on one Mojo minor only; see the package protocol.
Upgrade / run
None: no API change.
Commits
646dc85build: bump version to 0.2.4cd9d470fix: conformance gate captures output instead of piping into grep -q638ea56build: recipe pins mojo-compiler to the build's minor
mojo-toml v0.2.3
mojo-toml-public v0.2.3
Released: 2026-11-07 · Tag: v0.2.3 · Previous: v0.2.2
What it does
A TOML 1.1 parser written in pure Mojo. It passes the complete official
conformance suite, toml-test v2.2.0:
214/214 valid and 467/467 invalid documents, on Mojo 1.2.0 and on the 1.2 nightly.
from toml import parse
def main() raises:
var doc = parse(open("config.toml", "r").read())
var server = doc["server"]
print(server["host"].as_string(), server["port"].as_int())Highlights
- Docs only: CHANGELOG names no home path.
Changes
Changed
CHANGELOG.mdand the release notes name no home path.
Verified
| Check | Result |
|---|---|
mojo-lib-audit on this tree |
PASS |
gh-publish --check (ci-local) |
OK |
Known limits
- As in v0.2.2.
Upgrade / run
None: no code or API change.
Commits
git log v0.2.2..v0.2.3
mojo-toml v0.2.2
mojo-toml-public v0.2.2
Released: 2026-11-04 · Commit: 84426c7 · Previous: v0.2.1
What it does
A TOML 1.1 parser written in pure Mojo. It passes the complete official
conformance suite, toml-test v2.2.0:
214/214 valid and 467/467 invalid documents, on Mojo 1.2.0 and on the 1.2 nightly.
from toml import parse
def main() raises:
var doc = parse(open("config.toml", "r").read())
var server = doc["server"]
print(server["host"].as_string(), server["port"].as_int())Highlights
- Integer tokens are parsed from a view with no copy and no digit list, so parsing is faster.
parseis smoke-tested against random input: it raises, it never crashes.
Changes
Added
recipe.yaml: a conda package recipe.- A property smoke step in the gate:
parsenever crashes. mojo-upgradeconfig.- CI, latest-release and license badges in the README.
Changed
- Integer tokens are parsed from a view, no copy and no digit list.
- README: one install and quickstart block, one example.
Fixed
- Integers outside the signed 64-bit range are rejected.
- Array and inline-table nesting is bounded at 128 levels.
- Seconds are not inserted before a fraction:
07:32.5is invalid.
Verified
| Check | Result |
|---|---|
ci-local: the GitHub workflow in a clean Ubuntu 24.04 container (toml-test 214/214 valid, 467/467 invalid) |
PASS (2351c89) |
Known limits
- As in v0.2.1.
Upgrade / run
uv sync # installs Mojo 1.2.0
Commits
2351c89fix(ci): fetch mojo-proptest at a pinned commit when no sibling checkout exists84426c7fix(release): pyproject.toml, recipe.yaml, uv.lock say 0.2.2063bef4build: mojo-upgrade configa613983perf(toml): integer tokens are parsed from a view, no copy and no digit listf2b83d1test: property smoke step, parse never crashes4a18663build: conda recipe961ef4edocs: one example, one install blockb272c6adocs: install and quickstart blockd99d0b8build(toml): uv.lock project version 0.2.125cf43arefactor(toml): drop the unused TIME_LOCAL import in json.mojoc5a9118docs(toml): Mojo 1.2.0 everywhere, version 0.2.1 matches the taga77bfe6fix(toml): do not insert seconds before a fraction (07:32.5 is invalid)604e9fdfix(toml): bound array and inline-table nesting at 1287703ef1fix(toml): reject integers outside the signed 64-bit range0a44020docs: CI, latest-release and license badges
mojo-toml v0.2.1
mojo-toml v0.2.1
Released: 2026-10-29 · Commit: 63d7105 · Previous: v0.2.0
What it does
A TOML 1.1 parser written in pure Mojo. It passes the complete official
conformance suite, toml-test v2.2.0:
214/214 valid and 467/467 invalid documents, on Mojo 1.2.0 and on the 1.2 nightly.
from toml import parse
def main() raises:
var doc = parse(open("config.toml", "r").read())
var server = doc["server"]
print(server["host"].as_string(), server["port"].as_int())Highlights
- Builds and runs on the stable Mojo 1.2.0 release.
Changes
Changed
- The pin moves to Mojo 1.2.0 (
pyproject.toml,uv.lock); README and skill say Mojo 1.2.
Verified
| Check | Result |
|---|---|
ci-local: the GitHub workflow in a clean Ubuntu 24.04 container, Mojo 1.2.0 |
PASS |
Known limits
- As in v0.2.0.
Upgrade / run
uv sync # installs Mojo 1.2.0
Commits
63d7105build: Mojo 1.2.0d1f2b65docs: NOTICE names the owner and contacta76a6f8ci: GitHub Actions conformance run, CI badge, v0.2.0 release note
mojo-toml v0.2.0
mojo-toml v0.2.0
Released: 2026-10-21 · Commit: 1e1edaa (public) · Previous: first release
What it does
A TOML 1.1 parser written in pure Mojo. It passes the complete official
conformance suite, toml-test v2.2.0:
214/214 valid and 467/467 invalid documents, on Mojo 1.1.0 and on the 1.2 nightly.
from toml import parse
def main() raises:
var doc = parse(open("config.toml", "r").read())
var server = doc["server"]
print(server["host"].as_string(), server["port"].as_int())Highlights
- Full TOML 1.1: every case in the official suite parses or is rejected as the spec says.
- Every TOML type: all string kinds and escapes, integers in four bases, floats, booleans,
the four datetime kinds, arrays, tables, inline tables, arrays of tables, dotted keys. - Typed accessors that raise on a type mismatch, and errors that name the position:
toml: duplicate key 'a' at line 2:6. - Fast on large files: a 3.1 MB document with 20,000 tables parses in 104 ms.
- Pure Mojo, installs with the
mojopackage alone. Docs indocs/, and a skill file for
coding agents inskills/mojo-toml/SKILL.md. Apache-2.0.
Changes
First public release, no earlier version.
Verified
| Check | Result |
|---|---|
toml-test v2.2.0 -toml 1.1 |
214/214 valid, 467/467 invalid |
| wide tables (duplicate key and readback past the 16-key index) | pass |
tests/api.mojo (every promise in docs/api.md) |
pass on 1.1.0 and 1.2 nightly |
examples/quickstart.mojo |
runs on 1.1.0 and 1.2 nightly, 0 warnings |
fresh clone + uv sync + scripts/conformance.sh |
PASS all |
tests/bench.mojo, 2 runs |
104 ms parse, 4 ms lookups, 94 MB peak |
Known limits
- Parse only, no TOML writer.
to_jsonis the toml-test debug format. - Datetimes are returned as text plus a kind, not date objects.
- No strict TOML 1.0 mode: the 1.1 additions are always accepted, so 9 TOML 1.0 "invalid" tests parse.
- No Mojo package registry yet: install from source, a precompiled
.mojoc, or by vendoring.
Upgrade / run
git clone https://github.com/amarbaro/mojo-toml && cd mojo-toml && uv sync
mojo run -I src examples/quickstart.mojo
Commits
1e1edaamojo-toml 0.2.0: TOML 1.1 parser for Mojo