| Overall: |
| |
| plugin build mode & package (many CLs) |
| Many ppc64, s390x, arm, arm64 optimizations |
| New frontend |
| Summarize improvements to binary size, runtime speed, compile speed |
| |
| Language: |
| |
| Alias declarations? |
| |
| 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) |
| |
| API additions and behavior changes: |
| |
| archive/tar: fix and cleanup readOldGNUSparseMap (CL 28471) |
| archive/tar: reapply Header.Size to regFileReader after merging (CL 28418) |
| 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: fix line info in _cgo_gotypes.go (CL 29713) |
| 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/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: args no longer live until end of function - use runtime.KeepAlive instead (CL 28310) |
| cmd/compile: fail gracefully on export format skew (CL 27814) |
| cmd/compile: make ssa compilation unconditional (CL 29155) |
| cmd/compile: remove support for textual export format (CL 27171) |
| cmd/cover: Fix compiler directives handling (CL 30161) |
| cmd/cover: handle gotos (CL 30977) |
| 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/fix: add golang.org/x/net/context fix (CL 28872) |
| cmd/go: add bug command (CL 28485) |
| cmd/go: add distribution-specific info for Linux to bug command (CL 28581) |
| 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/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: allow internal PIE linking (CL 28543) |
| cmd/link: fix -buildmode=pie / -linkshared combination (CL 28996) |
| 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: remove the -shared flag (CL 28852) |
| cmd/link: split large elf text sections on ppc64x (CL 27790) |
| cmd/objdump: implement objdump of .o files (CL 24818) |
| 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: 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: 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) |
| 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 Config.Clone (CL 28075) |
| crypto/tls: add KeyLogWriter for debugging (CL 27434) |
| crypto/tls: don't generate random ticket keys if already set (CL 27317) |
| 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 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: fix name constraints handling (CL 30155) |
| 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) |
| database/sql: add context methods (CL 29381) |
| database/sql: add support for multiple result sets (CL 30592) |
| database/sql: don't hang if the driver Exec method panics (CL 23576) |
| 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/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: use standard ES6 formatting for numbers during marshal (CL 30371) |
| encoding/pem: be stricter about the ending line (CL 27391) |
| 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) |
| fmt: document and adjust Scanf space handling to eliminate a few paradoxes (CL 30611) |
| go/ast, go/parser: parse alias declarations (CL 30211) |
| 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/types: expose Default function, which converts untyped T to T (CL 30715) |
| go/types: minimal support for alias declarations: don't crash (CL 30213) |
| html/template: check "type" attribute in <script> (CL 14336) |
| image/png: improve compression by skipping filter for paletted images (CL 29872) |
| internal/trace: fix analysis of EvGoWaiting/EvGoInSyscall events (CL 25572) |
| io: fix infinite loop bug in MultiReader (CL 27397) |
| io: make MultiReader nil exhausted Readers for earlier GC (CL 28533) |
| math/big: Rat.SetString to report error if input is not consumed entirely (CL 30472) |
| math/big: support negative numbers in ModInverse (CL 29299) |
| math/big: test and optimize Exp(2, y, n) for large y, odd n (CL 30708) |
| math/rand: add Rand.Uint64 (CL 27253) |
| math: fix Gamma(-171.5) on all platforms (CL 30540) |
| mime/quotedprintable: accept trailing soft line-break at the end of message (CL 27530) |
| net/http/httptest: fill ContentLength in recorded Response (CL 28302) |
| net/http/httputil: copy header map if necessary in ReverseProxy (CL 28493) |
| net/http/httputil: make ReverseProxy send nil Body requests when possible (CL 28412) |
| net/http/httputil: remove custom hop-by-hop headers from response in ReverseProxy (CL 28810) |
| net/http/httputil: remove proxied headers mentioned in connection-tokens (CL 27970) |
| net/http: allow Handlers to test Hijacked conn without spamming error log (CL 30812) |
| net/http: don't sniff Request.Body on 100-continue requests in Transport (CL 30151) |
| net/http: make Client copy headers on redirect (CL 28930) |
| net/http: make DefaultTransport's Dialer enable DualStack ("Happy Eyeballs") (CL 28077) |
| net/http: make Transport retry non-idempotent requests if no bytes written (CL 27117) |
| net/http: make Transport support international domain names (CL 29072) |
| net/http: omit Content-Length in Response.Write for 1xx or 204 status (CL 28351) |
| net/http: send Content-Range if no byte range overlaps (CL 24212) |
| net/http: skip test needing good DNS in short mode, except on builders (CL 28782) |
| net/http: update bundled http2, add h2 Transport.IdleConnTimeout tests (CL 30078) |
| net/url: add URL.Hostname and URL.Port accessors (CL 28933) |
| net/url: handle escaped paths in ResolveReference (CL 28343) |
| net/url: prefix relative paths containing ":" in the first segment with "./" (CL 29610) |
| net: add Buffers type, do writev on unix (CL 29951) |
| net: add Resolver type, Dialer.Resolver, and DefaultResolver (CL 29440) |
| net: implement network interface API for Plan 9 (CL 29963) |
| net: implement network interface API for Solaris (CL 29892) |
| net: make LookupPort and lookupProtocol work on nacl (CL 28951) |
| net: make lookupPort case-insensitive on Plan 9 (CL 29051) |
| net: remove parsing of negative decimals in IPv4 literal (CL 28414) |
| net: respect resolv.conf rotate option (CL 29233) |
| net: support "option ndots:0" in resolv.conf (CL 24901) |
| net: use libresolv rules for ndots range and validation (CL 24901) |
| os: don't let File.Readdir return an empty slice and nil error (CL 28056) |
| os: make IsExist report true on ERROR_DIR_NOT_EMPTY on Windows (CL 29753) |
| os: make Windows readConsole handle input and output correctly (CL 29493) |
| os: prevent infinite symlink loop of Stat on Windows (CL 27580) |
| os: use GetConsoleCP() instead of GetACP() (CL 27575) |
| path/filepath: don't return SkipDir at top (CL 24780) |
| path/filepath: handle ".." in normalizing a path on Windows (CL 27410) |
| path/filepath: handle "C:." correctly in EvalSymlinks on Windows (CL 28214) |
| plugin: darwin support (CL 29392) |
| plugin: new package for loading plugins (CL 27823) |
| reflect: add Swapper func (CL 30088) |
| reflect: ignore struct tags when converting structs (CL 30191) |
| runtime, runtime/cgo: revert CL 18814; don't drop signal stack in new thread on dragonfly (CL 29971) |
| runtime/race: don't crash on invalid PCs (CL 29714) |
| runtime: assume 64kB physical pages on ARM (CL 25021) |
| runtime: don't call cgocallback from signal handler (CL 30218) |
| runtime: fetch physical page size from the OS (CL 25050) |
| runtime: fix check for vacuous page boundary rounding (CL 27230) |
| runtime: fix map iterator concurrent map check (CL 24749) |
| runtime: fix newextram PC passed to race detector (CL 29712) |
| runtime: limit the number of map overflow buckets (CL 25049) |
| runtime: record current PC for SIGPROF on non-Go thread (CL 30252) |
| runtime: report GCSys and OtherSys in heap profile (CL 29276) |
| runtime: sleep on CLOCK_MONOTONIC in futexsleep1 on freebsd (CL 30154) |
| runtime: use RtlGenRandom instead of CryptGenRandom (CL 29700) |
| runtime: use correct system page size on all arches (CL 25022) |
| sort: add Slice, SliceStable, and SliceIsSorted (CL 27321) |
| spec: ignore struct tags when converting structs (CL 24190) |
| spec: update language on type switches to match implementations (CL 27356) |
| strings, bytes: panic if Repeat overflows or if given a negative count (CL 29954) |
| syscall: add bounds checking and error returns to ParseNetlinkMessage (CL 26990) |
| syscall: fix Send{msg,msgN}, Recvmsg and control message handling on solaris (CL 30171) |
| syscall: make Getpagesize return system-reported page size (CL 25051) |
| syscall: unify NsecToTime{spec,val}, fix for times < 1970 (CL 30826) |
| syscall: validate ParseDirent inputs (CL 23780) |
| testing: add Name method to *T and *B (CL 29970) |
| testing: respect benchtime on very fast benchmarks (CL 26664) |
| time: add Until helper function (CL 20118) |
| time: allow long fractions in ParseDuration (CL 29338) |
| unicode: change SimpleFold to handle invalid runes (CL 30935) |
| website: recreate 16px and 32px favicon (CL 26850) |
| |
| Optimizations: |
| |
| bytes: Use the same algorithm as strings for Index (CL 22550) |
| bytes: improve WriteRune performance (CL 28816) |
| bytes: make IndexRune faster (CL 28537) |
| cmd/asm, go/build: invoke cmd/asm only once per package (CL 27636) |
| cmd/compile,runtime: redo how map assignments work (CL 30815) |
| cmd/compile/internal/obj/x86: eliminate some function prologues (CL 24814) |
| cmd/compile: accept literals in samesafeexpr (CL 26666) |
| cmd/compile: add more non-returning runtime calls (CL 28965) |
| cmd/compile: add size hint to map literal allocations (CL 23558) |
| cmd/compile: be more aggressive in tighten pass for booleans (CL 28390) |
| cmd/compile: don't reserve X15 for float sub/div any more (CL 28272) |
| cmd/compile: don’t generate pointless gotos during inlining (CL 27461) |
| cmd/compile: fold negation into comparison operators (CL 28232) |
| cmd/compile: generate makeslice calls with int arguments (CL 27851) |
| cmd/compile: handle e == T comparison more efficiently (CL 26660) |
| cmd/compile: improve string iteration performance (CL 27853) |
| cmd/compile: improve tighten pass (CL 28712) |
| cmd/compile: inline _, ok = i.(T) (CL 26658) |
| cmd/compile: inline atomics from runtime/internal/atomic on amd64 (CL 27641, CL 27813) |
| cmd/compile: inline convT2{I,E} when result doesn't escape (CL 29373) |
| cmd/compile: inline x, ok := y.(T) where T is a scalar (CL 26659) |
| cmd/compile: intrinsify math/big.mulWW, divWW on AMD64 (CL 30542) |
| cmd/compile: intrinsify runtime/internal/atomic.Xaddint64 (CL 29274) |
| cmd/compile: intrinsify slicebytetostringtmp when not instrumenting (CL 29017) |
| cmd/compile: intrinsify sync/atomic for amd64 (CL 28076) |
| cmd/compile: make link register allocatable in non-leaf functions (CL 30597) |
| cmd/compile: missing float indexed loads/stores on amd64 (CL 28273) |
| cmd/compile: optimize bool to int conversion (CL 22711) |
| cmd/compile: optimize integer "in range" expressions (CL 27652) |
| cmd/compile: remove Zero and NilCheck for newobject (CL 27930) |
| cmd/compile: remove duplicate nilchecks (CL 29952) |
| cmd/compile: remove some write barriers for stack writes (CL 30290) |
| cmd/compile: simplify div/mod on ARM (CL 29390) |
| cmd/compile: statically initialize some interface values (CL 26668) |
| cmd/compile: unroll comparisons to short constant strings (CL 26758) |
| cmd/compile: use 2-result divide op (CL 25004) |
| cmd/compile: when inlining ==, don’t take the address of the values (CL 22277) |
| container/heap: remove one unnecessary comparison in Fix (CL 24273) |
| crypto/{aes,cipher}: add optimized implementation of AES-GCM for s390x (CL 30361) |
| encoding/asn1: reduce allocations in Marshal (CL 27030) |
| encoding/csv: avoid allocations when reading records (CL 24723) |
| encoding/hex: change lookup table from string to array (CL 27254) |
| encoding/json: Use a lookup table for safe characters (CL 24466) |
| hash/crc32: improve the AMD64 implementation using SSE4.2 (CL 24471) |
| hash/crc32: improve the AMD64 implementation using SSE4.2 (CL 27931) |
| hash/crc32: improve the processing of the last bytes in the SSE4.2 code for AMD64 (CL 24470) |
| image/draw: optimize drawFillOver as drawFillSrc for opaque fills (CL 28790) |
| math/big: avoid allocation in float.{Add, Sub} when there's no aliasing (CL 23568) |
| math/big: make division faster (CL 30613) |
| math/big: use array instead of slice for deBruijn lookups (CL 26663) |
| math: speed up bessel functions on AMD64 (CL 28086) |
| reflect: avoid zeroing memory that will be overwritten (CL 28011) |
| regexp: reduce mallocs in Regexp.Find* and Regexp.ReplaceAll* (CL 23030) |
| runtime: cgo calls are about 100ns faster (CL 29656, CL 30080) |
| runtime: defer is now 2X faster (CL 29656) |
| runtime: implement getcallersp in Go (CL 29655) |
| runtime: improve memmove for amd64 (CL 22515, CL 29590) |
| runtime: increase malloc size classes (CL 24493) |
| runtime: large objects no longer cause significant goroutine pauses (CL 23540) |
| runtime: make append only clear uncopied memory (CL 30192) |
| runtime: memclr perf improvements on ppc64x (CL 30373) |
| runtime: minor string/rune optimizations (CL 27460) |
| runtime: optimize defer code (CL 29656) |
| runtime: remove a load and shift from scanobject (CL 22712) |
| runtime: remove defer from standard cgo call (CL 30080) |
| runtime: speed up StartTrace with lots of blocked goroutines (CL 25573) |
| strings: add special cases for Join of 2 and 3 strings (CL 25005) |
| strings: make IndexRune faster (CL 28546) |
| strings: use AVX2 for Index if available (CL 22551) |
| strings: use Index in Count (CL 28586) |
| syscall: avoid convT2I allocs for common Windows error values (CL 28484, CL 28990) |
| text/template: improve lexer performance in finding left delimiters (CL 24863) |
| unicode/utf8: reduce bounds checks in EncodeRune (CL 28492) |
| |
| Documentation: |
| |
| all: many more examples in documentations (many CLs) |
| runtime: runtime.MemStats has much more detailed documentation (CL 28972) |
| |
| Binary Size: |
| |
| cmd/link: more efficient encoding of DWARF line number information (CL 30577) |
| cmd/compile: recognize integer ranges in switch statements (CL 26770) |
| cmd/compile: use two tables for table-driven map inserts (CL 26669) |
| cmd/link: when dynlinking, do not mangle short symbol names (CL 26890) |
| cmd/compile, runtime: stop padding stackmaps to 4 bytes (CL 30817) |