• v1.1.1 a73d3097d0

    v1.1.1
    Test / vet (push) Successful in 39s
    Release / release (push) Successful in 15s
    Test / test (push) Successful in 1m15s
    Test / toml-test (push) Successful in 42s
    Stable

    petrbalvin released this 2026-07-26 16:46:40 +00:00 | 0 commits to main since this release

    Changed

    • Project
      • Migrate from Codeberg to sourcedock.dev (module path, imports, CI).
    Downloads
  • v1.1.0 eac3a60e9e

    v1.1.0 Stable

    petrbalvin released this 2026-06-26 18:12:15 +00:00 | 3 commits to main since this release

    Adds TOML emission to the previously read-only library, completing the
    encoding/json-style API.

    Added

    Marshalling

    • Marshal(v any) ([]byte, error) — encode a struct or map[string]V value
      to a TOML 1.0 document.
    • Encoder and NewEncoder, mirroring the Decoder shape for symmetry with
      Unmarshal.
    • Marshaler interface (MarshalTOML() (any, error)) for types that need a
      custom TOML shape; the returned value is encoded normally.
    • Struct fields are matched by toml:"name" tag (case-insensitive fallback to
      field name; toml:"-" skips). Anonymous (embedded) fields without a tag
      are inlined.
    • Slices and arrays of structs or maps become [[a]] arrays of tables; other
      slices and arrays become TOML arrays. Empty or nil arrays of tables are
      omitted; empty arrays of scalars emit as key = [].
    • Scalars encode as bool, int64, float64, string, time.Time (offset
      date-time), LocalDateTime, LocalDate, or LocalTime.
    • time.Time, LocalDateTime, LocalDate, and LocalTime now have
      String() methods that return their TOML-canonical rendering
      (zero-padded to nanosecond precision when a fractional second is present).

    Encoding policy

    The emitter groups fields at every TOML level: scalars first, then
    sub-tables, then arrays of tables. Within each group the order matches struct
    field declaration order, or sorted key order for maps. The output is
    guaranteed to re-parse to an equivalent value tree via Parse, but is not
    byte-identical to any input that produced the value — comments, whitespace,
    map key order, and basic-vs-literal string quoting are not preserved. See
    the "Encoding" section of the README for the full set of rules.

    Downloads
  • v1.0.0 591d1f01d1

    v1.0.0 Stable

    petrbalvin released this 2026-06-20 10:24:03 +00:00 | 4 commits to main since this release

    First stable release: a dependency-free TOML 1.0 parser for Go that uses only
    the standard library and passes the entire
    toml-test suite
    (185 valid and 371 invalid cases, 0 failures).

    Added

    Parsing

    • Parse(data []byte) (map[string]any, error) — decode a TOML document into an
      untyped tree.
    • Full TOML 1.0 syntax: comments; bare, quoted, and dotted keys; tables
      ([a.b]) and arrays of tables ([[a]]); basic and literal strings, including
      multiline (""" / ''') with escape sequences and line-ending backslash
      trimming; integers in decimal, hex (0x), octal (0o), and binary (0b)
      with _ separators; floats with exponents and inf / nan; booleans;
      offset/local date-times, dates, and times; arrays; and inline tables.
    • Distinct date-time types: offset date-times decode to time.Time, while
      LocalDateTime, LocalDate, and LocalTime represent the local variants.
    • Strict, spec-conformant validation that rejects invalid documents: leading
      zeros, misplaced underscores, malformed floats and radix literals, control
      characters in strings and comments, bare carriage returns, non-UTF-8 input,
      out-of-range Unicode escapes, multiline strings used as keys, single-digit
      date-time components, duplicate/overwriting inline-table keys, and the full
      family of table redefinitions (header vs. header, header vs. dotted key,
      array of tables vs. table, and dotted-key appends to defined tables).

    Decoding

    • Unmarshal(data []byte, v any) — parse and map onto a struct or
      map[string]any via reflection.
    • toml:"name" field tags, case-insensitive name fallback, and toml:"-" to
      skip a field.
    • Decoder with DisallowUnknownFields for strict decoding that rejects keys
      without a destination field.
    • SyntaxError carrying the 1-based line of a malformed document.

    Project

    • Standard library only — zero third-party modules.
    • cmd/interpres-decode, a toml-test harness adapter (TOML on stdin, tagged
      JSON on stdout).
    • A runnable example, a Go test suite, and a just task set (install, run,
    Downloads