Upgrade to Go 1.17

This includes the addition of the new "//go:build" comment form in addition
to the legacy "// +build" notation, as produced by gofmt to ensure
consistent behavior between Go versions. The new directives are all
equivalent to what was present before, so there's no change in behavior.

Go 1.17 continues to use the Unicode 13 tables as in Go 1.16, so this
upgrade does not require also upgrading our Unicode-related dependencies.

This upgrade includes the following breaking changes which will also
appear as breaking changes for Terraform users, but that are consistent
with the Terraform v1.0 compatibility promises.

- On MacOS, Terraform now requires macOS 10.13 High Sierra or later.

This upgrade also includes the following breaking changes which will
appear as breaking changes for Terraform users that are inconsistent with
our compatibility promises, but have justified exceptions as follows:

- cidrsubnet, cidrhost, and cidrnetmask will now reject IPv4 CIDR
  addresses whose decimal components have leading zeros, where previously
  they would just silently ignore those leading zeros.

  This is a security-motivated exception to our compatibility promises,
  because some external systems interpret zero-prefixed octets as octal
  numbers rather than decimal, and thus the previous lenient parsing could
  lead to a different interpretation of the address between systems, and
  thus potentially allow bypassing policy when configuring firewall rules
  etc.

This upgrade also includes the following breaking changes which could
_potentially_ appear as breaking changes for Terraform users, but that do
not in practice for the reasons given:

- The Go net/url package no longer allows query strings with pairs
  separated by semicolons instead of ampersands. This primarily affects
  HTTP servers written in Go, and Terraform includes a special temporary
  HTTP server as part of its implementation of OAuth for "terraform login",
  but that server only needs to accept URLs created by Terraform itself
  and Terraform does not generate any URLs that would be rejected.
This commit is contained in:
Martin Atkins 2021-08-16 17:19:17 -07:00
parent a94155d0ca
commit 383bbdeebc
26 changed files with 26 additions and 2 deletions

View File

@ -10,7 +10,7 @@ references:
executors:
go:
docker:
- image: docker.mirror.hashicorp.services/cimg/go:1.16
- image: docker.mirror.hashicorp.services/cimg/go:1.17
environment:
CONSUL_VERSION: 1.7.2
GOMAXPROCS: 4

View File

@ -1 +1 @@
1.16.4
1.17.0

View File

@ -1,3 +1,4 @@
//go:build !windows
// +build !windows
package cliconfig

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package cliconfig

View File

@ -1,3 +1,4 @@
//go:build !windows
// +build !windows
package clistate

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package clistate

View File

@ -1,3 +1,4 @@
//go:build !solaris
// +build !solaris
// The readline library we use doesn't currently support solaris so

View File

@ -1,3 +1,4 @@
//go:build solaris
// +build solaris
package command

View File

@ -1,3 +1,4 @@
//go:build ignore
// +build ignore
// This file is a helper for those doing _manual_ testing of "terraform login"

View File

@ -1,3 +1,4 @@
//go:build !race
// +build !race
package ssh

View File

@ -1,3 +1,4 @@
//go:build linux || darwin || openbsd || netbsd || solaris || dragonfly
// +build linux darwin openbsd netbsd solaris dragonfly
package configload

View File

@ -1,3 +1,4 @@
//go:build freebsd
// +build freebsd
package configload

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package configload

View File

@ -1,3 +1,4 @@
//go:build darwin || dragonfly || freebsd || (linux && !appengine) || netbsd || openbsd
// +build darwin dragonfly freebsd linux,!appengine netbsd openbsd
package wrappedreadline

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package wrappedreadline

View File

@ -1,3 +1,4 @@
//go:build !windows
// +build !windows
package wrappedstreams

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package wrappedstreams

View File

@ -1,3 +1,4 @@
//go:build !windows
// +build !windows
package replacefile

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package replacefile

View File

@ -1,3 +1,4 @@
//go:build !windows
// +build !windows
package statemgr

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package statemgr

View File

@ -1,3 +1,4 @@
//go:build !windows
// +build !windows
package terminal

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package terminal

View File

@ -1,3 +1,4 @@
//go:build !windows
// +build !windows
package main

View File

@ -1,3 +1,4 @@
//go:build windows
// +build windows
package main

View File

@ -1,3 +1,4 @@
//go:build tools
// +build tools
package tools