doc/all.css | 5 ++--- doc/devel/index.html | 3 ++- doc/devel/release.html | 3028 +++-------------------------------------------------- doc/devel/roadmap.html | 10 ++++------ doc/devel/weekly.html | 2944 +++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/doc/all.css b/doc/all.css index dd00d1adb05c611aab548bad95c456baab631bc6..e496388ef7cde0aac2f931e90005ec35332082f7 100644 --- a/doc/all.css +++ b/doc/all.css @@ -139,9 +139,8 @@ margin-bottom: -0em; padding: 0; } #content h2 { - border-top: 1px solid #ddd; - background: #E2E7F0; - padding: 5px; + border-top: 2px solid #ddd; + padding: 8px 5px; margin: 1.5em 0 0; } #content .subtitle { diff --git a/doc/devel/index.html b/doc/devel/index.html index b9b526b943ada999e3ba9b323d23f3c0ad0e4349..ae405bf520787561c85c796975dc9e5932ddded2 100644 --- a/doc/devel/index.html +++ b/doc/devel/index.html @@ -2,7 +2,8 @@
This page summarizes the changes between tagged releases of Go. -For full details, see the Mercurial change log.
+This page summarizes the changes between official stable releases of Go. +Between releases we issue less stable +weekly snapshots. +The weekly snapshot history contains more detail, +and the Mercurial change log +has full details.
-To update to a specific release, use:
-This release includes revisions to the reflect package to make it more -efficient, after last the weekly’s major API update. If your code uses reflect -it may require further changes, not all of which can be made automatically by -gofix. For the full details of the change, see - http://codereview.appspot.com/4435042 -Also, the Typeof and NewValue functions have been renamed to TypeOf and ValueOf. - -Other changes: -* 5c: make alignment rules match 5g, just like 6c matches 6g. -* 8g, 8l: fix "set but not used" gcc error (thanks Fazlul Shahriar). -* all-qemu.bash: remove DISABLE_NET_TESTS. -* build: remove DISABLE_NET_TESTS. -* builder: build multiple targets in parallel. -* cgo: avoid "incompatible pointer type" warning (thanks Albert Strasheim). -* codereview: add 'hg undo' command, various other fixes. -* compress/flate: dictionary support. -* compress/zlib: add FDICT flag in Reader/Writer (thanks Ross Light). -* container/heap: fix circular dependency in test. -* crypto/openpgp: better handling of keyrings. -* crypto/rsa: support > 3 primes. -* crypto/tls: add server-side OCSP stapling support. -* crypto/x509: memorize chain building. -* crypto: move certificate verification into x509. -* dashboard: build most recent revision first. -* doc: mention make version in install.html. -* expvar: add Func for functions that return values that are JSON marshalable. -* fmt: decrease recursion depth in tests to permit them to run under gccgo, - tweak the doc for %U. -* gc: allow complex types to be receiver types (thanks Robert Hencke), - correct handling of unexported method names in embedded interfaces, - explain why invalid receiver types are invalid, - fix copy([]int, string) error message (thanks Quan Yong Zhai), - fix 'invalid recursive type' error (thanks Lorenzo Stoakes), - many bug fixes. -* go spec: attempt at clarifying language for "append", - for map types, mention indexing operations. -* go/types: update for export data format change. -* gob: fix handling of indirect receivers for GobDecoders, - fix trivial bug in map marshaling, - have errorf always prefix the message with "gob: ", - test case for indirection to large field, - use new Implements and AssignableTo methods in reflect, - when decoding a string, allocate a string, not a []byte. -* gobuilder: permit builders of the form goos-goarch-foo, - respect MAKEFLAGS if provided (thanks Dave Cheney). -* godoc: use "search" input type for search box (thanks Dmitry Chestnykh). -* gofix: add support for reflect rename. -* gofmt: add -d (diff) (thanks David Crawshaw), - don't crash when rewriting nil interfaces in AST, - exclude test case that doesn't compile w/o errors, - gofmt test harness bug fix. -* goinstall: support GOPATH; building and installing outside the Go tree, - support building executable commands. -* gopack: fix prefix bug, - preserve safe flag when not adding unsafe objects to archive. -* gotest: add timing, respect $GOARCH, - generate gofmt-compliant code. -* http/cgi: copy some PATH environment variables to child, - improve Location response handling, - pass some default environment variables. -* http/fcgi: new package (thanks Evan Shaw). -* http: add NewRequest helper, - add MultipartForm, ParseMultipartForm, and FormFile to Request, - be clear when failing to connect to a proxy, - bug fixes and new tests, - consume request bodies before replying, - don't quote Set-Cookie Domain and Path (thanks Petar Maymounkov), - fix IP confusion in TestServerTimeouts, - handler timeout support, - ServerConn, ClientConn: add real Close (thanks Petar Maymounkov), - make Client redirect policy configurable, - put a limit on POST size, - reverse proxy handler. -* image/jpeg: add an encoder, - decode to a YCbCr image instead of an RGBA image. -* ioutil: add Discard. -* json: keep track of error offset in SyntaxError. -* ld: defend against some broken object files, - do not emit empty dwarf pe sections (thanks Alex Brainman), - fix 6l -d on Mac, diagnose invalid use of -d, - fix Plan 9 symbol table (thanks Anthony Martin), - remove MachoLoad limit. -* make: prevent rm provoking 'text file busy' errors (thanks Lorenzo Stoakes). -* mime/multipart: add ReadForm for parsing multipart forms, - limit line length to prevent abuse. -* mime: RFC 2231 continuation / non-ASCII support, - bunch more tests, few minor parsing fixes. -* misc/goplay: fix Tab and Shift+Enter in Firefox (thanks Dmitry Chestnykh). -* net: disable one more external network test, - fix EAI_BADFLAGS error on freebsd (thanks Mikio Hara), - fix ParseIP (thanks Quan Yong Zhai), - fix dialgoogle_test.go (thanks Quan Yong Zhai), - try /etc/hosts before loading DNS config (thanks Dmitry Chestnykh), - use C library resolver on FreeBSD, Linux, OS X / amd64, 386. -* os/user: new package to look up users. -* os: Open with O_APPEND|O_CREATE to append on Windows (thanks Alex Brainman), - fix race in ReadAt/WriteAt on Windows (thanks Alex Brainman), - turn EPIPE exit into panic. -* rc/env.bash: fix to build on windows under msys (thanks Joe Poirier). -* reflect: allow Slice of arrays, - fix Copy of arrays (thanks Gustavo Niemeyer), - require package qualifiers to match during interface check, - add Type.Implements, Type.AssignableTo, Value.CallSlice, - make Set match Go. -* rpc: allow the first argument of a method to be a value rather than a pointer, - run benchmarks over HTTP as well as direct network connections. -* run.bash: remove redundant rebuilds. -* runtime/plan9: warning remediation for Plan 9 (thanks Lucio De Re), -* runtime: many bug fixes, - fix GOMAXPROCS vs garbage collection bug (thanks Dmitriy Vyukov), - fix mkversion to output valid path separators (thanks Peter Mundy), - more graceful out-of-memory crash, - require package qualifiers to match during interface check, - skip functions with no lines when building src line table, - turn "too many EPIPE" into real SIGPIPE. -* src/pkg: make package doc comments consistently start with "Package foo". -* syscall: Madvise and Mprotect for Linux (thanks Albert Strasheim), - Mlock, Munlock, Mlockall, Munlockall on Linux (thanks Albert Strasheim), - add BPF support for darwin/386, darwin/amd64 (thanks Mikio Hara), - correct Windows CreateProcess input parameters (thanks Alex Brainman), - fix Ftruncate under linux/arm5 (thanks Dave Cheney), - permit StartProcess to hide the executed program on windows (thanks Vincent Vanackere). -* test/bench: update timings; moving to new machine. -* time: support Irix 6 location for zoneinfo files. -* tutorial: modernize the definition and use of Open, - replace the forever loops with finite counts in sieve programs. -* websocket: include *http.Request in websocket.Conn. -* xml: Parser hook for non-UTF-8 charset converters. +hg pull +hg update release.rNN-
-weekly.2011-04-13 - -This weekly snapshot includes major changes to the reflect package and the -os.Open function. Code that uses reflect or os.Open will require updating, -which can be done mechanically using the gofix tool. +++The r57 release corresponds to +
-The reflect package's Type and Value types have changed. Type is now an -interface that implements all the possible type methods. Instead of a type -switch on a reflect.Type t, switch on t.Kind(). Value is now a struct value -that implements all the possible value methods. Instead of a type switch on a -reflect.Value v, switch on v.Kind(). See the change for the full details: - http://code.google.com/p/go/source/detail?r=843855f3c026 - -The os package's Open function has been replaced by three functions: - OpenFile(name, flag, perm) // same as old Open - Open(name) // same as old Open(name, O_RDONLY, 0) - Create(name) // same as old Open(name, O_RDWR|O_TRUNC|O_CREAT, 0666) - -To update your code to use the new APIs, run "gofix path/to/code". Gofix can’t +weekly.2011-04-27+with additional bug fixes. +This section highlights the most significant changes in this release. +For a more detailed summary, see the +The weekly release notes. +For complete information, see the +Mercurial change list. +The new gofix tool finds Go programs that use old APIs and rewrites them to use +newer ones. After you update to a new Go release, gofix helps make the +necessary changes to your programs. Gofix will handle the http, os, and syscall +package changes described below, and we will update the program to keep up with +future changes to the libraries. +Gofix can’t handle all situations perfectly, so read and test the changes it makes before committing them. +See the gofix blog post for more +information.
-Other changes: -* archive/zip: add func OpenReader, type ReadCloser (thanks Dmitry Chestnykh). -* asn1: Implement correct marshaling of length octets (thanks Luit van Drongelen). -* big: don't crash when printing nil ints. -* bufio: add ReadLine, to replace encoding/line. -* build: make the build faster, quieter. -* codereview: automatically port old diffs forward, - drop Author: line on self-clpatch, - recognize code URL without trailing slash. -* crypto/block: remove deprecated package. -* crypto/des: new package implementating DES and TDEA (thanks Yasuhiro Matsumoto). -* crypto/ecdsa, crypto/rsa: use io.ReadFull to read from random source (thanks Dmitry Chestnykh). -* crypto/rsa: add 3-prime support, - add support for precomputing CRT values, - flip the CRT code over so that it matches PKCS#1. -* crypto/x509: expose complete DER data (thanks Mikkel Krautz). -* doc: new "Functions" codewalk (thanks John DeNero). -* doc/roadmap: add sections on tools, packages. -* fmt: allow %U for unsigned integers. -* gc: fixes and optimizations. -* go/printer, gofmt: use blank to separate import rename from import path. -* go/scanner: better TokenString output. -* go/types: new Go type hierarchy implementation for AST. -* godashboard: show packages at launchpad.net (thanks Gustavo Niemeyer). -* gofix: add -diff, various fixes and helpers. -* gotest: fix a bug in error handling, - fixes for [^.]_test file pattern (thanks Peter Mundy), - handle \r\n returned by gomake on Windows (thanks Alex Brainman). -* gotype: use go/types GcImporter. -* govet: make name-matching for printf etc. case-insensitive. -* http: allow override of Content-Type for ServeFile, - client gzip support, - do not listen on 0.0.0.0 during test, - flesh out server Expect handling + tests. -* image/ycbcr: new package. -* image: allow "?" wildcards when registering image formats. -* io: fixes for Read with n > 0, os.EOF (thanks Robert Hencke). -* ld: correct Plan 9 compiler warnings (thanks Lucio De Re), - ELF header function declarations (thanks Lucio De Re), - fix Mach-O X86_64_RELOC_SIGNED relocations (thanks Mikkel Krautz), - fix Mach-O bss bug (thanks Mikkel Krautz), - fix dwarf decoding of strings for struct's fieldnames (thanks Luuk van Dijk), - fixes and optimizations (25% faster). -* log: generalize getting and setting flags and prefix. -* misc/cgo/life: enable build and test on Windows (thanks Alex Brainman). -* misc/vim: add plugin with Fmt command (thanks Dmitry Chestnykh), - update type highlighting for new reflect package. -* net: disable multicast tests by default (thanks Dave Cheney), - sort records returned by LookupMX (thanks Corey Thomasson). -* openpgp: Fix improper := shadowing (thanks Gustavo Niemeyer). -* os: rename Open to OpenFile, add new Open, Create, - fix Readdir in Plan 9 (thanks Fazlul Shahriar). -* os/inotify: use _test for test files, not _obj. -* pkg/path: enable tests on Windows (thanks Alex Brainman). -* reflect: new Type and Value API. -* src/pkg/Makefile: trim per-directory make output except on failure. -* syscall: Add DT_* and MADV_* constants on Linux (thanks Albert Strasheim), - add Mmap, Munmap on Linux, FreeBSD, OS X, - fix StartProcess in Plan 9 (thanks Fazlul Shahriar), - fix Windows Signaled (thanks Alex Brainman). -* test/bench: enable build and test on Windows (thanks Alex Brainman). -
+Multiple assignment syntax replaces the closed function.
+The syntax for channel
+receives allows an optional second assigned value, a boolean value
+indicating whether the channel is closed. This code:
+
-This release includes changes to the net package. Your code will require
-changes if it uses the Dial or LookupHost functions.
-
-The laddr argument has been removed from net.Dial, and the cname return value
-has been removed from net.LookupHost. The new net.LookupCNAME function can be
-used to find the canonical host for a given name. You can update your
-networking code with gofix.
-
-The gotest shell script has been replaced by a Go program, making testing
-significantly faster.
-
-Other changes:
-* asn1: extensions needed for parsing Kerberos.
-* bufio: Write and WriteString cleanup (thanks Evan Shaw).
-* bytes, strings: simplify Join (thanks Evan Shaw).
-* crypto/cipher: bad CTR IV length now triggers panic.
-* crypto/tls: extend NPN support to the client,
- added X509KeyPair function to parse a Certificate from memory.
-* crypto/x509: parse Extended Key Usage extension (thanks Mikkel Krautz).
-* debug/gosym: remove need for gotest to run preparatory commands.
-* fmt: implement precision (length of input) values for %q: %.20q.
-* go/parser: fix scoping for local type declarations (thanks Roger Peppe),
- package name must not be the blank identifier.
-* go/printer, gofmt: remove special case for multi-line raw strings.
-* gopack: add P flag to remove prefix from filename information.
-* gotest: add -test.timeout option,
- replace the shell script with the compiled program written in go,
- execute gomake properly on Windows (thanks Alex Brainman).
-* gotry: move into its own directory, separate from gotest.
-* gotype: support for more tests, added one new test.
-* http: add Transport.MaxIdleConnsPerHost,
- use upper case hex in URL escaping (thanks Matt Jones).
-* httptest: add NewTLSServer.
-* misc/kate: reorganize, remove closed() (thanks Evan Shaw).
-* misc/notepadplus: support for notepad++ (thanks Anthony Starks).
-* net: implement non-blocking connect (thanks Alexey Borzenkov).
-* os: fix MkdirAll("/thisdoesnotexist") (thanks Albert Strasheim),
- Plan 9 support (thanks Yuval Pavel Zholkover),
- add a few missing Plan 9 errors (thanks Andrey Mirtchovski),
- fix FileInfo.Name returned by Stat (thanks David Forsythe).
-* path/filepath.Glob: add an error return,
- don't drop known matches on error.
-* path/filepath: add support for Plan 9 (thanks Andrey Mirtchovski).
-* scanner: treat line comments like in Go.
-* syscall: Plan 9 support (thanks Yuval Pavel Zholkover),
- StartProcess Chroot and Credential (thanks Albert Strasheim),
- add BPF support for freebsd/386, freebsd/amd64 (thanks Mikio Hara),
- make [Raw]Syscall6 pass 6th arg on linux/386 (thanks Evan Shaw).
-
-
--This weekly release includes improved support for testing. - -Memory and CPU profiling is now available via the gotest tool. Gotest will -produce memory and CPU profiling data when invoked with the -test.memprofile -and -test.cpuprofile flags. Run "godoc gotest" for details. - -We have also introduced a way for tests to run quickly when an exhaustive test -is unnecessary. Gotest’s new -test.short flag in combination with the testing -package’s new Short function allows you to write tests that can be run in -normal or "short" mode; short mode is now used by all.bash to reduce -installation time. -The Makefiles know about the flag - you can just run "make testshort". - -Other changes: -* .hgignore: Ignore all goinstalled packages (thanks Evan Shaw). -* build: add all-qemu.bash, handful of arm fixes, - add support for SWIG, and add two SWIG examples, - diagnose Ubuntu's buggy copy of gold, - handle broken awk in version.bash (thanks Dave Cheney), - reenable clean.bash without gomake (thanks Gustavo Niemeyer). -* cgo: fix index-out-of-bounds bug. -* codereview: permit CLs of the form weekly.DATE -* crypto/ecdsa: truncate hash values. -* crypto/openpgp: add DSA signature support. -* dashboard: remove old python/bash builder, update README. -* doc: explain release and weekly tags in install.html. -* exec: document dir option for Run (thanks Gustavo Niemeyer). -* flag: document Nflag function (thanks Fazlul Shahriar). -* gc: remove interim ... error which rejects valid code. -* go/ast: implemented NewPackage, - merge CaseClause and TypeCaseClause. -* go/parser: fix memory leak by making a copy of token literals, - resolve identifiers properly. -* go/printer, gofmt: avoid exponential layout algorithm, - gofmt: simplify struct formatting and respect line breaks. -* go/scanner: to interpret line comments with Windows filenames (thanks Alex Brainman). -* go/token: use array instead of map for token->string table. -* gob: optimizations to reduce allocations, - use pointers in bootstrapType so interfaces behave properly. -* gobuilder: recognize CLs of the form weekly.DATE. -* godefs: handle volatile. -* godoc: add -template flag to specify custom templates, - fix path problem for windows (thanks Yasuhiro Matsumoto). -* gofix: httpserver - rewrite rw.SetHeader to rw.Header.Set. -* gofmt: add profiling flag. -* gopprof: fix bug: do not rotate 180 degrees for large scrolls, - update list of memory allocation functions. -* gotest: fix gofmt issue in generated _testmain.go. -* http: add NewProxyClientConn, - avoid crash when asked for multiple file ranges, - don't chunk 304 responses, - export Transport, add keep-alive support. -* ld: return > 0 exit code on unsafe import. -* misc/bbedit: remove closed keyword (thanks Anthony Starks). -* misc/emacs: gofmt: don't clobber the current buffer on failure. -* misc/vim: remove 'closed' as a builtin function. -* net: add FileConn, FilePacketConn, FileListener (thanks Albert Strasheim), - don't force epoll/kqueue to wake up in order to add new events, - let OS-specific AddFD routine wake up polling thread, - use preallocated buffer for epoll and kqueue/kevent. -* path/filepath: add EvalSymlinks function, - fix TestEvalSymlinks when run under symlinked GOROOT. -* path: work for windows (thanks Yasuhiro Matsumoto). -* rpc: increase server_test timeout (thanks Gustavo Niemeyer), - optimizations to reduce allocations. -* runtime: fix darwin/amd64 thread VM footprint (thanks Alexey Borzenkov), - fix gdb support for goroutines, - more stack split fixes, - os-specific types and code for setitimer, - update defs.h for freebsd-386 (thanks Devon H. O'Dell). -* strings: Map: avoid allocation when string is unchanged. -* syscall: GetsockoptInt (thanks Albert Strasheim), - StartProcess fixes for windows (thanks Alex Brainman), - permit non-blocking syscalls, - rename from .sh to .pl, because these files are in Perl. -* test: enable tests using v, ok := <-ch syntax (thanks Robert Hencke). -* time: give a helpful message when we can't set the time zone for testing. - isolate syscall reference in sys.go. -- -
-This week's release introduces a new release tagging scheme. We intend to
-continue with our weekly releases, but have renamed the existing tags from
-"release" to "weekly". The "release" tag will now be applied to one hand-picked
-stable release each month or two.
-
-The revision formerly tagged "release.2011-03-07.1" (now "weekly.2011-03-07.1")
-has been nominated our first stable release, and has been given the tag
-"release.r56". As we tag each stable release we will post an announcement to
-the new golang-announce mailing list:
- http://groups.google.com/group/golang-announce
-
-You can continue to keep your Go installation updated using "hg update
-release", but now you should only need to update once we tag a new stable
-release, which we will announce here. If you wish to stay at the leading edge,
-you should switch to the weekly tag with "hg update weekly".
-
-
-This weekly release includes significant changes to the language spec and the
-http, os, and syscall packages. Your code may need to be changed. It also
-introduces the new gofix tool.
-
-The closed function has been removed from the language. The syntax for channel
-receives has been changed to return an optional second value, a boolean value
-indicating whether the channel is closed. This code:
- v := <-ch
+ v := <-ch
if closed(ch) {
// channel is closed
}
-should now be written as:
- v, ok := <-ch
- if !ok {
- // channel is closed
- }
-
-It is now illegal to declare unused labels, just as it is illegal to declare
-unused local variables.
-
-The new gofix tool finds Go programs that use old APIs and rewrites them to use
-newer ones. After you update to a new Go release, gofix helps make the
-necessary changes to your programs. Gofix will handle the http, os, and syscall
-package changes described below, and we will update the program to keep up with
-future changes to the libraries.
-
-The Hijack and Flush methods have been removed from the http.ResponseWriter
-interface and are accessible via the new http.Hijacker and http.Flusher
-interfaces. The RemoteAddr and UsingTLS methods have been moved from
-http.ResponseWriter to http.Request.
-
-The http.ResponseWriter interface's SetHeader method has been replaced by a
-Header() method that returns the response's http.Header. Caller code needs to
-change. This code:
- rw.SetHeader("Content-Type", "text/plain")
-should now be written as:
- rw.Header().Set("Content-Type", "text/plain")
-The os and syscall packages' StartProcess functions now take their final three
-arguments as an *os.ProcAttr and *syscall.ProcAttr values, respectively. This
-code:
- os.StartProcess(bin, args, env, dir, fds)
-should now be written as:
- os.StartProcess(bin, args, &os.ProcAttr{Files: fds, Dir: dir, Env: env})
-
-The gob package will now encode and decode values of types that implement the
-gob.GobEncoder and gob.GobDecoder interfaces. This allows types with unexported
-fields to transmit self-consistent descriptions; one instance is big.Int and
-big.Rat.
-
-Other changes:
-* 5l, 6l, 8l: reduce binary size about 40% by omitting symbols for type, string, go.string.
-* 5l, 8l: output missing section symbols (thanks Anthony Martin).
-* 6l, 8l: fix gdb crash.
-* Make.cmd: also clean _test* (thanks Gustavo Niemeyer).
-* big: implemented custom Gob(En/De)coder for Int type.
-* build: remove duplicate dependency in Make.cmd (thanks Robert Hencke),
- run gotest in misc/cgo/test.
-* codereview.py: don't suggest change -d if user is not CL author (thanks Robert Hencke).
-* compress/lzw: benchmark a range of input sizes.
-* crypto/ecdsa: add package.
-* crypto/elliptic: add the N value of each curve.
-* crypto/openpgp: bug fixes and fix misnamed function.
-* crypto/tls: fix compile error (thanks Dave Cheney).
-* doc: Effective Go: some small cleanups,
- update FAQ. hello, world is now 1.1MB, down from 1.8MB,
- update codelab wiki to fix template.Execute argument order.
-* flag: visit the flags in sorted order, for nicer messages.
-* fmt: do not export EOF = -1.
-* fmt: make ScanState.Token more general (thanks Roger Peppe).
-* gc: diagnose unused labels,
- fix handling of return values named _,
- include all dependencies in export metadata,
- make unsafe.Pointer its own kind of type, instead of an equivalent to *any.
-* go/ast, go/parser: populate identifier scopes at parse time.
-* go/ast: add FileSet parameter to ast.Print and ast.Fprint.
-* go/parser: first constant in a constant declaration must have a value.
-* gob: efficiency and reliability fixes.
-* gofmt: remove -trace and -ast flags.
-* goinstall: handle $(GOOS) and $(GOARCH) in filenames,
- handle .c files with gc when cgo isn't used, and
- handle .s files with gc (thanks Gustavo Niemeyer).
-* gopack: omit time stamps, makes output deterministic.
-* gotype: commandline tool to typecheck go programs.
-* govet: handle '*' in print format strings.
-* hash: new FNV-1a implementation (thanks Pascal S. de Kloe).
-* http/cgi: child support (e.g. Go CGI under Apache).
-* http: adapt Cookie code to follow IETF draft (thanks Petar Maymounkov),
- add test for fixed HTTP/1.0 keep-alive issue,
- don't hit external network in client_test.go,
- fix transport crash when request URL is nil,
- rename interface Transport to RoundTripper,
- run tests even with DISABLE_NET_TESTS=1.
-* httptest: default the Recorder status code to 200 on a Write.
-* io/ioutil: clean-up of ReadAll and ReadFile.
-* ioutil: add NopCloser.
-* ld: preserve symbol sizes during data layout.
-* lib9, libmach: Change GOOS references to GOHOSTOS (thanks Evan Shaw).
-* libmach: correct string comparison to revive 6cov on darwin (thanks Dave Cheney).
-* misc/vim: Add indent script for Vim (thanks Ross Light).
-* net, os, syslog: fixes for Solaris support.
-* net: don't loop to drain wakeup pipe.
-* nm: document -S flag.
-* openpgp: add PublicKey KeyId string accessors.
-* rpc: optimizations, add benchmarks and memory profiling,
- use httptest.Server for tests (thanks Robert Hencke).
-* runtime: reduce lock contention via wakeup on scheduler unlock,
- scheduler, cgo reorganization,
- split non-debugging malloc interface out of debug.go into mem.go.
-* spec: clarify return statement rules.
-* strings: add IndexRune tests, ASCII fast path,
- better benchmark names; add BenchmarkIndex.
-* syscall: implement Mount and Unmount for linux,
- implement Reboot for linux.
-* time: fix Time.ZoneOffset documentation (thanks Peter Mundy).
-* tls: move PeerCertificates to ConnectionState.
--This release includes changes to the reflect and path packages. -Code that uses reflect or path may need to be updated. - -The reflect package's Value.Addr method has been renamed to Value.UnsafeAddr. -Code that uses the Addr method will have to call UnsafeAddr instead. - -The path package has been split into two packages: path and path/filepath. -Package path manipulates slash-separated paths, regardless of operating system. -Package filepath implements the local operating system's native file paths. -OS-specific functioanlity in pacakge path, such as Walk, moved to filepath. - -Other changes: -* build: fixes and simplifications (thanks Dave Cheney), - move $GOBIN ahead of /bin, /usr/bin in build $PATH. -* bzip2: speed up decompression. -* cgo: fix dwarf type parsing (thanks Gustavo Niemeyer), - put temporary source files in _obj (thanks Roger Peppe), - fix bug involving 0-argument callbacks. -* compress/lzw: optimizations. -* doc: add FAQ about "implements", - add FAQ about large binaries , - add FAQ about stack vs heap allocation, - add internationalization to roadmap, - describe platform-specific conventions in code.html. -* fmt: allow recursive calls to Fscan etc (thanks Roger Peppe), - make %#p suppress leading 0x. -* gc, gopack: add some missing flags to the docs. -* gc: fix init of packages named main (thanks Gustavo Niemeyer), -* gob: make recursive map and slice types work, and other fixes. - tentative support for GobEncoder/GobDecoder interfaces. -* gobuilder: add -package flag to build external packages and -v for verbose. -* gofmt: exclude test file that is not legal Go. -* goinstall: protect against malicious filenames (thanks Roger Peppe). -* goyacc: provide -p flag to set prefix for names, documentation update. -* http: add cookie support (thanks Petar Maymounkov), - allow handlers to send non-chunked responses, - export ParseHTTPVersion, - expose Client's Transport, - use WriteProxy, - rename ClientTransport to Transport. -* http/cgi: new package. -* http/httptest: new package. -* image: add a decoding test for common file formats. -* io/ioutil: add TempDir. -* mime/multipart: Header changed from map to MIMEHeader -* path/filepath: new OS-specific path support (thanks Gustavo Niemeyer). -* reflect: add PtrTo, add Value.Addr (old Addr is now UnsafeAddr). -* runtime: use kernel-supplied compare-and-swap on linux/arm. -* spec: minor clarification of scope rule for functions. -* sync/atomic: new package to expose atomic operations. -* syscall: regenerate zerrors_freebsd_amd64.go (thanks Mikio Hara), - work around FreeBSD execve kernel bug (thanks Devon H. O'Dell). -* template: document the delimiters. -* testing: run GC before each benchmark run (thanks Roger Peppe). -* unsafe: fix the documentation. -* websocket: use httptest.Server for tests (thanks Robert Hencke). -* xml: permit nested directives (thanks Chris Dollin). -- -
-This release includes changes to the http package and a small language change.
-Your code will require changes if it manipulates http Headers or omits the
-condition in if statements.
-
-The new http.Header type replaces map[string]string in the Header and Trailer
-fields of http.Request and http.Response.
-A Header value can be manipulated via its Get, Set, Add, and Del methods.
-See http://golang.org/pkg/http/#Header
-
-The condition is now mandatory in if statements.
-Previously it would default to true, as in switch and for statements.
-This code is now illegal:
- if x := foo(); {
- // code that is always executed
- }
-The same effect can be achieved like this:
- if x := foo(); true {
- // code
- }
-Or, in a simpler form:
- {
- x := foo()
- // code
- }
-
-Other changes:
-* 6l: new -Hwindowsgui flag allows to build windows gui pe (thanks Alex Brainman),
- pe fixes (thanks Wei Guangjing).
-* 8l, 6l: allow for more os threads to be created on Windows (thanks Alex Brainman),
-* build: reduce the use of subshells in recursive make, and
- remove unused NaCl conditional from make.bash (thanks Dave Cheney).
-* codereview: fix clpatch with empty diffs (thanks Gustavo Niemeyer).
-* compress/bzip2: add package.
-* compress/lzw: implement a decoder.
-* crypto/openpgp: add package.
-* crypto/rand: add read buffer to speed up small requests (thanks Albert Strasheim).
-* crypto/rsa: left-pad OAEP results when needed.
-* crypto/tls: make protocol negotiation failure fatal.
-* fmt: stop giving characters to the Scan method of Scanner when we hit a newline in Scanln.
-* gc: interface error message fixes,
- make string const comparison unsigned (thanks Jeff R. Allen).
-* go spec: minor clarification on channel types.
-* go/ast, parser: condition in if statement is mandatory.
-* gob: compute information about a user's type once.
- protect against pure recursive types.
-* godoc: accept symbolic links as path names provided to -path,
- add robots.txt, log errors when reading filter files.
-* html: tokenize HTML comments.
-* http: add proxy support (thanks Yasuhiro Matsumoto),
- implement with net/textproto (thanks Petar Maymounkov),
- send full URL in proxy requests,
- introduce start of Client and ClientTransport.
-* image/png: support for more formats (thanks Mikael Tillenius).
-* json: only use alphanumeric tags,
- use base64 to encode []byte (thanks Roger Peppe).
-* ld: detect stack overflow due to NOSPLIT, drop rpath, support weak symbols.
-* misc/dashboard/builder: talk to hg with utf-8 encoding.
-* misc/dashboard: notify golang-dev on build failure.
-* net: *netFD.Read to return os.EOF on eof under windows (thanks Alex Brainman),
- add IPv4 multicast to UDPConn (thanks Dave Cheney),
- more accurate IPv4-in-IPv6 API test (thanks Mikio Hara),
- reject invalid net:proto network names (thanks Olivier Antoine).
-* netchan: allow use of arbitrary connections (thanks Roger Peppe).
-* os: add ENODATA and ENOTCONN (thanks Albert Strasheim).
-* reflect: add a couple of sentences explaining how Methods operate,
- add a secret method to ArrayOrSliceType to ensure it's only implemented by arrays and slices,
- add pointer word to CommonType (placeholder for future work).
-* runtime-gdb.py: gdb pretty printer for go strings properly handles length.
-* runtime: various bug fixes, more complete stack traces,
- record $GOROOT_FINAL for runtime.GOROOT.
-* spec: delete incorrect mention of selector working on pointer to interface type.
-* sync: add Cond (thanks Gustavo Niemeyer).
-* syscall: add MCL_* flags for mlockall (thanks Albert Strasheim),
- implement chmod() for win32 (thanks Yasuhiro Matsumoto).
-* test/bench: update timings for new GC.
-* testing: rename cmdline flags to avoid conflicts (thanks Gustavo Niemeyer).
-* textproto: introduce Header type (thanks Petar Maymounkov).
-* websocket: use new interface to access Header.
-
-
--This release includes changes to the io, os, and template packages. -You may need to update your code. - -The io.ReadByter and io.ReadRuner interface types have been renamed to -io.ByteReader and io.RuneReader respectively. - -The os package's ForkExec function has been superseded by the new StartProcess -function and an API built around the Process type: - http://golang.org/pkg/os/#Process - -The order of arguments to template.Execute has been reversed to be consistent -the notion of "destination first", as with io.Copy, fmt.Fprint, and others. - -Gotest now works for package main in directories using Make.cmd-based makefiles. - -The memory allocation runtime problems from the last release are not completely -fixed. The virtual memory exhaustion problems encountered by people using -ulimit -v have been fixed, but there remain known garbage collector problems -when using GOMAXPROCS > 1. - -Other changes: -* 5l: stopped generating 64-bit eor. -* 8l: more work on plan9 support (thanks Yuval Pavel Zholkover). -* archive/zip: handle files with data descriptors. -* arm: working peep-hole optimizer. -* asn1: marshal true as 255, not 1. -* buffer.go: minor optimization, expanded comment. -* build: drop syslog on DISABLE_NET_TESTS=1 (thanks Gustavo Niemeyer), - allow clean.bash to work on fresh checkout, - change "all tests pass" message to be more obvious, - fix spaces in GOROOT (thanks Christopher Nielsen). -* bytes: fix bug in buffer.ReadBytes (thanks Evan Shaw). -* 5g: better int64 code, - don't use MVN instruction. -* cgo: don't run cgo when not compiling (thanks Gustavo Niemeyer), - fix _cgo_run timestamp file order (thanks Gustavo Niemeyer), - fix handling of signed enumerations (thanks Gustavo Niemeyer), - os/arch dependent #cgo directives (thanks Gustavo Niemeyer), - rename internal f to avoid conflict with possible C global named f. -* codereview: fix hgpatch on windows (thanks Yasuhiro Matsumoto), - record repository, base revision, - use cmd.communicate (thanks Yasuhiro Matsumoto). -* container/ring: replace Iter() with Do(). -* crypto/cipher: add resync open to OCFB mode. -* crypto/openpgp/armor: bug fixes. -* crypto/openpgp/packet: new subpackage. -* crypto/tls: load a chain of certificates from a file, - select best cipher suite, not worst. -* crypto/x509: add support for name constraints. -* debug/pe: ImportedSymbols fixes (thanks Wei Guangjing). -* doc/code: update to reflect that package names need not be unique. -* doc/codelab/wiki: a bunch of fixes (thanks Andrey Mirtchovski). -* doc/install: update for new versions of Mercurial. -* encoding/line: fix line returned after EOF. -* flag: allow hexadecimal (0xFF) and octal (0377) input for integer flags. -* fmt.Scan: scan binary-exponent floating format, 2.4p-3, - hexadecimal (0xFF) and octal (0377) integers. -* fmt: document %%; also %b for floating point. -* gc, ld: detect stale or incompatible object files, - package name main no longer reserved. -* gc: correct receiver in method missing error (thanks Lorenzo Stoakes), - correct rounding of denormal constants (thanks Eoghan Sherry), - select receive bug fix. -* go/printer, gofmt: smarter handling of multi-line raw strings. -* go/printer: line comments must always end in a newline, - remove notion of "Styler", remove HTML mode. -* gob: allow Decode(nil) and have it just discard the next value. -* godoc: use IsAbs to test for absolute paths (fix for win32) (thanks Yasuhiro Matsumoto), - don't hide package lookup error if there's no command with the same name. -* gotest: enable unit tests for main programs. -* http: add Server type supporting timeouts, - add pipelining to ClientConn, ServerConn (thanks Petar Maymounkov), - handle unchunked, un-lengthed HTTP/1.1 responses. -* io: add RuneReader. -* json: correct Marshal documentation. -* netchan: graceful handling of closed connection (thanks Graham Miller). -* os: implement new Process API (thanks Alex Brainman). -* regexp tests: make some benchmarks more meaningful. -* regexp: add support for matching against text read from RuneReader interface. -* rpc: make more tolerant of errors, properly discard values (thanks Roger Peppe). -* runtime: detect failed thread creation on Windows, - faster allocator, garbage collector, - fix virtual memory exhaustion, - implemented windows console ctrl handler (SIGINT) (thanks Hector Chu), - more detailed panic traces, line number work, - improved Windows callback handling (thanks Hector Chu). -* spec: adjust notion of Assignability, - allow import of packages named main, - clarification re: method sets of newly declared pointer types, - fix a few typos (thanks Anthony Martin), - fix Typeof() return type (thanks Gustavo Niemeyer), - move to Unicode 6.0. -* sync: diagnose Unlock of unlocked Mutex, - new Waitgroup type (thanks Gustavo Niemeyer). -* syscall: add SetsockoptIpMreq (thanks Dave Cheney), - add sockaddr_dl, sysctl with routing message support for darwin, freebsd (thanks Mikio Hara), - do not use NULL for zero-length read, write, - implement windows version of Fsync (thanks Alex Brainman), - make ForkExec acquire the ForkLock under windows (thanks Hector Chu), - make windows API return errno instead of bool (thanks Alex Brainman), - remove obsolete socket IO control (thanks Mikio Hara). -* template: add simple formatter chaining (thanks Kyle Consalus), - allow a leading '*' to indirect through a pointer. -* testing: include elapsed time in test output -* windows: replace remaining __MINGW32__ instances with _WIN32 (thanks Joe Poirier). -- -
should now be written as:
-This release includes significant changes to channel operations and minor
-changes to the log package. Your code will require modification if it uses
-channels in non-blocking communications or the log package's Exit functions.
-
-Non-blocking channel operations have been removed from the language.
-The equivalent operations have always been possible using a select statement
-with a default clause. If a default clause is present in a select, that clause
-will execute (only) if no other is ready, which allows one to avoid blocking on
-a communication.
-
-For example, the old non-blocking send operation,
-
- if ch <- v {
- // sent
- } else {
- // not sent
- }
-
-should be rewritten as,
-
- select {
- case ch <- v:
- // sent
- default:
- // not sent
+ v, ok := <-ch
+ if !ok {
+ // channel is closed
}
-
-Similarly, this receive,
-
- v, ok := <-ch
- if ok {
- // received
- } else {
- // not received
- }
-
-should be rewritten as,
-
- select {
- case v := <-ch:
- // received
- default:
- // not received
- }
-
-This change is a prelude to redefining the 'comma-ok' syntax for a receive.
-In a later release, a receive expression will return the received value and an
-optional boolean indicating whether the channel has been closed. These changes
-are being made in two stages to prevent this semantic change from silently
-breaking code that uses 'comma-ok' with receives.
-There are no plans to have a boolean expression form for sends.
-
-Sends to a closed channel will panic immediately. Previously, an unspecified
-number of sends would fail silently before causing a panic.
-
-The log package's Exit, Exitf, and Exitln functions have been renamed Fatal,
-Fatalf, and Fatalln respectively. This brings them in line with the naming of
-the testing package.
-
-The port to the "tiny" operating system has been removed. It is unmaintained
-and untested. It was a toy to show that Go can run on raw hardware and it
-served its purpose. The source code will of course remain in the repository
-history, so it could be brought back if needed later.
-
-This release also changes some of the internal structure of the memory
-allocator in preparation for other garbage collector changes.
-If you run into problems, please let us know.
-There is one known issue that we are aware of but have not debugged yet:
- http://code.google.com/p/go/issues/detail?id=1464&.
-
-Other changes in this release:
-* 5l: document -F, force it on old ARMs (software floating point emulation)
-* 6g: fix registerization of temporaries (thanks Eoghan Sherry),
- fix uint64(uintptr(unsafe.Pointer(&x))).
-* 6l: Relocate CMOV* instructions (thanks Gustavo Niemeyer),
- windows/amd64 port (thanks Wei Guangjing).
-* 8l: add PE dynexport, emit DWARF in Windows PE, and
- code generation fixes (thanks Wei Guangjing).
-* bufio: make Flush a no-op when the buffer is empty.
-* bytes: Add Buffer.ReadBytes, Buffer.ReadString (thanks Evan Shaw).
-* cc: mode to generate go-code for types and variables.
-* cgo: define CGO_CFLAGS and CGO_LDFLAGS in Go files (thanks Gustavo Niemeyer),
- windows/386 port (thanks Wei Guangjing).
-* codereview: fix windows (thanks Hector Chu),
- handle file patterns better,
- more ASCII vs. Unicode nonsense.
-* crypto/dsa: add support for DSA.
-* crypto/openpgp: add s2k.
-* crypto/rand: use defer to unlock mutex (thanks Anschel Schaffer-Cohen).
-* crypto/rsa: correct docstring for SignPKCS1v15.
-* crypto: add package, a common place to store identifiers for hash functions.
-* doc/codelab/wiki: update to work with template changes, add to run.bash.
-* doc/spec: clarify address operators.
-* ebnflint: exit with non-zero status on error.
-* encoding/base32: new package (thanks Miek Gieben).
-* encoding/line: make it an io.Reader too.
-* exec: use custom error for LookPath (thanks Gustavo Niemeyer).
-* fmt/doc: define width and precision for strings.
-* gc: clearer error for struct == struct,
- fix send precedence,
- handle invalid name in type switch,
- special case code for single-op blocking and non-blocking selects.
-* go/scanner: fix build (adjust scanner EOF linecount).
-* gob: better debugging, commentary,
- make nested interfaces work,
- report an error when encoding a non-empty struct with no public fields.
-* godoc: full text index for whitelisted non-Go files,
- show line numbers for non-go files (bug fix).
-* gofmt -r: match(...) arguments may be nil; add missing guards.
-* govet: add Panic to the list of functions.
-* http: add host patterns (thanks Jose Luis Vázquez González),
- follow relative redirect in Get.
-* json: handle capital floating point exponent (1E100) (thanks Pieter Droogendijk).
-* ld: add -I option to set ELF interpreter,
- more robust decoding of reflection type info in generating dwarf.
-* lib9: update to Unicode 6.0.0.
-* make.bash: stricter selinux test (don't complain unless it is enabled).
-* misc/vim: Import/Drop commands (thanks Gustavo Niemeyer),
- set 'syntax sync' to a large value (thanks Yasuhiro Matsumoto).
-* net: fix race condition in test,
- return cname in LookupHost.
-* netchan: avoid race condition in test,
- fixed documentation for import (thanks Anschel Schaffer-Cohen).
-* os: add ETIMEDOUT (thanks Albert Strasheim).
-* runtime: generate Go defs for C types,
- implementation of callback functions for windows (thanks Alex Brainman),
- make Walk web browser example work (thanks Hector Chu),
- make select fairer,
- prefer fixed stack allocator over general memory allocator,
- simpler heap map, memory allocation.
-* scanner: fix Position returned by Scan, Pos,
- don't read ahead in Init.
-* suffixarray: use binary search for both ends of Lookup (thanks Eric Eisner).
-* syscall: add missing network interface constants (thanks Mikio Hara).
-* template: treat map keys as zero, not non-existent (thanks Roger Peppe).
-* time: allow cancelling of After events (thanks Roger Peppe),
- support Solaris zoneinfo directory.
-* token/position: added SetLinesForContent.
-* unicode: update to unicode 6.0.0.
-* unsafe: add missing case to doc for Pointer.
--This release removes the float and complex types from the language. - -The default type for a floating point literal is now float64, and -the default type for a complex literal is now complex128. - -Existing code that uses float or complex must be rewritten to -use explicitly sized types. - -The two-argument constructor cmplx is now spelled complex. -- -
-The 5g (ARM) compiler now has registerization enabled. If you discover it
-causes bugs, use 5g -N to disable the registerizer and please let us know.
-
-The xml package now allows the extraction of nested XML tags by specifying
-struct tags of the form "parent>child". See the XML documentation for an
-example: http://golang.org/pkg/xml/
-
-* 5a, 5l, 6a, 6l, 8a, 8l: handle out of memory, large allocations (thanks Jeff R. Allen).
-* 8l: pe changes (thanks Alex Brainman).
-* arm: fixes and improvements.
-* cc: fix vlong condition.
-* cgo: add complex float, complex double (thanks Sebastien Binet),
- in _cgo_main.c define all provided symbols as functions.
-* codereview: don't mail change lists with no files (thanks Ryan Hitchman).
-* crypto/cipher: add OFB mode.
-* expvar: add Float.
-* fmt: document %X of string, []byte.
-* gc, runtime: make range on channel safe for multiple goroutines.
-* gc: fix typed constant declarations (thanks Anthony Martin).
-* go spec: adjust language for constant typing.
-* go/scanner: Make Init take a *token.File instead of a *token.FileSet.
-* godoc: bring back "indexing in progress" message,
- don't double HTML-escape search result snippets,
- enable qualified identifiers ("math.Sin") as query strings again,
- peephole optimization for generated HTML,
- remove tab before formatted section.
-* gofmt, go/printer: do not insert extra line breaks where they may break the code.
-* http: fix Content-Range and Content-Length in response (thanks Clement Skau),
- fix scheme-relative URL parsing; add ParseRequestURL,
- handle HEAD requests correctly,
- support for relative URLs.
-* math: handle denormalized numbers in Frexp, Ilogb, Ldexp, and Logb (thanks Eoghan Sherry).
-* net, syscall: return source address in Recvmsg (thanks Albert Strasheim).
-* net: add LookupAddr (thanks Kyle Lemons),
- add unixpacket (thanks Albert Strasheim),
- avoid nil dereference if /etc/services can't be opened (thanks Corey Thomasson),
- implement windows timeout (thanks Wei Guangjing).
-* netchan: do not block sends; implement flow control (thanks Roger Peppe).
-* regexp: reject bare '?'. (thanks Ben Lynn)
-* runtime/cgo: don't define crosscall2 in dummy _cgo_main.c.
-* runtime/debug: new package for printing stack traces from a running goroutine.
-* runtime: add per-pause gc stats,
- fix arm reflect.call boundary case,
- print signal information during panic.
-* spec: specify that int and uint have the same size.
-* syscall: correct WSTOPPED on OS X,
- correct length of GNU/Linux abstract Unix domain sockaddr,
- correct length of SockaddrUnix.
-* tutorial: make stdin, stdout, stderr work on Windows.
-* windows: implement exception handling (thanks Hector Chu).
-
-
--The json, gob, and template packages have changed, and code that uses them -may need to be updated after this release. They will no longer read or write -unexported struct fields. When marshalling a struct with json or gob the -unexported fields will be silently ignored. Attempting to unmarshal json or -gob data into an unexported field will generate an error. Accessing an -unexported field from a template will cause the Execute function to return -an error. - -Godoc now supports regular expression full text search, and this -functionality is now available on golang.org. - -Other changes: -* arm: initial cut at arm optimizer. -* bytes.Buffer: Fix bug in UnreadByte. -* cgo: export unsafe.Pointer as void*, fix enum const conflict, - output alignment fix (thanks Gustavo Niemeyer). -* crypto/block: mark as deprecated. -* crypto/openpgp: add error and armor. -* crypto: add twofish package (thanks Berengar Lehr). -* doc/spec: remove Maxalign from spec. -* encoding/line: new package for reading lines from an io.Reader. -* go/ast: correct end position for Index and TypeAssert expressions. -* gob: make (en|dec)code(Ui|I)nt methods rather than functions. -* godefs: better handling of enums. -* gofmt: don't attempt certain illegal rewrites, - rewriter matches apply to expressions only. -* goinstall: preliminary support for cgo packages (thanks Gustavo Niemeyer). -* hg: add cgo/_cgo_* to .hgignore. -* http: fix text displayed in Redirect. -* ld: fix exported dynamic symbols on Mach-O, - permit a Mach-O symbol to be exported in the dynamic symbol table. -* log: add methods for exit and panic. -* net: use closesocket api instead of CloseHandle on Windows (thanks Alex Brainman). -* netchan: make fields exported for gob change. -* os: add Sync to *File, wraps syscall.Fsync. -* runtime/cgo: Add callbacks to support SWIG. -* runtime: Restore scheduler stack position if cgo callback panics. -* suffixarray: faster creation algorithm (thanks Eric Eisner). -* syscall: fix mksysnum_linux.sh (thanks Anthony Martin). -* time.NewTicker: panic for intervals <= 0. -* time: add AfterFunc to call a function after a duration (thanks Roger Peppe), - fix tick accuracy when using multiple Tickers (thanks Eoghan Sherry).- -
-This release includes several fixes and changes: - -* build: Make.pkg: use installed runtime.h for cgo. -* cgo: disallow use of C.errno. -* crypto/cipher: fix OCFB, - make NewCBCEncrypter return BlockMode. -* doc: 6l: fix documentation of -L flag, - add golanguage.ru to foreign-language doc list, - effective go: explain the effect of repanicking better, - update Effective Go for template API change, - update contribution guidelines to prefix the change description. -* encoding/binary: reject types with implementation-dependent sizes (thanks Patrick Gavlin). -* exp/evalsimple fix handling of slices like s[:2] (thanks Sebastien Binet). -* fmt: made format string handling more efficient, - normalize processing of format string. -* gc: return constant floats for parts of complex constants (thanks Anthony Martin), - rewrite complex /= to l = l / r (thanks Patrick Gavlin), - fix &^=. -* go/ast: provide complete node text range info. -* gob: generate a better error message in one confusing place. -* godoc: fix godoc -src (thanks Icarus Sparry). -* goinstall: add -clean flag (thanks Kyle Lemons), - add checkout concept (thanks Caine Tighe), - fix -u for bzr (thanks Gustavo Niemeyer). -* http: permit empty Reason-Phrase in response Status-Line. -* io: fix Copyn EOF handling. -* net: fix close of Listener (thanks Michael Hoisie). -* regexp: fix performance bug, make anchored searches fail fast, - fix prefix bug. -* runtime/cgo: fix stackguard on FreeBSD/amd64 (thanks Anthony Martin). -* strconv: atof: added 'E' as valid token for exponent (thanks Stefan Nilsson), - update ftoa comment for 'E' and 'G'. -* strings: fix description of FieldsFunc (thanks Roger Peppe). -* syscall: correct Linux Splice definition, - make Access second argument consistently uint32. -- -
-A small release this week. The most significant change is that some
-outstanding cgo issues were resolved.
-
-* cgo: handle references to symbols in shared libraries.
-* crypto/elliptic: add serialisation and key pair generation.
-* crypto/hmac: add HMAC-SHA256 (thanks Anthony Martin).
-* crypto/tls: add ECDHE support ("Elliptic Curve Diffie Hellman Ephemeral"),
- add support code for generating handshake scripts for testing.
-* darwin, freebsd: ignore write failure (during print, panic).
-* exp/draw: remove Border function.
-* expvar: quote StringFunc output, same as String output.
-* hash/crc64: fix typo in Sum.
-* ld: allow relocations pointing at ELF .bss symbols, ignore stab symbols.
-* misc/cgo/life: fix, add to build.
-* regexp: add HasMeta, HasOperator, and String methods to Regexp.
-* suffixarray: implemented FindAllIndex regexp search.
-* test/bench: update numbers for regex-dna after speedup to regexp.
-* time: explain the formats a little better.
-
-
--Package crypto/cipher has been started, to replace crypto/block. -As part of the changes, rc4.Cipher's XORKeyStream method signature has changed from - XORKeyStream(buf []byte) -to - XORKeyStream(dst, src []byte) -to implement the cipher.Stream interface. If you use crypto/block, you'll need -to switch to crypto/cipher once it is complete. - -Package smtp's StartTLS now takes a *tls.Config argument. - -Package reflect's ArrayCopy has been renamed to Copy. There are new functions -Append and AppendSlice. - -The print/println bootstrapping functions now write to standard error. -To write to standard output, use fmt.Print[ln]. - -A new tool, govet, has been added to the Go distribution. Govet is a static -checker for Go programs. At the moment, and for the forseeable future, -it only checks arguments to print calls. - -The cgo tool for writing Go bindings for C code has changed so that it no -longer uses stub .so files (like cgo_stdio.so). Cgo-based packages using the -standard Makefiles should build without any changes. Any alternate build -mechanisms will need to be updated. - -The C and Go compilers (6g, 6c, 8g, 8c, 5g, 5c) now align structs according to -the maximum alignment of the fields they contain; previously they aligned -structs to word boundaries. This may break non-cgo-based code that attempts to -mix C and Go. - -NaCl support has been removed. The recent linker changes broke NaCl support -a month ago, and there are no known users of it. -If necessary, the NaCl code can be recovered from the repository history. - -* 5g/8g, 8l, ld, prof: fix output of 32-bit values (thanks Eoghan Sherry). -* [68]l and runtime: GDB support for interfaces and goroutines. -* 6l, 8l: support for linking ELF and Mach-O .o files. -* all: simplify two-variable ranges with unused second variable (thanks Ryan Hitchman). -* arm: updated soft float support. -* codereview: keep quiet when not in use (thanks Eoghan Sherry). -* compress/flate: implement Flush, equivalent to zlib's Z_SYNC_FLUSH. -* crypto/tls: use rand.Reader in cert generation example (thanks Anthony Martin). -* dashboard: fix project tag filter. -* debug/elf, debug/macho: add ImportedLibraries, ImportedSymbols. -* doc/go_mem: goroutine exit is not special. -* event.go: another print glitch from gocheck. -* gc: bug fixes, - syntax error for incomplete chan type (thanks Ryan Hitchman). -* go/ast: fix ast.Walk. -* gob: document the byte count used in the encoding of values, - fix bug sending zero-length top-level slices and maps, - Register should use the original type, not the indirected one. -* godashboard: support submitting projects with non-ascii names (thanks Ryan Hitchman) -* godefs: guard against structs with pad fields -* godoc: added textual search, to enable use -fulltext flag. -* gofmt: simplify "x, _ = range y" to "x = range y". -* gopack: allow ELF/Mach-O objects in .a files without clearing allobj. -* go/token,scanner: fix comments so godoc aligns properly. -* govet: on error continue to the next file (thanks Christopher Wedgwood). -* html: improved parsing. -* http: ServeFile handles Range header for partial requests. -* json: check for invalid UTF-8. -* ld: allow .o files with no symbols, - reading of ELF object files, - reading of Mach-O object files. -* math: change float64 bias constant from 1022 to 1023 (thanks Eoghan Sherry), - rename the MinFloat constant to SmallestNonzeroFloat. -* nm: silently ignore .o files in .a files. -* os: fix test of RemoveAll. -* os/inotify: new package (thanks Balazs Lecz). -* os: make MkdirAll work with symlinks (thanks Ryan Hitchman). -* regexp: speed up by about 30%; also simplify code for brackets. -* runtime/linux/386: set FPU to 64-bit precision. -* runtime: remove paranoid mapping at 0. -* suffixarray: add Bytes function. -* syscall: add network interface constants for linux/386, linux/amd64 (thanks Mikio Hara). -* syscall/windows: restrict access rights param of OpenProcess(), - remove \r and \n from error messages (thanks Alex Brainman). -* test/bench: fixes to timing.sh (thanks Anthony Martin). -* time: fix bug in Ticker: shutdown using channel rather than memory. -* token/position: provide FileSet.File, provide files iterator. -* xml: disallow invalid Unicode code points (thanks Nigel Kerr). -- -
-This release includes some package changes. If you use the crypto/tls or -go/parser packages your code may require changes. - -The crypto/tls package's Dial function now takes an additional *Config -argument. Most uses will pass nil to get the same default behavior as before. -See the documentation for details: - http://golang.org/pkg/crypto/tls/#Config - http://golang.org/pkg/crypto/tls/#Dial - -The go/parser package's ParseFile function now takes a *token.FileSet as its -first argument. This is a pointer to a data structure used to store -position information. If you don't care about position information you -can pass "token.NewFileSet()". See the documentation for details: - http://golang.org/pkg/go/parser/#ParseFile - -This release also splits the patent grant text out of the LICENSE file into a -separate PATENTS file and changes it to be more like the WebM grant. -These clarifications were made at the request of the Fedora project. - -Other changes: -* [68]l: generate debug info for builtin structured types, prettyprinting in gdb. -* 8l: add dynimport to import table in Windows PE (thanks Wei Guangjing). -* 8l, runtime: fix Plan 9 386 build (thanks Yuval Pavel Zholkover). -* all: fix broken calls to Printf etc. -* bufio: make Reader.Read implement io.Reader semantics (thanks Roger Peppe). -* build: allow archiver to be specified by HOST_AR (thanks Albert Strasheim). -* bytes: add Buffer.UnreadRune, Buffer.UnreadByte (thanks Roger Peppe). -* crypto/tls: fix build of certificate generation example (thanks Christian Himpel). -* doc/install: describe GOHOSTOS and GOHOSTARCH. -* errchk: accept multiple source files (thanks Eoghan Sherry). -* exec.LookPath: return os.PathError instad of os.ENOENT (thanks Michael Hoisie).. -* flag: fix format error in boolean error report, - handle multiple calls to flag.Parse. -* fmt: add %U format for standard Unicode representation of code point values. -* gc: fix method offsets of anonymous interfaces (thanks Eoghan Sherry), - skip undefined symbols in import . (thanks Eoghan Sherry). -* go/scanner: remove Tokenize - was only used in tests -* gobuilder: add buildroot command-line flag (thanks Devon H. O'Dell). -* html: unescape numeric entities (thanks Ryan Hitchman). -* http: Add EncodeQuery, helper for constructing query strings. -* ld: fix dwarf decoding of 64-bit reflect values (thanks Eoghan Sherry). -* math: improve accuracy of Exp2 (thanks Eoghan Sherry). -* runtime: add Goroutines (thanks Keith Rarick). -* sync: small naming fix for armv5 (thanks Dean Prichard). -* syscall, net: Add Recvmsg and Sendmsg on Linux (thanks Albert Strasheim). -* time: make After use fewer goroutines and host processes (thanks Roger Peppe). -- -
-Several package changes in this release may require you to update your code if
-you use the bytes, template, or utf8 packages. In all cases, any outdated code
-will fail to compile rather than behave erroneously.
-
-The bytes package has changed. Its Add and AddByte functions have been removed,
-as their functionality is provided by the recently-introduced built-in function
-"append". Any code that uses them will need to be changed:
-s = bytes.Add(s, b) -> s = append(s, b...)
-s = bytes.AddByte(b, c) -> s = append(s, b)
-s = bytes.Add(nil, c) -> append([]byte(nil), c)
-
-The template package has changed. Your code will need to be updated if it calls
-the HTMLFormatter or StringFormatter functions, or implements its own formatter
-functions. The function signature for formatter types has changed to:
- func(wr io.Writer, formatter string, data ...interface{})
-to allow multiple arguments to the formatter. No templates will need updating.
-See the change for examples:
- http://code.google.com/p/go/source/detail?r=2c2be793120e
-
-The template change permits the implementation of multi-word variable
-instantiation for formatters. Before one could say
- {field}
-or
- {field|formatter}
-Now one can also say
- {field1 field2 field3}
-or
- {field1 field2 field3|formatter}
-and the fields are passed as successive arguments to the formatter,
-by analogy to fmt.Print.
-
-The utf8 package has changed. The order of EncodeRune's arguments has been
-reversed to satisfy the convention of "destination first".
-Any code that uses EncodeRune will need to be updated.
-
-Other changes:
-* [68]l: correct dwarf location for globals and ranges for arrays.
-* big: fix (*Rat) SetFrac64(a, b) when b < 0 (thanks Eoghan Sherry).
-* compress/flate: fix typo in comment (thanks Mathieu Lonjaret).
-* crypto/elliptic: use a Jacobian transform for better performance.
-* doc/code.html: fix reference to "gomake build" (thanks Anschel Schaffer-Cohen).
-* doc/roadmap: update gdb status.
-* doc/spec: fixed some omissions and type errors.
-* doc: some typo fixes (thanks Peter Mundy).
-* exp/eval: build fix for parser.ParseFile API change (thanks Anschel Schaffer-Cohen).
-* fmt: Scan accepts Inf and NaN,
- allow "% X" as well as "% x".
-* go/printer: preserve newlines in func parameter lists (thanks Jamie Gennis).
-* http: consume request body before next request.
-* log: ensure writes are atomic (thanks Roger Peppe).
-* path: Windows support for Split (thanks Benny Siegert).
-* runtime: fix SysFree to really free memory on Windows (thanks Alex Brainman),
- parallel definitions in Go for all C structs.
-* sort: avoid overflow in pivot calculation,
- reduced stack depth to lg(n) in quickSort (thanks Stefan Nilsson).
-* strconv: Atof on Infs and NaNs.
-
-
--This release includes a backwards-incompatible package change to the -sort.Search function (introduced in the last release). -See the change for details and examples of how you might change your code: - http://code.google.com/p/go/source/detail?r=102866c369 - -* build: automatically #define _64BIT in 6c. -* cgo: print required space after parameter name in wrapper function. -* crypto/cipher: new package to replace crypto/block (thanks Adam Langley). -* crypto/elliptic: new package, implements elliptic curves over prime fields (thanks Adam Langley). -* crypto/x509: policy OID support and fixes (thanks Adam Langley). -* doc: add link to codewalks, - fix recover() documentation (thanks Anschel Schaffer-Cohen), - explain how to write Makefiles for commands. -* exec: enable more tests on windows (thanks Alex Brainman). -* gc: adjustable hash code in typecheck of composite literals - (thanks to vskrap, Andrey Mirtchovski, and Eoghan Sherry). -* gc: better error message for bad type in channel send (thanks Anthony Martin). -* godoc: bug fix in relativePath, - compute search index for all file systems under godoc's observation, - use correct time stamp to indicate accuracy of search result. -* index/suffixarray: use sort.Search. -* net: add ReadFrom and WriteTo windows version (thanks Wei Guangjing). -* reflect: remove unnecessary casts in Get methods. -* rpc: add RegisterName to allow override of default type name. -* runtime: free memory allocated by windows CommandLineToArgv (thanks Alex Brainman). -* sort: simplify Search (thanks Roger Peppe). -* strings: add LastIndexAny (thanks Benny Siegert). -- -
-The birthday release includes a new Search capability inside the sort package. -It takes an unusual but very general and easy-to-use approach to searching -arbitrary indexable sorted data. See the documentation for details: - http://golang.org/pkg/sort/#Search - -The ARM port now uses the hardware floating point unit (VFP). It still has a -few bugs, mostly around conversions between unsigned integer and floating-point -values, but it's stabilizing. - -In addition, there have been many smaller fixes and updates: - -* 6l: generate dwarf variable names with disambiguating suffix. -* container/list: make Remove return Value of removed element. - makes it easier to remove first or last item. -* crypto: add cast5 (default PGP cipher), - switch block cipher methods to be destination first. -* crypto/tls: use pool building for certificate checking -* go/ast: change embedded token.Position fields to named fields - (preparation for a different position representation) -* net: provide public access to file descriptors (thanks Keith Rarick) -* os: add Expand function to evaluate environment variables. -* path: add Glob (thanks Benny Siegert) -* runtime: memequal optimization (thanks Graham Miller) - prefix all external symbols with "runtime·" to avoid - conflicts linking with external C libraries. -- -
-This release includes a language change: the new built-in function, append. -Append makes growing slices much simpler. See the spec for details: - http://golang.org/doc/go_spec.html#Appending_and_copying_slices - -Other changes: -* 8l: pe generation fixes (thanks Alex Brainman). -* doc: Effective Go: append and a few words about "..." args. -* build: fiddle with make variables. -* codereview: fix sync and download in Python 2.7 (thanks Fazlul Shahriar). -* debug/pe, cgo: add windows support (thanks Wei Guangjing- -). -* go/ast: add Inspect function for easy AST inspection w/o a visitor. -* go/printer: do not remove parens around composite literals starting with - a type name in control clauses. -* go/scanner: bug fixes, revisions, and more tests. -* gob: several fixes and documentation updates. -* godoc: bug fix (bug introduced with revision 3ee58453e961). -* gotest: print empty benchmark list in a way that gofmt will leave alone. -* http server: correctly respond with 304 NotModified (thanks Michael Hoisie). -* kate: update list of builtins (thanks Evan Shaw). -* libutf: update to Unicode 5.2.0 to match pkg/unicode (thanks Anthony Martin). -* misc/bbedit: update list of builtins (thanks Anthony Starks). -* misc/vim: update list of builtins. -* mkrunetype: install a Makefile and tweak it slightly so it can be built. -* netchan: fix locking bug. -* pidigits: minor improvements (thanks Evan Shaw). -* rpc: fix client deadlock bug. -* src: use append where appropriate (often instead of vector). -* strings: add Contains helper function (thanks Brad Fitzpatrick). -* syscall: SIO constants for Linux (thanks Albert Strasheim), - Stat(path) on windows (thanks Alex Brainman). -* test/ken/convert.go: add conversion torture test. -* testing: add Benchmark (thanks Roger Peppe). -
-*** This release changes the encoding used by package gob.
- If you store gobs on disk, see below. ***
-
-The ARM port (5g) now passes all tests. The optimizer is not yet enabled, and
-floating point arithmetic is performed entirely in software. Work is underway
-to address both of these deficiencies.
-
-The syntax for arrays, slices, and maps of composite literals has been
-simplified. Within a composite literal of array, slice, or map type, elements
-that are themselves composite literals may elide the type if it is identical to
-the outer literal's element type. For example, these expressions:
- [][]int{[]int{1, 2, 3}, []int{4, 5}}
- map[string]Point{"x": Point{1.5, -3.5}, "y": Point{0, 0}}
-can be simplified to:
- [][]int{{1, 2, 3}, {4, 5}}
- map[string]Point{"x": {1.5, -3.5}, "y": {0, 0}}
-Gofmt can make these simplifications mechanically when invoked with the
-new -s flag.
-
-The built-in copy function can now copy bytes from a string value to a []byte.
-Code like this (for []byte b and string s):
- for i := 0; i < len(s); i++ {
- b[i] = s[i]
- }
-can be rewritten as:
- copy(b, s)
-
-The gob package can now encode and decode interface values containing types
-registered ahead of time with the new Register function. These changes required
-a backwards-incompatible change to the wire format. Data written with the old
-version of the package will not be readable with the new one, and vice versa.
-(Steps were made in this change to make sure this doesn't happen again.)
-We don't know of anyone using gobs to create permanent data, but if you do this
-and need help converting, please let us know, and do not update to this release
-yet. We will help you convert your data.
-
-Other changes:
-* 5g, 6g, 8g: generate code for string index instead of calling function.
-* 5l, 6l, 8l: introduce sub-symbols.
-* 6l/8l: global and local variables and type info.
-* Make.inc: delete unnecessary -fno-inline flag to quietgcc.
-* arm: precise float64 software floating point, bug fixes.
-* big: arm assembly, faster software mulWW, divWW.
-* build: only print "You need to add foo to PATH" when needed.
-* container/list: fix Remove bug and use pointer to self as identifier.
-* doc: show page title in browser title bar,
- update roadmap.
-* encoding/binary: give LittleEndian, BigEndian specific types.
-* go/parser: consume auto-inserted semi when calling ParseExpr().
-* gobuilder: pass GOHOSTOS and GOHOSTARCH to build,
- write build and benchmarking logs to disk.
-* goinstall: display helpful message when encountering a cgo package,
- fix test for multiple package names (thanks Fazlul Shahriar).
-* gotest: generate correct gofmt-formatted _testmain.go.
-* image/png: speed up paletted encoding ~25% (thanks Brad Fitzpatrick).
-* misc: update python scripts to specify python2 as python3 is now "python".
-* net: fix comment on Dial to mention unix/unixgram.
-* rpc: expose Server type to allow multiple RPC Server instances.
-* runtime: print unknown types in panic.
-* spec: append built-in (not yet implemented).
-* src: gofmt -s -w src misc.
- update code to use copy-from-string.
-* test/bench: update numbers.
-* websocket: fix short Read.
-
-
--This release removes the log package's deprecated functions. -Code that has not been updated to use the new interface will break. -See the previous release notes for details: - http://golang.org/doc/devel/release.html#2010-10-13 - -Also included are major improvements to the linker. It is now faster, -uses less memory, and more parallelizable (but not yet parallel). - -The nntp package has been removed from the standard library. -Its new home is the nntp-go project at Google Code: - http://code.google.com/p/nntp-go -You can install it with goinstall: - goinstall nntp-go.googlecode.com/hg/nntp -And import it in your code like so: - import "nntp-go.googlecode.com/hg/nntp" - -Other changes: -* 6g: avoid too-large immediate constants. -* 8l, runtime: initial support for Plan 9 (thanks Yuval Pavel Zholkover). -* 6l, 8l: more improvements on exporting debug information (DWARF). -* arm: code gen fixes. Most tests now pass, except for floating point code. -* big: add random number generation (thanks Florian Uekermann). -* gc: keep track of real actual type of identifiers, - report that shift must be unsigned integer, - select receive with implicit conversion. -* goplay: fix to run under windows (thanks Yasuhiro Matsumoto). -* http: do not close connection after sending HTTP/1.0 request. -* netchan: add new method Hangup to terminate transmission on a channel. -* os: change TestForkExec so it can run on windows (thanks Yasuhiro Matsumoto). -* runtime: don't let select split stack. -* syscall/arm: correct 64-bit system call arguments. -- -
-This release includes changes to the log package, the removal of exp/iterable, -two new tools (gotry and goplay), one small language change, and many other -changes and fixes. If you use the log or iterable packages, you need to make -changes to your code. - -The log package has changed. Loggers now have only one output, and output to -standard error by default. The names have also changed, although the old names -are still supported. They will be deleted in the next release, though, so it -would be good to update now if you can. For most purposes all you need to do -is make these substitutions: - log.Stderr -> log.Println or log.Print - log.Stderrf -> log.Printf - log.Crash -> log.Panicln or log.Panic - log.Crashf -> log.Panicf - log.Exit -> log.Exitln or log.Exit - log.Exitf -> log.Exitf (no change) -Calls to log.New() must drop the second argument. -Also, custom loggers with exit or panic properties will need to be reworked. -For full details, see the change description: - http://code.google.com/p/go/source/detail?r=d8a3c7563d - -The language change is that uses of pointers to interface values no longer -automatically dereference the pointer. A pointer to an interface value is more -often a beginner's bug than correct code. - -The package exp/iterable has been removed. It was an interesting experiment, -but it encourages writing inefficient code and has outlived its utility. - -The new tools: -* gotry: an exercise in reflection and an unusual tool. Run 'gotry' for details. -* goplay: a stand-alone version of the Go Playground. See misc/goplay. - -Other changes: -* 6l: Mach-O fixes, and fix to work with OS X nm/otool (thanks Jim McGrath). -* [568]a: correct line numbers for statements. -* arm: code generation and runtime fixes, - adjust recover for new reflect.call, - enable 6 more tests after net fix. -* big: fix panic and round correctly in Rat.FloatString (thanks Anthony Martin). -* build: Make.cmd: remove $(OFILES) (thanks Eric Clark), - Make.pkg: remove .so before installing new one, - add GOHOSTOS and GOHOSTARCH environment variables. -* crypto/tls: better error messages for certificate issues, - make SetReadTimeout work. -* doc: add Sydney University video, - add The Expressiveness of Go talk. -* exp/draw/x11: support X11 vendors other than "The X.Org Foundation". -* expvar: add (*Int).Set (thanks Sam Thorogood). -* fmt: add Errorf helper function, - allow %d on []byte. -* gc: O(1) string comparison when lengths differ, - various bug fixes. -* http: return the correct error if a header line is too long. -* image: add image.Tiled type, the Go equivalent of Plan 9's repl bit. -* ld: be less picky about bad line number info. -* misc/cgo/life: fix for new slice rules (thanks Graham Miller). -* net: allow _ in DNS names. -* netchan: export before import when testing, and - zero out request to ensure correct gob decoding. (thanks Roger Peppe). -* os: make tests work on windows (thanks Alex Brainman). -* runtime: bug fix: serialize mcache allocation, - correct iteration of large map values, - faster strequal, memequal (thanks Graham Miller), - fix argument dump in traceback, - fix tiny build. -* smtp: new package (thanks Evan Shaw). -* syscall: add sockaddr_ll support for linux/386, linux/amd64 (thanks Mikio Hara), - add ucred structure for SCM_CREDENTIALS over UNIX sockets. (thanks Albert Strasheim). -* syscall: implement WaitStatus and Wait4() for windows (thanks Wei Guangjing). -* time: add After. -* websocket: enable tests on windows (thanks Alex Brainman). -- -
-This release includes some minor language changes and some significant package
-changes. You may need to change your code if you use ...T parameters or the
-http package.
-
-The semantics and syntax of forwarding ...T parameters have changed.
- func message(f string, s ...interface{}) { fmt.Printf(f, s) }
-Here, s has type []interface{} and contains the parameters passed to message.
-Before this language change, the compiler recognized when a function call
-passed a ... parameter to another ... parameter of the same type, and just
-passed it as though it was a list of arguments. But this meant that you
-couldn't control whether to pass the slice as a single argument and you
-couldn't pass a regular slice as a ... parameter, which can be handy. This
-change gives you that control at the cost of a few characters in the call.
-If you want the promotion to ..., append ... to the argument:
- func message(f string, s ...interface{}) { fmt.Printf(f, s...) }
-Without the ..., s would be passed to Printf as a single argument of type
-[]interface{}. The bad news is you might need to fix up some of your code,
-but the compiler will detect the situation and warn you.
-
-Also, the http.Handler and http.HandlerFunc types have changed. Where http
-handler functions previously accepted an *http.Conn, they now take an interface
-type http.ResponseWriter. ResponseWriter implements the same methods as *Conn,
-so in most cases the only change required will be changing the type signature
-of your handler function's first parameter. See:
- http://golang.org/pkg/http/#Handler
-
-The utf8 package has a new type, String, that provides efficient indexing
-into utf8 strings by rune (previously an expensive conversion to []int
-was required). See:
- http://golang.org/pkg/utf8/#String
-
-The compiler will now automatically insert a semicolon at the end of a file if
-one is not found. This effect of this is that Go source files are no longer
-required to have a trailing newline.
-
-Other changes:
-* 6prof: more accurate usage message.
-* archive/zip: new package for reading Zip files.
-* arm: fix code generation, 10 more package tests pass.
-* asn1: make interface consistent with json.
-* bufio.UnreadRune: fix bug at EOF.
-* build: clear custom variables like GREP_OPTIONS,
- silence warnings generated by ubuntu gcc,
- use full path when compiling libraries.
-* bytes, strings: change lastIndexFunc to use DecodeLastRune (thanks Roger Peppe).
-* doc: add to and consolidate non-english doc references,
- consolidate FAQs into a single file, go_faq.html,
- updates for new http interface.
-* fmt/Printf: document and tweak error messages produced for bad formats.
-* gc: allow select case expr = <-c,
- eliminate duplicates in method table,
- fix reflect table method receiver,
- improve error message for x \= 0.
-* go/scanner: treat EOF like a newline for purposes of semicolon insertion.
-* gofmt: stability improvements.
-* gotest: leave _testmain.go for "make clean" to clean up.
-* http: correct escaping of different parts of URL,
- support HTTP/1.0 Keep-Alive.
-* json: do not write to unexported fields.
-* libcgo: don't build for NaCl,
- set g, m in thread local storage for windows 386 (thanks Wei Guangjing).
-* math: Fix off-by-one error in Ilogb and Logb. (thanks Charles L. Dorian).
-* misc/dashboard/builder: remove build files after benchmarking.
-* nacl: update instructions for new SDK.
-* net: enable v4-over-v6 on ip sockets,
- fix crash in DialIP.
-* os: check for valid arguments in windows Readdir (thanks Peter Mundy).
-* runtime: add mmap of null page just in case,
- correct stats in SysFree,
- fix unwindstack crash.
-* syscall: add IPPROTO_IPV6 and IPV6_V6ONLY const to fix nacl and windows build,
- add inotify on Linux (thanks Balazs Lecz),
- fix socketpair in syscall_bsd,
- fix windows value of IPV6_V6ONLY (thanks Alex Brainman),
- implement windows version of Utimes (thanks Alex Brainman),
- make mkall.sh work for nacl.
-* test: Add test that causes incorrect error from gccgo.
-* utf8: add DecodeLastRune and DecodeLastRuneInString (thanks Roger Peppe).
-* xml: Allow entities inside CDATA tags (thanks Dan Sinclair).
-
-
--This release includes new package functionality, and many bug fixes and changes. -It also improves support for the arm and nacl platforms. - -* 5l: avoid fixed buffers in list. -* 6l, 8l: clean up ELF code, fix NaCl. -* 6l/8l: emit DWARF frame info. -* Make.inc: make GOOS detection work on windows (thanks Alex Brainman). -* build: fixes for native arn build, - make all.bash run on Ubuntu ARM. -* cgo: bug fixes, - show preamble gcc errors (thanks Eric Clark). -* crypto/x509, crypto/tls: improve root matching and observe CA flag. -* crypto: Fix certificate validation. -* doc: variable-width layout. -* env.bash: fix building in directory with spaces in the path (thanks Alex Brainman). -* exp/4s, exp/nacl/av: sync to recent exp/draw changes. -* exp/draw/x11: mouse location is a signed integer. -* exp/nacl/av: update color to max out at 1<<16-1 instead of 1<<32-1. -* fmt: support '*' for width or precision (thanks Anthony Martin). -* gc: improvements to static initialization, - make sure path names are canonical. -* gob: make robust when decoding a struct with non-struct data. -* gobuilder: add -cmd for user-specified build command, - add -rev= flag to build specific revision and exit, - fix bug that caused old revisions to be rebuilt. -* godoc: change default filter file name to "", - don't use quadratic algorithm to filter paths, - show "Last update" info for directory listings. -* http: new redirect test, - URLEscape now escapes all reserved characters as per the RFC. -* nacl: fix zero-length writes. -* net/dict: parse response correctly (thanks Fazlul Shahriar). -* netchan: add a cross-connect test, - handle closing of channels, - provide a method (Importer.Errors()) to recover protocol errors. -* os: make Open() O_APPEND flag work on windows (thanks Alex Brainman), - make RemoveAll() work on windows (thanks Alex Brainman). -* pkg/Makefile: disable netchan test to fix windows build (thanks Alex Brainman). -* regexp: delete Iter methods. -* runtime: better panic for send to nil channel. -* strings: fix minor bug in LastIndexFunc (thanks Roger Peppe). -* suffixarray: a package for creating suffixarray-based indexes. -* syscall: Use vsyscall for syscall.Gettimeofday and .Time on linux amd64. -* test: fix NaCl build. -* windows: fix netchan test by using 127.0.0.1. -- -
-This release includes a language change: the lower bound of a subslice may -now be omitted, in which case the value will default to 0. -For example, s[0:10] may now be written as s[:10], and s[0:] as s[:]. - -The release also includes important bug fixes for the ARM architecture, -as well as the following fixes and changes: - -* 5g: register allocation bugs -* 6c, 8c: show line numbers in -S output -* 6g, 6l, 8g, 8l: move read-only data to text segment -* 6l, 8l: make etext accurate; introduce rodata, erodata. -* arm: fix build bugs. - make libcgo build during OS X cross-compile - remove reference to deleted file syntax/slice.go - use the correct stat syscalls - work around reg allocator bug in 5g -* bufio: add UnreadRune. -* build: avoid bad environment interactions - fix build for tiny - generate, clean .exe files on Windows (thanks Joe Poirier) - test for _WIN32, not _MINGW32 (thanks Joe Poirier) - work with GNU Make 3.82 (thanks Jukka-Pekka Kekkonen) -* cgo: add typedef for uintptr in generated headers - silence warning for C call returning const pointer -* codereview: convert email address to lower case before checking CONTRIBUTORS -* crypto/tls: don't return an error from Close() -* doc/tutorial: update for slice changes. -* exec: separate LookPath implementations for unix/windows (thanks Joe Poirier) -* exp/draw/x11: allow clean shutdown when the user closes the window. -* exp/draw: clip destination rectangle to the image bounds. - fast path for drawing overlapping image.RGBAs. - fix double-counting of pt.Min for the src and mask points. - reintroduce the MouseEvent.Nsec timestamp. - rename Context to Window, and add a Close method. -* exp/debug: preliminary support for 'copy' function (thanks Sebastien Binet) -* fmt.Fscan: use UnreadRune to preserve data across calls. -* gc: better printing of named constants, func literals in errors - many bug fixes - fix line number printing with //line directives - fix symbol table generation on windows (thanks Alex Brainman) - implement comparison rule from spec change 33abb649cb63 - implement new slice spec (thanks Scott Lawrence) - make string x + y + z + ... + w efficient - more accurate line numbers for ATEXT - remove &[10]int -> []int conversion -* go-mode.el: fix highlighting for 'chan' type (thanks Scott Lawrence) -* godoc: better support for directory trees for user-supplied paths - use correct delay time (bug fix) -* gofmt, go/printer: update internal estimated position correctly -* goinstall: warn when package name starts with http:// (thanks Scott Lawrence) -* http: check https certificate against host name - do not cache CanonicalHeaderKey (thanks Jukka-Pekka Kekkonen) -* image: change a ColorImage's minimum point from (0, 0) to (-1e9, -1e9). - introduce Intersect and Union rectangle methods. -* ld: handle quoted spaces in package path (thanks Dan Sinclair) -* libcgo: fix NaCl build. -* libmach: fix build on arm host - fix new thread race with Linux -* math: make portable Tan(Pi/2) return NaN -* misc/dashboard/builder: gobuilder, a continuous build client -* net: disable tests for functions not available on windows (thanks Alex Brainman) -* netchan: make -1 unlimited, as advertised. -* os, exec: rename argv0 to name -* path: add IsAbs (thanks Ivan Krasin) -* runtime: fix bug in tracebacks - fix crash trace on amd64 - fix windows build (thanks Alex Brainman) - use manual stack for garbage collection -* spec: add examples for slices with omitted index expressions. - allow omission of low slice bound (thanks Scott Lawrence) -* syscall: fix windows Gettimeofday (thanks Alex Brainman) -* test(arm): disable zerodivide.go because compilation fails. -* test(windows): disable tests that cause the build to fail (thanks Joe Poirier) -* test/garbage/parser: sync with recent parser changes -* test: Add test for //line - Make gccgo believe that the variables can change. - Recognize gccgo error messages. - Reduce race conditions in chan/nonblock.go. - Run garbage collector before testing malloc numbers. -* websocket: Add support for secure WebSockets (thanks Jukka-Pekka Kekkonen) -* windows: disable unimplemented tests (thanks Joe Poirier) -- -
-This release includes the syntactic modernization of more than 100 files in /test, -and these additions, changes, and fixes: -* 6l/8l: emit DWARF in macho. -* 8g: use FCHS, not FMUL, for minus float. -* 8l: emit DWARF in ELF, - suppress emitting DWARF in Windows PE (thanks Alex Brainman). -* big: added RatString, some simplifications. -* build: create bin and pkg directories as needed; drop from hg, - delete Make.386 Make.amd64 Make.arm (obsoleted by Make.inc), - fix cgo with -j2, - let pkg/Makefile coordinate building of Go commands, - never use quietgcc in Make.pkg, - remove more references to GOBIN and GOROOT (thanks Christian Himpel). -* codereview: Fix uploading for Mercurial 1.6.3 (thanks Evan Shaw), - consistent indent, cut dead code, - fix hang on standard hg commands, - print status when tasks take longer than 30 seconds, - really disable codereview when not available, - upload files in parallel (5x improvement on large CLs). -* crypto/hmac: make Sum idempotent (thanks Jukka-Pekka Kekkonen). -* doc: add links to more German docs, - add round-robin flag to io2010 balance example, - fix a bug in the example in Constants subsection (thanks James Fysh), - various changes for validating HTML (thanks Scott Lawrence). -* fmt: delete erroneous sentence about return value for Sprint*. -* gc: appease bison version running on FreeBSD builder, - fix spurious syntax error. -* go/doc: use correct escaper for URL. -* go/printer: align ImportPaths in ImportDecls (thanks Scott Lawrence). -* go/typechecker: 2nd step towards augmenting AST with full type information. -* gofmt: permit omission of first index in slice expression. -* goinstall: added -a flag to mean "all remote packages" (thanks Scott Lawrence), - assume go binaries are in path (following new convention), - use https for Google Code checkouts. -* gotest: allow make test of cgo packages (without make install). -* http: add Date to server, Last-Modified and If-Modified-Since to file server, - add PostForm function to post url-encoded key/value data, - obscure passwords in return value of URL.String (thanks Scott Lawrence). -* image: introduce Config type and DecodeConfig function. -* libcgo: update Makefile to use Make.inc. -* list: update comment to state that the zero value is ready to use. -* math: amd64 version of Sincos (thanks Charles L. Dorian). -* misc/bash: add *.go completion for gofmt (thanks Scott Lawrence). -* misc/emacs: make _ a word symbol (thanks Scott Lawrence). -* misc: add zsh completion (using compctl), - syntax highlighting for Fraise.app (OS X) (thanks Vincent Ambo). -* net/textproto: Handle multi-line responses (thanks Evan Shaw). -* net: add LookupMX (thanks Corey Thomasson). -* netchan: Fix race condition in test, - rather than 0, make -1 mean infinite (a la strings.Split et al), - use acknowledgements on export send. - new methods Sync and Drain for clean teardown. -* regexp: interpret all Go characer escapes \a \b \f \n \r \t \v. -* rpc: fix bug that caused private methods to attempt to be registered. -* runtime: Correct commonType.kind values to match compiler, - add GOOS, GOARCH; fix FuncLine, - special case copy, equal for one-word interface values (thanks Kyle Consalus). -* scanner: fix incorrect reporting of error in Next (thanks Kyle Consalus). -* spec: clarify that arrays must be addressable to be sliceable. -* template: fix space handling around actions. -* test/solitaire: an exercise in backtracking and string conversions. -* test: Recognize gccgo error messages and other fixes. -* time: do not crash in String on nil Time. -* tutorial: regenerate HTML to pick up change to progs/file.go. -* websocket: fix missing Sec-WebSocket-Protocol on server response (thanks Jukka-Pekka Kekkonen). -- -
-This release includes changes to the build system that will likely require you -to make changes to your environment variables and Makefiles. - -All environment variables are now optional: - - $GOOS and $GOARCH are now optional; their values should now be inferred - automatically by the build system, - - $GOROOT is now optional, but if you choose not to set it you must run - 'gomake' instead of 'make' or 'gmake' when developing Go programs - using the conventional Makefiles, - - $GOBIN remains optional and now defaults to $GOROOT/bin; - if you wish to use this new default, make sure it is in your $PATH - and that you have removed the existing binaries from $HOME/bin. - -As a result of these changes, the Go Makefiles have changed. If your Makefiles -inherit from the Go Makefiles, you must change this line: - include ../../Make.$(GOARCH) -to this: - include ../../Make.inc - -This release also removes the deprecated functions in regexp and the -once package. Any code that still uses them will break. -See the notes from the last release for details: - http://golang.org/doc/devel/release.html#2010-08-11 - -Other changes: -* 6g: better registerization for slices, strings, interface values -* 6l: line number information in DWARF format -* build: $GOBIN defaults to $GOROOT/bin, - no required environment variables -* cgo: add C.GoStringN (thanks Eric Clark). -* codereview: fix issues with leading tabs in CL descriptions, - do not send "Abandoned" mail if the CL has not been mailed. -* crypto/ocsp: add missing Makefile. -* crypto/tls: client certificate support (thanks Mikkel Krautz). -* doc: update gccgo information for recent changes. - fix errors in Effective Go. -* fmt/print: give %p priority, analogous to %T, - honor Formatter in Print, Println. -* gc: fix parenthesization check. -* go/ast: facility for printing AST nodes, - first step towards augmenting AST with full type information. -* go/printer: do not modify tabwriter.Escape'd text. -* gofmt: do not modify multi-line string literals, - print AST nodes by setting -ast flag. -* http: fix typo in http.Request documentation (thanks Scott Lawrence) - parse query string always, not just in GET -* image/png: support 16-bit color. -* io: ReadAtLeast now errors if min > len(buf). -* jsonrpc: use `error: null` for success, not `error: ""`. -* libmach: implement register fetch for 32-bit x86 kernel. -* net: make IPv6 String method standards-compliant (thanks Mikio Hara). -* os: FileInfo.Permission() now returns uint32 (thanks Scott Lawrence), - implement env using native Windows API (thanks Alex Brainman). -* reflect: allow PtrValue.PointTo(nil). -* runtime: correct line numbers for .goc files, - fix another stack split bug, - fix freebsd/386 mmap. -* syscall: regenerate syscall/z* files for linux/386, linux/amd64, linux/arm. -* tabwriter: Introduce a new flag StripEscape. -* template: fix handling of space around actions, - vars preceded by white space parse correctly (thanks Roger Peppe). -* test: add test case that crashes gccgo. -* time: parse no longer requires minutes for time zone (thanks Jan H. Hosang) -* yacc: fix bounds check in error recovery. -- -
-This release introduces some package changes. You may need to change your
-code if you use the once, regexp, image, or exp/draw packages.
-
-The type Once has been added to the sync package. The new sync.Once will
-supersede the functionality provided by the once package. We intend to remove
-the once package after this release. See:
- http://golang.org/pkg/sync/#Once
-All instances of once in the standard library have been replaced with
-sync.Once. Reviewing these changes may help you modify your existing code.
-The relevant changeset:
- http://code.google.com/p/go/source/detail?r=fa2c43595119
-
-A new set of methods has been added to the regular expression package, regexp.
-These provide a uniformly named approach to discovering the matches of an
-expression within a piece of text; see the package documentation for details:
- http://golang.org/pkg/regexp/
-These new methods will, in a later release, replace the old methods for
-matching substrings. The following methods are deprecated:
- Execute (use FindSubmatchIndex)
- ExecuteString (use FindStringSubmatchIndex)
- MatchStrings(use FindStringSubmatch)
- MatchSlices (use FindSubmatch)
- AllMatches (use FindAll; note that n<0 means 'all matches'; was n<=0)
- AllMatchesString (use FindAllString; note that n<0 means 'all matches'; was n<=0)
-(Plus there are ten new methods you didn't know you wanted.)
-Please update your code to use the new routines before the next release.
-
-An image.Image now has a Bounds rectangle, where previously it ranged
-from (0, 0) to (Width, Height). Loops that previously looked like:
- for y := 0; y < img.Height(); y++ {
- for x := 0; x < img.Width(); x++ {
- // Do something with img.At(x, y)
- }
- }
-should instead be:
- b := img.Bounds()
- for y := b.Min.Y; y < b.Max.Y; y++ {
- for x := b.Min.X; x < b.Max.X; x++ {
- // Do something with img.At(x, y)
- }
- }
-The Point and Rectangle types have also moved from exp/draw to image.
-
-Other changes:
-* arm: bugfixes and syscall (thanks Kai Backman).
-* asn1: fix incorrect encoding of signed integers (thanks Nicholas Waples).
-* big: fixes to bitwise functions (thanks Evan Shaw).
-* bytes: add IndexRune, FieldsFunc and To*Special (thanks Christian Himpel).
-* encoding/binary: add complex (thanks Roger Peppe).
-* exp/iterable: add UintArray (thanks Anschel Schaffer-Cohen).
-* godoc: report Status 404 if a pkg or file is not found.
-* gofmt: better reporting for unexpected semicolon errors.
-* html: new package, an HTML tokenizer.
-* image: change image representation from slice-of-slices to linear buffer,
- introduce Decode and RegisterFormat,
- introduce Transparent and Opaque,
- replace Width and Height by Bounds, add the Point and Rect types.
-* libbio: fix Bprint to address 6g issues with large data structures.
-* math: fix amd64 Hypot (thanks Charles L. Dorian).
-* net/textproto: new package, with example net/dict.
-* os: fix ForkExec() handling of envv == nil (thanks Alex Brainman).
-* png: grayscale support (thanks Mathieu Lonjaret).
-* regexp: document that backslashes are the escape character.
-* rpc: catch errors from ReadResponseBody.
-* runtime: memory free fix (thanks Alex Brainman).
-* template: add ParseFile method to template.Template.
-* test/peano: use directly recursive type def.
-
-
-
-This release includes a change to os.Open (and co.). The file permission
-argument has been changed to a uint32. Your code may require changes - a simple
-conversion operation at most.
-
-Other changes:
-* amd64: use segment memory for thread-local storage.
-* arm: add gdb support to android launcher script,
- bugfixes (stack clobbering, indices),
- disable another flaky test,
- remove old qemu dependency from gotest.
-* bufio: introduce Peek.
-* bytes: added test case for explode with blank string (thanks Scott Lawrence).
-* cgo: correct multiple return value function invocations (thanks Christian Himpel).
-* crypto/x509: unwrap Subject Key Identifier (thanks Adam Langley).
-* gc: index bounds tests and other fixes.
-* gofmt/go/parser: strengthen syntax checks.
-* goinstall: check for error from exec.*Cmd.Wait() (thanks Alex Brainman).
-* image/png: use image-specific methods for checking opacity.
-* image: introduce Gray and Gray16 types,
- remove the named colors except for Black and White.
-* json: object members must have a value (thanks Anthony Martin).
-* misc/vim: highlight misspelled words only in comments (thanks Christian Himpel).
-* os: Null device (thanks Peter Mundy).
-* runtime: do not fall through in SIGBUS/SIGSEGV.
-* strings: fix Split("", "", -1) (thanks Scott Lawrence).
-* syscall: make go errors not clash with windows errors (thanks Alex Brainman).
-* test/run: diff old new,
-* websocket: correct challenge response (thanks Tarmigan Casebolt),
- fix bug involving spaces in header keys (thanks Bill Neubauer).
-
-
--* 5g: more soft float support and several bugfixes. -* asn1: Enumerated, Flag and GeneralizedTime support. -* build: clean.bash to check that GOOS and GOARCH are set. -* bytes: add IndexFunc and LastIndexFunc (thanks Fazlul Shahriar), - add Title. -* cgo: If CC is set in environment, use it rather than "gcc", - use new command line syntax: -- separates cgo flags from gcc flags. -* codereview: avoid crash if no config, - don't run gofmt with an empty file list, - make 'hg submit' work with Mercurial 1.6. -* crypto/ocsp: add package to parse OCSP responses. -* crypto/tls: add client-side SNI support and PeerCertificates. -* exp/bignum: delete package - functionality subsumed by package big. -* fmt.Print: fix bug in placement of spaces introduced when ...T went in. -* fmt.Scanf: handle trailing spaces. -* gc: fix smaller-than-pointer-sized receivers in interfaces, - floating point precision/normalization fixes, - graceful exit on seg fault, - import dot shadowing bug, - many fixes including better handling of invalid input, - print error detail about failure to open import. -* gccgo_install.html: add description of the port to RTEMS (thanks Vinu Rajashekhar). -* gobs: fix bug in singleton arrays. -* godoc: display synopses for all packages that have some kind of documentation.. -* gofmt: fix some linebreak issues. -* http: add https client support (thanks Fazlul Shahriar), - write body when content length unknown (thanks James Whitehead). -* io: MultiReader and MultiWriter (thanks Brad Fitzpatrick), - fix another race condition in Pipes. -* ld: many fixes including better handling of invalid input. -* libmach: correct handling of .5 files with D_REGREG addresses. -* linux/386: use Xen-friendly ELF TLS instruction sequence. -* mime: add AddExtensionType (thanks Yuusei Kuwana). -* misc/vim: syntax file recognizes constants like 1e9 (thanks Petar Maymounkov). -* net: TCPConn.SetNoDelay, back by popular demand. -* net(windows): fix crashing Read/Write when passed empty slice on (thanks Alex Brainman), - implement LookupHost/Port/SRV (thanks Wei Guangjing), - properly handle EOF in (*netFD).Read() (thanks Alex Brainman). -* runtime: fix bug introduced in revision 4a01b8d28570 (thanks Alex Brainman), - rename cgo2c, *.cgo to goc2c, *.goc (thanks Peter Mundy). -* scanner: better comment. -* strings: add Title. -* syscall: add ForkExec, Syscall12 on Windows (thanks Daniel Theophanes), - improve windows errno handling (thanks Alex Brainman). -* syscall(windows): fix FormatMessage (thanks Peter Mundy), - implement Pipe() (thanks Wei Guangjing). -* time: fix parsing of minutes in time zones. -* utf16(windows): fix cyclic dependency when testing (thanks Peter Mundy). -- -
-This release includes a package change. In container/vector, the Iter method -has been removed from the Vector, IntVector, and StringVector types. Also, the -Data method has been renamed to Copy to better express its actual behavior. -Now that Vector is just a slice, any for loops ranging over v.Iter() or -v.Data() can be changed to range over v instead. - -Other changes: -* big: Improvements to Rat.SetString (thanks Evan Shaw), - add sign, abs, Rat.IsInt. -* cgo: various bug fixes. -* codereview: Fix for Mercurial >= 1.6 (thanks Evan Shaw). -* crypto/rand: add Windows implementation (thanks Peter Mundy). -* crypto/tls: make HTTPS servers easier, - add client OCSP stapling support. -* exp/eval: converted from bignum to big (thanks Evan Shaw). -* gc: implement new len spec, range bug fix, optimization. -* go/parser: require that '...' parameters are followed by a type. -* http: fix ParseURL to handle //relative_path properly. -* io: fix SectionReader Seek to seek backwards (thanks Peter Mundy). -* json: Add HTMLEscape (thanks Micah Stetson). -* ld: bug fixes. -* math: amd64 version of log (thanks Charles L. Dorian). -* mime/multipart: new package to parse multipart MIME messages - and HTTP multipart/form-data support. -* os: use TempFile with default TempDir for test files (thanks Peter Mundy). -* runtime/tiny: add docs for additional VMs, fix build (thanks Markus Duft). -* runtime: better error for send/recv on nil channel. -* spec: clarification of channel close(), - lock down some details about channels and select, - restrict when len(x) is constant, - specify len/cap for nil slices, maps, and channels. -* windows: append .exe to binary names (thanks Joe Poirier). -- -
-This release includes some package changes that may require changes to -client code. - -The Split function in the bytes and strings packages has been changed. -The count argument, which limits the size of the return, previously treated -zero as unbounded. It now treats 0 as 0, and will return an empty slice. -To request unbounded results, use -1 (or some other negative value). -The new Replace functions in bytes and strings share this behavior. -This may require you change your existing code. - -The gob package now allows the transmission of non-struct values at the -top-level. As a result, the rpc and netchan packages have fewer restrictions -on the types they can handle. For example, netchan can now share a chan int. - -The release also includes a Code Walk: "Share Memory By Communicating". -It describes an idiomatic Go program that uses goroutines and channels: - http://golang.org/doc/codewalk/sharemem/ - -There is now a Projects page on the Go Dashboard that lists Go programs, -tools, and libraries: - http://godashboard.appspot.com/project - -Other changes: -* 6a, 6l: bug fixes. -* bytes, strings: add Replace. -* cgo: use slash-free relative paths for .so references. -* cmath: correct IsNaN for argument cmplx(Inf, NaN) (thanks Charles L. Dorian). -* codereview: allow multiple email addresses in CONTRIBUTORS. -* doc/codewalk: add Share Memory By Communicating. -* exp/draw/x11: implement the mapping from keycodes to keysyms. -* fmt: Printf: fix bug in handling of %#v, allow other verbs for slices - Scan: fix handling of EOFs. -* gc: bug fixes and optimizations. -* gob: add DecodeValue and EncodeValue, - add support for complex numbers. -* goinstall: support for Bazaar+Launchpad (thanks Gustavo Niemeyer). -* io/ioutil: add TempFile for Windows (thanks Peter Mundy). -* ld: add -u flag to check safe bits; discard old -u, -x flags. -* math: amd64 versions of Exp and Fabs (thanks Charles L. Dorian). -* misc/vim: always override filetype detection for .go files. -* net: add support for DNS SRV requests (thanks Kirklin McDonald), - initial attempt to implement Windows version (thanks Alex Brainman). -* netchan: allow chan of basic types now that gob can handle such, - eliminate the need for a pointer value in Import and Export. -* os/signal: only catch all signals if os/signal package imported. -* regexp: bug fix: need to track whether match begins with fixed prefix. -* rpc: allow non-struct args and reply (they must still be pointers). -* runtime: bug fixes and reorganization. -* strconv: fix bugs in floating-point and base 2 conversions -* syscall: add syscall_bsd.go to zsycall_freebsd_386.go (thanks Peter Mundy), - add socketpair (thanks Ivan Krasin). -* time: implement time zones for Windows (thanks Alex Brainman). -* x509: support non-self-signed certs. -- -
-This release includes a language change. The "..." function parameter form is
-gone; "...T" remains. Typically, "...interface{}" can be used instead of "...".
-
-The implementation of Printf has changed in a way that subtly affects its
-handling of the fmt.Stringer interface. You may need to make changes to your
-code. For details, see:
- https://groups.google.com/group/golang-nuts/msg/6fffba90a3e3dc06
-
-The reflect package has been changed. If you have code that uses reflect,
-it will need to be updated. For details, see:
- https://groups.google.com/group/golang-nuts/msg/7a93d07c590e7beb
-
-Other changes:
-* 8l: correct test for sp == top of stack in 8l -K code.
-* asn1: allow '*' in PrintableString.
-* bytes.Buffer.ReadFrom: fix bug.
-* codereview: avoid exception in match (thanks Paolo Giarrusso).
-* complex divide: match C99 implementation.
-* exp/draw: small draw.drawGlyphOver optimization.
-* fmt: Print*: reimplement to switch on type first,
- Scanf: improve error message when input does not match format.
-* gc: better error messages for interface failures, conversions, undefined symbols.
-* go/scanner: report illegal escape sequences.
-* gob: substitute slice for map.
-* goinstall: process dependencies for package main (thanks Roger Peppe).
-* gopack: add S flag to force marking a package as safe,
- simplify go metadata code.
-* html: sync testdata/webkit to match WebKit tip.
-* http: reply to Expect 100-continue requests automatically (thanks Brad Fitzpatrick).
-* image: add an Alpha16 type.
-* ld: pad Go symbol table out to page boundary (fixes cgo crash).
-* misc/vim: reorganize plugin to be easier to use (thanks James Whitehead).
-* path: add Base, analogous to Unix basename.
-* pkg/Makefile: allow DISABLE_NET_TESTS=1 to disable network tests.
-* reflect: add Kind, Type.Bits, remove Int8Type, Int8Value, etc.
-* runtime: additional Windows support (thanks Alex Brainman),
- correct fault for 16-bit divide on Leopard,
- fix 386 signal handler bug.
-* strconv: add AtofN, FtoaN.
-* string: add IndexFunc and LastIndexFunc (thanks Roger Peppe).
-* syslog: use local network for tests.
-
-
--This release contains many fixes and improvements, including several -clarifications and consolidations to the Language Specification. - -The type checking rules around assignments and conversions are simpler but more -restrictive: assignments no longer convert implicitly from *[10]int to []int -(write x[0:] instead of &x), and conversions can no longer change the names of -types inside composite types. - -The fmt package now includes flexible type-driven (fmt.Scan) and -format-driven (fmt.Scanf) scanners for all basic types. - -* big: bug fix for Quo aliasing problem. -* bufio: change ReadSlice to match description. -* cgo: bug fixes. -* doc: add Google I/O talk and programs, - codereview + Mercurial Queues info (thanks Peter Williams). -* exp/draw: Draw fast paths for the Over operator, - add Rectangle.Eq and Point.In, fix Rectangle.Clip (thanks Roger Peppe). -* fmt: Scan fixes and improvements. -* gc: backslash newline is not a legal escape sequence in strings, - better error message when ~ operator is found, - fix export of complex types, - new typechecking rules. -* go/parser: correct position of empty statement ';'. -* gofmt: fix test script. -* goinstall: use 'git pull' instead of 'git checkout' (thanks Michael Hoisie). -* http: add Head function for making HTTP HEAD requests, - handle status 304 correctly. -* image: add Opaque method to the image types. - make Color.RGBA return 16 bit color instead of 32 bit color. -* io/ioutil: add TempFile. -* math: Pow special cases and additional tests (thanks Charles L. Dorian). -* netchan: improve closing and shutdown. -* os: implement os.FileInfo.*time_ns for windows (thanks Alex Brainman). -* os/signal: correct the regexp for finding Unix signal names (thanks Vinu Rajashekhar). -* regexp: optimizations (thanks Kyle Consalus). -* runtime: fix printing -Inf (thanks Evan Shaw), - finish pchw -> tiny, added gettime for tiny (thanks Daniel Theophanes). -* spec: clean-ups and consolidation. -* syscall: additional Windows compatibility fixes (thanks Alex Brainman). -* test/bench: added regex-dna-parallel.go (thanks Kyle Consalus). -* vector: type-specific Do functions now take f(type) (thanks Michael Hoisie). -+
Unused labels are now illegal, just as unused local variables are.
--A sizeable release, including standard library improvements and a slew of -compiler bug fixes. The three-week interval was largely caused by the team -preparing for Google I/O. +++Package gob will now encode and decode values of types that implement the +GobEncoder and +GobDecoder interfaces. This allows types with unexported +fields to transmit self-consistent descriptions; examples include +big.Int and big.Rat. +
-* big: add Rat type (thanks Evan Shaw), - new features, much performance tuning, cleanups, and more tests. -* bignum: deprecate by moving into exp directory. -* build: allow MAKEFLAGS to be set outside the build scripts (thanks Christopher Wedgwood). -* bytes: add Trim, TrimLeft, TrimRight, and generic functions (thanks Michael Hoisie). -* cgo: fix to permit cgo callbacks from init code. -* cmath: update range of Phase and Polar due to signed zero (thanks Charles L. Dorian). -* codereview: work better with mq (thanks Peter Williams). -* compress: renamings - NewDeflater -> NewWriter - NewInflater -> NewReader - Deflater -> Compressor - Inflater -> Decompressor -* exp/draw/x11: respect $XAUTHORITY, - treat $DISPLAY the same way x-go-bindings does. -* exp/draw: fast path for glyph images, other optimizations, - fix Rectangle.Canon (thanks Roger Peppe). -* fmt: Scan, Scanln: Start of a simple scanning API in the fmt package, - fix Printf crash when given an extra nil argument (thanks Roger Peppe). -* gc: better error when computing remainder of non-int (thanks Evan Shaw), - disallow middot in Go programs, - distinguish array, slice literal in error messages, - fix shift/reduce conflict in go.y export syntax, - fix unsafe.Sizeof on ideal constants, - handle use of builtin function outside function call, - many other bug fixes. -* gob: add support for maps, - add test for indirect maps, slices, arrays. -* godoc: collect package comments from all package files. -* gofmt: don't lose mandatory semicolons, - exclude test w/ illegal syntax from test cases, - fix printing of labels. -* http: prevent crash if remote server is not responding with "HTTP/". -* json: accept escaped slash in string scanner (thanks Michael Hoisie), - fix array -> non-array decoding. -* libmach: skip __nl_symbol_ptr section on OS X. -* math: amd64 versions of Fdim, Fmax, Fmin, - signed zero Sqrt special case (thanks Charles L. Dorian). -* misc/kate: convert isn't a built in function (thanks Evan Shaw). -* net: implement BindToDevice, - implement raw sockets (thanks Christopher Wedgwood). -* netFD: fix race between Close and Read/Write (thanks Michael Hoisie). -* os: add Chtimes function (thanks Brad Fitzpatrick). -* pkg/Makefile: add netchan to standard package list. -* runtime: GOMAXPROCS returns previous value, - allow large map values, - avoid allocation for fixed strings, - correct tracebacks for nascent goroutines, even closures, - free old hashmap pieces during resizing. -* spec: added imaginary literal to semicolon rules (was missing), - fix and clarify syntax of conversions, - simplify section on channel types, - other minor tweaks. -* strconv: Btoui64 optimizations (thanks Kyle Consalus). -* strings: use copy instead of for loop in Map (thanks Kyle Consalus). -* syscall: implement BindToDevice (thanks Christopher Wedgwood), - add Utimes on Darwin/FreeBSD, add Futimes everywhere, - regenerate syscalls for some platforms. -* template: regularize name lookups of interfaces, pointers, and methods. -
+Package http has been redesigned. +For clients, there are new +Client and Transport +abstractions that give more control over HTTP details such as headers sent +and redirections followed. These abstractions make it easy to implement +custom clients that add functionality such as OAuth2. +For servers, ResponseWriter +has dropped its non-essential methods. +The Hijack and Flush methods are no longer required; +code can test for them by checking whether a specific value implements +Hijacker or Flusher. +The RemoteAddr and UsingTLS methods are replaced by Request's +RemoteAddr and TLS fields. +The SetHeader method is replaced by a Header method; +its result, of type Header, +implements Set and other methods. +
-
+Package net
+drops the laddr argument from Dial
+and drops the cname return value
+from LookupHost.
+The implementation now uses cgo to implement
+network name lookups using the C library getaddrinfo(3)
+function when possible. This ensures that Go and C programs
+resolve names the same way and also avoids the OS X
+application-level firewall.
+
-In this release we renamed the Windows OS target from 'mingw' to 'windows'. -If you are currently building for 'mingw' you should set GOOS=windows instead. +++Package os +introduces simplified Open +and Create functions. +The original Open is now available as OpenFile. +The final three arguments to StartProcess +have been replaced by a pointer to a ProcAttr. +
-* 5l, 6l, 8l, runtime: make -s binaries work. -* 5l, 6l, 8l: change ELF header so that strip doesn't destroy binary. -* 8l: fix absolute path detection on Windows. -* big: new functions, optimizations, and cleanups, - add bitwise methods for Int (thanks Evan Shaw). -* bytes: Change IndexAny to look for UTF-8 encoded characters. -* darwin: bsdthread_create can fail; print good error. -* fmt: %T missing printfor nil (thanks Christopher Wedgwood). -* gc: many fixes. -* misc/cgo/gmp: fix bug in SetString. -* net: fix resolv.conf EOF without newline bug (thanks Christopher Wedgwood). -* spec: some small clarifications (no language changes). -* syscall: add EWOULDBLOCK to sycall_nacl.go, - force O_LARGEFILE in Linux open system call, - handle EOF on pipe - special case on Windows (thanks Alex Brainman), - mingw Sleep (thanks Joe Poirier). -* test/bench: import new fasta C reference, update Go, optimizations. -* test: test of static initialization (fails). -* vector: use correct capacity in call to make. -* xml: allow text segments to end at EOF. -
+Package reflect has been redesigned.
+Type is now an interface that implements
+all the possible type methods.
+Instead of a type switch on a Type t, switch on t.Kind().
+Value is now a struct value that
+implements all the possible value methods.
+Instead of a type switch on a Value v, switch on v.Kind().
+Typeof and NewValue are now called TypeOf and ValueOf
+To create a writable Value, use New(t).Elem() instead of Zero(t).
+See the change description
+for the full details.
+The new API allows a more efficient implementation of Value
+that avoids many of the allocations required by the previous API.
+
+Remember that gofix will handle the bulk of the rewrites +necessary for these changes to package APIs. +
--This release includes a new Codelab that illustrates the construction of a -simple wiki web application: - http://golang.org/doc/codelab/wiki/ ++Tools
-It also includes a Codewalk framework for documenting code. See: - http://golang.org/doc/codewalk/ +Gofix, a new command, is described above.
-Other changes: -* 6g: fix need for parens around array index expression. -* 6l, 8l: include ELF header in PT_LOAD mapping for text segment. -* arm: add android runner script, - support for printing floats. -* big: implemented Karatsuba multiplication, - many fixes and improvements (thanks Evan Shaw). -* bytes: add Next method to Buffer, simplify Read, - shuffle implementation, making WriteByte 50% faster. -* crypto/tls: simpler implementation of record layer. -* exp/eval: fixes (thanks Evan Shaw). -* flag: eliminate unnecessary structs. -* gc: better windows support, - cmplx typecheck bug fix, - more specific error for statements at top level. -* go/parser: don't require unnecessary parens. -* godoc: exclude duplicate entries (thanks Andrei Vieru), - use int64 for timestamps (thanks Christopher Wedgwood). -* gofmt: fine-tune stripping of parentheses, -* json: Marshal, Unmarshal using new scanner, - preserve field name case by default, - scanner, Compact, Indent, and tests, - support for streaming. -* libmach: disassemble MOVLQZX correctly. -* math: more special cases for signed zero (thanks Charles L. Dorian). -* net: add Pipe, - fix bugs in packStructValue (thanks Michael Hoisie), - introduce net.Error interface. -* os: FileInfo: regularize the types of some fields, - create sys_bsd.go (thanks Giles Lean), - mingw bug fixes (thanks Alex Brainman). -* reflect: add FieldByNameFunc (thanks Raif S. Naffah), - implement Set(nil), SetValue(nil) for PtrValue and MapValue. -* regexp: allow escaping of any punctuation. -* rpc/jsonrpc: support for jsonrpc wire encoding. -* rpc: abstract client and server encodings, - add Close() method to rpc.Client. -* runtime: closures, defer bug fix for Native Client, - rename cgo2c, *.cgo to goc2c, *.goc to avoid confusion with real cgo. - several other fixes. -* scanner: implement Peek() to look at the next char w/o advancing. -* strings: add ReadRune to Reader, add FieldsFunc (thanks Kyle Consalus). -* syscall: match linux Setsid function signature to darwin, - mingw bug fixes (thanks Alex Brainman). -* template: fix handling of pointer inside interface. -* test/bench: add fannkuch-parallel.go (thanks Kyle Consalus), - pidigits ~10% performance win by using adds instead of shifts. -* time: remove incorrect time.ISO8601 and add time.RFC3339 (thanks Micah Stetson). -* utf16: add DecodeRune, EncodeRune. -* xml: add support for XML marshalling embedded structs (thanks Raif S. Naffah), - new "innerxml" tag to collect inner XML. -
+Gotest is now a Go program instead of a shell script.
+The new -test.short flag in combination with package testing's Short function
+allows you to write tests that can be run in normal or “short” mode;
+all.bash runs tests in short mode to reduce installation time.
+The Makefiles know about the flag: use make testshort.
+
+The run-time support now implements CPU and memory profiling.
+Gotest's new
+-test.cpuprofile and
+-test.memprofile flags make it easy to
+profile tests.
+To add profiling to your web server, see the http/pprof
+documentation.
+For other uses, see the runtime/pprof documentation.
+
-This release contains many changes: +- -r56 (released 2011/03/16)
-* 8l: add DOS stub to PE binaries (thanks Evan Shaw). -* cgo: add //export. -* cmath: new complex math library (thanks Charles L. Dorian). -* docs: update to match current coding style (thanks Christopher Wedgwood). -* exp/eval: fix example and add target to Makefile (thanks Evan Shaw). -* fmt: change behaviour of format verb %b to match %x when negative (thanks Andrei Vieru). -* gc: compile s == "" as len(s) == 0, - distinguish fatal compiler bug from error+exit, - fix alignment on non-amd64, - good syntax error for defer func() {} - missing fina (), - implement panic and recover, - zero unnamed return values on entry if func has defer. -* goyacc: change to be reentrant (thanks Roger Peppe). -* io/ioutil: fix bug in ReadFile when Open succeeds but Stat fails. -* kate: update for recent language changes (thanks Evan Shaw). -* libcgo: initial mingw port work - builds but untested (thanks Joe Poirier). -* math: new functions and special cases (thanks Charles L. Dorian) -* net: use chan bool instead of chan *netFD to avoid cycle. -* netchan: allow client to send as well as receive. -* nntp: new package, NNTP client (thanks Conrad Meyer). -* os: rename os.Dir to os.FileInfo. -* rpc: don't log normal EOF, - fix ServeConn to block as documented. -* runtime: many bug fixes, better ARM support. -* strings: add IndexRune, Trim, TrimLeft, TrimRight, etc (thanks Michael Hoisie). -* syscall: implement some mingw syscalls required by os (thanks Alex Brainman). -* test/bench: add k-nucleotide-parallel (thanks Kyle Consalus). -* Unicode: add support for Turkish case mapping. -* xgb: move from the main repository to http://code.google.com/p/x-go-binding/ -
-This release contains three language changes: - -1. Accessing a non-existent key in a map is no longer a run-time error. -It now evaluates to the zero value for that type. For example: - x := myMap[i] is now equivalent to: x, _ := myMap[i] - -2. It is now legal to take the address of a function's return value. -The return values are copied back to the caller only after deferred -functions have run. - -3. The functions panic and recover, intended for reporting and recovering from -failure, have been added to the spec: - http://golang.org/doc/go_spec.html#Handling_panics -In a related change, panicln is gone, and panic is now a single-argument -function. Panic and recover are recognized by the gc compilers but the new -behavior is not yet implemented. - -The ARM build is broken in this release; ARM users should stay at release.2010-03-22. - -Other changes: -* bytes, strings: add IndexAny. -* cc/ld: Add support for #pragma dynexport, - Rename dynld to dynimport throughout. Cgo users will need to rerun cgo. -* expvar: default publishings for cmdline, memstats -* flag: add user-defined flag types. -* gc: usual bug fixes -* go/ast: generalized ast filtering. -* go/printer: avoid reflect in print. -* godefs: fix handling of negative constants. -* godoc: export pprof debug information, exported variables, - support for filtering of command-line output in -src mode, - use http GET for remote search instead of rpc. -* gofmt: don't convert multi-line functions into one-liners, - preserve newlines in multiline selector expressions (thanks Risto Jaakko Saarelma). -* goinstall: include command name in error reporting (thanks Andrey Mirtchovski) -* http: add HandleFunc as shortcut to Handle(path, HandlerFunc(func)) -* make: use actual dependency for install -* math: add J1, Y1, Jn, Yn, J0, Y0 (Bessel functions) (thanks Charles L. Dorian) -* prof: add pprof from google-perftools -* regexp: don't return non-nil *Regexp if there is an error. -* runtime: add Callers, - add malloc sampling, pprof interface, - add memory profiling, more statistics to runtime.MemStats, - implement missing destroylock() (thanks Alex Brainman), - more malloc statistics, - run all finalizers in a single goroutine, - Goexit runs deferred calls. -* strconv: add Atob and Btoa, - Unquote could wrongly return a nil error on error (thanks Roger Peppe). -* syscall: add IPV6 constants, - add syscall_bsd.go for Darwin and other *BSDs (thanks Giles Lean), - implement SetsockoptString (thanks Christopher Wedgwood). -* websocket: implement new protocol (thanks Fumitoshi Ukai). -* xgb: fix request length and request size (thanks Firmansyah Adiputra). -* xml: add CopyToken (thanks Kyle Consalus), - add line numbers to syntax errors (thanks Kyle Consalus), - use io.ReadByter in place of local readByter (thanks Raif S. Naffah). -- -
-With this release we announce the launch of the Go Blog: - http://blog.golang.org/ -The first post is a brief update covering what has happened since the launch. - -This release contains some new packages and functionality, and many fixes: -* 6g/8g: fix issues with complex data types, other bug fixes. -* Makefiles: refactored to make writing external Makefiles easier. -* crypto/rand: new package. -* godoc: implemented command-line search via RPC, - improved comment formatting: recognize URLs. -* gofmt: more consistent formatting of const/var decls. -* http: add Error helper function, - add ParseQuery (thanks Petar Maymounkov), - change RawPath to mean raw path, not raw everything-after-scheme. -* image/jpeg: fix typos. -* json: add MarshalIndent (accepts user-specified indent string). -* math: add Gamma function (thanks Charles L. Dorian). -* misc/bbedit: support for cmplx, real, imag (thanks Anthony Starks). -* misc/vim: add new complex types, functions and literals. -* net: fix IPMask.String not to crash on all-0xff mask. -* os: drop File finalizer after normal Close. -* runtime: add GOROOT and Version, - lock finalizer table accesses. -* sha512: add sha384 (truncated version) (thanks Conrad Meyer). -* syscall: add const ARCH, analogous to OS. -* syscall: further additions to mingw port (thanks Alex Brainman). -* template: fixed html formatter []byte input bug. -* utf16: new package. -* version.bash: cope with ancient Mercurial. -* websocket: use URL.RawPath to construct WebSocket-Location: header. -- -
-This release includes a language change: support for complex numbers. - http://golang.org/doc/go_spec.html#Imaginary_literals - http://golang.org/doc/go_spec.html#Complex_numbers -There is no library support as yet. - -This release also includes the goinstall command-line tool. - http://golang.org/cmd/goinstall/ - http://groups.google.com/group/golang-nuts/t/f091704771128e32 - -* 5g/6g/8g: fix double function call in slice. -* arm: cleanup build warnings. (thanks Dean Prichard) -* big: fix mistakes with probablyPrime. -* bufio: add WriteRune. -* bytes: add ReadRune and WriteRune to bytes.Buffer. -* cc: stack split bug fix. -* crypto: add SHA-224 to sha256, add sha512 package. (thanks Conrad Meyer) -* crypto/ripemd160: new package. (thanks Raif S. Naffah) -* crypto/rsa: don't use safe primes. -* gc: avoid fixed length buffer cleanbuf. (thanks Dean Prichard) - better compilation of floating point += - fix crash on complicated arg to make slice. - remove duplicate errors, give better error for I.(T) -* godoc: support for multiple packages in a directory, other fixes. -* gofmt: bug fixes. -* hash: add Sum64 interface. -* hash/crc32: add Update function. -* hash/crc64: new package implementing 64-bit CRC. -* math: add ilogb, logb, remainder. (thanks Charles L. Dorian) -* regexp: add ReplaceAllFunc, ReplaceAllStringFunc. -* runtime: clock garbage collection on bytes allocated, not pages in use. -* strings: make Split(s, "", n) faster. (thanks Spring Mc) -* syscall: minimal mingw version of syscall. (thanks Alex Brainman) -* template: add ParseFile, MustParseFile. -- -
-There is one language change: the ability to convert a string to []byte or -[]int. This deprecates the strings.Bytes and strings.Runes functions. -You can convert your existing sources using these gofmt commands: - gofmt -r 'strings.Bytes(x) -> []byte(x)' -w file-or-directory-list - gofmt -r 'strings.Runes(x) -> []int(x)' -w file-or-directory-list -After running these you might need to delete unused imports of the "strings" -package. - -Other changes and fixes: -* 6l/8l/5l: add -r option -* 8g: make a[byte(x)] truncate x -* codereview.py: fix for compatibility with hg >=1.4.3 -* crypto/blowfish: new package (thanks Raif S. Naffah) -* dashboard: more performance tuning -* fmt: use String method in %q to get the value to quote. -* gofmt: several cosmetic changes -* http: fix handling of Connection: close, bug in http.Post -* net: correct DNS configuration, - fix network timeout boundary condition, - put [ ] around IPv6 addresses for Dial. -* path: add Match, - fix bug in Match with non-greedy stars (thanks Kevin Ballard) -* strings: delete Bytes, Runes (see above) -* tests: an Eratosthenesque concurrent prime sieve (thanks Anh Hai Trinh) -- -
-This release is mainly bug fixes and a little new code. -There are no language changes. - -6g/5g/8g: bug fixes -8a/8l: Added FCMOVcc instructions (thanks Evan Shaw and Charles Dorian) -crypto/x509: support certificate creation -dashboard: caching to avoid datastore queries -exec: add dir argument to Run -godoc: bug fixes and code cleanups -http: continued implementation and bug fixes (thanks Petar Maymounkov) -json: fix quoted strings in Marshal (thanks Sergei Skorobogatov) -math: more functions, test cases, and benchmarks (thanks Charles L. Dorian) -misc/bbedit: treat predeclared identifiers as "keywords" (thanks Anthony Starks) -net: disable UDP server test (flaky on various architectures) -runtime: work around Linux kernel bug in futex, - pchw is now tiny -sync: fix to work on armv5 (thanks Dean Prichard) -websocket: fix binary frame size decoding (thanks Timo Savola) -xml: allow unquoted attribute values in non-Strict mode (thanks Amrut Joshi) - treat bool as value in Unmarshal (thanks Michael Hoisie) -- -
-There are two small language changes: -* NUL bytes may be rejected in souce files, and the tools do reject them. -* Conversions from string to []int and []byte are defined but not yet implemented. - -Other changes and fixes: -* 5a/6a/8a/5c/6c/8c: remove fixed-size arrays for -I and -D options (thanks Dean Prichard) -* 5c/6c/8c/5l/6l/8l: add -V flag to display version number -* 5c/6c/8c: use "cpp" not "/bin/cpp" for external preprocessor (thanks Giles Lean) -* 8a/8l: Added CMOVcc instructions (thanks Evan Shaw) -* 8l: pe executable building code changed to include import table for kernel32.dll functions (thanks Alex Brainman) -* 5g/6g/8g: bug fixes -* asn1: bug fixes and additions (incl marshalling) -* build: fix build for Native Client, Linux/ARM -* dashboard: show benchmarks, add garbage collector benchmarks -* encoding/pem: add marshalling support -* exp/draw: fast paths for a nil mask -* godoc: support for directories outside $GOROOT -* http: sort header keys when writing Response or Request to wire (thanks Petar Maymounkov) -* math: special cases and new functions (thanks Charles Dorian) -* mime: new package, used in http (thanks Michael Hoisie) -* net: dns bug fix - use random request id -* os: finalize File, to close fd. -* path: make Join variadic (thanks Stephen Weinberg) -* regexp: optimization bug fix -* runtime: misc fixes and optimizations -* syscall: make signature of Umask on OS X, FreeBSD match Linux. (thanks Giles Lean) -- -
-There is one language change: support for ...T parameters: - http://golang.org/doc/go_spec.html#Function_types - -You can now check build status on various platforms at the Go Dashboard: - http://godashboard.appspot.com - -* 5l/6l/8l: several minor fixes -* 5a/6a/8a/5l/6l/8l: avoid overflow of symb buffer (thanks Dean Prichard) -* compress/gzip: gzip deflater (i.e., writer) -* debug/proc: add mingw specific build stubs (thanks Joe Poirier) -* exp/draw: separate the source-point and mask-point in Draw -* fmt: handle nils safely in Printf -* gccgo: error messages now match those of gc -* godoc: several fixes -* http: bug fixes, revision of Request/Response (thanks Petar Maymounkov) -* image: new image.A type to represent anti-aliased font glyphs - add named colors (e.g. image.Blue), suitable for exp/draw -* io: fixed bugs in Pipe -* malloc: merge into package runtime -* math: fix tests on FreeBSD (thanks Devon H. O'Dell) - add functions; update tests and special cases (thanks Charles L. Dorian) -* os/signal: send SIGCHLDs to Incoming (thanks Chris Wedgwood) -* reflect: add StringHeader to reflect -* runtime: add SetFinalizer -* time: Sleep through interruptions (thanks Chris Wedgwood) - add RFC822 formats - experimental implemenation of Ticker using two goroutines for all tickers -* xml: allow underscores in XML element names (thanks Michael Hoisie) - allow any scalar type in xml.Unmarshal -- -
-There are two small language changes: the meaning of chan <- chan int -is now defined, and functions returning functions do not need to -parenthesize the result type. - -There is one significant implementation change: the compilers can -handle multiple packages using the same name in a single binary. -In the gc compilers, this comes at the cost of ensuring that you -always import a particular package using a consistent import path. -In the gccgo compiler, the cost is that you must use the -fgo-prefix -flag to pass a unique prefix (like the eventual import path). - -5a/6a/8a: avoid use of fixed-size buffers (thanks Dean Prichard) -5g, 6g, 8g: many minor bug fixes -bufio: give Writer.WriteString same signature as bytes.Buffer.WriteString. -container/list: PushFrontList, PushBackList (thanks Jan Hosang) -godoc: trim spaces from search query (thanks Christopher Wedgwood) -hash: document that Sum does not change state, fix crypto hashes -http: bug fixes, revision of Request/Response (thanks Petar Maymounkov) -math: more handling of IEEE 754 special cases (thanks Charles Dorian) -misc/dashboard: new build dashboard -net: allow UDP broadcast, - use /etc/hosts to resolve names (thanks Yves Junqueira, Michael Hoisie) -netchan: beginnings of new package for connecting channels across a network -os: allow FQDN in Hostname test (thanks Icarus Sparry) -reflect: garbage collection bug in Call -runtime: demo of Go on raw (emulated) hw in runtime/pchw, - performance fix on OS X -spec: clarify meaning of chan <- chan int, - func() func() int is allowed now, - define ... T (not yet implemented) -template: can use interface values -time: fix for +0000 time zone, - more robust tick.Stop. -xgb: support for authenticated connections (thanks Firmansyah Adiputra) -xml: add Escape (thanks Stephen Weinberg) -- -
-This release is mainly bug fixes with a little new code. -There are no language changes. - -build: $GOBIN should no longer be required in $PATH (thanks Devon H. O'Dell), - new package target "make bench" to run benchmarks -8g: faster float -> uint64 conversion (thanks Evan Shaw) -5g, 6g, 8g: - clean opnames.h to avoid stale errors (thanks Yongjian Xu), - a handful of small compiler fixes -5g, 6g, 8g, 5l, 6l, 8l: ignore $GOARCH, which is implied by name of tool -6prof: support for writing input files for google-perftools's pprof -asn1: fix a few structure-handling bugs -cgo: many bug fixes (thanks Devon H. O'Dell) -codereview: repeated "hg mail" sends "please take another look" -gob: reserve ids for future expansion -godoc: distinguish HTML generation from plain text HTML escaping (thanks Roger Peppe) -gofmt: minor bug fixes, removed -oldprinter flag -http: add CanonicalPath (thanks Ivan Krasin), - avoid header duplication in Response.Write, - correctly escape/unescape URL sections -io: new interface ReadByter -json: better error, pointer handling in Marshal (thanks Ivan Krasin) -libmach: disassembly of FUCOMI, etc (thanks Evan Shaw) -math: special cases for most functions and 386 hardware Sqrt (thanks Charles Dorian) -misc/dashboard: beginning of a build dashboard at godashboard.appspot.com. -misc/emacs: handling of new semicolon rules (thanks Austin Clements), - empty buffer bug fix (thanks Kevin Ballard) -misc/kate: highlighting improvements (tahnks Evan Shaw) -os/signal: add signal names: signal.SIGHUP, etc (thanks David Symonds) -runtime: preliminary Windows support (thanks Hector Chu), - preemption polling to reduce garbage collector pauses -scanner: new lightweight scanner package -template: bug fix involving spaces before a delimited block -test/bench: updated timings -time: new Format, Parse functions -- -
-This release is mainly bug fixes. There are no language changes. - -6prof: now works on 386 -8a, 8l: add FCOMI, FCOMIP, FUCOMI, and FUCOMIP (thanks Evan Shaw) -big: fix ProbablyPrime on small numbers -container/vector: faster []-based implementation (thanks Jan Mercl) -crypto/tls: extensions and Next Protocol Negotiation -gob: one encoding bug fix, one decoding bug fix -image/jpeg: support for RST markers -image/png: support for transparent paletted images -misc/xcode: improved support (thanks Ken Friedenbach) -net: return nil Conn on error from Dial (thanks Roger Peppe) -regexp: add Regexp.NumSubexp (thanks Peter Froehlich) -syscall: add Nanosleep on FreeBSD (thanks Devon H. O'Dell) -template: can use map in .repeated section - -There is now a public road map, in the repository and online -at http://golang.org/doc/devel/roadmap.html. -- -
-Since the last release there has been one large syntactic change to -the language, already discussed extensively on this list: semicolons -are now implied between statement-ending tokens and newline characters. -See http://groups.google.com/group/golang-nuts/t/5ee32b588d10f2e9 for -details. - -By default, gofmt now parses and prints the new lighter weight syntax. -To convert programs written in the old syntax, you can use: - - gofmt -oldparser -w *.go - -Since everything was being reformatted anyway, we took the opportunity to -change the way gofmt does alignment. Now gofmt uses tabs at the start -of a line for basic code alignment, but it uses spaces for alignment of -interior columns. Thus, in an editor with a fixed-width font, you can -choose your own tab size to change the indentation, and no matter what -tab size you choose, columns will be aligned properly. - - -In addition to the syntax and formatting changes, there have been many -smaller fixes and updates: - -6g,8g,5g: many bug fixes, better registerization, - build process fix involving mkbuiltin (thanks Yongjian Xu), - method expressions for concrete types -8l: support for Windows PE files (thanks Hector Chu) -bytes: more efficient Buffer handling -bytes, strings: new function Fields (thanks Andrey Mirtchovski) -cgo: handling of enums (thanks Moriyoshi Koizumi), - handling of structs with bit fields, multiple files (thanks Devon H. O'Dell), - installation of .so to non-standard locations -crypto/sha256: new package for SHA 256 (thanks Andy Davis) -encoding/binary: support for slices of fixed-size values (thanks Maxim Ushakov) -exp/vector: experimental alternate vector representation (thanks Jan Mercl) -fmt: %p for chan, map, slice types -gob: a couple more bug fixes -http: support for basic authentication (thanks Ivan Krasin) -image/jpeg: basic JPEG decoder -math: correct handling of Inf and NaN in Pow (thanks Charles Dorian) -misc/bash: completion file for bash (thanks Alex Ray) -os/signal: support for handling Unix signals (thanks David Symonds) -rand: Zipf-distributed random values (thanks William Josephson) -syscall: correct error return bug on 32-bit machines (thanks Christopher Wedgwood) -syslog: new package for writing to Unix syslog daemon (thanks Yves Junqueira) -template: will automatically invoke niladic methods -time: new ISO8601 format generator (thanks Ben Olive) -xgb: converted generator to new syntax (thanks Tor Andersson) -xml: better mapping of tag names to Go identifiers (thanks Kei Son), - better handling of unexpected EOF (thanks Arvindh Rajesh Tamilmani) -- -
-Since the last release there are two changes to the language: - -* new builtin copy(dst, src) copies n = min(len(dst), len(src)) - elements to dst from src and returns n. It works correctly - even if dst and src overlap. bytes.Copy is gone. - Convert your programs using: - gofmt -w -r 'bytes.Copy(d, s) -> copy(d, s)' *.go - -* new syntax x[lo:] is shorthand for x[lo:len(x)]. - Convert your programs using: - gofmt -w -r 'a[b:len(a)] -> a[b:]' *.go - -In addition, there have been many smaller fixes and updates: - -* 6g/8g/5g: many bug fixes -* 8g: fix 386 floating point stack bug (thanks Charles Dorian) -* all.bash: now works even when $GOROOT has spaces (thanks Sergio Luis O. B. Correia), - starting to make build work with mingw (thanks Hector Chu), - FreeBSD support (thanks Devon O'Dell) -* big: much faster on 386. -* bytes: new function IndexByte, implemented in assembly - new function Runes (thanks Peter Froehlich), - performance tuning in bytes.Buffer. -* codereview: various bugs fixed -* container/vector: New is gone; just declare a Vector instead. - call Resize to set len and cap. -* cgo: many bug fixes (thanks Eden Li) -* crypto: added MD4 (thanks Chris Lennert), - added XTEA (thanks Adrian O'Grady). -* crypto/tls: basic client -* exp/iterable: new functions (thanks Michael Elkins) -* exp/nacl: native client tree builds again -* fmt: preliminary performance tuning -* go/ast: more powerful Visitor (thanks Roger Peppe) -* gob: a few bug fixes -* gofmt: better handling of standard input, error reporting (thanks Fazlul Shahriar) - new -r flag for rewriting programs -* gotest: support for Benchmark functions (thanks Trevor Strohman) -* io: ReadFile, WriteFile, ReadDir now in separate package io/ioutil. -* json: new Marshal function (thanks Michael Hoisie), - better white space handling (thanks Andrew Skiba), - decoding into native data structures (thanks Sergey Gromov), - handling of nil interface values (thanks Ross Light). -* math: correct handling of sin/cos of large angles -* net: better handling of Close (thanks Devon O'Dell and Christopher Wedgwood) - support for UDP broadcast (thanks Jonathan Wills), - support for empty packets -* rand: top-level functions now safe to call from multiple goroutines -(thanks Roger Peppe). -* regexp: a few easy optimizations -* rpc: better error handling, a few bug fixes -* runtime: better signal handling on OS X, malloc fixes, - global channel lock is gone. -* sync: RWMutex now allows concurrent readers (thanks Péter Szabó) -* template: can use maps as data (thanks James Meneghello) -* unicode: updated to Unicode 5.2. -* websocket: new package (thanks Fumitoshi Ukai) -* xgb: preliminary X Go Bindings (thanks Tor Andersson) -* xml: fixed crash (thanks Vish Subramanian) -* misc: bbedit config (thanks Anthony Starks), - kate config (thanks Evan Shaw) -+
+The r56 release was the first stable release and corresponds to
+weekly.2011-03-07.1.
+The numbering starts at 56 because before this release,
+what we now consider weekly snapshots were called releases.
+
This page summarizes the changes between tagged weekly snapshots of Go. +For full details, see the Mercurial change log.
+ +Weekly snapshots occur often and may not be stable. +If stability of API and code is more important than having the +latest features, use the official releases instead.
+ +To update to a specific snapshot, use:
+ ++hg pull +hg update weekly.YYYY-MM-DD ++ +
+This release includes revisions to the reflect package to make it more +efficient, after the last weekly’s major API update. If your code uses reflect +it may require further changes, not all of which can be made automatically by +gofix. For the full details of the change, see + http://codereview.appspot.com/4435042 +Also, the Typeof and NewValue functions have been renamed to TypeOf and ValueOf. + +Other changes: +* 5c: make alignment rules match 5g, just like 6c matches 6g. +* 8g, 8l: fix "set but not used" gcc error (thanks Fazlul Shahriar). +* all-qemu.bash: remove DISABLE_NET_TESTS. +* build: remove DISABLE_NET_TESTS. +* builder: build multiple targets in parallel. +* cgo: avoid "incompatible pointer type" warning (thanks Albert Strasheim). +* codereview: add 'hg undo' command, various other fixes. +* compress/flate: dictionary support. +* compress/zlib: add FDICT flag in Reader/Writer (thanks Ross Light). +* container/heap: fix circular dependency in test. +* crypto/openpgp: better handling of keyrings. +* crypto/rsa: support > 3 primes. +* crypto/tls: add server-side OCSP stapling support. +* crypto/x509: memorize chain building. +* crypto: move certificate verification into x509. +* dashboard: build most recent revision first. +* doc: mention make version in install.html. +* expvar: add Func for functions that return values that are JSON marshalable. +* fmt: decrease recursion depth in tests to permit them to run under gccgo, + tweak the doc for %U. +* gc: allow complex types to be receiver types (thanks Robert Hencke), + correct handling of unexported method names in embedded interfaces, + explain why invalid receiver types are invalid, + fix copy([]int, string) error message (thanks Quan Yong Zhai), + fix 'invalid recursive type' error (thanks Lorenzo Stoakes), + many bug fixes. +* go spec: attempt at clarifying language for "append", + for map types, mention indexing operations. +* go/types: update for export data format change. +* gob: fix handling of indirect receivers for GobDecoders, + fix trivial bug in map marshaling, + have errorf always prefix the message with "gob: ", + test case for indirection to large field, + use new Implements and AssignableTo methods in reflect, + when decoding a string, allocate a string, not a []byte. +* gobuilder: permit builders of the form goos-goarch-foo, + respect MAKEFLAGS if provided (thanks Dave Cheney). +* godoc: use "search" input type for search box (thanks Dmitry Chestnykh). +* gofix: add support for reflect rename. +* gofmt: add -d (diff) (thanks David Crawshaw), + don't crash when rewriting nil interfaces in AST, + exclude test case that doesn't compile w/o errors, + gofmt test harness bug fix. +* goinstall: support GOPATH; building and installing outside the Go tree, + support building executable commands. +* gopack: fix prefix bug, + preserve safe flag when not adding unsafe objects to archive. +* gotest: add timing, respect $GOARCH, + generate gofmt-compliant code. +* http/cgi: copy some PATH environment variables to child, + improve Location response handling, + pass some default environment variables. +* http/fcgi: new package (thanks Evan Shaw). +* http: add NewRequest helper, + add MultipartForm, ParseMultipartForm, and FormFile to Request, + be clear when failing to connect to a proxy, + bug fixes and new tests, + consume request bodies before replying, + don't quote Set-Cookie Domain and Path (thanks Petar Maymounkov), + fix IP confusion in TestServerTimeouts, + handler timeout support, + ServerConn, ClientConn: add real Close (thanks Petar Maymounkov), + make Client redirect policy configurable, + put a limit on POST size, + reverse proxy handler. +* image/jpeg: add an encoder, + decode to a YCbCr image instead of an RGBA image. +* ioutil: add Discard. +* json: keep track of error offset in SyntaxError. +* ld: defend against some broken object files, + do not emit empty dwarf pe sections (thanks Alex Brainman), + fix 6l -d on Mac, diagnose invalid use of -d, + fix Plan 9 symbol table (thanks Anthony Martin), + remove MachoLoad limit. +* make: prevent rm provoking 'text file busy' errors (thanks Lorenzo Stoakes). +* mime/multipart: add ReadForm for parsing multipart forms, + limit line length to prevent abuse. +* mime: RFC 2231 continuation / non-ASCII support, + bunch more tests, few minor parsing fixes. +* misc/goplay: fix Tab and Shift+Enter in Firefox (thanks Dmitry Chestnykh). +* net: disable one more external network test, + fix EAI_BADFLAGS error on freebsd (thanks Mikio Hara), + fix ParseIP (thanks Quan Yong Zhai), + fix dialgoogle_test.go (thanks Quan Yong Zhai), + try /etc/hosts before loading DNS config (thanks Dmitry Chestnykh), + use C library resolver on FreeBSD, Linux, OS X / amd64, 386. +* os/user: new package to look up users. +* os: Open with O_APPEND|O_CREATE to append on Windows (thanks Alex Brainman), + fix race in ReadAt/WriteAt on Windows (thanks Alex Brainman), + turn EPIPE exit into panic. +* rc/env.bash: fix to build on windows under msys (thanks Joe Poirier). +* reflect: allow Slice of arrays, + fix Copy of arrays (thanks Gustavo Niemeyer), + require package qualifiers to match during interface check, + add Type.Implements, Type.AssignableTo, Value.CallSlice, + make Set match Go. +* rpc: allow the first argument of a method to be a value rather than a pointer, + run benchmarks over HTTP as well as direct network connections. +* run.bash: remove redundant rebuilds. +* runtime/plan9: warning remediation for Plan 9 (thanks Lucio De Re), +* runtime: many bug fixes, + fix GOMAXPROCS vs garbage collection bug (thanks Dmitriy Vyukov), + fix mkversion to output valid path separators (thanks Peter Mundy), + more graceful out-of-memory crash, + require package qualifiers to match during interface check, + skip functions with no lines when building src line table, + turn "too many EPIPE" into real SIGPIPE. +* src/pkg: make package doc comments consistently start with "Package foo". +* syscall: Madvise and Mprotect for Linux (thanks Albert Strasheim), + Mlock, Munlock, Mlockall, Munlockall on Linux (thanks Albert Strasheim), + add BPF support for darwin/386, darwin/amd64 (thanks Mikio Hara), + correct Windows CreateProcess input parameters (thanks Alex Brainman), + fix Ftruncate under linux/arm5 (thanks Dave Cheney), + permit StartProcess to hide the executed program on windows (thanks Vincent Vanackere). +* test/bench: update timings; moving to new machine. +* time: support Irix 6 location for zoneinfo files. +* tutorial: modernize the definition and use of Open, + replace the forever loops with finite counts in sieve programs. +* websocket: include *http.Request in websocket.Conn. +* xml: Parser hook for non-UTF-8 charset converters. ++ +
+weekly.2011-04-13 + +This weekly snapshot includes major changes to the reflect package and the +os.Open function. Code that uses reflect or os.Open will require updating, +which can be done mechanically using the gofix tool. + +The reflect package's Type and Value types have changed. Type is now an +interface that implements all the possible type methods. Instead of a type +switch on a reflect.Type t, switch on t.Kind(). Value is now a struct value +that implements all the possible value methods. Instead of a type switch on a +reflect.Value v, switch on v.Kind(). See the change for the full details: + http://code.google.com/p/go/source/detail?r=843855f3c026 + +The os package's Open function has been replaced by three functions: + OpenFile(name, flag, perm) // same as old Open + Open(name) // same as old Open(name, O_RDONLY, 0) + Create(name) // same as old Open(name, O_RDWR|O_TRUNC|O_CREAT, 0666) + +To update your code to use the new APIs, run "gofix path/to/code". Gofix can’t +handle all situations perfectly, so read and test the changes it makes before +committing them. + +Other changes: +* archive/zip: add func OpenReader, type ReadCloser (thanks Dmitry Chestnykh). +* asn1: Implement correct marshaling of length octets (thanks Luit van Drongelen). +* big: don't crash when printing nil ints. +* bufio: add ReadLine, to replace encoding/line. +* build: make the build faster, quieter. +* codereview: automatically port old diffs forward, + drop Author: line on self-clpatch, + recognize code URL without trailing slash. +* crypto/block: remove deprecated package. +* crypto/des: new package implementating DES and TDEA (thanks Yasuhiro Matsumoto). +* crypto/ecdsa, crypto/rsa: use io.ReadFull to read from random source (thanks Dmitry Chestnykh). +* crypto/rsa: add 3-prime support, + add support for precomputing CRT values, + flip the CRT code over so that it matches PKCS#1. +* crypto/x509: expose complete DER data (thanks Mikkel Krautz). +* doc: new "Functions" codewalk (thanks John DeNero). +* doc/roadmap: add sections on tools, packages. +* fmt: allow %U for unsigned integers. +* gc: fixes and optimizations. +* go/printer, gofmt: use blank to separate import rename from import path. +* go/scanner: better TokenString output. +* go/types: new Go type hierarchy implementation for AST. +* godashboard: show packages at launchpad.net (thanks Gustavo Niemeyer). +* gofix: add -diff, various fixes and helpers. +* gotest: fix a bug in error handling, + fixes for [^.]_test file pattern (thanks Peter Mundy), + handle \r\n returned by gomake on Windows (thanks Alex Brainman). +* gotype: use go/types GcImporter. +* govet: make name-matching for printf etc. case-insensitive. +* http: allow override of Content-Type for ServeFile, + client gzip support, + do not listen on 0.0.0.0 during test, + flesh out server Expect handling + tests. +* image/ycbcr: new package. +* image: allow "?" wildcards when registering image formats. +* io: fixes for Read with n > 0, os.EOF (thanks Robert Hencke). +* ld: correct Plan 9 compiler warnings (thanks Lucio De Re), + ELF header function declarations (thanks Lucio De Re), + fix Mach-O X86_64_RELOC_SIGNED relocations (thanks Mikkel Krautz), + fix Mach-O bss bug (thanks Mikkel Krautz), + fix dwarf decoding of strings for struct's fieldnames (thanks Luuk van Dijk), + fixes and optimizations (25% faster). +* log: generalize getting and setting flags and prefix. +* misc/cgo/life: enable build and test on Windows (thanks Alex Brainman). +* misc/vim: add plugin with Fmt command (thanks Dmitry Chestnykh), + update type highlighting for new reflect package. +* net: disable multicast tests by default (thanks Dave Cheney), + sort records returned by LookupMX (thanks Corey Thomasson). +* openpgp: Fix improper := shadowing (thanks Gustavo Niemeyer). +* os: rename Open to OpenFile, add new Open, Create, + fix Readdir in Plan 9 (thanks Fazlul Shahriar). +* os/inotify: use _test for test files, not _obj. +* pkg/path: enable tests on Windows (thanks Alex Brainman). +* reflect: new Type and Value API. +* src/pkg/Makefile: trim per-directory make output except on failure. +* syscall: Add DT_* and MADV_* constants on Linux (thanks Albert Strasheim), + add Mmap, Munmap on Linux, FreeBSD, OS X, + fix StartProcess in Plan 9 (thanks Fazlul Shahriar), + fix Windows Signaled (thanks Alex Brainman). +* test/bench: enable build and test on Windows (thanks Alex Brainman). ++ +
+This release includes changes to the net package. Your code will require
+changes if it uses the Dial or LookupHost functions.
+
+The laddr argument has been removed from net.Dial, and the cname return value
+has been removed from net.LookupHost. The new net.LookupCNAME function can be
+used to find the canonical host for a given name. You can update your
+networking code with gofix.
+
+The gotest shell script has been replaced by a Go program, making testing
+significantly faster.
+
+Other changes:
+* asn1: extensions needed for parsing Kerberos.
+* bufio: Write and WriteString cleanup (thanks Evan Shaw).
+* bytes, strings: simplify Join (thanks Evan Shaw).
+* crypto/cipher: bad CTR IV length now triggers panic.
+* crypto/tls: extend NPN support to the client,
+ added X509KeyPair function to parse a Certificate from memory.
+* crypto/x509: parse Extended Key Usage extension (thanks Mikkel Krautz).
+* debug/gosym: remove need for gotest to run preparatory commands.
+* fmt: implement precision (length of input) values for %q: %.20q.
+* go/parser: fix scoping for local type declarations (thanks Roger Peppe),
+ package name must not be the blank identifier.
+* go/printer, gofmt: remove special case for multi-line raw strings.
+* gopack: add P flag to remove prefix from filename information.
+* gotest: add -test.timeout option,
+ replace the shell script with the compiled program written in go,
+ execute gomake properly on Windows (thanks Alex Brainman).
+* gotry: move into its own directory, separate from gotest.
+* gotype: support for more tests, added one new test.
+* http: add Transport.MaxIdleConnsPerHost,
+ use upper case hex in URL escaping (thanks Matt Jones).
+* httptest: add NewTLSServer.
+* misc/kate: reorganize, remove closed() (thanks Evan Shaw).
+* misc/notepadplus: support for notepad++ (thanks Anthony Starks).
+* net: implement non-blocking connect (thanks Alexey Borzenkov).
+* os: fix MkdirAll("/thisdoesnotexist") (thanks Albert Strasheim),
+ Plan 9 support (thanks Yuval Pavel Zholkover),
+ add a few missing Plan 9 errors (thanks Andrey Mirtchovski),
+ fix FileInfo.Name returned by Stat (thanks David Forsythe).
+* path/filepath.Glob: add an error return,
+ don't drop known matches on error.
+* path/filepath: add support for Plan 9 (thanks Andrey Mirtchovski).
+* scanner: treat line comments like in Go.
+* syscall: Plan 9 support (thanks Yuval Pavel Zholkover),
+ StartProcess Chroot and Credential (thanks Albert Strasheim),
+ add BPF support for freebsd/386, freebsd/amd64 (thanks Mikio Hara),
+ make [Raw]Syscall6 pass 6th arg on linux/386 (thanks Evan Shaw).
+
+
++This weekly release includes improved support for testing. + +Memory and CPU profiling is now available via the gotest tool. Gotest will +produce memory and CPU profiling data when invoked with the -test.memprofile +and -test.cpuprofile flags. Run "godoc gotest" for details. + +We have also introduced a way for tests to run quickly when an exhaustive test +is unnecessary. Gotest’s new -test.short flag in combination with the testing +package’s new Short function allows you to write tests that can be run in +normal or "short" mode; short mode is now used by all.bash to reduce +installation time. +The Makefiles know about the flag - you can just run "make testshort". + +Other changes: +* .hgignore: Ignore all goinstalled packages (thanks Evan Shaw). +* build: add all-qemu.bash, handful of arm fixes, + add support for SWIG, and add two SWIG examples, + diagnose Ubuntu's buggy copy of gold, + handle broken awk in version.bash (thanks Dave Cheney), + reenable clean.bash without gomake (thanks Gustavo Niemeyer). +* cgo: fix index-out-of-bounds bug. +* codereview: permit CLs of the form weekly.DATE +* crypto/ecdsa: truncate hash values. +* crypto/openpgp: add DSA signature support. +* dashboard: remove old python/bash builder, update README. +* doc: explain release and weekly tags in install.html. +* exec: document dir option for Run (thanks Gustavo Niemeyer). +* flag: document Nflag function (thanks Fazlul Shahriar). +* gc: remove interim ... error which rejects valid code. +* go/ast: implemented NewPackage, + merge CaseClause and TypeCaseClause. +* go/parser: fix memory leak by making a copy of token literals, + resolve identifiers properly. +* go/printer, gofmt: avoid exponential layout algorithm, + gofmt: simplify struct formatting and respect line breaks. +* go/scanner: to interpret line comments with Windows filenames (thanks Alex Brainman). +* go/token: use array instead of map for token->string table. +* gob: optimizations to reduce allocations, + use pointers in bootstrapType so interfaces behave properly. +* gobuilder: recognize CLs of the form weekly.DATE. +* godefs: handle volatile. +* godoc: add -template flag to specify custom templates, + fix path problem for windows (thanks Yasuhiro Matsumoto). +* gofix: httpserver - rewrite rw.SetHeader to rw.Header.Set. +* gofmt: add profiling flag. +* gopprof: fix bug: do not rotate 180 degrees for large scrolls, + update list of memory allocation functions. +* gotest: fix gofmt issue in generated _testmain.go. +* http: add NewProxyClientConn, + avoid crash when asked for multiple file ranges, + don't chunk 304 responses, + export Transport, add keep-alive support. +* ld: return > 0 exit code on unsafe import. +* misc/bbedit: remove closed keyword (thanks Anthony Starks). +* misc/emacs: gofmt: don't clobber the current buffer on failure. +* misc/vim: remove 'closed' as a builtin function. +* net: add FileConn, FilePacketConn, FileListener (thanks Albert Strasheim), + don't force epoll/kqueue to wake up in order to add new events, + let OS-specific AddFD routine wake up polling thread, + use preallocated buffer for epoll and kqueue/kevent. +* path/filepath: add EvalSymlinks function, + fix TestEvalSymlinks when run under symlinked GOROOT. +* path: work for windows (thanks Yasuhiro Matsumoto). +* rpc: increase server_test timeout (thanks Gustavo Niemeyer), + optimizations to reduce allocations. +* runtime: fix darwin/amd64 thread VM footprint (thanks Alexey Borzenkov), + fix gdb support for goroutines, + more stack split fixes, + os-specific types and code for setitimer, + update defs.h for freebsd-386 (thanks Devon H. O'Dell). +* strings: Map: avoid allocation when string is unchanged. +* syscall: GetsockoptInt (thanks Albert Strasheim), + StartProcess fixes for windows (thanks Alex Brainman), + permit non-blocking syscalls, + rename from .sh to .pl, because these files are in Perl. +* test: enable tests using v, ok := <-ch syntax (thanks Robert Hencke). +* time: give a helpful message when we can't set the time zone for testing. + isolate syscall reference in sys.go. ++ +
+This week's release introduces a new release tagging scheme. We intend to
+continue with our weekly releases, but have renamed the existing tags from
+"release" to "weekly". The "release" tag will now be applied to one hand-picked
+stable release each month or two.
+
+The revision formerly tagged "release.2011-03-07.1" (now "weekly.2011-03-07.1")
+has been nominated our first stable release, and has been given the tag
+"release.r56". As we tag each stable release we will post an announcement to
+the new golang-announce mailing list:
+ http://groups.google.com/group/golang-announce
+
+You can continue to keep your Go installation updated using "hg update
+release", but now you should only need to update once we tag a new stable
+release, which we will announce here. If you wish to stay at the leading edge,
+you should switch to the weekly tag with "hg update weekly".
+
+
+This weekly release includes significant changes to the language spec and the
+http, os, and syscall packages. Your code may need to be changed. It also
+introduces the new gofix tool.
+
+The closed function has been removed from the language. The syntax for channel
+receives has been changed to return an optional second value, a boolean value
+indicating whether the channel is closed. This code:
+ v := <-ch
+ if closed(ch) {
+ // channel is closed
+ }
+should now be written as:
+ v, ok := <-ch
+ if !ok {
+ // channel is closed
+ }
+
+It is now illegal to declare unused labels, just as it is illegal to declare
+unused local variables.
+
+The new gofix tool finds Go programs that use old APIs and rewrites them to use
+newer ones. After you update to a new Go release, gofix helps make the
+necessary changes to your programs. Gofix will handle the http, os, and syscall
+package changes described below, and we will update the program to keep up with
+future changes to the libraries.
+
+The Hijack and Flush methods have been removed from the http.ResponseWriter
+interface and are accessible via the new http.Hijacker and http.Flusher
+interfaces. The RemoteAddr and UsingTLS methods have been moved from
+http.ResponseWriter to http.Request.
+
+The http.ResponseWriter interface's SetHeader method has been replaced by a
+Header() method that returns the response's http.Header. Caller code needs to
+change. This code:
+ rw.SetHeader("Content-Type", "text/plain")
+should now be written as:
+ rw.Header().Set("Content-Type", "text/plain")
+The os and syscall packages' StartProcess functions now take their final three
+arguments as an *os.ProcAttr and *syscall.ProcAttr values, respectively. This
+code:
+ os.StartProcess(bin, args, env, dir, fds)
+should now be written as:
+ os.StartProcess(bin, args, &os.ProcAttr{Files: fds, Dir: dir, Env: env})
+
+The gob package will now encode and decode values of types that implement the
+gob.GobEncoder and gob.GobDecoder interfaces. This allows types with unexported
+fields to transmit self-consistent descriptions; one instance is big.Int and
+big.Rat.
+
+Other changes:
+* 5l, 6l, 8l: reduce binary size about 40% by omitting symbols for type, string, go.string.
+* 5l, 8l: output missing section symbols (thanks Anthony Martin).
+* 6l, 8l: fix gdb crash.
+* Make.cmd: also clean _test* (thanks Gustavo Niemeyer).
+* big: implemented custom Gob(En/De)coder for Int type.
+* build: remove duplicate dependency in Make.cmd (thanks Robert Hencke),
+ run gotest in misc/cgo/test.
+* codereview.py: don't suggest change -d if user is not CL author (thanks Robert Hencke).
+* compress/lzw: benchmark a range of input sizes.
+* crypto/ecdsa: add package.
+* crypto/elliptic: add the N value of each curve.
+* crypto/openpgp: bug fixes and fix misnamed function.
+* crypto/tls: fix compile error (thanks Dave Cheney).
+* doc: Effective Go: some small cleanups,
+ update FAQ. hello, world is now 1.1MB, down from 1.8MB,
+ update codelab wiki to fix template.Execute argument order.
+* flag: visit the flags in sorted order, for nicer messages.
+* fmt: do not export EOF = -1.
+* fmt: make ScanState.Token more general (thanks Roger Peppe).
+* gc: diagnose unused labels,
+ fix handling of return values named _,
+ include all dependencies in export metadata,
+ make unsafe.Pointer its own kind of type, instead of an equivalent to *any.
+* go/ast, go/parser: populate identifier scopes at parse time.
+* go/ast: add FileSet parameter to ast.Print and ast.Fprint.
+* go/parser: first constant in a constant declaration must have a value.
+* gob: efficiency and reliability fixes.
+* gofmt: remove -trace and -ast flags.
+* goinstall: handle $(GOOS) and $(GOARCH) in filenames,
+ handle .c files with gc when cgo isn't used, and
+ handle .s files with gc (thanks Gustavo Niemeyer).
+* gopack: omit time stamps, makes output deterministic.
+* gotype: commandline tool to typecheck go programs.
+* govet: handle '*' in print format strings.
+* hash: new FNV-1a implementation (thanks Pascal S. de Kloe).
+* http/cgi: child support (e.g. Go CGI under Apache).
+* http: adapt Cookie code to follow IETF draft (thanks Petar Maymounkov),
+ add test for fixed HTTP/1.0 keep-alive issue,
+ don't hit external network in client_test.go,
+ fix transport crash when request URL is nil,
+ rename interface Transport to RoundTripper,
+ run tests even with DISABLE_NET_TESTS=1.
+* httptest: default the Recorder status code to 200 on a Write.
+* io/ioutil: clean-up of ReadAll and ReadFile.
+* ioutil: add NopCloser.
+* ld: preserve symbol sizes during data layout.
+* lib9, libmach: Change GOOS references to GOHOSTOS (thanks Evan Shaw).
+* libmach: correct string comparison to revive 6cov on darwin (thanks Dave Cheney).
+* misc/vim: Add indent script for Vim (thanks Ross Light).
+* net, os, syslog: fixes for Solaris support.
+* net: don't loop to drain wakeup pipe.
+* nm: document -S flag.
+* openpgp: add PublicKey KeyId string accessors.
+* rpc: optimizations, add benchmarks and memory profiling,
+ use httptest.Server for tests (thanks Robert Hencke).
+* runtime: reduce lock contention via wakeup on scheduler unlock,
+ scheduler, cgo reorganization,
+ split non-debugging malloc interface out of debug.go into mem.go.
+* spec: clarify return statement rules.
+* strings: add IndexRune tests, ASCII fast path,
+ better benchmark names; add BenchmarkIndex.
+* syscall: implement Mount and Unmount for linux,
+ implement Reboot for linux.
+* time: fix Time.ZoneOffset documentation (thanks Peter Mundy).
+* tls: move PeerCertificates to ConnectionState.
+
+
++This release includes changes to the reflect and path packages. +Code that uses reflect or path may need to be updated. + +The reflect package's Value.Addr method has been renamed to Value.UnsafeAddr. +Code that uses the Addr method will have to call UnsafeAddr instead. + +The path package has been split into two packages: path and path/filepath. +Package path manipulates slash-separated paths, regardless of operating system. +Package filepath implements the local operating system's native file paths. +OS-specific functioanlity in pacakge path, such as Walk, moved to filepath. + +Other changes: +* build: fixes and simplifications (thanks Dave Cheney), + move $GOBIN ahead of /bin, /usr/bin in build $PATH. +* bzip2: speed up decompression. +* cgo: fix dwarf type parsing (thanks Gustavo Niemeyer), + put temporary source files in _obj (thanks Roger Peppe), + fix bug involving 0-argument callbacks. +* compress/lzw: optimizations. +* doc: add FAQ about "implements", + add FAQ about large binaries , + add FAQ about stack vs heap allocation, + add internationalization to roadmap, + describe platform-specific conventions in code.html. +* fmt: allow recursive calls to Fscan etc (thanks Roger Peppe), + make %#p suppress leading 0x. +* gc, gopack: add some missing flags to the docs. +* gc: fix init of packages named main (thanks Gustavo Niemeyer), +* gob: make recursive map and slice types work, and other fixes. + tentative support for GobEncoder/GobDecoder interfaces. +* gobuilder: add -package flag to build external packages and -v for verbose. +* gofmt: exclude test file that is not legal Go. +* goinstall: protect against malicious filenames (thanks Roger Peppe). +* goyacc: provide -p flag to set prefix for names, documentation update. +* http: add cookie support (thanks Petar Maymounkov), + allow handlers to send non-chunked responses, + export ParseHTTPVersion, + expose Client's Transport, + use WriteProxy, + rename ClientTransport to Transport. +* http/cgi: new package. +* http/httptest: new package. +* image: add a decoding test for common file formats. +* io/ioutil: add TempDir. +* mime/multipart: Header changed from map to MIMEHeader +* path/filepath: new OS-specific path support (thanks Gustavo Niemeyer). +* reflect: add PtrTo, add Value.Addr (old Addr is now UnsafeAddr). +* runtime: use kernel-supplied compare-and-swap on linux/arm. +* spec: minor clarification of scope rule for functions. +* sync/atomic: new package to expose atomic operations. +* syscall: regenerate zerrors_freebsd_amd64.go (thanks Mikio Hara), + work around FreeBSD execve kernel bug (thanks Devon H. O'Dell). +* template: document the delimiters. +* testing: run GC before each benchmark run (thanks Roger Peppe). +* unsafe: fix the documentation. +* websocket: use httptest.Server for tests (thanks Robert Hencke). +* xml: permit nested directives (thanks Chris Dollin). ++ +
+This release includes changes to the http package and a small language change.
+Your code will require changes if it manipulates http Headers or omits the
+condition in if statements.
+
+The new http.Header type replaces map[string]string in the Header and Trailer
+fields of http.Request and http.Response.
+A Header value can be manipulated via its Get, Set, Add, and Del methods.
+See http://golang.org/pkg/http/#Header
+
+The condition is now mandatory in if statements.
+Previously it would default to true, as in switch and for statements.
+This code is now illegal:
+ if x := foo(); {
+ // code that is always executed
+ }
+The same effect can be achieved like this:
+ if x := foo(); true {
+ // code
+ }
+Or, in a simpler form:
+ {
+ x := foo()
+ // code
+ }
+
+Other changes:
+* 6l: new -Hwindowsgui flag allows to build windows gui pe (thanks Alex Brainman),
+ pe fixes (thanks Wei Guangjing).
+* 8l, 6l: allow for more os threads to be created on Windows (thanks Alex Brainman),
+* build: reduce the use of subshells in recursive make, and
+ remove unused NaCl conditional from make.bash (thanks Dave Cheney).
+* codereview: fix clpatch with empty diffs (thanks Gustavo Niemeyer).
+* compress/bzip2: add package.
+* compress/lzw: implement a decoder.
+* crypto/openpgp: add package.
+* crypto/rand: add read buffer to speed up small requests (thanks Albert Strasheim).
+* crypto/rsa: left-pad OAEP results when needed.
+* crypto/tls: make protocol negotiation failure fatal.
+* fmt: stop giving characters to the Scan method of Scanner when we hit a newline in Scanln.
+* gc: interface error message fixes,
+ make string const comparison unsigned (thanks Jeff R. Allen).
+* go spec: minor clarification on channel types.
+* go/ast, parser: condition in if statement is mandatory.
+* gob: compute information about a user's type once.
+ protect against pure recursive types.
+* godoc: accept symbolic links as path names provided to -path,
+ add robots.txt, log errors when reading filter files.
+* html: tokenize HTML comments.
+* http: add proxy support (thanks Yasuhiro Matsumoto),
+ implement with net/textproto (thanks Petar Maymounkov),
+ send full URL in proxy requests,
+ introduce start of Client and ClientTransport.
+* image/png: support for more formats (thanks Mikael Tillenius).
+* json: only use alphanumeric tags,
+ use base64 to encode []byte (thanks Roger Peppe).
+* ld: detect stack overflow due to NOSPLIT, drop rpath, support weak symbols.
+* misc/dashboard/builder: talk to hg with utf-8 encoding.
+* misc/dashboard: notify golang-dev on build failure.
+* net: *netFD.Read to return os.EOF on eof under windows (thanks Alex Brainman),
+ add IPv4 multicast to UDPConn (thanks Dave Cheney),
+ more accurate IPv4-in-IPv6 API test (thanks Mikio Hara),
+ reject invalid net:proto network names (thanks Olivier Antoine).
+* netchan: allow use of arbitrary connections (thanks Roger Peppe).
+* os: add ENODATA and ENOTCONN (thanks Albert Strasheim).
+* reflect: add a couple of sentences explaining how Methods operate,
+ add a secret method to ArrayOrSliceType to ensure it's only implemented by arrays and slices,
+ add pointer word to CommonType (placeholder for future work).
+* runtime-gdb.py: gdb pretty printer for go strings properly handles length.
+* runtime: various bug fixes, more complete stack traces,
+ record $GOROOT_FINAL for runtime.GOROOT.
+* spec: delete incorrect mention of selector working on pointer to interface type.
+* sync: add Cond (thanks Gustavo Niemeyer).
+* syscall: add MCL_* flags for mlockall (thanks Albert Strasheim),
+ implement chmod() for win32 (thanks Yasuhiro Matsumoto).
+* test/bench: update timings for new GC.
+* testing: rename cmdline flags to avoid conflicts (thanks Gustavo Niemeyer).
+* textproto: introduce Header type (thanks Petar Maymounkov).
+* websocket: use new interface to access Header.
+
+
++This release includes changes to the io, os, and template packages. +You may need to update your code. + +The io.ReadByter and io.ReadRuner interface types have been renamed to +io.ByteReader and io.RuneReader respectively. + +The os package's ForkExec function has been superseded by the new StartProcess +function and an API built around the Process type: + http://golang.org/pkg/os/#Process + +The order of arguments to template.Execute has been reversed to be consistent +the notion of "destination first", as with io.Copy, fmt.Fprint, and others. + +Gotest now works for package main in directories using Make.cmd-based makefiles. + +The memory allocation runtime problems from the last release are not completely +fixed. The virtual memory exhaustion problems encountered by people using +ulimit -v have been fixed, but there remain known garbage collector problems +when using GOMAXPROCS > 1. + +Other changes: +* 5l: stopped generating 64-bit eor. +* 8l: more work on plan9 support (thanks Yuval Pavel Zholkover). +* archive/zip: handle files with data descriptors. +* arm: working peep-hole optimizer. +* asn1: marshal true as 255, not 1. +* buffer.go: minor optimization, expanded comment. +* build: drop syslog on DISABLE_NET_TESTS=1 (thanks Gustavo Niemeyer), + allow clean.bash to work on fresh checkout, + change "all tests pass" message to be more obvious, + fix spaces in GOROOT (thanks Christopher Nielsen). +* bytes: fix bug in buffer.ReadBytes (thanks Evan Shaw). +* 5g: better int64 code, + don't use MVN instruction. +* cgo: don't run cgo when not compiling (thanks Gustavo Niemeyer), + fix _cgo_run timestamp file order (thanks Gustavo Niemeyer), + fix handling of signed enumerations (thanks Gustavo Niemeyer), + os/arch dependent #cgo directives (thanks Gustavo Niemeyer), + rename internal f to avoid conflict with possible C global named f. +* codereview: fix hgpatch on windows (thanks Yasuhiro Matsumoto), + record repository, base revision, + use cmd.communicate (thanks Yasuhiro Matsumoto). +* container/ring: replace Iter() with Do(). +* crypto/cipher: add resync open to OCFB mode. +* crypto/openpgp/armor: bug fixes. +* crypto/openpgp/packet: new subpackage. +* crypto/tls: load a chain of certificates from a file, + select best cipher suite, not worst. +* crypto/x509: add support for name constraints. +* debug/pe: ImportedSymbols fixes (thanks Wei Guangjing). +* doc/code: update to reflect that package names need not be unique. +* doc/codelab/wiki: a bunch of fixes (thanks Andrey Mirtchovski). +* doc/install: update for new versions of Mercurial. +* encoding/line: fix line returned after EOF. +* flag: allow hexadecimal (0xFF) and octal (0377) input for integer flags. +* fmt.Scan: scan binary-exponent floating format, 2.4p-3, + hexadecimal (0xFF) and octal (0377) integers. +* fmt: document %%; also %b for floating point. +* gc, ld: detect stale or incompatible object files, + package name main no longer reserved. +* gc: correct receiver in method missing error (thanks Lorenzo Stoakes), + correct rounding of denormal constants (thanks Eoghan Sherry), + select receive bug fix. +* go/printer, gofmt: smarter handling of multi-line raw strings. +* go/printer: line comments must always end in a newline, + remove notion of "Styler", remove HTML mode. +* gob: allow Decode(nil) and have it just discard the next value. +* godoc: use IsAbs to test for absolute paths (fix for win32) (thanks Yasuhiro Matsumoto), + don't hide package lookup error if there's no command with the same name. +* gotest: enable unit tests for main programs. +* http: add Server type supporting timeouts, + add pipelining to ClientConn, ServerConn (thanks Petar Maymounkov), + handle unchunked, un-lengthed HTTP/1.1 responses. +* io: add RuneReader. +* json: correct Marshal documentation. +* netchan: graceful handling of closed connection (thanks Graham Miller). +* os: implement new Process API (thanks Alex Brainman). +* regexp tests: make some benchmarks more meaningful. +* regexp: add support for matching against text read from RuneReader interface. +* rpc: make more tolerant of errors, properly discard values (thanks Roger Peppe). +* runtime: detect failed thread creation on Windows, + faster allocator, garbage collector, + fix virtual memory exhaustion, + implemented windows console ctrl handler (SIGINT) (thanks Hector Chu), + more detailed panic traces, line number work, + improved Windows callback handling (thanks Hector Chu). +* spec: adjust notion of Assignability, + allow import of packages named main, + clarification re: method sets of newly declared pointer types, + fix a few typos (thanks Anthony Martin), + fix Typeof() return type (thanks Gustavo Niemeyer), + move to Unicode 6.0. +* sync: diagnose Unlock of unlocked Mutex, + new Waitgroup type (thanks Gustavo Niemeyer). +* syscall: add SetsockoptIpMreq (thanks Dave Cheney), + add sockaddr_dl, sysctl with routing message support for darwin, freebsd (thanks Mikio Hara), + do not use NULL for zero-length read, write, + implement windows version of Fsync (thanks Alex Brainman), + make ForkExec acquire the ForkLock under windows (thanks Hector Chu), + make windows API return errno instead of bool (thanks Alex Brainman), + remove obsolete socket IO control (thanks Mikio Hara). +* template: add simple formatter chaining (thanks Kyle Consalus), + allow a leading '*' to indirect through a pointer. +* testing: include elapsed time in test output +* windows: replace remaining __MINGW32__ instances with _WIN32 (thanks Joe Poirier). ++ +
+This release includes significant changes to channel operations and minor
+changes to the log package. Your code will require modification if it uses
+channels in non-blocking communications or the log package's Exit functions.
+
+Non-blocking channel operations have been removed from the language.
+The equivalent operations have always been possible using a select statement
+with a default clause. If a default clause is present in a select, that clause
+will execute (only) if no other is ready, which allows one to avoid blocking on
+a communication.
+
+For example, the old non-blocking send operation,
+
+ if ch <- v {
+ // sent
+ } else {
+ // not sent
+ }
+
+should be rewritten as,
+
+ select {
+ case ch <- v:
+ // sent
+ default:
+ // not sent
+ }
+
+Similarly, this receive,
+
+ v, ok := <-ch
+ if ok {
+ // received
+ } else {
+ // not received
+ }
+
+should be rewritten as,
+
+ select {
+ case v := <-ch:
+ // received
+ default:
+ // not received
+ }
+
+This change is a prelude to redefining the 'comma-ok' syntax for a receive.
+In a later release, a receive expression will return the received value and an
+optional boolean indicating whether the channel has been closed. These changes
+are being made in two stages to prevent this semantic change from silently
+breaking code that uses 'comma-ok' with receives.
+There are no plans to have a boolean expression form for sends.
+
+Sends to a closed channel will panic immediately. Previously, an unspecified
+number of sends would fail silently before causing a panic.
+
+The log package's Exit, Exitf, and Exitln functions have been renamed Fatal,
+Fatalf, and Fatalln respectively. This brings them in line with the naming of
+the testing package.
+
+The port to the "tiny" operating system has been removed. It is unmaintained
+and untested. It was a toy to show that Go can run on raw hardware and it
+served its purpose. The source code will of course remain in the repository
+history, so it could be brought back if needed later.
+
+This release also changes some of the internal structure of the memory
+allocator in preparation for other garbage collector changes.
+If you run into problems, please let us know.
+There is one known issue that we are aware of but have not debugged yet:
+ http://code.google.com/p/go/issues/detail?id=1464&.
+
+Other changes in this release:
+* 5l: document -F, force it on old ARMs (software floating point emulation)
+* 6g: fix registerization of temporaries (thanks Eoghan Sherry),
+ fix uint64(uintptr(unsafe.Pointer(&x))).
+* 6l: Relocate CMOV* instructions (thanks Gustavo Niemeyer),
+ windows/amd64 port (thanks Wei Guangjing).
+* 8l: add PE dynexport, emit DWARF in Windows PE, and
+ code generation fixes (thanks Wei Guangjing).
+* bufio: make Flush a no-op when the buffer is empty.
+* bytes: Add Buffer.ReadBytes, Buffer.ReadString (thanks Evan Shaw).
+* cc: mode to generate go-code for types and variables.
+* cgo: define CGO_CFLAGS and CGO_LDFLAGS in Go files (thanks Gustavo Niemeyer),
+ windows/386 port (thanks Wei Guangjing).
+* codereview: fix windows (thanks Hector Chu),
+ handle file patterns better,
+ more ASCII vs. Unicode nonsense.
+* crypto/dsa: add support for DSA.
+* crypto/openpgp: add s2k.
+* crypto/rand: use defer to unlock mutex (thanks Anschel Schaffer-Cohen).
+* crypto/rsa: correct docstring for SignPKCS1v15.
+* crypto: add package, a common place to store identifiers for hash functions.
+* doc/codelab/wiki: update to work with template changes, add to run.bash.
+* doc/spec: clarify address operators.
+* ebnflint: exit with non-zero status on error.
+* encoding/base32: new package (thanks Miek Gieben).
+* encoding/line: make it an io.Reader too.
+* exec: use custom error for LookPath (thanks Gustavo Niemeyer).
+* fmt/doc: define width and precision for strings.
+* gc: clearer error for struct == struct,
+ fix send precedence,
+ handle invalid name in type switch,
+ special case code for single-op blocking and non-blocking selects.
+* go/scanner: fix build (adjust scanner EOF linecount).
+* gob: better debugging, commentary,
+ make nested interfaces work,
+ report an error when encoding a non-empty struct with no public fields.
+* godoc: full text index for whitelisted non-Go files,
+ show line numbers for non-go files (bug fix).
+* gofmt -r: match(...) arguments may be nil; add missing guards.
+* govet: add Panic to the list of functions.
+* http: add host patterns (thanks Jose Luis Vázquez González),
+ follow relative redirect in Get.
+* json: handle capital floating point exponent (1E100) (thanks Pieter Droogendijk).
+* ld: add -I option to set ELF interpreter,
+ more robust decoding of reflection type info in generating dwarf.
+* lib9: update to Unicode 6.0.0.
+* make.bash: stricter selinux test (don't complain unless it is enabled).
+* misc/vim: Import/Drop commands (thanks Gustavo Niemeyer),
+ set 'syntax sync' to a large value (thanks Yasuhiro Matsumoto).
+* net: fix race condition in test,
+ return cname in LookupHost.
+* netchan: avoid race condition in test,
+ fixed documentation for import (thanks Anschel Schaffer-Cohen).
+* os: add ETIMEDOUT (thanks Albert Strasheim).
+* runtime: generate Go defs for C types,
+ implementation of callback functions for windows (thanks Alex Brainman),
+ make Walk web browser example work (thanks Hector Chu),
+ make select fairer,
+ prefer fixed stack allocator over general memory allocator,
+ simpler heap map, memory allocation.
+* scanner: fix Position returned by Scan, Pos,
+ don't read ahead in Init.
+* suffixarray: use binary search for both ends of Lookup (thanks Eric Eisner).
+* syscall: add missing network interface constants (thanks Mikio Hara).
+* template: treat map keys as zero, not non-existent (thanks Roger Peppe).
+* time: allow cancelling of After events (thanks Roger Peppe),
+ support Solaris zoneinfo directory.
+* token/position: added SetLinesForContent.
+* unicode: update to unicode 6.0.0.
+* unsafe: add missing case to doc for Pointer.
+
+
++This release removes the float and complex types from the language. + +The default type for a floating point literal is now float64, and +the default type for a complex literal is now complex128. + +Existing code that uses float or complex must be rewritten to +use explicitly sized types. + +The two-argument constructor cmplx is now spelled complex. ++ +
+The 5g (ARM) compiler now has registerization enabled. If you discover it
+causes bugs, use 5g -N to disable the registerizer and please let us know.
+
+The xml package now allows the extraction of nested XML tags by specifying
+struct tags of the form "parent>child". See the XML documentation for an
+example: http://golang.org/pkg/xml/
+
+* 5a, 5l, 6a, 6l, 8a, 8l: handle out of memory, large allocations (thanks Jeff R. Allen).
+* 8l: pe changes (thanks Alex Brainman).
+* arm: fixes and improvements.
+* cc: fix vlong condition.
+* cgo: add complex float, complex double (thanks Sebastien Binet),
+ in _cgo_main.c define all provided symbols as functions.
+* codereview: don't mail change lists with no files (thanks Ryan Hitchman).
+* crypto/cipher: add OFB mode.
+* expvar: add Float.
+* fmt: document %X of string, []byte.
+* gc, runtime: make range on channel safe for multiple goroutines.
+* gc: fix typed constant declarations (thanks Anthony Martin).
+* go spec: adjust language for constant typing.
+* go/scanner: Make Init take a *token.File instead of a *token.FileSet.
+* godoc: bring back "indexing in progress" message,
+ don't double HTML-escape search result snippets,
+ enable qualified identifiers ("math.Sin") as query strings again,
+ peephole optimization for generated HTML,
+ remove tab before formatted section.
+* gofmt, go/printer: do not insert extra line breaks where they may break the code.
+* http: fix Content-Range and Content-Length in response (thanks Clement Skau),
+ fix scheme-relative URL parsing; add ParseRequestURL,
+ handle HEAD requests correctly,
+ support for relative URLs.
+* math: handle denormalized numbers in Frexp, Ilogb, Ldexp, and Logb (thanks Eoghan Sherry).
+* net, syscall: return source address in Recvmsg (thanks Albert Strasheim).
+* net: add LookupAddr (thanks Kyle Lemons),
+ add unixpacket (thanks Albert Strasheim),
+ avoid nil dereference if /etc/services can't be opened (thanks Corey Thomasson),
+ implement windows timeout (thanks Wei Guangjing).
+* netchan: do not block sends; implement flow control (thanks Roger Peppe).
+* regexp: reject bare '?'. (thanks Ben Lynn)
+* runtime/cgo: don't define crosscall2 in dummy _cgo_main.c.
+* runtime/debug: new package for printing stack traces from a running goroutine.
+* runtime: add per-pause gc stats,
+ fix arm reflect.call boundary case,
+ print signal information during panic.
+* spec: specify that int and uint have the same size.
+* syscall: correct WSTOPPED on OS X,
+ correct length of GNU/Linux abstract Unix domain sockaddr,
+ correct length of SockaddrUnix.
+* tutorial: make stdin, stdout, stderr work on Windows.
+* windows: implement exception handling (thanks Hector Chu).
+
+
++The json, gob, and template packages have changed, and code that uses them +may need to be updated after this release. They will no longer read or write +unexported struct fields. When marshalling a struct with json or gob the +unexported fields will be silently ignored. Attempting to unmarshal json or +gob data into an unexported field will generate an error. Accessing an +unexported field from a template will cause the Execute function to return +an error. + +Godoc now supports regular expression full text search, and this +functionality is now available on golang.org. + +Other changes: +* arm: initial cut at arm optimizer. +* bytes.Buffer: Fix bug in UnreadByte. +* cgo: export unsafe.Pointer as void*, fix enum const conflict, + output alignment fix (thanks Gustavo Niemeyer). +* crypto/block: mark as deprecated. +* crypto/openpgp: add error and armor. +* crypto: add twofish package (thanks Berengar Lehr). +* doc/spec: remove Maxalign from spec. +* encoding/line: new package for reading lines from an io.Reader. +* go/ast: correct end position for Index and TypeAssert expressions. +* gob: make (en|dec)code(Ui|I)nt methods rather than functions. +* godefs: better handling of enums. +* gofmt: don't attempt certain illegal rewrites, + rewriter matches apply to expressions only. +* goinstall: preliminary support for cgo packages (thanks Gustavo Niemeyer). +* hg: add cgo/_cgo_* to .hgignore. +* http: fix text displayed in Redirect. +* ld: fix exported dynamic symbols on Mach-O, + permit a Mach-O symbol to be exported in the dynamic symbol table. +* log: add methods for exit and panic. +* net: use closesocket api instead of CloseHandle on Windows (thanks Alex Brainman). +* netchan: make fields exported for gob change. +* os: add Sync to *File, wraps syscall.Fsync. +* runtime/cgo: Add callbacks to support SWIG. +* runtime: Restore scheduler stack position if cgo callback panics. +* suffixarray: faster creation algorithm (thanks Eric Eisner). +* syscall: fix mksysnum_linux.sh (thanks Anthony Martin). +* time.NewTicker: panic for intervals <= 0. +* time: add AfterFunc to call a function after a duration (thanks Roger Peppe), + fix tick accuracy when using multiple Tickers (thanks Eoghan Sherry).+ +
+This release includes several fixes and changes: + +* build: Make.pkg: use installed runtime.h for cgo. +* cgo: disallow use of C.errno. +* crypto/cipher: fix OCFB, + make NewCBCEncrypter return BlockMode. +* doc: 6l: fix documentation of -L flag, + add golanguage.ru to foreign-language doc list, + effective go: explain the effect of repanicking better, + update Effective Go for template API change, + update contribution guidelines to prefix the change description. +* encoding/binary: reject types with implementation-dependent sizes (thanks Patrick Gavlin). +* exp/evalsimple fix handling of slices like s[:2] (thanks Sebastien Binet). +* fmt: made format string handling more efficient, + normalize processing of format string. +* gc: return constant floats for parts of complex constants (thanks Anthony Martin), + rewrite complex /= to l = l / r (thanks Patrick Gavlin), + fix &^=. +* go/ast: provide complete node text range info. +* gob: generate a better error message in one confusing place. +* godoc: fix godoc -src (thanks Icarus Sparry). +* goinstall: add -clean flag (thanks Kyle Lemons), + add checkout concept (thanks Caine Tighe), + fix -u for bzr (thanks Gustavo Niemeyer). +* http: permit empty Reason-Phrase in response Status-Line. +* io: fix Copyn EOF handling. +* net: fix close of Listener (thanks Michael Hoisie). +* regexp: fix performance bug, make anchored searches fail fast, + fix prefix bug. +* runtime/cgo: fix stackguard on FreeBSD/amd64 (thanks Anthony Martin). +* strconv: atof: added 'E' as valid token for exponent (thanks Stefan Nilsson), + update ftoa comment for 'E' and 'G'. +* strings: fix description of FieldsFunc (thanks Roger Peppe). +* syscall: correct Linux Splice definition, + make Access second argument consistently uint32. ++ +
+A small release this week. The most significant change is that some
+outstanding cgo issues were resolved.
+
+* cgo: handle references to symbols in shared libraries.
+* crypto/elliptic: add serialisation and key pair generation.
+* crypto/hmac: add HMAC-SHA256 (thanks Anthony Martin).
+* crypto/tls: add ECDHE support ("Elliptic Curve Diffie Hellman Ephemeral"),
+ add support code for generating handshake scripts for testing.
+* darwin, freebsd: ignore write failure (during print, panic).
+* exp/draw: remove Border function.
+* expvar: quote StringFunc output, same as String output.
+* hash/crc64: fix typo in Sum.
+* ld: allow relocations pointing at ELF .bss symbols, ignore stab symbols.
+* misc/cgo/life: fix, add to build.
+* regexp: add HasMeta, HasOperator, and String methods to Regexp.
+* suffixarray: implemented FindAllIndex regexp search.
+* test/bench: update numbers for regex-dna after speedup to regexp.
+* time: explain the formats a little better.
+
+
++Package crypto/cipher has been started, to replace crypto/block. +As part of the changes, rc4.Cipher's XORKeyStream method signature has changed from + XORKeyStream(buf []byte) +to + XORKeyStream(dst, src []byte) +to implement the cipher.Stream interface. If you use crypto/block, you'll need +to switch to crypto/cipher once it is complete. + +Package smtp's StartTLS now takes a *tls.Config argument. + +Package reflect's ArrayCopy has been renamed to Copy. There are new functions +Append and AppendSlice. + +The print/println bootstrapping functions now write to standard error. +To write to standard output, use fmt.Print[ln]. + +A new tool, govet, has been added to the Go distribution. Govet is a static +checker for Go programs. At the moment, and for the forseeable future, +it only checks arguments to print calls. + +The cgo tool for writing Go bindings for C code has changed so that it no +longer uses stub .so files (like cgo_stdio.so). Cgo-based packages using the +standard Makefiles should build without any changes. Any alternate build +mechanisms will need to be updated. + +The C and Go compilers (6g, 6c, 8g, 8c, 5g, 5c) now align structs according to +the maximum alignment of the fields they contain; previously they aligned +structs to word boundaries. This may break non-cgo-based code that attempts to +mix C and Go. + +NaCl support has been removed. The recent linker changes broke NaCl support +a month ago, and there are no known users of it. +If necessary, the NaCl code can be recovered from the repository history. + +* 5g/8g, 8l, ld, prof: fix output of 32-bit values (thanks Eoghan Sherry). +* [68]l and runtime: GDB support for interfaces and goroutines. +* 6l, 8l: support for linking ELF and Mach-O .o files. +* all: simplify two-variable ranges with unused second variable (thanks Ryan Hitchman). +* arm: updated soft float support. +* codereview: keep quiet when not in use (thanks Eoghan Sherry). +* compress/flate: implement Flush, equivalent to zlib's Z_SYNC_FLUSH. +* crypto/tls: use rand.Reader in cert generation example (thanks Anthony Martin). +* dashboard: fix project tag filter. +* debug/elf, debug/macho: add ImportedLibraries, ImportedSymbols. +* doc/go_mem: goroutine exit is not special. +* event.go: another print glitch from gocheck. +* gc: bug fixes, + syntax error for incomplete chan type (thanks Ryan Hitchman). +* go/ast: fix ast.Walk. +* gob: document the byte count used in the encoding of values, + fix bug sending zero-length top-level slices and maps, + Register should use the original type, not the indirected one. +* godashboard: support submitting projects with non-ascii names (thanks Ryan Hitchman) +* godefs: guard against structs with pad fields +* godoc: added textual search, to enable use -fulltext flag. +* gofmt: simplify "x, _ = range y" to "x = range y". +* gopack: allow ELF/Mach-O objects in .a files without clearing allobj. +* go/token,scanner: fix comments so godoc aligns properly. +* govet: on error continue to the next file (thanks Christopher Wedgwood). +* html: improved parsing. +* http: ServeFile handles Range header for partial requests. +* json: check for invalid UTF-8. +* ld: allow .o files with no symbols, + reading of ELF object files, + reading of Mach-O object files. +* math: change float64 bias constant from 1022 to 1023 (thanks Eoghan Sherry), + rename the MinFloat constant to SmallestNonzeroFloat. +* nm: silently ignore .o files in .a files. +* os: fix test of RemoveAll. +* os/inotify: new package (thanks Balazs Lecz). +* os: make MkdirAll work with symlinks (thanks Ryan Hitchman). +* regexp: speed up by about 30%; also simplify code for brackets. +* runtime/linux/386: set FPU to 64-bit precision. +* runtime: remove paranoid mapping at 0. +* suffixarray: add Bytes function. +* syscall: add network interface constants for linux/386, linux/amd64 (thanks Mikio Hara). +* syscall/windows: restrict access rights param of OpenProcess(), + remove \r and \n from error messages (thanks Alex Brainman). +* test/bench: fixes to timing.sh (thanks Anthony Martin). +* time: fix bug in Ticker: shutdown using channel rather than memory. +* token/position: provide FileSet.File, provide files iterator. +* xml: disallow invalid Unicode code points (thanks Nigel Kerr). ++ +
+This release includes some package changes. If you use the crypto/tls or +go/parser packages your code may require changes. + +The crypto/tls package's Dial function now takes an additional *Config +argument. Most uses will pass nil to get the same default behavior as before. +See the documentation for details: + http://golang.org/pkg/crypto/tls/#Config + http://golang.org/pkg/crypto/tls/#Dial + +The go/parser package's ParseFile function now takes a *token.FileSet as its +first argument. This is a pointer to a data structure used to store +position information. If you don't care about position information you +can pass "token.NewFileSet()". See the documentation for details: + http://golang.org/pkg/go/parser/#ParseFile + +This release also splits the patent grant text out of the LICENSE file into a +separate PATENTS file and changes it to be more like the WebM grant. +These clarifications were made at the request of the Fedora project. + +Other changes: +* [68]l: generate debug info for builtin structured types, prettyprinting in gdb. +* 8l: add dynimport to import table in Windows PE (thanks Wei Guangjing). +* 8l, runtime: fix Plan 9 386 build (thanks Yuval Pavel Zholkover). +* all: fix broken calls to Printf etc. +* bufio: make Reader.Read implement io.Reader semantics (thanks Roger Peppe). +* build: allow archiver to be specified by HOST_AR (thanks Albert Strasheim). +* bytes: add Buffer.UnreadRune, Buffer.UnreadByte (thanks Roger Peppe). +* crypto/tls: fix build of certificate generation example (thanks Christian Himpel). +* doc/install: describe GOHOSTOS and GOHOSTARCH. +* errchk: accept multiple source files (thanks Eoghan Sherry). +* exec.LookPath: return os.PathError instad of os.ENOENT (thanks Michael Hoisie).. +* flag: fix format error in boolean error report, + handle multiple calls to flag.Parse. +* fmt: add %U format for standard Unicode representation of code point values. +* gc: fix method offsets of anonymous interfaces (thanks Eoghan Sherry), + skip undefined symbols in import . (thanks Eoghan Sherry). +* go/scanner: remove Tokenize - was only used in tests +* gobuilder: add buildroot command-line flag (thanks Devon H. O'Dell). +* html: unescape numeric entities (thanks Ryan Hitchman). +* http: Add EncodeQuery, helper for constructing query strings. +* ld: fix dwarf decoding of 64-bit reflect values (thanks Eoghan Sherry). +* math: improve accuracy of Exp2 (thanks Eoghan Sherry). +* runtime: add Goroutines (thanks Keith Rarick). +* sync: small naming fix for armv5 (thanks Dean Prichard). +* syscall, net: Add Recvmsg and Sendmsg on Linux (thanks Albert Strasheim). +* time: make After use fewer goroutines and host processes (thanks Roger Peppe). ++ +
+Several package changes in this release may require you to update your code if
+you use the bytes, template, or utf8 packages. In all cases, any outdated code
+will fail to compile rather than behave erroneously.
+
+The bytes package has changed. Its Add and AddByte functions have been removed,
+as their functionality is provided by the recently-introduced built-in function
+"append". Any code that uses them will need to be changed:
+s = bytes.Add(s, b) -> s = append(s, b...)
+s = bytes.AddByte(b, c) -> s = append(s, b)
+s = bytes.Add(nil, c) -> append([]byte(nil), c)
+
+The template package has changed. Your code will need to be updated if it calls
+the HTMLFormatter or StringFormatter functions, or implements its own formatter
+functions. The function signature for formatter types has changed to:
+ func(wr io.Writer, formatter string, data ...interface{})
+to allow multiple arguments to the formatter. No templates will need updating.
+See the change for examples:
+ http://code.google.com/p/go/source/detail?r=2c2be793120e
+
+The template change permits the implementation of multi-word variable
+instantiation for formatters. Before one could say
+ {field}
+or
+ {field|formatter}
+Now one can also say
+ {field1 field2 field3}
+or
+ {field1 field2 field3|formatter}
+and the fields are passed as successive arguments to the formatter,
+by analogy to fmt.Print.
+
+The utf8 package has changed. The order of EncodeRune's arguments has been
+reversed to satisfy the convention of "destination first".
+Any code that uses EncodeRune will need to be updated.
+
+Other changes:
+* [68]l: correct dwarf location for globals and ranges for arrays.
+* big: fix (*Rat) SetFrac64(a, b) when b < 0 (thanks Eoghan Sherry).
+* compress/flate: fix typo in comment (thanks Mathieu Lonjaret).
+* crypto/elliptic: use a Jacobian transform for better performance.
+* doc/code.html: fix reference to "gomake build" (thanks Anschel Schaffer-Cohen).
+* doc/roadmap: update gdb status.
+* doc/spec: fixed some omissions and type errors.
+* doc: some typo fixes (thanks Peter Mundy).
+* exp/eval: build fix for parser.ParseFile API change (thanks Anschel Schaffer-Cohen).
+* fmt: Scan accepts Inf and NaN,
+ allow "% X" as well as "% x".
+* go/printer: preserve newlines in func parameter lists (thanks Jamie Gennis).
+* http: consume request body before next request.
+* log: ensure writes are atomic (thanks Roger Peppe).
+* path: Windows support for Split (thanks Benny Siegert).
+* runtime: fix SysFree to really free memory on Windows (thanks Alex Brainman),
+ parallel definitions in Go for all C structs.
+* sort: avoid overflow in pivot calculation,
+ reduced stack depth to lg(n) in quickSort (thanks Stefan Nilsson).
+* strconv: Atof on Infs and NaNs.
+
+
++This release includes a backwards-incompatible package change to the +sort.Search function (introduced in the last release). +See the change for details and examples of how you might change your code: + http://code.google.com/p/go/source/detail?r=102866c369 + +* build: automatically #define _64BIT in 6c. +* cgo: print required space after parameter name in wrapper function. +* crypto/cipher: new package to replace crypto/block (thanks Adam Langley). +* crypto/elliptic: new package, implements elliptic curves over prime fields (thanks Adam Langley). +* crypto/x509: policy OID support and fixes (thanks Adam Langley). +* doc: add link to codewalks, + fix recover() documentation (thanks Anschel Schaffer-Cohen), + explain how to write Makefiles for commands. +* exec: enable more tests on windows (thanks Alex Brainman). +* gc: adjustable hash code in typecheck of composite literals + (thanks to vskrap, Andrey Mirtchovski, and Eoghan Sherry). +* gc: better error message for bad type in channel send (thanks Anthony Martin). +* godoc: bug fix in relativePath, + compute search index for all file systems under godoc's observation, + use correct time stamp to indicate accuracy of search result. +* index/suffixarray: use sort.Search. +* net: add ReadFrom and WriteTo windows version (thanks Wei Guangjing). +* reflect: remove unnecessary casts in Get methods. +* rpc: add RegisterName to allow override of default type name. +* runtime: free memory allocated by windows CommandLineToArgv (thanks Alex Brainman). +* sort: simplify Search (thanks Roger Peppe). +* strings: add LastIndexAny (thanks Benny Siegert). ++ +
+The birthday release includes a new Search capability inside the sort package. +It takes an unusual but very general and easy-to-use approach to searching +arbitrary indexable sorted data. See the documentation for details: + http://golang.org/pkg/sort/#Search + +The ARM port now uses the hardware floating point unit (VFP). It still has a +few bugs, mostly around conversions between unsigned integer and floating-point +values, but it's stabilizing. + +In addition, there have been many smaller fixes and updates: + +* 6l: generate dwarf variable names with disambiguating suffix. +* container/list: make Remove return Value of removed element. + makes it easier to remove first or last item. +* crypto: add cast5 (default PGP cipher), + switch block cipher methods to be destination first. +* crypto/tls: use pool building for certificate checking +* go/ast: change embedded token.Position fields to named fields + (preparation for a different position representation) +* net: provide public access to file descriptors (thanks Keith Rarick) +* os: add Expand function to evaluate environment variables. +* path: add Glob (thanks Benny Siegert) +* runtime: memequal optimization (thanks Graham Miller) + prefix all external symbols with "runtime·" to avoid + conflicts linking with external C libraries. ++ +
+This release includes a language change: the new built-in function, append. +Append makes growing slices much simpler. See the spec for details: + http://golang.org/doc/go_spec.html#Appending_and_copying_slices + +Other changes: +* 8l: pe generation fixes (thanks Alex Brainman). +* doc: Effective Go: append and a few words about "..." args. +* build: fiddle with make variables. +* codereview: fix sync and download in Python 2.7 (thanks Fazlul Shahriar). +* debug/pe, cgo: add windows support (thanks Wei Guangjing). +* go/ast: add Inspect function for easy AST inspection w/o a visitor. +* go/printer: do not remove parens around composite literals starting with + a type name in control clauses. +* go/scanner: bug fixes, revisions, and more tests. +* gob: several fixes and documentation updates. +* godoc: bug fix (bug introduced with revision 3ee58453e961). +* gotest: print empty benchmark list in a way that gofmt will leave alone. +* http server: correctly respond with 304 NotModified (thanks Michael Hoisie). +* kate: update list of builtins (thanks Evan Shaw). +* libutf: update to Unicode 5.2.0 to match pkg/unicode (thanks Anthony Martin). +* misc/bbedit: update list of builtins (thanks Anthony Starks). +* misc/vim: update list of builtins. +* mkrunetype: install a Makefile and tweak it slightly so it can be built. +* netchan: fix locking bug. +* pidigits: minor improvements (thanks Evan Shaw). +* rpc: fix client deadlock bug. +* src: use append where appropriate (often instead of vector). +* strings: add Contains helper function (thanks Brad Fitzpatrick). +* syscall: SIO constants for Linux (thanks Albert Strasheim), + Stat(path) on windows (thanks Alex Brainman). +* test/ken/convert.go: add conversion torture test. +* testing: add Benchmark (thanks Roger Peppe). ++ +
+*** This release changes the encoding used by package gob.
+ If you store gobs on disk, see below. ***
+
+The ARM port (5g) now passes all tests. The optimizer is not yet enabled, and
+floating point arithmetic is performed entirely in software. Work is underway
+to address both of these deficiencies.
+
+The syntax for arrays, slices, and maps of composite literals has been
+simplified. Within a composite literal of array, slice, or map type, elements
+that are themselves composite literals may elide the type if it is identical to
+the outer literal's element type. For example, these expressions:
+ [][]int{[]int{1, 2, 3}, []int{4, 5}}
+ map[string]Point{"x": Point{1.5, -3.5}, "y": Point{0, 0}}
+can be simplified to:
+ [][]int{{1, 2, 3}, {4, 5}}
+ map[string]Point{"x": {1.5, -3.5}, "y": {0, 0}}
+Gofmt can make these simplifications mechanically when invoked with the
+new -s flag.
+
+The built-in copy function can now copy bytes from a string value to a []byte.
+Code like this (for []byte b and string s):
+ for i := 0; i < len(s); i++ {
+ b[i] = s[i]
+ }
+can be rewritten as:
+ copy(b, s)
+
+The gob package can now encode and decode interface values containing types
+registered ahead of time with the new Register function. These changes required
+a backwards-incompatible change to the wire format. Data written with the old
+version of the package will not be readable with the new one, and vice versa.
+(Steps were made in this change to make sure this doesn't happen again.)
+We don't know of anyone using gobs to create permanent data, but if you do this
+and need help converting, please let us know, and do not update to this release
+yet. We will help you convert your data.
+
+Other changes:
+* 5g, 6g, 8g: generate code for string index instead of calling function.
+* 5l, 6l, 8l: introduce sub-symbols.
+* 6l/8l: global and local variables and type info.
+* Make.inc: delete unnecessary -fno-inline flag to quietgcc.
+* arm: precise float64 software floating point, bug fixes.
+* big: arm assembly, faster software mulWW, divWW.
+* build: only print "You need to add foo to PATH" when needed.
+* container/list: fix Remove bug and use pointer to self as identifier.
+* doc: show page title in browser title bar,
+ update roadmap.
+* encoding/binary: give LittleEndian, BigEndian specific types.
+* go/parser: consume auto-inserted semi when calling ParseExpr().
+* gobuilder: pass GOHOSTOS and GOHOSTARCH to build,
+ write build and benchmarking logs to disk.
+* goinstall: display helpful message when encountering a cgo package,
+ fix test for multiple package names (thanks Fazlul Shahriar).
+* gotest: generate correct gofmt-formatted _testmain.go.
+* image/png: speed up paletted encoding ~25% (thanks Brad Fitzpatrick).
+* misc: update python scripts to specify python2 as python3 is now "python".
+* net: fix comment on Dial to mention unix/unixgram.
+* rpc: expose Server type to allow multiple RPC Server instances.
+* runtime: print unknown types in panic.
+* spec: append built-in (not yet implemented).
+* src: gofmt -s -w src misc.
+ update code to use copy-from-string.
+* test/bench: update numbers.
+* websocket: fix short Read.
+
+
++This release removes the log package's deprecated functions. +Code that has not been updated to use the new interface will break. +See the previous release notes for details: + http://golang.org/doc/devel/release.html#2010-10-13 + +Also included are major improvements to the linker. It is now faster, +uses less memory, and more parallelizable (but not yet parallel). + +The nntp package has been removed from the standard library. +Its new home is the nntp-go project at Google Code: + http://code.google.com/p/nntp-go +You can install it with goinstall: + goinstall nntp-go.googlecode.com/hg/nntp +And import it in your code like so: + import "nntp-go.googlecode.com/hg/nntp" + +Other changes: +* 6g: avoid too-large immediate constants. +* 8l, runtime: initial support for Plan 9 (thanks Yuval Pavel Zholkover). +* 6l, 8l: more improvements on exporting debug information (DWARF). +* arm: code gen fixes. Most tests now pass, except for floating point code. +* big: add random number generation (thanks Florian Uekermann). +* gc: keep track of real actual type of identifiers, + report that shift must be unsigned integer, + select receive with implicit conversion. +* goplay: fix to run under windows (thanks Yasuhiro Matsumoto). +* http: do not close connection after sending HTTP/1.0 request. +* netchan: add new method Hangup to terminate transmission on a channel. +* os: change TestForkExec so it can run on windows (thanks Yasuhiro Matsumoto). +* runtime: don't let select split stack. +* syscall/arm: correct 64-bit system call arguments. ++ +
+This release includes changes to the log package, the removal of exp/iterable, +two new tools (gotry and goplay), one small language change, and many other +changes and fixes. If you use the log or iterable packages, you need to make +changes to your code. + +The log package has changed. Loggers now have only one output, and output to +standard error by default. The names have also changed, although the old names +are still supported. They will be deleted in the next release, though, so it +would be good to update now if you can. For most purposes all you need to do +is make these substitutions: + log.Stderr -> log.Println or log.Print + log.Stderrf -> log.Printf + log.Crash -> log.Panicln or log.Panic + log.Crashf -> log.Panicf + log.Exit -> log.Exitln or log.Exit + log.Exitf -> log.Exitf (no change) +Calls to log.New() must drop the second argument. +Also, custom loggers with exit or panic properties will need to be reworked. +For full details, see the change description: + http://code.google.com/p/go/source/detail?r=d8a3c7563d + +The language change is that uses of pointers to interface values no longer +automatically dereference the pointer. A pointer to an interface value is more +often a beginner's bug than correct code. + +The package exp/iterable has been removed. It was an interesting experiment, +but it encourages writing inefficient code and has outlived its utility. + +The new tools: +* gotry: an exercise in reflection and an unusual tool. Run 'gotry' for details. +* goplay: a stand-alone version of the Go Playground. See misc/goplay. + +Other changes: +* 6l: Mach-O fixes, and fix to work with OS X nm/otool (thanks Jim McGrath). +* [568]a: correct line numbers for statements. +* arm: code generation and runtime fixes, + adjust recover for new reflect.call, + enable 6 more tests after net fix. +* big: fix panic and round correctly in Rat.FloatString (thanks Anthony Martin). +* build: Make.cmd: remove $(OFILES) (thanks Eric Clark), + Make.pkg: remove .so before installing new one, + add GOHOSTOS and GOHOSTARCH environment variables. +* crypto/tls: better error messages for certificate issues, + make SetReadTimeout work. +* doc: add Sydney University video, + add The Expressiveness of Go talk. +* exp/draw/x11: support X11 vendors other than "The X.Org Foundation". +* expvar: add (*Int).Set (thanks Sam Thorogood). +* fmt: add Errorf helper function, + allow %d on []byte. +* gc: O(1) string comparison when lengths differ, + various bug fixes. +* http: return the correct error if a header line is too long. +* image: add image.Tiled type, the Go equivalent of Plan 9's repl bit. +* ld: be less picky about bad line number info. +* misc/cgo/life: fix for new slice rules (thanks Graham Miller). +* net: allow _ in DNS names. +* netchan: export before import when testing, and + zero out request to ensure correct gob decoding. (thanks Roger Peppe). +* os: make tests work on windows (thanks Alex Brainman). +* runtime: bug fix: serialize mcache allocation, + correct iteration of large map values, + faster strequal, memequal (thanks Graham Miller), + fix argument dump in traceback, + fix tiny build. +* smtp: new package (thanks Evan Shaw). +* syscall: add sockaddr_ll support for linux/386, linux/amd64 (thanks Mikio Hara), + add ucred structure for SCM_CREDENTIALS over UNIX sockets. (thanks Albert Strasheim). +* syscall: implement WaitStatus and Wait4() for windows (thanks Wei Guangjing). +* time: add After. +* websocket: enable tests on windows (thanks Alex Brainman). ++ +
+This release includes some minor language changes and some significant package
+changes. You may need to change your code if you use ...T parameters or the
+http package.
+
+The semantics and syntax of forwarding ...T parameters have changed.
+ func message(f string, s ...interface{}) { fmt.Printf(f, s) }
+Here, s has type []interface{} and contains the parameters passed to message.
+Before this language change, the compiler recognized when a function call
+passed a ... parameter to another ... parameter of the same type, and just
+passed it as though it was a list of arguments. But this meant that you
+couldn't control whether to pass the slice as a single argument and you
+couldn't pass a regular slice as a ... parameter, which can be handy. This
+change gives you that control at the cost of a few characters in the call.
+If you want the promotion to ..., append ... to the argument:
+ func message(f string, s ...interface{}) { fmt.Printf(f, s...) }
+Without the ..., s would be passed to Printf as a single argument of type
+[]interface{}. The bad news is you might need to fix up some of your code,
+but the compiler will detect the situation and warn you.
+
+Also, the http.Handler and http.HandlerFunc types have changed. Where http
+handler functions previously accepted an *http.Conn, they now take an interface
+type http.ResponseWriter. ResponseWriter implements the same methods as *Conn,
+so in most cases the only change required will be changing the type signature
+of your handler function's first parameter. See:
+ http://golang.org/pkg/http/#Handler
+
+The utf8 package has a new type, String, that provides efficient indexing
+into utf8 strings by rune (previously an expensive conversion to []int
+was required). See:
+ http://golang.org/pkg/utf8/#String
+
+The compiler will now automatically insert a semicolon at the end of a file if
+one is not found. This effect of this is that Go source files are no longer
+required to have a trailing newline.
+
+Other changes:
+* 6prof: more accurate usage message.
+* archive/zip: new package for reading Zip files.
+* arm: fix code generation, 10 more package tests pass.
+* asn1: make interface consistent with json.
+* bufio.UnreadRune: fix bug at EOF.
+* build: clear custom variables like GREP_OPTIONS,
+ silence warnings generated by ubuntu gcc,
+ use full path when compiling libraries.
+* bytes, strings: change lastIndexFunc to use DecodeLastRune (thanks Roger Peppe).
+* doc: add to and consolidate non-english doc references,
+ consolidate FAQs into a single file, go_faq.html,
+ updates for new http interface.
+* fmt/Printf: document and tweak error messages produced for bad formats.
+* gc: allow select case expr = <-c,
+ eliminate duplicates in method table,
+ fix reflect table method receiver,
+ improve error message for x \= 0.
+* go/scanner: treat EOF like a newline for purposes of semicolon insertion.
+* gofmt: stability improvements.
+* gotest: leave _testmain.go for "make clean" to clean up.
+* http: correct escaping of different parts of URL,
+ support HTTP/1.0 Keep-Alive.
+* json: do not write to unexported fields.
+* libcgo: don't build for NaCl,
+ set g, m in thread local storage for windows 386 (thanks Wei Guangjing).
+* math: Fix off-by-one error in Ilogb and Logb. (thanks Charles L. Dorian).
+* misc/dashboard/builder: remove build files after benchmarking.
+* nacl: update instructions for new SDK.
+* net: enable v4-over-v6 on ip sockets,
+ fix crash in DialIP.
+* os: check for valid arguments in windows Readdir (thanks Peter Mundy).
+* runtime: add mmap of null page just in case,
+ correct stats in SysFree,
+ fix unwindstack crash.
+* syscall: add IPPROTO_IPV6 and IPV6_V6ONLY const to fix nacl and windows build,
+ add inotify on Linux (thanks Balazs Lecz),
+ fix socketpair in syscall_bsd,
+ fix windows value of IPV6_V6ONLY (thanks Alex Brainman),
+ implement windows version of Utimes (thanks Alex Brainman),
+ make mkall.sh work for nacl.
+* test: Add test that causes incorrect error from gccgo.
+* utf8: add DecodeLastRune and DecodeLastRuneInString (thanks Roger Peppe).
+* xml: Allow entities inside CDATA tags (thanks Dan Sinclair).
+
+
++This release includes new package functionality, and many bug fixes and changes. +It also improves support for the arm and nacl platforms. + +* 5l: avoid fixed buffers in list. +* 6l, 8l: clean up ELF code, fix NaCl. +* 6l/8l: emit DWARF frame info. +* Make.inc: make GOOS detection work on windows (thanks Alex Brainman). +* build: fixes for native arn build, + make all.bash run on Ubuntu ARM. +* cgo: bug fixes, + show preamble gcc errors (thanks Eric Clark). +* crypto/x509, crypto/tls: improve root matching and observe CA flag. +* crypto: Fix certificate validation. +* doc: variable-width layout. +* env.bash: fix building in directory with spaces in the path (thanks Alex Brainman). +* exp/4s, exp/nacl/av: sync to recent exp/draw changes. +* exp/draw/x11: mouse location is a signed integer. +* exp/nacl/av: update color to max out at 1<<16-1 instead of 1<<32-1. +* fmt: support '*' for width or precision (thanks Anthony Martin). +* gc: improvements to static initialization, + make sure path names are canonical. +* gob: make robust when decoding a struct with non-struct data. +* gobuilder: add -cmd for user-specified build command, + add -rev= flag to build specific revision and exit, + fix bug that caused old revisions to be rebuilt. +* godoc: change default filter file name to "", + don't use quadratic algorithm to filter paths, + show "Last update" info for directory listings. +* http: new redirect test, + URLEscape now escapes all reserved characters as per the RFC. +* nacl: fix zero-length writes. +* net/dict: parse response correctly (thanks Fazlul Shahriar). +* netchan: add a cross-connect test, + handle closing of channels, + provide a method (Importer.Errors()) to recover protocol errors. +* os: make Open() O_APPEND flag work on windows (thanks Alex Brainman), + make RemoveAll() work on windows (thanks Alex Brainman). +* pkg/Makefile: disable netchan test to fix windows build (thanks Alex Brainman). +* regexp: delete Iter methods. +* runtime: better panic for send to nil channel. +* strings: fix minor bug in LastIndexFunc (thanks Roger Peppe). +* suffixarray: a package for creating suffixarray-based indexes. +* syscall: Use vsyscall for syscall.Gettimeofday and .Time on linux amd64. +* test: fix NaCl build. +* windows: fix netchan test by using 127.0.0.1. ++ +
+This release includes a language change: the lower bound of a subslice may +now be omitted, in which case the value will default to 0. +For example, s[0:10] may now be written as s[:10], and s[0:] as s[:]. + +The release also includes important bug fixes for the ARM architecture, +as well as the following fixes and changes: + +* 5g: register allocation bugs +* 6c, 8c: show line numbers in -S output +* 6g, 6l, 8g, 8l: move read-only data to text segment +* 6l, 8l: make etext accurate; introduce rodata, erodata. +* arm: fix build bugs. + make libcgo build during OS X cross-compile + remove reference to deleted file syntax/slice.go + use the correct stat syscalls + work around reg allocator bug in 5g +* bufio: add UnreadRune. +* build: avoid bad environment interactions + fix build for tiny + generate, clean .exe files on Windows (thanks Joe Poirier) + test for _WIN32, not _MINGW32 (thanks Joe Poirier) + work with GNU Make 3.82 (thanks Jukka-Pekka Kekkonen) +* cgo: add typedef for uintptr in generated headers + silence warning for C call returning const pointer +* codereview: convert email address to lower case before checking CONTRIBUTORS +* crypto/tls: don't return an error from Close() +* doc/tutorial: update for slice changes. +* exec: separate LookPath implementations for unix/windows (thanks Joe Poirier) +* exp/draw/x11: allow clean shutdown when the user closes the window. +* exp/draw: clip destination rectangle to the image bounds. + fast path for drawing overlapping image.RGBAs. + fix double-counting of pt.Min for the src and mask points. + reintroduce the MouseEvent.Nsec timestamp. + rename Context to Window, and add a Close method. +* exp/debug: preliminary support for 'copy' function (thanks Sebastien Binet) +* fmt.Fscan: use UnreadRune to preserve data across calls. +* gc: better printing of named constants, func literals in errors + many bug fixes + fix line number printing with //line directives + fix symbol table generation on windows (thanks Alex Brainman) + implement comparison rule from spec change 33abb649cb63 + implement new slice spec (thanks Scott Lawrence) + make string x + y + z + ... + w efficient + more accurate line numbers for ATEXT + remove &[10]int -> []int conversion +* go-mode.el: fix highlighting for 'chan' type (thanks Scott Lawrence) +* godoc: better support for directory trees for user-supplied paths + use correct delay time (bug fix) +* gofmt, go/printer: update internal estimated position correctly +* goinstall: warn when package name starts with http:// (thanks Scott Lawrence) +* http: check https certificate against host name + do not cache CanonicalHeaderKey (thanks Jukka-Pekka Kekkonen) +* image: change a ColorImage's minimum point from (0, 0) to (-1e9, -1e9). + introduce Intersect and Union rectangle methods. +* ld: handle quoted spaces in package path (thanks Dan Sinclair) +* libcgo: fix NaCl build. +* libmach: fix build on arm host + fix new thread race with Linux +* math: make portable Tan(Pi/2) return NaN +* misc/dashboard/builder: gobuilder, a continuous build client +* net: disable tests for functions not available on windows (thanks Alex Brainman) +* netchan: make -1 unlimited, as advertised. +* os, exec: rename argv0 to name +* path: add IsAbs (thanks Ivan Krasin) +* runtime: fix bug in tracebacks + fix crash trace on amd64 + fix windows build (thanks Alex Brainman) + use manual stack for garbage collection +* spec: add examples for slices with omitted index expressions. + allow omission of low slice bound (thanks Scott Lawrence) +* syscall: fix windows Gettimeofday (thanks Alex Brainman) +* test(arm): disable zerodivide.go because compilation fails. +* test(windows): disable tests that cause the build to fail (thanks Joe Poirier) +* test/garbage/parser: sync with recent parser changes +* test: Add test for //line + Make gccgo believe that the variables can change. + Recognize gccgo error messages. + Reduce race conditions in chan/nonblock.go. + Run garbage collector before testing malloc numbers. +* websocket: Add support for secure WebSockets (thanks Jukka-Pekka Kekkonen) +* windows: disable unimplemented tests (thanks Joe Poirier) ++ +
+This release includes the syntactic modernization of more than 100 files in /test, +and these additions, changes, and fixes: +* 6l/8l: emit DWARF in macho. +* 8g: use FCHS, not FMUL, for minus float. +* 8l: emit DWARF in ELF, + suppress emitting DWARF in Windows PE (thanks Alex Brainman). +* big: added RatString, some simplifications. +* build: create bin and pkg directories as needed; drop from hg, + delete Make.386 Make.amd64 Make.arm (obsoleted by Make.inc), + fix cgo with -j2, + let pkg/Makefile coordinate building of Go commands, + never use quietgcc in Make.pkg, + remove more references to GOBIN and GOROOT (thanks Christian Himpel). +* codereview: Fix uploading for Mercurial 1.6.3 (thanks Evan Shaw), + consistent indent, cut dead code, + fix hang on standard hg commands, + print status when tasks take longer than 30 seconds, + really disable codereview when not available, + upload files in parallel (5x improvement on large CLs). +* crypto/hmac: make Sum idempotent (thanks Jukka-Pekka Kekkonen). +* doc: add links to more German docs, + add round-robin flag to io2010 balance example, + fix a bug in the example in Constants subsection (thanks James Fysh), + various changes for validating HTML (thanks Scott Lawrence). +* fmt: delete erroneous sentence about return value for Sprint*. +* gc: appease bison version running on FreeBSD builder, + fix spurious syntax error. +* go/doc: use correct escaper for URL. +* go/printer: align ImportPaths in ImportDecls (thanks Scott Lawrence). +* go/typechecker: 2nd step towards augmenting AST with full type information. +* gofmt: permit omission of first index in slice expression. +* goinstall: added -a flag to mean "all remote packages" (thanks Scott Lawrence), + assume go binaries are in path (following new convention), + use https for Google Code checkouts. +* gotest: allow make test of cgo packages (without make install). +* http: add Date to server, Last-Modified and If-Modified-Since to file server, + add PostForm function to post url-encoded key/value data, + obscure passwords in return value of URL.String (thanks Scott Lawrence). +* image: introduce Config type and DecodeConfig function. +* libcgo: update Makefile to use Make.inc. +* list: update comment to state that the zero value is ready to use. +* math: amd64 version of Sincos (thanks Charles L. Dorian). +* misc/bash: add *.go completion for gofmt (thanks Scott Lawrence). +* misc/emacs: make _ a word symbol (thanks Scott Lawrence). +* misc: add zsh completion (using compctl), + syntax highlighting for Fraise.app (OS X) (thanks Vincent Ambo). +* net/textproto: Handle multi-line responses (thanks Evan Shaw). +* net: add LookupMX (thanks Corey Thomasson). +* netchan: Fix race condition in test, + rather than 0, make -1 mean infinite (a la strings.Split et al), + use acknowledgements on export send. + new methods Sync and Drain for clean teardown. +* regexp: interpret all Go characer escapes \a \b \f \n \r \t \v. +* rpc: fix bug that caused private methods to attempt to be registered. +* runtime: Correct commonType.kind values to match compiler, + add GOOS, GOARCH; fix FuncLine, + special case copy, equal for one-word interface values (thanks Kyle Consalus). +* scanner: fix incorrect reporting of error in Next (thanks Kyle Consalus). +* spec: clarify that arrays must be addressable to be sliceable. +* template: fix space handling around actions. +* test/solitaire: an exercise in backtracking and string conversions. +* test: Recognize gccgo error messages and other fixes. +* time: do not crash in String on nil Time. +* tutorial: regenerate HTML to pick up change to progs/file.go. +* websocket: fix missing Sec-WebSocket-Protocol on server response (thanks Jukka-Pekka Kekkonen). ++ +
+This release includes changes to the build system that will likely require you +to make changes to your environment variables and Makefiles. + +All environment variables are now optional: + - $GOOS and $GOARCH are now optional; their values should now be inferred + automatically by the build system, + - $GOROOT is now optional, but if you choose not to set it you must run + 'gomake' instead of 'make' or 'gmake' when developing Go programs + using the conventional Makefiles, + - $GOBIN remains optional and now defaults to $GOROOT/bin; + if you wish to use this new default, make sure it is in your $PATH + and that you have removed the existing binaries from $HOME/bin. + +As a result of these changes, the Go Makefiles have changed. If your Makefiles +inherit from the Go Makefiles, you must change this line: + include ../../Make.$(GOARCH) +to this: + include ../../Make.inc + +This release also removes the deprecated functions in regexp and the +once package. Any code that still uses them will break. +See the notes from the last release for details: + http://golang.org/doc/devel/release.html#2010-08-11 + +Other changes: +* 6g: better registerization for slices, strings, interface values +* 6l: line number information in DWARF format +* build: $GOBIN defaults to $GOROOT/bin, + no required environment variables +* cgo: add C.GoStringN (thanks Eric Clark). +* codereview: fix issues with leading tabs in CL descriptions, + do not send "Abandoned" mail if the CL has not been mailed. +* crypto/ocsp: add missing Makefile. +* crypto/tls: client certificate support (thanks Mikkel Krautz). +* doc: update gccgo information for recent changes. + fix errors in Effective Go. +* fmt/print: give %p priority, analogous to %T, + honor Formatter in Print, Println. +* gc: fix parenthesization check. +* go/ast: facility for printing AST nodes, + first step towards augmenting AST with full type information. +* go/printer: do not modify tabwriter.Escape'd text. +* gofmt: do not modify multi-line string literals, + print AST nodes by setting -ast flag. +* http: fix typo in http.Request documentation (thanks Scott Lawrence) + parse query string always, not just in GET +* image/png: support 16-bit color. +* io: ReadAtLeast now errors if min > len(buf). +* jsonrpc: use `error: null` for success, not `error: ""`. +* libmach: implement register fetch for 32-bit x86 kernel. +* net: make IPv6 String method standards-compliant (thanks Mikio Hara). +* os: FileInfo.Permission() now returns uint32 (thanks Scott Lawrence), + implement env using native Windows API (thanks Alex Brainman). +* reflect: allow PtrValue.PointTo(nil). +* runtime: correct line numbers for .goc files, + fix another stack split bug, + fix freebsd/386 mmap. +* syscall: regenerate syscall/z* files for linux/386, linux/amd64, linux/arm. +* tabwriter: Introduce a new flag StripEscape. +* template: fix handling of space around actions, + vars preceded by white space parse correctly (thanks Roger Peppe). +* test: add test case that crashes gccgo. +* time: parse no longer requires minutes for time zone (thanks Jan H. Hosang) +* yacc: fix bounds check in error recovery. ++ +
+This release introduces some package changes. You may need to change your
+code if you use the once, regexp, image, or exp/draw packages.
+
+The type Once has been added to the sync package. The new sync.Once will
+supersede the functionality provided by the once package. We intend to remove
+the once package after this release. See:
+ http://golang.org/pkg/sync/#Once
+All instances of once in the standard library have been replaced with
+sync.Once. Reviewing these changes may help you modify your existing code.
+The relevant changeset:
+ http://code.google.com/p/go/source/detail?r=fa2c43595119
+
+A new set of methods has been added to the regular expression package, regexp.
+These provide a uniformly named approach to discovering the matches of an
+expression within a piece of text; see the package documentation for details:
+ http://golang.org/pkg/regexp/
+These new methods will, in a later release, replace the old methods for
+matching substrings. The following methods are deprecated:
+ Execute (use FindSubmatchIndex)
+ ExecuteString (use FindStringSubmatchIndex)
+ MatchStrings(use FindStringSubmatch)
+ MatchSlices (use FindSubmatch)
+ AllMatches (use FindAll; note that n<0 means 'all matches'; was n<=0)
+ AllMatchesString (use FindAllString; note that n<0 means 'all matches'; was n<=0)
+(Plus there are ten new methods you didn't know you wanted.)
+Please update your code to use the new routines before the next release.
+
+An image.Image now has a Bounds rectangle, where previously it ranged
+from (0, 0) to (Width, Height). Loops that previously looked like:
+ for y := 0; y < img.Height(); y++ {
+ for x := 0; x < img.Width(); x++ {
+ // Do something with img.At(x, y)
+ }
+ }
+should instead be:
+ b := img.Bounds()
+ for y := b.Min.Y; y < b.Max.Y; y++ {
+ for x := b.Min.X; x < b.Max.X; x++ {
+ // Do something with img.At(x, y)
+ }
+ }
+The Point and Rectangle types have also moved from exp/draw to image.
+
+Other changes:
+* arm: bugfixes and syscall (thanks Kai Backman).
+* asn1: fix incorrect encoding of signed integers (thanks Nicholas Waples).
+* big: fixes to bitwise functions (thanks Evan Shaw).
+* bytes: add IndexRune, FieldsFunc and To*Special (thanks Christian Himpel).
+* encoding/binary: add complex (thanks Roger Peppe).
+* exp/iterable: add UintArray (thanks Anschel Schaffer-Cohen).
+* godoc: report Status 404 if a pkg or file is not found.
+* gofmt: better reporting for unexpected semicolon errors.
+* html: new package, an HTML tokenizer.
+* image: change image representation from slice-of-slices to linear buffer,
+ introduce Decode and RegisterFormat,
+ introduce Transparent and Opaque,
+ replace Width and Height by Bounds, add the Point and Rect types.
+* libbio: fix Bprint to address 6g issues with large data structures.
+* math: fix amd64 Hypot (thanks Charles L. Dorian).
+* net/textproto: new package, with example net/dict.
+* os: fix ForkExec() handling of envv == nil (thanks Alex Brainman).
+* png: grayscale support (thanks Mathieu Lonjaret).
+* regexp: document that backslashes are the escape character.
+* rpc: catch errors from ReadResponseBody.
+* runtime: memory free fix (thanks Alex Brainman).
+* template: add ParseFile method to template.Template.
+* test/peano: use directly recursive type def.
+
+
+
+This release includes a change to os.Open (and co.). The file permission
+argument has been changed to a uint32. Your code may require changes - a simple
+conversion operation at most.
+
+Other changes:
+* amd64: use segment memory for thread-local storage.
+* arm: add gdb support to android launcher script,
+ bugfixes (stack clobbering, indices),
+ disable another flaky test,
+ remove old qemu dependency from gotest.
+* bufio: introduce Peek.
+* bytes: added test case for explode with blank string (thanks Scott Lawrence).
+* cgo: correct multiple return value function invocations (thanks Christian Himpel).
+* crypto/x509: unwrap Subject Key Identifier (thanks Adam Langley).
+* gc: index bounds tests and other fixes.
+* gofmt/go/parser: strengthen syntax checks.
+* goinstall: check for error from exec.*Cmd.Wait() (thanks Alex Brainman).
+* image/png: use image-specific methods for checking opacity.
+* image: introduce Gray and Gray16 types,
+ remove the named colors except for Black and White.
+* json: object members must have a value (thanks Anthony Martin).
+* misc/vim: highlight misspelled words only in comments (thanks Christian Himpel).
+* os: Null device (thanks Peter Mundy).
+* runtime: do not fall through in SIGBUS/SIGSEGV.
+* strings: fix Split("", "", -1) (thanks Scott Lawrence).
+* syscall: make go errors not clash with windows errors (thanks Alex Brainman).
+* test/run: diff old new,
+* websocket: correct challenge response (thanks Tarmigan Casebolt),
+ fix bug involving spaces in header keys (thanks Bill Neubauer).
+
+
++* 5g: more soft float support and several bugfixes. +* asn1: Enumerated, Flag and GeneralizedTime support. +* build: clean.bash to check that GOOS and GOARCH are set. +* bytes: add IndexFunc and LastIndexFunc (thanks Fazlul Shahriar), + add Title. +* cgo: If CC is set in environment, use it rather than "gcc", + use new command line syntax: -- separates cgo flags from gcc flags. +* codereview: avoid crash if no config, + don't run gofmt with an empty file list, + make 'hg submit' work with Mercurial 1.6. +* crypto/ocsp: add package to parse OCSP responses. +* crypto/tls: add client-side SNI support and PeerCertificates. +* exp/bignum: delete package - functionality subsumed by package big. +* fmt.Print: fix bug in placement of spaces introduced when ...T went in. +* fmt.Scanf: handle trailing spaces. +* gc: fix smaller-than-pointer-sized receivers in interfaces, + floating point precision/normalization fixes, + graceful exit on seg fault, + import dot shadowing bug, + many fixes including better handling of invalid input, + print error detail about failure to open import. +* gccgo_install.html: add description of the port to RTEMS (thanks Vinu Rajashekhar). +* gobs: fix bug in singleton arrays. +* godoc: display synopses for all packages that have some kind of documentation.. +* gofmt: fix some linebreak issues. +* http: add https client support (thanks Fazlul Shahriar), + write body when content length unknown (thanks James Whitehead). +* io: MultiReader and MultiWriter (thanks Brad Fitzpatrick), + fix another race condition in Pipes. +* ld: many fixes including better handling of invalid input. +* libmach: correct handling of .5 files with D_REGREG addresses. +* linux/386: use Xen-friendly ELF TLS instruction sequence. +* mime: add AddExtensionType (thanks Yuusei Kuwana). +* misc/vim: syntax file recognizes constants like 1e9 (thanks Petar Maymounkov). +* net: TCPConn.SetNoDelay, back by popular demand. +* net(windows): fix crashing Read/Write when passed empty slice on (thanks Alex Brainman), + implement LookupHost/Port/SRV (thanks Wei Guangjing), + properly handle EOF in (*netFD).Read() (thanks Alex Brainman). +* runtime: fix bug introduced in revision 4a01b8d28570 (thanks Alex Brainman), + rename cgo2c, *.cgo to goc2c, *.goc (thanks Peter Mundy). +* scanner: better comment. +* strings: add Title. +* syscall: add ForkExec, Syscall12 on Windows (thanks Daniel Theophanes), + improve windows errno handling (thanks Alex Brainman). +* syscall(windows): fix FormatMessage (thanks Peter Mundy), + implement Pipe() (thanks Wei Guangjing). +* time: fix parsing of minutes in time zones. +* utf16(windows): fix cyclic dependency when testing (thanks Peter Mundy). ++ +
+This release includes a package change. In container/vector, the Iter method +has been removed from the Vector, IntVector, and StringVector types. Also, the +Data method has been renamed to Copy to better express its actual behavior. +Now that Vector is just a slice, any for loops ranging over v.Iter() or +v.Data() can be changed to range over v instead. + +Other changes: +* big: Improvements to Rat.SetString (thanks Evan Shaw), + add sign, abs, Rat.IsInt. +* cgo: various bug fixes. +* codereview: Fix for Mercurial >= 1.6 (thanks Evan Shaw). +* crypto/rand: add Windows implementation (thanks Peter Mundy). +* crypto/tls: make HTTPS servers easier, + add client OCSP stapling support. +* exp/eval: converted from bignum to big (thanks Evan Shaw). +* gc: implement new len spec, range bug fix, optimization. +* go/parser: require that '...' parameters are followed by a type. +* http: fix ParseURL to handle //relative_path properly. +* io: fix SectionReader Seek to seek backwards (thanks Peter Mundy). +* json: Add HTMLEscape (thanks Micah Stetson). +* ld: bug fixes. +* math: amd64 version of log (thanks Charles L. Dorian). +* mime/multipart: new package to parse multipart MIME messages + and HTTP multipart/form-data support. +* os: use TempFile with default TempDir for test files (thanks Peter Mundy). +* runtime/tiny: add docs for additional VMs, fix build (thanks Markus Duft). +* runtime: better error for send/recv on nil channel. +* spec: clarification of channel close(), + lock down some details about channels and select, + restrict when len(x) is constant, + specify len/cap for nil slices, maps, and channels. +* windows: append .exe to binary names (thanks Joe Poirier). ++ +
+This release includes some package changes that may require changes to +client code. + +The Split function in the bytes and strings packages has been changed. +The count argument, which limits the size of the return, previously treated +zero as unbounded. It now treats 0 as 0, and will return an empty slice. +To request unbounded results, use -1 (or some other negative value). +The new Replace functions in bytes and strings share this behavior. +This may require you change your existing code. + +The gob package now allows the transmission of non-struct values at the +top-level. As a result, the rpc and netchan packages have fewer restrictions +on the types they can handle. For example, netchan can now share a chan int. + +The release also includes a Code Walk: "Share Memory By Communicating". +It describes an idiomatic Go program that uses goroutines and channels: + http://golang.org/doc/codewalk/sharemem/ + +There is now a Projects page on the Go Dashboard that lists Go programs, +tools, and libraries: + http://godashboard.appspot.com/project + +Other changes: +* 6a, 6l: bug fixes. +* bytes, strings: add Replace. +* cgo: use slash-free relative paths for .so references. +* cmath: correct IsNaN for argument cmplx(Inf, NaN) (thanks Charles L. Dorian). +* codereview: allow multiple email addresses in CONTRIBUTORS. +* doc/codewalk: add Share Memory By Communicating. +* exp/draw/x11: implement the mapping from keycodes to keysyms. +* fmt: Printf: fix bug in handling of %#v, allow other verbs for slices + Scan: fix handling of EOFs. +* gc: bug fixes and optimizations. +* gob: add DecodeValue and EncodeValue, + add support for complex numbers. +* goinstall: support for Bazaar+Launchpad (thanks Gustavo Niemeyer). +* io/ioutil: add TempFile for Windows (thanks Peter Mundy). +* ld: add -u flag to check safe bits; discard old -u, -x flags. +* math: amd64 versions of Exp and Fabs (thanks Charles L. Dorian). +* misc/vim: always override filetype detection for .go files. +* net: add support for DNS SRV requests (thanks Kirklin McDonald), + initial attempt to implement Windows version (thanks Alex Brainman). +* netchan: allow chan of basic types now that gob can handle such, + eliminate the need for a pointer value in Import and Export. +* os/signal: only catch all signals if os/signal package imported. +* regexp: bug fix: need to track whether match begins with fixed prefix. +* rpc: allow non-struct args and reply (they must still be pointers). +* runtime: bug fixes and reorganization. +* strconv: fix bugs in floating-point and base 2 conversions +* syscall: add syscall_bsd.go to zsycall_freebsd_386.go (thanks Peter Mundy), + add socketpair (thanks Ivan Krasin). +* time: implement time zones for Windows (thanks Alex Brainman). +* x509: support non-self-signed certs. ++ +
+This release includes a language change. The "..." function parameter form is
+gone; "...T" remains. Typically, "...interface{}" can be used instead of "...".
+
+The implementation of Printf has changed in a way that subtly affects its
+handling of the fmt.Stringer interface. You may need to make changes to your
+code. For details, see:
+ https://groups.google.com/group/golang-nuts/msg/6fffba90a3e3dc06
+
+The reflect package has been changed. If you have code that uses reflect,
+it will need to be updated. For details, see:
+ https://groups.google.com/group/golang-nuts/msg/7a93d07c590e7beb
+
+Other changes:
+* 8l: correct test for sp == top of stack in 8l -K code.
+* asn1: allow '*' in PrintableString.
+* bytes.Buffer.ReadFrom: fix bug.
+* codereview: avoid exception in match (thanks Paolo Giarrusso).
+* complex divide: match C99 implementation.
+* exp/draw: small draw.drawGlyphOver optimization.
+* fmt: Print*: reimplement to switch on type first,
+ Scanf: improve error message when input does not match format.
+* gc: better error messages for interface failures, conversions, undefined symbols.
+* go/scanner: report illegal escape sequences.
+* gob: substitute slice for map.
+* goinstall: process dependencies for package main (thanks Roger Peppe).
+* gopack: add S flag to force marking a package as safe,
+ simplify go metadata code.
+* html: sync testdata/webkit to match WebKit tip.
+* http: reply to Expect 100-continue requests automatically (thanks Brad Fitzpatrick).
+* image: add an Alpha16 type.
+* ld: pad Go symbol table out to page boundary (fixes cgo crash).
+* misc/vim: reorganize plugin to be easier to use (thanks James Whitehead).
+* path: add Base, analogous to Unix basename.
+* pkg/Makefile: allow DISABLE_NET_TESTS=1 to disable network tests.
+* reflect: add Kind, Type.Bits, remove Int8Type, Int8Value, etc.
+* runtime: additional Windows support (thanks Alex Brainman),
+ correct fault for 16-bit divide on Leopard,
+ fix 386 signal handler bug.
+* strconv: add AtofN, FtoaN.
+* string: add IndexFunc and LastIndexFunc (thanks Roger Peppe).
+* syslog: use local network for tests.
+
+
++This release contains many fixes and improvements, including several +clarifications and consolidations to the Language Specification. + +The type checking rules around assignments and conversions are simpler but more +restrictive: assignments no longer convert implicitly from *[10]int to []int +(write x[0:] instead of &x), and conversions can no longer change the names of +types inside composite types. + +The fmt package now includes flexible type-driven (fmt.Scan) and +format-driven (fmt.Scanf) scanners for all basic types. + +* big: bug fix for Quo aliasing problem. +* bufio: change ReadSlice to match description. +* cgo: bug fixes. +* doc: add Google I/O talk and programs, + codereview + Mercurial Queues info (thanks Peter Williams). +* exp/draw: Draw fast paths for the Over operator, + add Rectangle.Eq and Point.In, fix Rectangle.Clip (thanks Roger Peppe). +* fmt: Scan fixes and improvements. +* gc: backslash newline is not a legal escape sequence in strings, + better error message when ~ operator is found, + fix export of complex types, + new typechecking rules. +* go/parser: correct position of empty statement ';'. +* gofmt: fix test script. +* goinstall: use 'git pull' instead of 'git checkout' (thanks Michael Hoisie). +* http: add Head function for making HTTP HEAD requests, + handle status 304 correctly. +* image: add Opaque method to the image types. + make Color.RGBA return 16 bit color instead of 32 bit color. +* io/ioutil: add TempFile. +* math: Pow special cases and additional tests (thanks Charles L. Dorian). +* netchan: improve closing and shutdown. +* os: implement os.FileInfo.*time_ns for windows (thanks Alex Brainman). +* os/signal: correct the regexp for finding Unix signal names (thanks Vinu Rajashekhar). +* regexp: optimizations (thanks Kyle Consalus). +* runtime: fix printing -Inf (thanks Evan Shaw), + finish pchw -> tiny, added gettime for tiny (thanks Daniel Theophanes). +* spec: clean-ups and consolidation. +* syscall: additional Windows compatibility fixes (thanks Alex Brainman). +* test/bench: added regex-dna-parallel.go (thanks Kyle Consalus). +* vector: type-specific Do functions now take f(type) (thanks Michael Hoisie). ++ +
+A sizeable release, including standard library improvements and a slew of +compiler bug fixes. The three-week interval was largely caused by the team +preparing for Google I/O. + +* big: add Rat type (thanks Evan Shaw), + new features, much performance tuning, cleanups, and more tests. +* bignum: deprecate by moving into exp directory. +* build: allow MAKEFLAGS to be set outside the build scripts (thanks Christopher Wedgwood). +* bytes: add Trim, TrimLeft, TrimRight, and generic functions (thanks Michael Hoisie). +* cgo: fix to permit cgo callbacks from init code. +* cmath: update range of Phase and Polar due to signed zero (thanks Charles L. Dorian). +* codereview: work better with mq (thanks Peter Williams). +* compress: renamings + NewDeflater -> NewWriter + NewInflater -> NewReader + Deflater -> Compressor + Inflater -> Decompressor +* exp/draw/x11: respect $XAUTHORITY, + treat $DISPLAY the same way x-go-bindings does. +* exp/draw: fast path for glyph images, other optimizations, + fix Rectangle.Canon (thanks Roger Peppe). +* fmt: Scan, Scanln: Start of a simple scanning API in the fmt package, + fix Printf crash when given an extra nil argument (thanks Roger Peppe). +* gc: better error when computing remainder of non-int (thanks Evan Shaw), + disallow middot in Go programs, + distinguish array, slice literal in error messages, + fix shift/reduce conflict in go.y export syntax, + fix unsafe.Sizeof on ideal constants, + handle use of builtin function outside function call, + many other bug fixes. +* gob: add support for maps, + add test for indirect maps, slices, arrays. +* godoc: collect package comments from all package files. +* gofmt: don't lose mandatory semicolons, + exclude test w/ illegal syntax from test cases, + fix printing of labels. +* http: prevent crash if remote server is not responding with "HTTP/". +* json: accept escaped slash in string scanner (thanks Michael Hoisie), + fix array -> non-array decoding. +* libmach: skip __nl_symbol_ptr section on OS X. +* math: amd64 versions of Fdim, Fmax, Fmin, + signed zero Sqrt special case (thanks Charles L. Dorian). +* misc/kate: convert isn't a built in function (thanks Evan Shaw). +* net: implement BindToDevice, + implement raw sockets (thanks Christopher Wedgwood). +* netFD: fix race between Close and Read/Write (thanks Michael Hoisie). +* os: add Chtimes function (thanks Brad Fitzpatrick). +* pkg/Makefile: add netchan to standard package list. +* runtime: GOMAXPROCS returns previous value, + allow large map values, + avoid allocation for fixed strings, + correct tracebacks for nascent goroutines, even closures, + free old hashmap pieces during resizing. +* spec: added imaginary literal to semicolon rules (was missing), + fix and clarify syntax of conversions, + simplify section on channel types, + other minor tweaks. +* strconv: Btoui64 optimizations (thanks Kyle Consalus). +* strings: use copy instead of for loop in Map (thanks Kyle Consalus). +* syscall: implement BindToDevice (thanks Christopher Wedgwood), + add Utimes on Darwin/FreeBSD, add Futimes everywhere, + regenerate syscalls for some platforms. +* template: regularize name lookups of interfaces, pointers, and methods. ++ +
+In this release we renamed the Windows OS target from 'mingw' to 'windows'. +If you are currently building for 'mingw' you should set GOOS=windows instead. + +* 5l, 6l, 8l, runtime: make -s binaries work. +* 5l, 6l, 8l: change ELF header so that strip doesn't destroy binary. +* 8l: fix absolute path detection on Windows. +* big: new functions, optimizations, and cleanups, + add bitwise methods for Int (thanks Evan Shaw). +* bytes: Change IndexAny to look for UTF-8 encoded characters. +* darwin: bsdthread_create can fail; print good error. +* fmt: %T missing print <nil> for nil (thanks Christopher Wedgwood). +* gc: many fixes. +* misc/cgo/gmp: fix bug in SetString. +* net: fix resolv.conf EOF without newline bug (thanks Christopher Wedgwood). +* spec: some small clarifications (no language changes). +* syscall: add EWOULDBLOCK to sycall_nacl.go, + force O_LARGEFILE in Linux open system call, + handle EOF on pipe - special case on Windows (thanks Alex Brainman), + mingw Sleep (thanks Joe Poirier). +* test/bench: import new fasta C reference, update Go, optimizations. +* test: test of static initialization (fails). +* vector: use correct capacity in call to make. +* xml: allow text segments to end at EOF. ++ +
+This release includes a new Codelab that illustrates the construction of a +simple wiki web application: + http://golang.org/doc/codelab/wiki/ + +It also includes a Codewalk framework for documenting code. See: + http://golang.org/doc/codewalk/ + +Other changes: +* 6g: fix need for parens around array index expression. +* 6l, 8l: include ELF header in PT_LOAD mapping for text segment. +* arm: add android runner script, + support for printing floats. +* big: implemented Karatsuba multiplication, + many fixes and improvements (thanks Evan Shaw). +* bytes: add Next method to Buffer, simplify Read, + shuffle implementation, making WriteByte 50% faster. +* crypto/tls: simpler implementation of record layer. +* exp/eval: fixes (thanks Evan Shaw). +* flag: eliminate unnecessary structs. +* gc: better windows support, + cmplx typecheck bug fix, + more specific error for statements at top level. +* go/parser: don't require unnecessary parens. +* godoc: exclude duplicate entries (thanks Andrei Vieru), + use int64 for timestamps (thanks Christopher Wedgwood). +* gofmt: fine-tune stripping of parentheses, +* json: Marshal, Unmarshal using new scanner, + preserve field name case by default, + scanner, Compact, Indent, and tests, + support for streaming. +* libmach: disassemble MOVLQZX correctly. +* math: more special cases for signed zero (thanks Charles L. Dorian). +* net: add Pipe, + fix bugs in packStructValue (thanks Michael Hoisie), + introduce net.Error interface. +* os: FileInfo: regularize the types of some fields, + create sys_bsd.go (thanks Giles Lean), + mingw bug fixes (thanks Alex Brainman). +* reflect: add FieldByNameFunc (thanks Raif S. Naffah), + implement Set(nil), SetValue(nil) for PtrValue and MapValue. +* regexp: allow escaping of any punctuation. +* rpc/jsonrpc: support for jsonrpc wire encoding. +* rpc: abstract client and server encodings, + add Close() method to rpc.Client. +* runtime: closures, defer bug fix for Native Client, + rename cgo2c, *.cgo to goc2c, *.goc to avoid confusion with real cgo. + several other fixes. +* scanner: implement Peek() to look at the next char w/o advancing. +* strings: add ReadRune to Reader, add FieldsFunc (thanks Kyle Consalus). +* syscall: match linux Setsid function signature to darwin, + mingw bug fixes (thanks Alex Brainman). +* template: fix handling of pointer inside interface. +* test/bench: add fannkuch-parallel.go (thanks Kyle Consalus), + pidigits ~10% performance win by using adds instead of shifts. +* time: remove incorrect time.ISO8601 and add time.RFC3339 (thanks Micah Stetson). +* utf16: add DecodeRune, EncodeRune. +* xml: add support for XML marshalling embedded structs (thanks Raif S. Naffah), + new "innerxml" tag to collect inner XML. ++ +
+This release contains many changes:
+
+* 8l: add DOS stub to PE binaries (thanks Evan Shaw).
+* cgo: add //export.
+* cmath: new complex math library (thanks Charles L. Dorian).
+* docs: update to match current coding style (thanks Christopher Wedgwood).
+* exp/eval: fix example and add target to Makefile (thanks Evan Shaw).
+* fmt: change behaviour of format verb %b to match %x when negative (thanks Andrei Vieru).
+* gc: compile s == "" as len(s) == 0,
+ distinguish fatal compiler bug from error+exit,
+ fix alignment on non-amd64,
+ good syntax error for defer func() {} - missing fina (),
+ implement panic and recover,
+ zero unnamed return values on entry if func has defer.
+* goyacc: change to be reentrant (thanks Roger Peppe).
+* io/ioutil: fix bug in ReadFile when Open succeeds but Stat fails.
+* kate: update for recent language changes (thanks Evan Shaw).
+* libcgo: initial mingw port work - builds but untested (thanks Joe Poirier).
+* math: new functions and special cases (thanks Charles L. Dorian)
+* net: use chan bool instead of chan *netFD to avoid cycle.
+* netchan: allow client to send as well as receive.
+* nntp: new package, NNTP client (thanks Conrad Meyer).
+* os: rename os.Dir to os.FileInfo.
+* rpc: don't log normal EOF,
+ fix ServeConn to block as documented.
+* runtime: many bug fixes, better ARM support.
+* strings: add IndexRune, Trim, TrimLeft, TrimRight, etc (thanks Michael Hoisie).
+* syscall: implement some mingw syscalls required by os (thanks Alex Brainman).
+* test/bench: add k-nucleotide-parallel (thanks Kyle Consalus).
+* Unicode: add support for Turkish case mapping.
+* xgb: move from the main repository to http://code.google.com/p/x-go-binding/
+
+
++This release contains three language changes: + +1. Accessing a non-existent key in a map is no longer a run-time error. +It now evaluates to the zero value for that type. For example: + x := myMap[i] is now equivalent to: x, _ := myMap[i] + +2. It is now legal to take the address of a function's return value. +The return values are copied back to the caller only after deferred +functions have run. + +3. The functions panic and recover, intended for reporting and recovering from +failure, have been added to the spec: + http://golang.org/doc/go_spec.html#Handling_panics +In a related change, panicln is gone, and panic is now a single-argument +function. Panic and recover are recognized by the gc compilers but the new +behavior is not yet implemented. + +The ARM build is broken in this release; ARM users should stay at release.2010-03-22. + +Other changes: +* bytes, strings: add IndexAny. +* cc/ld: Add support for #pragma dynexport, + Rename dynld to dynimport throughout. Cgo users will need to rerun cgo. +* expvar: default publishings for cmdline, memstats +* flag: add user-defined flag types. +* gc: usual bug fixes +* go/ast: generalized ast filtering. +* go/printer: avoid reflect in print. +* godefs: fix handling of negative constants. +* godoc: export pprof debug information, exported variables, + support for filtering of command-line output in -src mode, + use http GET for remote search instead of rpc. +* gofmt: don't convert multi-line functions into one-liners, + preserve newlines in multiline selector expressions (thanks Risto Jaakko Saarelma). +* goinstall: include command name in error reporting (thanks Andrey Mirtchovski) +* http: add HandleFunc as shortcut to Handle(path, HandlerFunc(func)) +* make: use actual dependency for install +* math: add J1, Y1, Jn, Yn, J0, Y0 (Bessel functions) (thanks Charles L. Dorian) +* prof: add pprof from google-perftools +* regexp: don't return non-nil *Regexp if there is an error. +* runtime: add Callers, + add malloc sampling, pprof interface, + add memory profiling, more statistics to runtime.MemStats, + implement missing destroylock() (thanks Alex Brainman), + more malloc statistics, + run all finalizers in a single goroutine, + Goexit runs deferred calls. +* strconv: add Atob and Btoa, + Unquote could wrongly return a nil error on error (thanks Roger Peppe). +* syscall: add IPV6 constants, + add syscall_bsd.go for Darwin and other *BSDs (thanks Giles Lean), + implement SetsockoptString (thanks Christopher Wedgwood). +* websocket: implement new protocol (thanks Fumitoshi Ukai). +* xgb: fix request length and request size (thanks Firmansyah Adiputra). +* xml: add CopyToken (thanks Kyle Consalus), + add line numbers to syntax errors (thanks Kyle Consalus), + use io.ReadByter in place of local readByter (thanks Raif S. Naffah). ++ +
+With this release we announce the launch of the Go Blog: + http://blog.golang.org/ +The first post is a brief update covering what has happened since the launch. + +This release contains some new packages and functionality, and many fixes: +* 6g/8g: fix issues with complex data types, other bug fixes. +* Makefiles: refactored to make writing external Makefiles easier. +* crypto/rand: new package. +* godoc: implemented command-line search via RPC, + improved comment formatting: recognize URLs. +* gofmt: more consistent formatting of const/var decls. +* http: add Error helper function, + add ParseQuery (thanks Petar Maymounkov), + change RawPath to mean raw path, not raw everything-after-scheme. +* image/jpeg: fix typos. +* json: add MarshalIndent (accepts user-specified indent string). +* math: add Gamma function (thanks Charles L. Dorian). +* misc/bbedit: support for cmplx, real, imag (thanks Anthony Starks). +* misc/vim: add new complex types, functions and literals. +* net: fix IPMask.String not to crash on all-0xff mask. +* os: drop File finalizer after normal Close. +* runtime: add GOROOT and Version, + lock finalizer table accesses. +* sha512: add sha384 (truncated version) (thanks Conrad Meyer). +* syscall: add const ARCH, analogous to OS. +* syscall: further additions to mingw port (thanks Alex Brainman). +* template: fixed html formatter []byte input bug. +* utf16: new package. +* version.bash: cope with ancient Mercurial. +* websocket: use URL.RawPath to construct WebSocket-Location: header. ++ +
+This release includes a language change: support for complex numbers. + http://golang.org/doc/go_spec.html#Imaginary_literals + http://golang.org/doc/go_spec.html#Complex_numbers +There is no library support as yet. + +This release also includes the goinstall command-line tool. + http://golang.org/cmd/goinstall/ + http://groups.google.com/group/golang-nuts/t/f091704771128e32 + +* 5g/6g/8g: fix double function call in slice. +* arm: cleanup build warnings. (thanks Dean Prichard) +* big: fix mistakes with probablyPrime. +* bufio: add WriteRune. +* bytes: add ReadRune and WriteRune to bytes.Buffer. +* cc: stack split bug fix. +* crypto: add SHA-224 to sha256, add sha512 package. (thanks Conrad Meyer) +* crypto/ripemd160: new package. (thanks Raif S. Naffah) +* crypto/rsa: don't use safe primes. +* gc: avoid fixed length buffer cleanbuf. (thanks Dean Prichard) + better compilation of floating point += + fix crash on complicated arg to make slice. + remove duplicate errors, give better error for I.(T) +* godoc: support for multiple packages in a directory, other fixes. +* gofmt: bug fixes. +* hash: add Sum64 interface. +* hash/crc32: add Update function. +* hash/crc64: new package implementing 64-bit CRC. +* math: add ilogb, logb, remainder. (thanks Charles L. Dorian) +* regexp: add ReplaceAllFunc, ReplaceAllStringFunc. +* runtime: clock garbage collection on bytes allocated, not pages in use. +* strings: make Split(s, "", n) faster. (thanks Spring Mc) +* syscall: minimal mingw version of syscall. (thanks Alex Brainman) +* template: add ParseFile, MustParseFile. ++ +
+There is one language change: the ability to convert a string to []byte or +[]int. This deprecates the strings.Bytes and strings.Runes functions. +You can convert your existing sources using these gofmt commands: + gofmt -r 'strings.Bytes(x) -> []byte(x)' -w file-or-directory-list + gofmt -r 'strings.Runes(x) -> []int(x)' -w file-or-directory-list +After running these you might need to delete unused imports of the "strings" +package. + +Other changes and fixes: +* 6l/8l/5l: add -r option +* 8g: make a[byte(x)] truncate x +* codereview.py: fix for compatibility with hg >=1.4.3 +* crypto/blowfish: new package (thanks Raif S. Naffah) +* dashboard: more performance tuning +* fmt: use String method in %q to get the value to quote. +* gofmt: several cosmetic changes +* http: fix handling of Connection: close, bug in http.Post +* net: correct DNS configuration, + fix network timeout boundary condition, + put [ ] around IPv6 addresses for Dial. +* path: add Match, + fix bug in Match with non-greedy stars (thanks Kevin Ballard) +* strings: delete Bytes, Runes (see above) +* tests: an Eratosthenesque concurrent prime sieve (thanks Anh Hai Trinh) ++ +
+This release is mainly bug fixes and a little new code. +There are no language changes. + +6g/5g/8g: bug fixes +8a/8l: Added FCMOVcc instructions (thanks Evan Shaw and Charles Dorian) +crypto/x509: support certificate creation +dashboard: caching to avoid datastore queries +exec: add dir argument to Run +godoc: bug fixes and code cleanups +http: continued implementation and bug fixes (thanks Petar Maymounkov) +json: fix quoted strings in Marshal (thanks Sergei Skorobogatov) +math: more functions, test cases, and benchmarks (thanks Charles L. Dorian) +misc/bbedit: treat predeclared identifiers as "keywords" (thanks Anthony Starks) +net: disable UDP server test (flaky on various architectures) +runtime: work around Linux kernel bug in futex, + pchw is now tiny +sync: fix to work on armv5 (thanks Dean Prichard) +websocket: fix binary frame size decoding (thanks Timo Savola) +xml: allow unquoted attribute values in non-Strict mode (thanks Amrut Joshi) + treat bool as value in Unmarshal (thanks Michael Hoisie) ++ +
+There are two small language changes: +* NUL bytes may be rejected in souce files, and the tools do reject them. +* Conversions from string to []int and []byte are defined but not yet implemented. + +Other changes and fixes: +* 5a/6a/8a/5c/6c/8c: remove fixed-size arrays for -I and -D options (thanks Dean Prichard) +* 5c/6c/8c/5l/6l/8l: add -V flag to display version number +* 5c/6c/8c: use "cpp" not "/bin/cpp" for external preprocessor (thanks Giles Lean) +* 8a/8l: Added CMOVcc instructions (thanks Evan Shaw) +* 8l: pe executable building code changed to include import table for kernel32.dll functions (thanks Alex Brainman) +* 5g/6g/8g: bug fixes +* asn1: bug fixes and additions (incl marshalling) +* build: fix build for Native Client, Linux/ARM +* dashboard: show benchmarks, add garbage collector benchmarks +* encoding/pem: add marshalling support +* exp/draw: fast paths for a nil mask +* godoc: support for directories outside $GOROOT +* http: sort header keys when writing Response or Request to wire (thanks Petar Maymounkov) +* math: special cases and new functions (thanks Charles Dorian) +* mime: new package, used in http (thanks Michael Hoisie) +* net: dns bug fix - use random request id +* os: finalize File, to close fd. +* path: make Join variadic (thanks Stephen Weinberg) +* regexp: optimization bug fix +* runtime: misc fixes and optimizations +* syscall: make signature of Umask on OS X, FreeBSD match Linux. (thanks Giles Lean) ++ +
+There is one language change: support for ...T parameters: + http://golang.org/doc/go_spec.html#Function_types + +You can now check build status on various platforms at the Go Dashboard: + http://godashboard.appspot.com + +* 5l/6l/8l: several minor fixes +* 5a/6a/8a/5l/6l/8l: avoid overflow of symb buffer (thanks Dean Prichard) +* compress/gzip: gzip deflater (i.e., writer) +* debug/proc: add mingw specific build stubs (thanks Joe Poirier) +* exp/draw: separate the source-point and mask-point in Draw +* fmt: handle nils safely in Printf +* gccgo: error messages now match those of gc +* godoc: several fixes +* http: bug fixes, revision of Request/Response (thanks Petar Maymounkov) +* image: new image.A type to represent anti-aliased font glyphs + add named colors (e.g. image.Blue), suitable for exp/draw +* io: fixed bugs in Pipe +* malloc: merge into package runtime +* math: fix tests on FreeBSD (thanks Devon H. O'Dell) + add functions; update tests and special cases (thanks Charles L. Dorian) +* os/signal: send SIGCHLDs to Incoming (thanks Chris Wedgwood) +* reflect: add StringHeader to reflect +* runtime: add SetFinalizer +* time: Sleep through interruptions (thanks Chris Wedgwood) + add RFC822 formats + experimental implemenation of Ticker using two goroutines for all tickers +* xml: allow underscores in XML element names (thanks Michael Hoisie) + allow any scalar type in xml.Unmarshal ++ +
+There are two small language changes: the meaning of chan <- chan int +is now defined, and functions returning functions do not need to +parenthesize the result type. + +There is one significant implementation change: the compilers can +handle multiple packages using the same name in a single binary. +In the gc compilers, this comes at the cost of ensuring that you +always import a particular package using a consistent import path. +In the gccgo compiler, the cost is that you must use the -fgo-prefix +flag to pass a unique prefix (like the eventual import path). + +5a/6a/8a: avoid use of fixed-size buffers (thanks Dean Prichard) +5g, 6g, 8g: many minor bug fixes +bufio: give Writer.WriteString same signature as bytes.Buffer.WriteString. +container/list: PushFrontList, PushBackList (thanks Jan Hosang) +godoc: trim spaces from search query (thanks Christopher Wedgwood) +hash: document that Sum does not change state, fix crypto hashes +http: bug fixes, revision of Request/Response (thanks Petar Maymounkov) +math: more handling of IEEE 754 special cases (thanks Charles Dorian) +misc/dashboard: new build dashboard +net: allow UDP broadcast, + use /etc/hosts to resolve names (thanks Yves Junqueira, Michael Hoisie) +netchan: beginnings of new package for connecting channels across a network +os: allow FQDN in Hostname test (thanks Icarus Sparry) +reflect: garbage collection bug in Call +runtime: demo of Go on raw (emulated) hw in runtime/pchw, + performance fix on OS X +spec: clarify meaning of chan <- chan int, + func() func() int is allowed now, + define ... T (not yet implemented) +template: can use interface values +time: fix for +0000 time zone, + more robust tick.Stop. +xgb: support for authenticated connections (thanks Firmansyah Adiputra) +xml: add Escape (thanks Stephen Weinberg) ++ +
+This release is mainly bug fixes with a little new code. +There are no language changes. + +build: $GOBIN should no longer be required in $PATH (thanks Devon H. O'Dell), + new package target "make bench" to run benchmarks +8g: faster float -> uint64 conversion (thanks Evan Shaw) +5g, 6g, 8g: + clean opnames.h to avoid stale errors (thanks Yongjian Xu), + a handful of small compiler fixes +5g, 6g, 8g, 5l, 6l, 8l: ignore $GOARCH, which is implied by name of tool +6prof: support for writing input files for google-perftools's pprof +asn1: fix a few structure-handling bugs +cgo: many bug fixes (thanks Devon H. O'Dell) +codereview: repeated "hg mail" sends "please take another look" +gob: reserve ids for future expansion +godoc: distinguish HTML generation from plain text HTML escaping (thanks Roger Peppe) +gofmt: minor bug fixes, removed -oldprinter flag +http: add CanonicalPath (thanks Ivan Krasin), + avoid header duplication in Response.Write, + correctly escape/unescape URL sections +io: new interface ReadByter +json: better error, pointer handling in Marshal (thanks Ivan Krasin) +libmach: disassembly of FUCOMI, etc (thanks Evan Shaw) +math: special cases for most functions and 386 hardware Sqrt (thanks Charles Dorian) +misc/dashboard: beginning of a build dashboard at godashboard.appspot.com. +misc/emacs: handling of new semicolon rules (thanks Austin Clements), + empty buffer bug fix (thanks Kevin Ballard) +misc/kate: highlighting improvements (tahnks Evan Shaw) +os/signal: add signal names: signal.SIGHUP, etc (thanks David Symonds) +runtime: preliminary Windows support (thanks Hector Chu), + preemption polling to reduce garbage collector pauses +scanner: new lightweight scanner package +template: bug fix involving spaces before a delimited block +test/bench: updated timings +time: new Format, Parse functions ++ +
+This release is mainly bug fixes. There are no language changes. + +6prof: now works on 386 +8a, 8l: add FCOMI, FCOMIP, FUCOMI, and FUCOMIP (thanks Evan Shaw) +big: fix ProbablyPrime on small numbers +container/vector: faster []-based implementation (thanks Jan Mercl) +crypto/tls: extensions and Next Protocol Negotiation +gob: one encoding bug fix, one decoding bug fix +image/jpeg: support for RST markers +image/png: support for transparent paletted images +misc/xcode: improved support (thanks Ken Friedenbach) +net: return nil Conn on error from Dial (thanks Roger Peppe) +regexp: add Regexp.NumSubexp (thanks Peter Froehlich) +syscall: add Nanosleep on FreeBSD (thanks Devon H. O'Dell) +template: can use map in .repeated section + +There is now a public road map, in the repository and online +at http://golang.org/doc/devel/roadmap.html. ++ +
+Since the last release there has been one large syntactic change to +the language, already discussed extensively on this list: semicolons +are now implied between statement-ending tokens and newline characters. +See http://groups.google.com/group/golang-nuts/t/5ee32b588d10f2e9 for +details. + +By default, gofmt now parses and prints the new lighter weight syntax. +To convert programs written in the old syntax, you can use: + + gofmt -oldparser -w *.go + +Since everything was being reformatted anyway, we took the opportunity to +change the way gofmt does alignment. Now gofmt uses tabs at the start +of a line for basic code alignment, but it uses spaces for alignment of +interior columns. Thus, in an editor with a fixed-width font, you can +choose your own tab size to change the indentation, and no matter what +tab size you choose, columns will be aligned properly. + + +In addition to the syntax and formatting changes, there have been many +smaller fixes and updates: + +6g,8g,5g: many bug fixes, better registerization, + build process fix involving mkbuiltin (thanks Yongjian Xu), + method expressions for concrete types +8l: support for Windows PE files (thanks Hector Chu) +bytes: more efficient Buffer handling +bytes, strings: new function Fields (thanks Andrey Mirtchovski) +cgo: handling of enums (thanks Moriyoshi Koizumi), + handling of structs with bit fields, multiple files (thanks Devon H. O'Dell), + installation of .so to non-standard locations +crypto/sha256: new package for SHA 256 (thanks Andy Davis) +encoding/binary: support for slices of fixed-size values (thanks Maxim Ushakov) +exp/vector: experimental alternate vector representation (thanks Jan Mercl) +fmt: %p for chan, map, slice types +gob: a couple more bug fixes +http: support for basic authentication (thanks Ivan Krasin) +image/jpeg: basic JPEG decoder +math: correct handling of Inf and NaN in Pow (thanks Charles Dorian) +misc/bash: completion file for bash (thanks Alex Ray) +os/signal: support for handling Unix signals (thanks David Symonds) +rand: Zipf-distributed random values (thanks William Josephson) +syscall: correct error return bug on 32-bit machines (thanks Christopher Wedgwood) +syslog: new package for writing to Unix syslog daemon (thanks Yves Junqueira) +template: will automatically invoke niladic methods +time: new ISO8601 format generator (thanks Ben Olive) +xgb: converted generator to new syntax (thanks Tor Andersson) +xml: better mapping of tag names to Go identifiers (thanks Kei Son), + better handling of unexpected EOF (thanks Arvindh Rajesh Tamilmani) ++ +
+Since the last release there are two changes to the language: + +* new builtin copy(dst, src) copies n = min(len(dst), len(src)) + elements to dst from src and returns n. It works correctly + even if dst and src overlap. bytes.Copy is gone. + Convert your programs using: + gofmt -w -r 'bytes.Copy(d, s) -> copy(d, s)' *.go + +* new syntax x[lo:] is shorthand for x[lo:len(x)]. + Convert your programs using: + gofmt -w -r 'a[b:len(a)] -> a[b:]' *.go + +In addition, there have been many smaller fixes and updates: + +* 6g/8g/5g: many bug fixes +* 8g: fix 386 floating point stack bug (thanks Charles Dorian) +* all.bash: now works even when $GOROOT has spaces (thanks Sergio Luis O. B. Correia), + starting to make build work with mingw (thanks Hector Chu), + FreeBSD support (thanks Devon O'Dell) +* big: much faster on 386. +* bytes: new function IndexByte, implemented in assembly + new function Runes (thanks Peter Froehlich), + performance tuning in bytes.Buffer. +* codereview: various bugs fixed +* container/vector: New is gone; just declare a Vector instead. + call Resize to set len and cap. +* cgo: many bug fixes (thanks Eden Li) +* crypto: added MD4 (thanks Chris Lennert), + added XTEA (thanks Adrian O'Grady). +* crypto/tls: basic client +* exp/iterable: new functions (thanks Michael Elkins) +* exp/nacl: native client tree builds again +* fmt: preliminary performance tuning +* go/ast: more powerful Visitor (thanks Roger Peppe) +* gob: a few bug fixes +* gofmt: better handling of standard input, error reporting (thanks Fazlul Shahriar) + new -r flag for rewriting programs +* gotest: support for Benchmark functions (thanks Trevor Strohman) +* io: ReadFile, WriteFile, ReadDir now in separate package io/ioutil. +* json: new Marshal function (thanks Michael Hoisie), + better white space handling (thanks Andrew Skiba), + decoding into native data structures (thanks Sergey Gromov), + handling of nil interface values (thanks Ross Light). +* math: correct handling of sin/cos of large angles +* net: better handling of Close (thanks Devon O'Dell and Christopher Wedgwood) + support for UDP broadcast (thanks Jonathan Wills), + support for empty packets +* rand: top-level functions now safe to call from multiple goroutines +(thanks Roger Peppe). +* regexp: a few easy optimizations +* rpc: better error handling, a few bug fixes +* runtime: better signal handling on OS X, malloc fixes, + global channel lock is gone. +* sync: RWMutex now allows concurrent readers (thanks Péter Szabó) +* template: can use maps as data (thanks James Meneghello) +* unicode: updated to Unicode 5.2. +* websocket: new package (thanks Fumitoshi Ukai) +* xgb: preliminary X Go Bindings (thanks Tor Andersson) +* xml: fixed crash (thanks Vish Subramanian) +* misc: bbedit config (thanks Anthony Starks), + kate config (thanks Evan Shaw) +