3 ms·
In 2019, Russ Cox acknowledged three of the most commonly reported Go pain points: > The top three pain points for Go users, in surveys and direct feedback, ha
by jd3 5y ago
In 2019, Russ Cox acknowledged three of the most commonly reported Go pain points:
> The top three pain points for Go users, in surveys and direct feedback, have been consistent for a number of years. They are: package management, generics, and error handling. We are working on all three.
The first has been solved, the second is in the process of being solved, and the third has been addressed in two major proposals, both of which were rejected. I sympathize with the author's frustration, though I would argue that better error handling in Go is still being actively discussed and investigated.
https://twitter.com/_rsc/status/1146129898383302656 https://twitter.com/_rsc/status/1146129898383302656
https://go.dev/blog/go2draft https://go.dev/blog/go2draft
1. Package management has, more or less, been solved through minimum version selection in modules/vgo. Though not everyone's favorite, at least it doesn't require a SAT-solver (dependency hell is NP-complete https://research.swtch.com/version-sat https://research.swtch.com/version-sat)
https://github.com/golang/go/issues/24301 https://github.com/golang/go/issues/24301
https://go.googlesource.com/proposal/+/master/design/24301-versioned-go.md https://go.googlesource.com/proposal/+/master/design/24301-v...
https://research.swtch.com/vgo https://research.swtch.com/vgo
https://golang.org/ref/mod https://golang.org/ref/mod
https://github.com/golang/go/wiki/Modules https://github.com/golang/go/wiki/Modules
https://go.dev/blog/using-go-modules https://go.dev/blog/using-go-modules
https://golang.org/doc/tutorial/create-module https://golang.org/doc/tutorial/create-module
2. Parametric polymorphism/Type Parameters ("generics") is/are being introduced into the language in 1.18, which is slated for release in early 2022.
https://github.com/golang/go/issues/43651 https://github.com/golang/go/issues/43651
https://go.googlesource.com/proposal/+/master/design/43651-type-parameters.md https://go.googlesource.com/proposal/+/master/design/43651-t...
3. There have now been a couple of proposals to make error handling simpler and reduce boilerplate
https://github.com/golang/go/wiki/Go2ErrorHandlingFeedback https://github.com/golang/go/wiki/Go2ErrorHandlingFeedback
check/handle
https://go.googlesource.com/proposal/+/master/design/go2draft-error-handling.md https://go.googlesource.com/proposal/+/master/design/go2draf...
https://go.googlesource.com/proposal/+/master/design/go2draft-error-handling-overview.md https://go.googlesource.com/proposal/+/master/design/go2draf...
try
https://github.com/golang/go/issues/32437 https://github.com/golang/go/issues/32437
https://swtch.com/try.html https://swtch.com/try.html
https://go.googlesource.com/proposal/+/master/design/32437-try-builtin.md https://go.googlesource.com/proposal/+/master/design/32437-t...
https://news.ycombinator.com/item?id=20339697 https://news.ycombinator.com/item?id=20339697
https://news.ycombinator.com/item?id=20100902 https://news.ycombinator.com/item?id=20100902
https://news.ycombinator.com/item?id=20454966 https://news.ycombinator.com/item?id=20454966
related
https://go.googlesource.com/proposal/+/master/design/go2draft-error-inspection.md https://go.googlesource.com/proposal/+/master/design/go2draf...
https://go.googlesource.com/proposal/+/master/design/go2draft-error-printing.md https://go.googlesource.com/proposal/+/master/design/go2draf...
https://go.googlesource.com/proposal/+/master/design/go2draft-error-values-overview.md https://go.googlesource.com/proposal/+/master/design/go2draf...