Skip to content

Releases

mojo-toml v0.2.4

Choose a tag to compare

@amarbarosys amarbarosys released this 08 Nov 23:03

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-compiler to 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-compiler run 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

  • 646dc85 build: bump version to 0.2.4
  • cd9d470 fix: conformance gate captures output instead of piping into grep -q
  • 638ea56 build: recipe pins mojo-compiler to the build's minor

mojo-toml v0.2.3

Choose a tag to compare

@amarbarosys amarbarosys released this 07 Nov 14:41

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.md and 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

Upgrade / run

None: no code or API change.

Commits

git log v0.2.2..v0.2.3

mojo-toml v0.2.2

Choose a tag to compare

@amarbarosys amarbarosys released this 04 Nov 14:41

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.
  • parse is 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: parse never crashes.
  • mojo-upgrade config.
  • 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.5 is 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

Upgrade / run

uv sync   # installs Mojo 1.2.0

Commits

  • 2351c89 fix(ci): fetch mojo-proptest at a pinned commit when no sibling checkout exists
  • 84426c7 fix(release): pyproject.toml, recipe.yaml, uv.lock say 0.2.2
  • 063bef4 build: mojo-upgrade config
  • a613983 perf(toml): integer tokens are parsed from a view, no copy and no digit list
  • f2b83d1 test: property smoke step, parse never crashes
  • 4a18663 build: conda recipe
  • 961ef4e docs: one example, one install block
  • b272c6a docs: install and quickstart block
  • d99d0b8 build(toml): uv.lock project version 0.2.1
  • 25cf43a refactor(toml): drop the unused TIME_LOCAL import in json.mojo
  • c5a9118 docs(toml): Mojo 1.2.0 everywhere, version 0.2.1 matches the tag
  • a77bfe6 fix(toml): do not insert seconds before a fraction (07:32.5 is invalid)
  • 604e9fd fix(toml): bound array and inline-table nesting at 128
  • 7703ef1 fix(toml): reject integers outside the signed 64-bit range
  • 0a44020 docs: CI, latest-release and license badges

mojo-toml v0.2.1

Choose a tag to compare

@amarbarosys amarbarosys released this 29 Oct 21:10

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

Upgrade / run

uv sync   # installs Mojo 1.2.0

Commits

  • 63d7105 build: Mojo 1.2.0
  • d1f2b65 docs: NOTICE names the owner and contact
  • a76a6f8 ci: GitHub Actions conformance run, CI badge, v0.2.0 release note

mojo-toml v0.2.0

Choose a tag to compare

@amarbarosys amarbarosys released this 21 Oct 04:47

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 mojo package alone. Docs in docs/, and a skill file for
    coding agents in skills/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_json is 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

  • 1e1edaa mojo-toml 0.2.0: TOML 1.1 parser for Mojo