Juniper is an extension to the Go standard library using generics, including containers, iterators, and streams.
Go
511
298 commits
updated Sep 25, 2026
Juniper is a library of extensions to the Go standard library using generics, including containers, iterators, and streams.
container/tree contains a Map and Set that keep elements in sorted order. They are
implemented using a B-tree, which performs better than a binary search tree.container/deque contains a double-ended queue implemented with a ring buffer.container/xheap contains a min-heap similar to the standard library's container/heap but
more ergonomic, along with a PriorityQueue that allows setting priorities by key.container/xlist contains a linked-list similar to the standard library's container/list, but
type-safe.xslices contains some commonly-used slice operations, like Chunk, Reverse, Clear, and
Join.iterator contains an iterator interface used by the containers, along with functions to
manipulate them, like Map, While, and Reduce.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 iterator, plus some
extras like Pipe and Batch.parallel contains some shorthand for common uses of goroutines to process slices, iterators, and
streams in parallel, like parallel.MapStream.xsort contains extensions to the standard library package sort. Notably, it also has the
definition for xsort.Less, which is how custom orderings can be defined for sorting and also for
ordered collections like from container/tree.xerrors, xmath, xmath/xrand, xsync, and
xtime.Packages that overlap directly with a standard library package are named the same but with an x
prefix for "extensions", e.g. sort and xsort.
See the docs for more.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
283 followers · starred Jan 2026
128 followers · starred Mar 2022
114 followers · starred Mar 2022
109 followers · starred Feb 2022
Juniper is an extension to the Go standard library using generics, including containers, iterators, and streams.
Go
511
298 commits
updated Sep 25, 2026
Juniper is a library of extensions to the Go standard library using generics, including containers, iterators, and streams.
container/tree contains a Map and Set that keep elements in sorted order. They are
implemented using a B-tree, which performs better than a binary search tree.container/deque contains a double-ended queue implemented with a ring buffer.container/xheap contains a min-heap similar to the standard library's container/heap but
more ergonomic, along with a PriorityQueue that allows setting priorities by key.container/xlist contains a linked-list similar to the standard library's container/list, but
type-safe.xslices contains some commonly-used slice operations, like Chunk, Reverse, Clear, and
Join.iterator contains an iterator interface used by the containers, along with functions to
manipulate them, like Map, While, and Reduce.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 iterator, plus some
extras like Pipe and Batch.parallel contains some shorthand for common uses of goroutines to process slices, iterators, and
streams in parallel, like parallel.MapStream.xsort contains extensions to the standard library package sort. Notably, it also has the
definition for xsort.Less, which is how custom orderings can be defined for sorting and also for
ordered collections like from container/tree.xerrors, xmath, xmath/xrand, xsync, and
xtime.Packages that overlap directly with a standard library package are named the same but with an x
prefix for "extensions", e.g. sort and xsort.
See the docs for more.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
283 followers · starred Jan 2026
128 followers · starred Mar 2022
114 followers · starred Mar 2022
109 followers · starred Feb 2022