Show HN: Rill – Composable concurrency toolkit for Go

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. conc

    Better structured concurrency for go

    Sourcegraph Conc is broadly similar in providing pool helpers, but doesn't provide the same fine grained batching options: https://github.com/sourcegraph/conc

    Uber CFF does code generation, and has more of a focus on readability and complex dependency chains: https://github.com/uber-go/cff

  2. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  3. mgmt

    Next generation distributed, event-driven, parallel config management!

    Nice! I do a lot of concurrency work with DAG's in https://github.com/purpleidea/mgmt/ and I would love to swap out some of those concurrency runners with a lib if possible.

    I was wondering if this could be it... Any thoughts in that direction, please let me know!

  4. rill

    Rill is a tool for effortlessly transforming data sets into powerful, opinionated dashboards using SQL. BI-as-code.

    This also came to my mind when I heard `rill`, coming from https://www.rilldata.com/ .

  5. rill

    Go toolkit for clean, composable, channel-based concurrency (by destel)

  6. cff

    Concurrency toolkit for Go

    Sourcegraph Conc is broadly similar in providing pool helpers, but doesn't provide the same fine grained batching options: https://github.com/sourcegraph/conc

    Uber CFF does code generation, and has more of a focus on readability and complex dependency chains: https://github.com/uber-go/cff

  7. tunny

    A goroutine pool for Go

    There are also libraries like https://github.com/Jeffail/tunny or https://pkg.go.dev/go.uber.org/goleak or https://github.com/fatih/semgroup to help deal with concurrency limits and goroutine lifecycle management.

    As the author of https://github.com/ahmetb/go-linq, it's hard to find adoption for libraries offering "syntactic sugar" in Go, as the language culture discourages those kind of abstractions and keeping the code straightforward.

  8. semgroup

    Like errgroup/waitgroup, but only runs a maximum of tasks at any time.

    There are also libraries like https://github.com/Jeffail/tunny or https://pkg.go.dev/go.uber.org/goleak or https://github.com/fatih/semgroup to help deal with concurrency limits and goroutine lifecycle management.

    As the author of https://github.com/ahmetb/go-linq, it's hard to find adoption for libraries offering "syntactic sugar" in Go, as the language culture discourages those kind of abstractions and keeping the code straightforward.

  9. go-linq

    .NET LINQ capabilities in Go

    There are also libraries like https://github.com/Jeffail/tunny or https://pkg.go.dev/go.uber.org/goleak or https://github.com/fatih/semgroup to help deal with concurrency limits and goroutine lifecycle management.

    As the author of https://github.com/ahmetb/go-linq, it's hard to find adoption for libraries offering "syntactic sugar" in Go, as the language culture discourages those kind of abstractions and keeping the code straightforward.

  10. go-parallel

    parallelism in Go using generics

    I don't like how errors are retrieved rather than assigned because assignment gets verified by tools. In my library I used a channel for errors- that gives ultimate flexiblitiy- it can be converted to wait and collect them to a slice or to perform a cancellation on first error.

    [1] https://github.com/gregwebs/go-parallel

  11. heka

    Discontinued DEPRECATED: Data collection and processing made easy.

    The channel-focused approach to stream processing reminds me of Heka [0]. It was a contemporary of Samza and Heron, and it was fairly prominent in the early Go ecosystem (maybe 10 years ago). As I recall it, quite foggily and quite a long while later, one of the final nails in Heka's coffin was that channel throughput didn't scale well. Do you have benchmarks for Rill, or is it not intended for high-throughput use cases?

    [0]: https://github.com/mozilla-services/heka

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • The Case of a Leaky Goroutine

    3 projects | news.ycombinator.com | 25 Mar 2024
  • Hello gophers, show me your concurrent code

    6 projects | /r/golang | 20 Mar 2023
  • Taking Back Control in 2024

    2 projects | dev.to | 8 Jan 2025
  • Go-taskflow: A taskflow-like General-purpose Task-parallel Programming Framework

    4 projects | news.ycombinator.com | 15 Nov 2024
  • Three Ways to Think About Go Channels

    2 projects | news.ycombinator.com | 26 Jun 2024

Did you know that Go is
the 4th most popular programming language
based on number of references?