Skip to content

Releases: javadh75/systemd-config

Release list

v0.5.0

Choose a tag to compare

@javadh75 javadh75 released this 09 Jul 13:26

Added

  • Merge(base, dropins...) — computes the effective configuration of a
    unit combined with its drop-ins per systemd.unit(5): drop-ins apply in
    order as if appended, and an empty assignment resets every earlier
    occurrence of that option across same-named sections. Duplicate
    sections are never collapsed, and inputs are not modified.
  • Unit.Values(section, option) — every occurrence of an option across
    all same-named sections, in order of appearance.

v0.4.0

Choose a tag to compare

@javadh75 javadh75 released this 09 Jul 13:03

Breaking changes

  • Deserialize now rejects assignments (or any non-comment text) that
    appear before the first section header with
    ErrAssignmentOutsideSection, matching systemd. Previously such text
    was silently discarded.

Added

  • Unit.Value(section, option) — one-call lookup that treats duplicate
    sections as one merged section with last-assignment-wins semantics,
    as systemd does.
  • Unit.String() — the canonical serialized form, implementing
    fmt.Stringer.
  • Testable examples (ExampleDeserialize, ExampleUnit_Value,
    ExampleUnit_WriteTo) rendered on pkg.go.dev.
  • Real-world fixtures under testdata/ (services, sockets, netdev,
    network, mount, timer, daemon configs, drop-ins, CRLF) with golden
    round-trips and expected-value tests.
  • Fuzzing in CI: a 15-second smoke run on every push/PR and a nightly
    10-minute run; the fuzzer is now also seeded with every testdata
    fixture.

Changed

  • The lexer is synchronous: the goroutine/channel pipeline inherited from
    go-systemd/unit is gone. This removes a latent goroutine leak on
    early-error returns and makes Deserialize ~2.2x faster
    (63.6µs → 29.3µs, 2000 → 1804 allocs/op on the parser benchmark).
  • go.uber.org/goleak (test-only dependency) now fails the suite if any
    test leaks a goroutine.
  • README: removed the Go Report Card badge (the service is retired) and
    updated the usage example to Unit.Value. CI now authenticates codecov
    uploads (CODECOV_TOKEN), unsticking the stale coverage badge.
  • Coverage gate ratcheted from 80% to 90% (the suite sits at ~96%).