|
| 1 | +# Go 1.17 is released |
| 2 | +16 Aug 2021 |
| 3 | +Summary: Go 1.17 adds performance improvements, module optimizations, arm64 on Windows, and more. |
| 4 | + |
| 5 | +Matt Pearring |
| 6 | + |
| 7 | +Alex Rakoczy |
| 8 | + |
| 9 | +## |
| 10 | + |
| 11 | +Today the Go team is thrilled to release Go 1.17, which you can get by visiting the |
| 12 | +[download page](https://golang.org/dl/). |
| 13 | + |
| 14 | +This release brings additional improvements to the compiler, namely a |
| 15 | +[new way of passing function arguments and results](https://golang.org/doc/go1.17#compiler). |
| 16 | +This change has shown about a 5% performance improvement in Go programs and reduction in binary |
| 17 | +sizes of around 2% for amd64 platforms. Support for more platforms will come in future releases. |
| 18 | + |
| 19 | +Go 1.17 also adds support for the |
| 20 | +[64-bit ARM architecture on Windows](https://golang.org/doc/go1.17#ports), letting gophers run |
| 21 | +Go natively on more devices. |
| 22 | + |
| 23 | +We’ve also introduced [pruned module graphs](https://golang.org/doc/go1.17#go-command) in this |
| 24 | +release. Modules that specify `go 1.17` or higher in their `go.mod` file will have their module graphs |
| 25 | +include only the immediate dependencies of other Go 1.17 modules, not their full transitive |
| 26 | +dependencies. This should help avoid the need to download or read `go.mod` files for otherwise |
| 27 | +irrelevant dependencies—saving time in everyday development. |
| 28 | + |
| 29 | +Go 1.17 comes with three small [changes to the language](https://golang.org/doc/go1.17#language). |
| 30 | +The first two are new functions in the `unsafe` package to make it simpler for programs to conform |
| 31 | +to the `unsafe.Pointer` rules: `unsafe.Add` allows for |
| 32 | +[safer pointer arithmetic](https://golang.org/pkg/unsafe#Add), while `unsafe.Slice` allows for |
| 33 | +[safer conversions of pointers to slices](https://golang.org/pkg/unsafe#Slice). The third change is |
| 34 | +an extension to the language type conversion rules to allow conversions from |
| 35 | +[slices to array pointers](https://golang.org/ref/spec#Conversions_from_slice_to_array_pointer), |
| 36 | +provided the slice is at least as large as the array at runtime. |
| 37 | + |
| 38 | +Finally there are quite a few other improvements and bug fixes, including verification improvements |
| 39 | +to [crypto/x509](https://golang.org/doc/go1.17#crypto/x509), and alterations to |
| 40 | +[URL query parsing](https://golang.org/doc/go1.17#semicolons). For a complete list of changes and |
| 41 | +more information about the improvements above, see the |
| 42 | +[full release notes](https://golang.org/doc/go1.17). |
| 43 | + |
| 44 | +Thanks to everyone who contributed to this release by writing code, filing bugs, sharing feedback, |
| 45 | +and testing the beta and release candidates. Your efforts helped to ensure that Go 1.17 is as stable |
| 46 | + as possible. As always, if you notice any problems, please |
| 47 | +[file an issue](https://golang.org/issue/new). |
| 48 | + |
| 49 | +We hope you enjoy the new release! |
0 commit comments