From 15ff22eb81929cdcbce556747ca31c3b1f27ac9b Mon Sep 17 00:00:00 2001 From: Patrick Norton Date: Mon, 24 Nov 2025 12:21:42 -0500 Subject: [PATCH] gnu: Add go-github-com-bradenaw-juniper. * gnu/packages/golang-build.scm (go-github-com-bradenaw-juniper): New variable. Change-Id: I0b7998e7ea2c7879aa681a7958bf1dc45728b449 Signed-off-by: Sharlatan Hellseher --- gnu/packages/golang-build.scm | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/gnu/packages/golang-build.scm b/gnu/packages/golang-build.scm index f2b91a0e030b5243c77f6ea0f36d589ef393860e..82454a1486c75f5503e9f3f7bc85f103ef420de1 100644 --- a/gnu/packages/golang-build.scm +++ b/gnu/packages/golang-build.scm @@ -88,6 +88,66 @@ expression evaluation, enabling different applications to more easily interoperate.") (license license:asl2.0))) +(define-public go-github-com-bradenaw-juniper + (package + (name "go-github-com-bradenaw-juniper") + (version "0.15.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bradenaw/juniper") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1dykj5fdxsml61hdibbsk7wnp9ckvrcdyzbmcq0z1di4lw8b8kzl")))) + (build-system go-build-system) + (arguments + (list + ;; "non-constant format string in call to (*testing.common).Logf" + #:test-flags + #~(list "-vet=off") + #:skip-build? #t + #:import-path "github.com/bradenaw/juniper")) + (propagated-inputs (list go-golang-org-x-sync go-golang-org-x-exp)) + (home-page "https://github.com/bradenaw/juniper") + (synopsis "Extensions to the Go standard library using generics") + (description + "Juniper is a library of extensions to the Go standard library using generics, +including containers, iterators, and streams. + +@itemize +@item @code{container/tree} contains a @code{Map} and @code{Set} that keep +elements in sorted order. They are implemented using a B-tree, which performs +better than a binary search tree. +@item @code{container/deque} contains a double-ended queue implemented with a +ring buffer. +@item @code{container/xheap} contains a min-heap similar to the standard +library's @code{container/heap} but more ergonomic, along with a +@code{PriorityQueue} that allows setting priorities by key. +@item @code{container/xlist} contains a linked-list similar to the standard +library's @code{container/list}, but type-safe. +@item @code{xslices} contains some commonly-used slice operations, like +@code{Chunk}, @code{Reverse}, @code{Clear}, and @code{Join}. +@item @code{iterator} contains an iterator interface used by the containers, +along with functions to manipulate them, like @code{Map}, @code{While}, and +@code{Reduce}. +@item @code{stream} contains a stream interface, which is an iterator that can +fail. Useful for iterating over collections that require I/O. It has most of +the same combinators as @code{iterator}, plus some extras like @code{Pipe} and +@code{Batch}. +@item @code{parallel} contains some shorthand for common uses of goroutines to +process slices, iterators, and streams in parallel, like +@code{parallel.MapStream}. +@item @code{xsort} contains extensions to the standard library package +@code{sort}. Notably, it also has the definition for @code{xsort.Less}, which +is how custom orderings can be defined for sorting and also for ordered +collections like from @code{container/tree}. +@item You can probably guess what's in the packages @code{xerrors}, +@code{xmath}, @code{xmath/xrand}, @code{xsync}, and @code{xtime}. +@end itemize") + (license license:expat))) + (define-public go-github-com-ebitengine-purego (package (name "go-github-com-ebitengine-purego")