GoForge — Build | Test | Ship | Collaborate GoForge — Build | Test | Ship | Collaborate
v1.0.3

Lo

Collections with explicit totality and allocation

$ go get goforge.dev/gplodash@v1.0.3

Current release — v1.0.3. goforge.dev/gplodash is at 100% feature parity with samber/lo v1.53.0 (all 651 declarations), differential + property tested, race/vet clean. This patch line regenerates under the released Go+ toolchain and consumes stdlib v0.207.0. Install with go get goforge.dev/gplodash@v1.0.3.

GoForge Lo targets samber/lo v1.53.0. Compatible collection helpers coexist with total options/results, destination-buffer operations, non-empty sequences, sized vectors, explicit ownership, and exhaustive search outcomes.

Current parity

The upstream module inventory contains 651 declarations, and all 651 are implemented — 100% declaration parity across the root, it (lazy iterator), mutable, and parallel packages. Every batch is differentially and property-tested against pinned samber/lo v1.53.0; the module is race- and vet-clean with deterministic generation.

Go+ and standard library

Production semantics are authored across sixteen .gp sources plus two internal interop shims (xrand, xtime); version-marked ordinary Go is generated reproducibly by the pinned Go+ compiler. Search[T] requires Go+ callers to match Located(value,index) or Absent, replacing sentinel-based partial search.

This project forced std/nonempty, std/vec, and now std/iter — the lazy sequence algebra (Seq[T] over the standard iter.Seq[T], fluent combinators, std/result-carrying fallible pipelines, property-checked laws). The goforge.dev/gplodash/it iterator package is a thin facade over std/iter, so the engine and its laws live in one place.

Performance

Generated Go+ destination-buffer filtering/mapping is conservatively 2.65× faster than upstream FilterMap with 100% fewer allocations, and 4.86× faster than the equivalent two-helper pipeline. Those results do not yet cover the remaining root and subpackage surface.

Release gate

Every one of the 651 inventory rows must be implemented and differentially verified. Iterator laziness, mutation, aliasing, cancellation, goroutine cleanup, and parallel ordering are mandatory. The release consumes matching released Go+/stdlib tags and is pulled immediately before tagging.