Overall: plugin build mode & package (many CLs) Many ppc64, s390x, arm, arm64 optimizations New frontend Improvements to binary size, runtime speed, compile speed. Hybrid barrier. <100us GC pauses. cmd/compile: args no longer live until end of function - use runtime.KeepAlive instead (CL 28310) Language: When explicitly converting structs, tags are ignored for structural type identity (CL 24190). Tools: compile: SSA for 386, nacl, arm, arm64, ppc64, ppc64le, s390x ... (many CLs) yacc: "go tool yacc" is removed. now at golang.org/x/tools/cmd/goyacc (CL 27324, CL 27325) go: -buildmode=c-archive now builds PIC on ELF (CL 24180) go: mobile pkg dir change, recommend using go list in scripts (CL 24930, CL 27929) go, dist: can set default pkg-config tool using PKG_CONFIG env var (CL 29991) go: can set secure/insecure GIT schemes using GIT_ALLOW_PROTOCOL env var (CL 30135) Ports: dragonfly: go1.8 requires DragonFly BSD 4.4.4 or above (CL 29491) plan9: various fixes (Close unblocks Read, I/O deadline maybe?) mips, mipsle API additions and behavior changes: all: freeze net/rpc and reword the 'frozen' message in other frozen packages (CL 32112) archive/tar: fix and cleanup readOldGNUSparseMap (CL 28471) archive/tar: fix parsePAX to be POSIX.1-2001 compliant (CL 31440) archive/tar: fix parsePAXTime (CL 31441) archive/tar: make Reader handle GNU format properly (CL 31444) archive/tar: reapply Header.Size to regFileReader after merging (CL 28418) archive/tar: validate sparse headers in parsePAX (CL 31439) archive/zip: handle mtime in NTFS/UNIX/ExtendedTS extra fields (CL 18274) archive/zip: only use Extended Timestamp on non-zero MS-DOS timestamps (CL 30811) cmd/cgo: add #line directives to avoid printing bogus references to Go source files (CL 32613) cmd/cgo: add -srcdir option (CL 32354) cmd/cgo: don't ignore qualifiers, don't cast to void* (CL 33097) cmd/cgo: fix line info in _cgo_gotypes.go (CL 29713) cmd/cgo: throw if C.malloc returns nil (CL 31768) cmd/compile, runtime, etc: get rid of constant FP registers (CL 28095) cmd/compile, runtime: add go:yeswritebarrierrec pragma (CL 30938) cmd/compile/internal/gc: add runtime/trace support (CL 25354) cmd/compile/internal/gc: enable new parser by default (CL 27203) cmd/compile/internal/syntax: fast Go syntax trees, initial commit (CL 27195) cmd/compile: add SSA backend for s390x and enable by default (CL 28978) cmd/compile: add compiler phase timing (CL 24462) cmd/compile: add go:notinheap type pragma (CL 30939) cmd/compile: add inline explainer (CL 22782) cmd/compile: do more type conversion inline (CL 32313) cmd/compile: enable flag-specified dump of specific phase+function (CL 23044) cmd/compile: fail gracefully on export format skew (CL 27814) cmd/compile: import/export of alias declarations (CL 32090) cmd/compile: inline convI2E (CL 31260) cmd/compile: make ssa compilation unconditional (CL 29155) cmd/compile: remove -A flag (CL 31497) cmd/compile: remove old lexer and parser (CL 32020) cmd/compile: remove support for textual export format (CL 27171) cmd/cover: Fix compiler directives handling (CL 30161) cmd/cover: change covered block for switch/select case to exclude expression (CL 32612) cmd/cover: handle gotos (CL 30977) cmd/dist, go/build: make CGO_ENABLED during make.bash sticky (CL 31141) cmd/dist: enable plugin test on darwin/amd64 (CL 29396) cmd/dist: test PIE internal linking on linux/amd64 (CL 28545) cmd/doc: ensure summaries truly are only one line (CL 25420) cmd/doc: perform type grouping for constants and variables (CL 25419) cmd/doc: show documentation for interface methods when requested explicitly (CL 31852) cmd/fix: add golang.org/x/net/context fix (CL 28872) cmd/go, testing: indicate when no tests are run (CL 22341) cmd/go: add bug command (CL 28485) cmd/go: add distribution-specific info for Linux to bug command (CL 28581) cmd/go: apply import restrictions to test code too (CL 31821) cmd/go: diagnose non-canonical import paths before compilation (CL 31668) cmd/go: enable -buildmode=plugin on darwin/amd64 (CL 29395) cmd/go: for -msan build runtime/cgo with -fsanitize=memory (CL 24855) cmd/go: make bug subcommand open the browser (CL 29210) cmd/go: make go test -i -o x.test actually write x.test (CL 31352) cmd/go: print more env variables in "go env" (CL 31330) cmd/go: referee another vendor vs symlink fight (CL 31665) cmd/go: use cgo -srcdir when using SWIG (CL 32485) cmd/gofmt: don't eat source if -w fails (CL 33018) cmd/internal/obj, cmd/link: darwin dynlink support (CL 29393) cmd/internal/objfile: add ppc64/ppc64le disassembler support (CL 9682) cmd/link, cmd/go: delay linking of mingwex and mingw32 until very end (CL 26670) cmd/link: R_ADDR dynamic relocs for internal PIE (CL 29118) cmd/link: add trampolines for too far calls in ppc64x (CL 30850) cmd/link: allow internal PIE linking (CL 28543) cmd/link: fix -X importpath.name=value when import path needs escaping (CL 31970) cmd/link: fix -buildmode=pie / -linkshared combination (CL 28996) cmd/link: for -buildmode=exe pass -no-pie to external linker (CL 33106) cmd/link: insert trampolines for too-far jumps on ARM (CL 29397) cmd/link: non-executable stack support for Solaris (CL 24142) cmd/link: plugin support on darwin/amd64 (CL 29394) cmd/link: put text at address 0x1000000 on darwin/amd64 (CL 32185) cmd/link: remove the -shared flag (CL 28852) cmd/link: split large elf text sections on ppc64x (CL 27790) cmd/link: trampoline support for external linking on ARM (CL 31143) cmd/objdump: implement objdump of .o files (CL 24818) cmd/pprof: add options to skip tls verification (CL 33157) cmd/pprof: don't print binary outputs in interactive mode (CL 31123) cmd/pprof: instruction-level granularity in callgrind output (CL 23781) cmd/trace: add option to output pprof files (CL 23324) cmd/trace: fix a runnable goroutine count bug (CL 25552) cmd/trace: move process-wide GC events to their own row (CL 30017) cmd/vet: accept space-separated tag lists for compatibility with cmd/go (CL 32030) cmd/vet: allow ^& uintptr arithmetic (CL 27156) cmd/vet: allow any printf verb with any interface (CL 27127) cmd/vet: check for copying of array of locks (CL 24340) cmd/vet: check for duplicate json, xml struct field tags (CL 16704) cmd/vet: detect defer resp.Body.Close() before error check (CL 32911) cmd/vet: diagnose non-space-separated struct tag like `json:"x",xml:"y"` (CL 32031) cmd/vet: improve asmdecl parameter handling (CL 27150) cmd/vet: properly handle indexed arguments in printf (CL 24391) cmd/vet: skip printf check for non-constant format string during failed import (CL 29014) compress/flate: always return uncompressed data in the event of error (CL 28216) compress/flate: level 1 (best speed) match across blocks (CL 31640) compress/flate: make compression level 0 consistent (CL 31174) compress/flate: tighten the BestSpeed max match offset bound. (CL 32149) compress/gzip, compress/zlib: add HuffmanOnly as compression levels. (CL 31186) compress/gzip: only encode MTIME if it is valid (CL 32325) context: make DeadlineExceeded implement net.Error (CL 30370) crypto/cipher: enforce message size limits for GCM (CL 28410) crypto/rsa: ensure that generating toy RSA keys doesn't loop (CL 28969) crypto/tls: add CloseWrite method to Conn (CL 25159) crypto/tls: add CloseWrite method to Conn (CL 31318) crypto/tls: add Config.Clone (CL 28075) crypto/tls: add Config.GetConfigForClient (CL 30790) crypto/tls: add GetClientCertificate callback (CL 32115) crypto/tls: add KeyLogWriter for debugging (CL 27434) crypto/tls: add VerifyPeerCertificate to tls.Config (CL 26654) crypto/tls: add a SignatureScheme type. (CL 32119) crypto/tls: don't generate random ticket keys if already set (CL 27317) crypto/tls: enable ChaCha20-Poly1305 cipher suites by default. (CL 30958) crypto/tls: expand ClientHelloInfo (CL 31391) crypto/tls: fix deadlock when racing to complete handshake (CL 29164) crypto/tls: flush the buffer on handshake errors (CL 28818) crypto/tls: implement countermeasures against CBC padding oracles (CL 18130) crypto/tls: set Conn.ConnectionState.ServerName unconditionally (CL 22862) crypto/tls: support AES-128-CBC cipher suites with SHA-256 (CL 27315) crypto/tls: support ChaCha20-Poly1305. (CL 30957) crypto/tls: support X25519 (CL 30824, CL 30825) crypto/x509: Fix bug in UnknownAuthorityError.Error (CL 27992) crypto/x509: allow a leaf certificate to be specified directly as root (CL 27393) crypto/x509: check that the issuer name matches the issuer's subject name (CL 23571) crypto/x509: don't accept a root that already appears in a chain. (CL 32121) crypto/x509: expose UnknownAuthorityError.Cert (CL 32644) crypto/x509: fix name constraints handling (CL 30155) crypto/x509: implement SystemCertPool on Windows (CL 30578) crypto/x509: parse all names in an RDN (CL 30810) crypto/x509: recognise ISO OID for RSA+SHA1 (CL 27394) crypto/x509: require a NULL parameters for RSA public keys (CL 16166) crypto/x509: require a NULL parameters for RSA public keys (CL 27312) crypto/x509: return error for missing SerialNumber (CL 27238) crypto/x509: support PSS signatures (CL 24743) crypto/x509: support RHEL 7 cert bundle (CL 30375) crypto/{cipher,tls,internal/cryptohw}: prioritise AES-GCM when hardware support is present. (CL 32871) database/sql: accept nil pointers to Valuers implemented on value receivers (CL 31259) database/sql: add Pinger interface to driver Conn (CL 32136) database/sql: add context helper methods and transaction types (CL 31258) database/sql: add context methods (CL 29381) database/sql: add option to use named parameter in query arguments (CL 30166) database/sql: add support for multiple result sets (CL 30592) database/sql: don't hang if the driver Exec method panics (CL 23576) database/sql: support returning query database types (CL 29961) debug/elf: add sparc64 relocations (CL 30870) debug/pe: revert CL 22720 (CL 27212) doc: document minimum OS X version as 10.8 (CL 28870) encoding/asn1: return error for unexported fields in Marshal, Unmarshal (CL 31540) encoding/base64: add Encoding.Strict (CL 24964) encoding/binary: add bool support (CL 28514) encoding/json: add struct and field name to UnmarshalTypeError message (CL 18692) encoding/json: encode nil Marshaler as "null" (CL 31932) encoding/json: fix decoding of null into Unmarshaler, TextUnmarshaler (CL 30944) encoding/json: marshal the RawMessage value type the same as its pointer type (CL 21811) encoding/json: use standard ES6 formatting for numbers during marshal (CL 30371) encoding/pem: be stricter about the ending line (CL 27391) encoding/xml: add wildcard support for collecting all attributes (CL 30946) encoding/xml: prevent omitempty from omitting non-nil pointers to empty values (CL 15684) expvar: add Value methods (CL 30917) expvar: export http.Handler (CL 24722) flag: arrange for FlagSet.Usage to be non-nil by default (CL 31576) fmt: document and adjust Scanf space handling to eliminate a few paradoxes (CL 30611) go/ast, go/parser: parse alias declarations (CL 30211) go/build: allow % in ${SRCDIR} expansion for Jenkins (CL 31611) go/build: do not record go:binary-only-package if build tags not satisfied (CL 31577) go/build: implement default GOPATH (CL 32019) go/doc: add IsPredeclared function (CL 29870) go/doc: allow ToHTML to properly handle URLs containing semicolons (CL 25385) go/internal/gcimporter: fail gracefully on export format skew (CL 27816) go/printer: don't drop required semi/linebreak after /*-comment (CL 33016) go/token: fix race in FileSet.PositionFor. (CL 25345) go/types: expose Default function, which converts untyped T to T (CL 30715) go/types: handle imported aliases (CL 32534) go/types: match cmd/compile's alignment for complex64 (CL 31939) go/types: minimal support for alias declarations: don't crash (CL 30213) html/template: check "type" attribute in