• Martin Atkins's avatar
    build: Use Go 1.14 · 43c1ec69
    Martin Atkins authored
    This implies some notable changes that will have a visible impact to
    end-users of official Terraform releases:
    
    - Terraform is no longer compatible with MacOS 10.10 Yosemite, and
      requires at least 10.11 El Capitan. (Relatedly, Go 1.14 is planned to be
      the last release to support El Capitan, so while that remains supported
      for now, it's notable that Terraform 0.13 is likely to be the last major
      release of Terraform supporting it, with 0.14 likely to further require
      MacOS 10.12 Sierra.)
    
    - Terraform is no longer compatible with FreeBSD 10.x, which has reached
      end-of-life. Terraform now requires FreeBSD 11.2 or later.
    
    - Terraform now supports TLS 1.3 when it makes connections to remote
      services such as backends and module registries. Although TLS 1.3 is
      backward-compatible in principle, some legacy systems reportedly work
      incorrectly when attempting to negotiate it. (This change does not
      affect outgoing requests made by provider plugins, though they will see
      a similar change in behavior once built with Go 1.13 or later.)
    
    - Ed25519 certificates are now supported for TLS 1.2 and 1.3 connections.
    
    - On UNIX systems where "use-vc" is set in resolv.conf, TCP will now be
      used for DNS resolution. This is unlikely to cause issues in practice
      because a system set up in this way can presumably already reach its
      nameservers over TCP (or else other applications would misbehave), but
      could potentially lead to lookup failures in unusual situations where a
      system only runs Terraform, has historically had "use-vc" in its
      configuration, but yet is blocked from reaching its configured
      nameservers over TCP.
    
    - Some parts of Terraform now support Unicode 12.0 when working with
      strings. However, notably the Terraform Language itself continues to
      use the text segmentation tables from Unicode 9.0, which means it lacks
      up-to-date support for recognizing modern emoji combining forms as
      single characters. (We may wish to upgrade the text segmentation tables
      to Unicode 12.0 tables in a later commit, to restore consistency.)
    
    This also includes some changes to the contents of "vendor", and
    particularly to the format of vendor/modules.txt, per the changes to
    vendoring in the Go 1.14 toolchain. This new syntax is activated by the
    specification of "go 1.14" in the go.mod file.
    
    Finally, the exact format of error messages from the net/http library has
    changed since Go 1.12, and so a couple of our tests needed updates to
    their expected error messages to match that.
    43c1ec69