Talking about Go 1.16, this is a release to be excited about. Here are some of my personal highlights:
- fs.FS interface. This should make a bunch of filesystem operations agnostic to the underlying storage service.
- Clean up of 'go get' vs 'go install'
- Embedding files into binaries
- Smaller binaries
- Faster linking
- darwin/arm64 support
Find more exciting changes here: https://golang.org/doc/go1.16
"Note that Go 1.16 requires use of Go modules by default, now that, according to our 2020 Go Developer Survey, 96% of Go developers have made the switch. We recently added official documentation for developing and publishing modules."
Ohh no, I liked the old import much better 😢
I'm honestly curious: what do you dislike about Go Modules? Note that you can still force Go to operate within its GOPATH by setting $GO111MODULE to off.
I liked the simplicity. Everything was just there. There is no intermediate layer.
And versioning was also possible through a simple snapshot and submodules.
Indeed, I recognize the potential benefits of the new system. Perhaps there is some nostalgia of the early days. 🙌 😂
@fribbledom @openscience I found the automatic editing of imports was wrong much of the time, was well as totally unexpected and therefore confusing. The whole mechanism seems overly complex and was hard to understand. Some things not documented AFAIK (like using a branch name in place of version, which then gets silently replaced with the 'correct' version).
I liked the language, but modules and runtime size both mean I'll avoid it rather than choose to use it in future.
@fribbledom I dislike that Go uses comments for things like embeds and cgo and such. It seems like a hack to avoid adding proper macros or such.
@fribbledom these are nice updates, especially the "go get" vs "go install" cleanup.
the big change to look forward to is going to be generics in 1.18/19 now that their proposal has been accepted
@fribbledom I think this is also a pretty cool improvement. Just to be more explicit about dependencies.
> Build commands like go build and go test no longer modify go.mod and go.sum by default. Instead, they report an error if a module requirement or checksum needs to be added or updated (as if the -mod=readonly flag were used). Module requirements and sums may be adjusted with go mod tidy or go get.
@fribbledom Hm... maybe it is time to try to finish my unfinished blog post from 2016: compile packetbeat https://www.elastic.co/beats/packetbeat for ARM, to run on a RaspberryPi in my firewall/router and feeding the results to an elastic instance running on my desktop...?
The blogpost stagnated in not being able to cross-compile packetbeats for the ARM on amd64.
Server run by the main developers of the project It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!