I want to start adopting new Go releases faster than we’ve done historically. I propose that our policy is that Syncthing should build with the previous stable Go release. That means Go 1.6 currently, as Go 1.7 is the latest. It becomes Go 1.7 when Go 1.8 is released and so on.
Specifically, I’m looking forward to actually using the Context
support in Go 1.7, and subtests/sub-benchmarks.
I’m even more looking forward to some things in Go 1.8, which we will be able to take advantage of in about seven months with this policy:
- More Context support
-
sort.Slice
is nice - Automatic
\\?\
support on Windows, including globbing and so on, which lets us remove a fair chunk of code. -
os.Executable
which lets us remove a dependency - Support for ChaCha20-Poly1305 on TLS (which I hope we can use anyway as soon as it’s released)
I’m sure this will be painful for some people, but it still gives everyone at least six months notice before they need to take five minutes to upgrade their compiler.