diff options
author | Dmitri Shuralyov <dmitshur@golang.org> | 2019-12-10 15:31:47 -0500 |
---|---|---|
committer | Dmitri Shuralyov <dmitshur@golang.org> | 2019-12-11 00:32:53 +0000 |
commit | 9641acd6537bc0bf6717ae523956bae94bfc38fe (patch) | |
tree | 17b99ff80c1c14e230ff6aea2dc8a01a36b70f2e | |
parent | 9c8c27a318459e76970a8ac0f171a8fc1a6ef5b9 (diff) | |
download | go-9641acd6537bc0bf6717ae523956bae94bfc38fe.tar.gz go-9641acd6537bc0bf6717ae523956bae94bfc38fe.zip |
doc: remove Release History pages (moved to x/website)
These pages were moved to the x/website repo in CL 210797 (commit
golang/website@9aef1eefbbe663d448b04b7cc1b2b995f4cf4c0b).
Remove the old copies in this repo since they're no longer used.
Updates #36075
Updates #29206
Change-Id: I6e3ffaebd92fa753cb5f3b21e4238edfb7f5f0e8
Reviewed-on: https://go-review.googlesource.com/c/go/+/210798
Reviewed-by: Alexander Rakoczy <alex@golang.org>
-rw-r--r-- | doc/devel/pre_go1.html | 455 | ||||
-rw-r--r-- | doc/devel/release.html | 758 | ||||
-rw-r--r-- | doc/devel/weekly.html | 6200 |
3 files changed, 0 insertions, 7413 deletions
diff --git a/doc/devel/pre_go1.html b/doc/devel/pre_go1.html deleted file mode 100644 index 813e23cda6..0000000000 --- a/doc/devel/pre_go1.html +++ /dev/null @@ -1,455 +0,0 @@ -<!--{ - "Title": "Pre-Go 1 Release History" -}--> - -<p> -This page summarizes the changes between stable releases of Go prior to Go 1. -See the <a href="release.html">Release History</a> page for notes on recent releases. -</p> - -<h2 id="r60">r60 (released 2011/09/07)</h2> - -<p> -The r60 release corresponds to -<code><a href="weekly.html#2011-08-17">weekly.2011-08-17</a></code>. -This section highlights the most significant changes in this release. -For a more detailed summary, see the -<a href="weekly.html#2011-08-17">weekly release notes</a>. -For complete information, see the -<a href="//code.google.com/p/go/source/list?r=release-branch.r60">Mercurial change list</a>. -</p> - -<h3 id="r60.lang">Language</h3> - -<p> -An "else" block is now required to have braces except if the body of the "else" -is another "if". Since gofmt always puts those braces in anyway, -gofmt-formatted programs will not be affected. -To fix other programs, run gofmt. -</p> - -<h3 id="r60.pkg">Packages</h3> - -<p> -<a href="/pkg/http/">Package http</a>'s URL parsing and query escaping code -(such as <code>ParseURL</code> and <code>URLEscape</code>) has been moved to -the new <a href="/pkg/url/">url package</a>, with several simplifications to -the names. Client code can be updated automatically with gofix. -</p> - -<p> -<a href="/pkg/image/">Package image</a> has had significant changes made to the -<code>Pix</code> field of struct types such as -<a href="/pkg/image/#RGBA">image.RGBA</a> and -<a href="/pkg/image/#NRGBA">image.NRGBA</a>. -The <a href="/pkg/image/#Image">image.Image</a> interface type has not changed, -though, and you should not need to change your code if you don't explicitly -refer to <code>Pix</code> fields. For example, if you decode a number of images -using the <a href="/pkg/image/jpeg/">image/jpeg</a> package, compose them using -<a href="/pkg/image/draw/">image/draw</a>, and then encode the result using -<a href="/pkg/img/png">image/png</a>, then your code should still work as -before. -If your code <i>does</i> refer to <code>Pix</code> fields see the -<a href="/doc/devel/weekly.html#2011-07-19">weekly.2011-07-19</a> -snapshot notes for how to update your code. -</p> - -<p> -<a href="/pkg/template/">Package template</a> has been replaced with a new -templating package (formerly <code>exp/template</code>). The original template -package is still available as <a href="/pkg/old/template/">old/template</a>. -The <code>old/template</code> package is deprecated and will be removed. -The Go tree has been updated to use the new template package. We encourage -users of the old template package to switch to the new one. Code that uses -<code>template</code> or <code>exp/template</code> will need to change its -import lines to <code>"old/template"</code> or <code>"template"</code>, -respectively. -</p> - -<h3 id="r60.cmd">Tools</h3> - -<p> -<a href="/cmd/goinstall/">Goinstall</a> now uses a new tag selection scheme. -When downloading or updating, goinstall looks for a tag or branch with the -<code>"go."</code> prefix that corresponds to the local Go version. For Go -<code>release.r58</code> it looks for <code>go.r58</code>. For -<code>weekly.2011-06-03</code> it looks for <code>go.weekly.2011-06-03</code>. -If the specific <code>go.X</code> tag or branch is not found, it chooses the -closest earlier version. If an appropriate tag or branch is found, goinstall -uses that version of the code. Otherwise it uses the default version selected -by the version control system. Library authors are encouraged to use the -appropriate tag or branch names in their repositories to make their libraries -more accessible. -</p> - -<h3 id="r60.minor">Minor revisions</h3> - -<p> -r60.1 includes a -<a href="//golang.org/change/1824581bf62d">linker -fix</a>, a pair of -<a href="//golang.org/change/9ef4429c2c64">goplay</a> -<a href="//golang.org/change/d42ed8c3098e">fixes</a>, -and a <code>json</code> package -<a href="//golang.org/change/d5e97874fe84">fix</a> and -a new -<a href="//golang.org/change/4f0e6269213f">struct tag -option</a>. -</p> - -<p> -r60.2 -<a href="//golang.org/change/ff19536042ac">fixes</a> -a memory leak involving maps. -</p> - -<p> -r60.3 fixes a -<a href="//golang.org/change/01fa62f5e4e5">reflect bug</a>. -</p> - -<h2 id="r59">r59 (released 2011/08/01)</h2> - -<p> -The r59 release corresponds to -<code><a href="weekly.html#2011-07-07">weekly.2011-07-07</a></code>. -This section highlights the most significant changes in this release. -For a more detailed summary, see the -<a href="weekly.html#2011-07-07">weekly release notes</a>. -For complete information, see the -<a href="//code.google.com/p/go/source/list?r=release-branch.r59">Mercurial change list</a>. -</p> - -<h3 id="r59.lang">Language</h3> - -<p> -This release includes a language change that restricts the use of -<code>goto</code>. In essence, a <code>goto</code> statement outside a block -cannot jump to a label inside that block. Your code may require changes if it -uses <code>goto</code>. -See <a href="//golang.org/change/dc6d3cf9279d">this -changeset</a> for how the new rule affected the Go tree. -</p> - -<h3 id="r59.pkg">Packages</h3> - -<p> -As usual, <a href="/cmd/gofix/">gofix</a> will handle the bulk of the rewrites -necessary for these changes to package APIs. -</p> - -<p> -<a href="/pkg/http">Package http</a> has a new -<a href="/pkg/http/#FileSystem">FileSystem</a> interface that provides access -to files. The <a href="/pkg/http/#FileServer">FileServer</a> helper now takes a -<code>FileSystem</code> argument instead of an explicit file system root. By -implementing your own <code>FileSystem</code> you can use the -<code>FileServer</code> to serve arbitrary data. -</p> - -<p> -<a href="/pkg/os/">Package os</a>'s <code>ErrorString</code> type has been -hidden. Most uses of <code>os.ErrorString</code> can be replaced with -<a href="/pkg/os/#NewError">os.NewError</a>. -</p> - -<p> -<a href="/pkg/reflect/">Package reflect</a> supports a new struct tag scheme -that enables sharing of struct tags between multiple packages. -In this scheme, the tags must be of the form: -</p> -<pre> - `key:"value" key2:"value2"` -</pre> -<p> -The <a href="/pkg/reflect/#StructField">StructField</a> type's Tag field now -has type <a href="/pkg/reflect/#StructTag">StructTag</a>, which has a -<code>Get</code> method. Clients of <a href="/pkg/json">json</a> and -<a href="/pkg/xml">xml</a> will need to be updated. Code that says -</p> -<pre> - type T struct { - X int "name" - } -</pre> -<p> -should become -</p> -<pre> - type T struct { - X int `json:"name"` // or `xml:"name"` - } -</pre> -<p> -Use <a href="/cmd/govet/">govet</a> to identify struct tags that need to be -changed to use the new syntax. -</p> - -<p> -<a href="/pkg/sort/">Package sort</a>'s <code>IntArray</code> type has been -renamed to <a href="/pkg/sort/#IntSlice">IntSlice</a>, and similarly for -<a href="/pkg/sort/#Float64Slice">Float64Slice</a> and -<a href="/pkg/sort/#StringSlice">StringSlice</a>. -</p> - -<p> -<a href="/pkg/strings/">Package strings</a>'s <code>Split</code> function has -itself been split into <a href="/pkg/strings/#Split">Split</a> and -<a href="/pkg/strings/#SplitN">SplitN</a>. -<code>SplitN</code> is the same as the old <code>Split</code>. -The new <code>Split</code> is equivalent to <code>SplitN</code> with a final -argument of -1. -</p> - -<a href="/pkg/image/draw/">Package image/draw</a>'s -<a href="/pkg/image/draw/#Draw">Draw</a> function now takes an additional -argument, a compositing operator. -If in doubt, use <a href="/pkg/image/draw/#Op">draw.Over</a>. -</p> - -<h3 id="r59.cmd">Tools</h3> - -<p> -<a href="/cmd/goinstall/">Goinstall</a> now installs packages and commands from -arbitrary remote repositories (not just Google Code, Github, and so on). -See the <a href="/cmd/goinstall/">goinstall documentation</a> for details. -</p> - -<h2 id="r58">r58 (released 2011/06/29)</h2> - -<p> -The r58 release corresponds to -<code><a href="weekly.html#2011-06-09">weekly.2011-06-09</a></code> -with additional bug fixes. -This section highlights the most significant changes in this release. -For a more detailed summary, see the -<a href="weekly.html#2011-06-09">weekly release notes</a>. -For complete information, see the -<a href="//code.google.com/p/go/source/list?r=release-branch.r58">Mercurial change list</a>. -</p> - -<h3 id="r58.lang">Language</h3> - -<p> -This release fixes a <a href="//golang.org/change/b720749486e1">use of uninitialized memory in programs that misuse <code>goto</code></a>. -</p> - -<h3 id="r58.pkg">Packages</h3> - -<p> -As usual, <a href="/cmd/gofix/">gofix</a> will handle the bulk of the rewrites -necessary for these changes to package APIs. -</p> - -<p> -<a href="/pkg/http/">Package http</a> drops the <code>finalURL</code> return -value from the <a href="/pkg/http/#Client.Get">Client.Get</a> method. The value -is now available via the new <code>Request</code> field on <a -href="/pkg/http/#Response">http.Response</a>. -Most instances of the type map[string][]string in have been -replaced with the new <a href="/pkg/http/#Values">Values</a> type. -</p> - -<p> -<a href="/pkg/exec/">Package exec</a> has been redesigned with a more -convenient and succinct API. -</p> - -<p> -<a href="/pkg/strconv/">Package strconv</a>'s <a href="/pkg/strconv/#Quote">Quote</a> -function now escapes only those Unicode code points not classified as printable -by <a href="/pkg/unicode/#IsPrint">unicode.IsPrint</a>. -Previously Quote would escape all non-ASCII characters. -This also affects the <a href="/pkg/fmt/">fmt</a> package's <code>"%q"</code> -formatting directive. The previous quoting behavior is still available via -strconv's new <a href="/pkg/strconv/#QuoteToASCII">QuoteToASCII</a> function. -</p> - -<p> -<a href="/pkg/os/signal/">Package os/signal</a>'s -<a href="/pkg/os/#Signal">Signal</a> and -<a href="/pkg/os/#UnixSignal">UnixSignal</a> types have been moved to the -<a href="/pkg/os/">os</a> package. -</p> - -<p> -<a href="/pkg/image/draw/">Package image/draw</a> is the new name for -<code>exp/draw</code>. The GUI-related code from <code>exp/draw</code> is now -located in the <a href="/pkg/exp/gui/">exp/gui</a> package. -</p> - -<h3 id="r58.cmd">Tools</h3> - -<p> -<a href="/cmd/goinstall/">Goinstall</a> now observes the GOPATH environment -variable to build and install your own code and external libraries outside of -the Go tree (and avoid writing Makefiles). -</p> - - -<h3 id="r58.minor">Minor revisions</h3> - -<p>r58.1 adds -<a href="//golang.org/change/293c25943586">build</a> and -<a href="//golang.org/change/bf17e96b6582">runtime</a> -changes to make Go run on OS X 10.7 Lion. -</p> - -<h2 id="r57">r57 (released 2011/05/03)</h2> - -<p> -The r57 release corresponds to -<code><a href="weekly.html#2011-04-27">weekly.2011-04-27</a></code> -with additional bug fixes. -This section highlights the most significant changes in this release. -For a more detailed summary, see the -<a href="weekly.html#2011-04-27">weekly release notes</a>. -For complete information, see the -<a href="//code.google.com/p/go/source/list?r=release-branch.r57">Mercurial change list</a>. -</p> - -<p>The new <a href="/cmd/gofix">gofix</a> 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 <a href="//blog.golang.org/2011/04/introducing-gofix.html">the gofix blog post</a> for more -information.</p> - -<h3 id="r57.lang">Language</h3> - -<p> -<a href="/doc/go_spec.html#Receive_operator">Multiple assignment syntax</a> replaces the <code>closed</code> function. -The syntax for channel -receives allows an optional second assigned value, a boolean value -indicating whether the channel is closed. This code: -</p> - -<pre> - v := <-ch - if closed(ch) { - // channel is closed - } -</pre> - -<p>should now be written as:</p> - -<pre> - v, ok := <-ch - if !ok { - // channel is closed - } -</pre> - -<p><a href="/doc/go_spec.html#Label_scopes">Unused labels are now illegal</a>, just as unused local variables are.</p> - -<h3 id="r57.pkg">Packages</h3> - -<p> -<a href="/pkg/gob/">Package gob</a> will now encode and decode values of types that implement the -<a href="/pkg/gob/#GobEncoder">GobEncoder</a> and -<a href="/pkg/gob/#GobDecoder">GobDecoder</a> interfaces. This allows types with unexported -fields to transmit self-consistent descriptions; examples include -<a href="/pkg/big/#Int.GobDecode">big.Int</a> and <a href="/pkg/big/#Rat.GobDecode">big.Rat</a>. -</p> - -<p> -<a href="/pkg/http/">Package http</a> has been redesigned. -For clients, there are new -<a href="/pkg/http/#Client">Client</a> and <a href="/pkg/http/#Transport">Transport</a> -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 <a href="//code.google.com/p/goauth2/source/browse/oauth/oauth.go">OAuth2</a>. -For servers, <a href="/pkg/http/#ResponseWriter">ResponseWriter</a> -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 -<a href="/pkg/http/#Hijacker">Hijacker</a> or <a href="/pkg/http/#Flusher">Flusher</a>. -The RemoteAddr and UsingTLS methods are replaced by <a href="/pkg/http/#Request">Request</a>'s -RemoteAddr and TLS fields. -The SetHeader method is replaced by a Header method; -its result, of type <a href="/pkg/http/#Header">Header</a>, -implements Set and other methods. -</p> - -<p> -<a href="/pkg/net/">Package net</a> -drops the <code>laddr</code> argument from <a href="/pkg/net/#Conn.Dial">Dial</a> -and drops the <code>cname</code> return value -from <a href="/pkg/net/#LookupHost">LookupHost</a>. -The implementation now uses <a href="/cmd/cgo/">cgo</a> 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. -</p> - -<p> -<a href="/pkg/os/">Package os</a> -introduces simplified <a href="/pkg/os/#File.Open">Open</a> -and <a href="/pkg/os/#File.Create">Create</a> functions. -The original Open is now available as <a href="/pkg/os/#File.OpenFile">OpenFile</a>. -The final three arguments to <a href="/pkg/os/#Process.StartProcess">StartProcess</a> -have been replaced by a pointer to a <a href="/pkg/os/#ProcAttr">ProcAttr</a>. -</p> - -<p> -<a href="/pkg/reflect/">Package reflect</a> has been redesigned. -<a href="/pkg/reflect/#Type">Type</a> is now an interface that implements -all the possible type methods. -Instead of a type switch on a Type <code>t</code>, switch on <code>t.Kind()</code>. -<a href="/pkg/reflect/#Value">Value</a> is now a struct value that -implements all the possible value methods. -Instead of a type switch on a Value <code>v</code>, switch on <code>v.Kind()</code>. -Typeof and NewValue are now called <a href="/pkg/reflect/#Type.TypeOf">TypeOf</a> and <a href="/pkg/reflect/#Value.ValueOf">ValueOf</a> -To create a writable Value, use <code>New(t).Elem()</code> instead of <code>Zero(t)</code>. -See <a href="//golang.org/change/843855f3c026">the change description</a> -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. -</p> - -<p> -Remember that gofix will handle the bulk of the rewrites -necessary for these changes to package APIs. -</p> - -<h3 id="r57.cmd">Tools</h3> - -<p><a href="/cmd/gofix/">Gofix</a>, a new command, is described above.</p> - -<p> -<a href="/cmd/gotest/">Gotest</a> is now a Go program instead of a shell script. -The new <code>-test.short</code> 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 <code>make testshort</code>. -</p> - -<p> -The run-time support now implements CPU and memory profiling. -Gotest's new -<a href="/cmd/gotest/"><code>-test.cpuprofile</code> and -<code>-test.memprofile</code> flags</a> make it easy to -profile tests. -To add profiling to your web server, see the <a href="/pkg/http/pprof/">http/pprof</a> -documentation. -For other uses, see the <a href="/pkg/runtime/pprof/">runtime/pprof</a> documentation. -</p> - -<h3 id="r57.minor">Minor revisions</h3> - -<p>r57.1 fixes a <a href="//golang.org/change/ff2bc62726e7145eb2ecc1e0f076998e4a8f86f0">nil pointer dereference in http.FormFile</a>.</p> -<p>r57.2 fixes a <a href="//golang.org/change/063b0ff67d8277df03c956208abc068076818dae">use of uninitialized memory in programs that misuse <code>goto</code></a>.</p> - -<h2 id="r56">r56 (released 2011/03/16)</h2> - -<p> -The r56 release was the first stable release and corresponds to -<code><a href="weekly.html#2011-03-07">weekly.2011-03-07.1</a></code>. -The numbering starts at 56 because before this release, -what we now consider weekly snapshots were called releases. -</p> diff --git a/doc/devel/release.html b/doc/devel/release.html deleted file mode 100644 index c3f77f35e8..0000000000 --- a/doc/devel/release.html +++ /dev/null @@ -1,758 +0,0 @@ -<!--{ - "Title": "Release History" -}--> - -<p>This page summarizes the changes between official stable releases of Go. -The <a href="//golang.org/change">change log</a> has the full details.</p> - -<p>To update to a specific release, use:</p> - -<pre> -git pull -git checkout <i>release-branch</i> -</pre> - -<h2 id="policy">Release Policy</h2> - -<p> -Each major Go release is supported until there are two newer major releases. -For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was -supported until the Go 1.8 release. -We fix critical problems, including <a href="/security">critical security problems</a>, -in supported releases as needed by issuing minor revisions -(for example, Go 1.6.1, Go 1.6.2, and so on). -</p> - -<h2 id="go1.13">go1.13 (released 2019/09/03)</h2> - -<p> -Go 1.13 is a major release of Go. -Read the <a href="/doc/go1.13">Go 1.13 Release Notes</a> for more information. -</p> - -<h3 id="go1.13.minor">Minor revisions</h3> - -<p> -go1.13.1 (released 2019/09/25) includes security fixes to the -<code>net/http</code> and <code>net/textproto</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.1+label%3ACherryPickApproved">Go -1.13.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.13.2 (released 2019/10/17) includes security fixes to the -<code>crypto/dsa</code> package and the compiler. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.2+label%3ACherryPickApproved">Go -1.13.2 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.13.3 (released 2019/10/17) includes fixes to the go command, -the toolchain, the runtime, <code>syscall</code>, <code>net</code>, -<code>net/http</code>, and <code>crypto/ecdsa</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.3+label%3ACherryPickApproved">Go -1.13.3 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.13.4 (released 2019/10/31) includes fixes to the <code>net/http</code> and -<code>syscall</code> packages. It also fixes an issue on macOS 10.15 Catalina -where the non-notarized installer and binaries were being -<a href="https://golang.org/issue/34986">rejected by Gatekeeper</a>. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.4+label%3ACherryPickApproved">Go -1.13.4 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.13.5 (released 2019/12/04) includes fixes to the go command, the runtime, -the linker, and the <code>net/http</code> package. See the -<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.5+label%3ACherryPickApproved">Go -1.13.5 milestone</a> on our issue tracker for details. -</p> - -<h2 id="go1.12">go1.12 (released 2019/02/25)</h2> - -<p> -Go 1.12 is a major release of Go. -Read the <a href="/doc/go1.12">Go 1.12 Release Notes</a> for more information. -</p> - -<h3 id="go1.12.minor">Minor revisions</h3> - -<p> -go1.12.1 (released 2019/03/14) includes fixes to cgo, the compiler, the go -command, and the <code>fmt</code>, <code>net/smtp</code>, <code>os</code>, -<code>path/filepath</code>, <code>sync</code>, and <code>text/template</code> -packages. See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.1+label%3ACherryPickApproved">Go -1.12.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.2 (released 2019/04/05) includes fixes to the compiler, the go -command, the runtime, and the <code>doc</code>, <code>net</code>, -<code>net/http/httputil</code>, and <code>os</code> packages. See the -<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.2+label%3ACherryPickApproved">Go -1.12.2 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.3 (released 2019/04/08) was accidentally released without its -intended fix. It is identical to go1.12.2, except for its version -number. The intended fix is in go1.12.4. -</p> - -<p> -go1.12.4 (released 2019/04/11) fixes an issue where using the prebuilt binary -releases on older versions of GNU/Linux -<a href="https://golang.org/issues/31293">led to failures</a> -when linking programs that used cgo. -Only Linux users who hit this issue need to update. -</p> - -<p> -go1.12.5 (released 2019/05/06) includes fixes to the compiler, the linker, -the go command, the runtime, and the <code>os</code> package. See the -<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.5+label%3ACherryPickApproved">Go -1.12.5 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.6 (released 2019/06/11) includes fixes to the compiler, the linker, -the go command, and the <code>crypto/x509</code>, <code>net/http</code>, and -<code>os</code> packages. See the -<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.6+label%3ACherryPickApproved">Go -1.12.6 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.7 (released 2019/07/08) includes fixes to cgo, the compiler, -and the linker. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.7+label%3ACherryPickApproved">Go -1.12.7 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.8 (released 2019/08/13) includes security fixes to the -<code>net/http</code> and <code>net/url</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.8+label%3ACherryPickApproved">Go -1.12.8 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.9 (released 2019/08/15) includes fixes to the linker, -and the <code>os</code> and <code>math/big</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.9+label%3ACherryPickApproved">Go -1.12.9 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.10 (released 2019/09/25) includes security fixes to the -<code>net/http</code> and <code>net/textproto</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.10+label%3ACherryPickApproved">Go -1.12.10 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.11 (released 2019/10/17) includes security fixes to the -<code>crypto/dsa</code> package. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.11+label%3ACherryPickApproved">Go -1.12.11 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.12 (released 2019/10/17) includes fixes to the go command, -runtime, <code>syscall</code> and <code>net</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.12+label%3ACherryPickApproved">Go -1.12.12 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.12.13 (released 2019/10/31) fixes an issue on macOS 10.15 Catalina -where the non-notarized installer and binaries were being -<a href="https://golang.org/issue/34986">rejected by Gatekeeper</a>. -Only macOS users who hit this issue need to update. -</p> - -<p> -go1.12.14 (released 2019/12/04) includes a fix to the runtime. See -the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.14+label%3ACherryPickApproved">Go -1.12.14 milestone</a> on our issue tracker for details. -</p> - -<h2 id="go1.11">go1.11 (released 2018/08/24)</h2> - -<p> -Go 1.11 is a major release of Go. -Read the <a href="/doc/go1.11">Go 1.11 Release Notes</a> for more information. -</p> - -<h3 id="go1.11.minor">Minor revisions</h3> - -<p> -go1.11.1 (released 2018/10/01) includes fixes to the compiler, documentation, go -command, runtime, and the <code>crypto/x509</code>, <code>encoding/json</code>, -<code>go/types</code>, <code>net</code>, <code>net/http</code>, and -<code>reflect</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.1+label%3ACherryPickApproved">Go -1.11.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.2 (released 2018/11/02) includes fixes to the compiler, linker, -documentation, go command, and the <code>database/sql</code> and -<code>go/types</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.2+label%3ACherryPickApproved">Go -1.11.2 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.3 (released 2018/12/12) includes three security fixes to "go get" and -the <code>crypto/x509</code> package. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.3+label%3ACherryPickApproved">Go -1.11.3 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.4 (released 2018/12/14) includes fixes to cgo, the compiler, linker, -runtime, documentation, go command, and the <code>net/http</code> and -<code>go/types</code> packages. -It includes a fix to a bug introduced in Go 1.11.3 that broke <code>go</code> -<code>get</code> for import path patterns containing "<code>...</code>". -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.4+label%3ACherryPickApproved">Go -1.11.4 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.5 (released 2019/01/23) includes a security fix to the -<code>crypto/elliptic</code> package. See -the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.5+label%3ACherryPickApproved">Go -1.11.5 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.6 (released 2019/03/14) includes fixes to cgo, the compiler, linker, -runtime, go command, and the <code>crypto/x509</code>, <code>encoding/json</code>, -<code>net</code>, and <code>net/url</code> packages. See the -<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.6+label%3ACherryPickApproved">Go -1.11.6 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.7 (released 2019/04/05) includes fixes to the runtime and the -<code>net</code> packages. See the -<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.7+label%3ACherryPickApproved">Go -1.11.7 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.8 (released 2019/04/08) was accidentally released without its -intended fix. It is identical to go1.11.7, except for its version -number. The intended fix is in go1.11.9. -</p> - -<p> -go1.11.9 (released 2019/04/11) fixes an issue where using the prebuilt binary -releases on older versions of GNU/Linux -<a href="https://golang.org/issues/31293">led to failures</a> -when linking programs that used cgo. -Only Linux users who hit this issue need to update. -</p> - -<p> -go1.11.10 (released 2019/05/06) includes fixes to the runtime and the linker. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.10+label%3ACherryPickApproved">Go -1.11.10 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.11 (released 2019/06/11) includes a fix to the <code>crypto/x509</code> package. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.11+label%3ACherryPickApproved">Go -1.11.11 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.12 (released 2019/07/08) includes fixes to the compiler and the linker. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.12+label%3ACherryPickApproved">Go -1.11.12 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.11.13 (released 2019/08/13) includes security fixes to the -<code>net/http</code> and <code>net/url</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.13+label%3ACherryPickApproved">Go -1.11.13 milestone</a> on our issue tracker for details. -</p> - -<h2 id="go1.10">go1.10 (released 2018/02/16)</h2> - -<p> -Go 1.10 is a major release of Go. -Read the <a href="/doc/go1.10">Go 1.10 Release Notes</a> for more information. -</p> - -<h3 id="go1.10.minor">Minor revisions</h3> - -<p> -go1.10.1 (released 2018/03/28) includes fixes to the compiler, runtime, and the -<code>archive/zip</code>, <code>crypto/tls</code>, <code>crypto/x509</code>, -<code>encoding/json</code>, <code>net</code>, <code>net/http</code>, and -<code>net/http/pprof</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.1+label%3ACherryPickApproved">Go -1.10.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.10.2 (released 2018/05/01) includes fixes to the compiler, linker, and go -command. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.2+label%3ACherryPickApproved">Go -1.10.2 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.10.3 (released 2018/06/05) includes fixes to the go command, and the -<code>crypto/tls</code>, <code>crypto/x509</code>, and <code>strings</code> packages. -In particular, it adds <a href="https://go.googlesource.com/go/+/d4e21288e444d3ffd30d1a0737f15ea3fc3b8ad9"> -minimal support to the go command for the vgo transition</a>. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.3+label%3ACherryPickApproved">Go -1.10.3 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.10.4 (released 2018/08/24) includes fixes to the go command, linker, and the -<code>net/http</code>, <code>mime/multipart</code>, <code>ld/macho</code>, -<code>bytes</code>, and <code>strings</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.4+label%3ACherryPickApproved">Go -1.10.4 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.10.5 (released 2018/11/02) includes fixes to the go command, linker, runtime -and the <code>database/sql</code> package. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.5+label%3ACherryPickApproved">Go -1.10.5 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.10.6 (released 2018/12/12) includes three security fixes to "go get" and -the <code>crypto/x509</code> package. -It contains the same fixes as Go 1.11.3 and was released at the same time. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.6+label%3ACherryPickApproved">Go -1.10.6 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.10.7 (released 2018/12/14) includes a fix to a bug introduced in Go 1.10.6 -that broke <code>go</code> <code>get</code> for import path patterns containing -"<code>...</code>". -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.7+label%3ACherryPickApproved"> -Go 1.10.7 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.10.8 (released 2019/01/23) includes a security fix to the -<code>crypto/elliptic</code> package. See -the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.8+label%3ACherryPickApproved">Go -1.10.8 milestone</a> on our issue tracker for details. -</p> - -<h2 id="go1.9">go1.9 (released 2017/08/24)</h2> - -<p> -Go 1.9 is a major release of Go. -Read the <a href="/doc/go1.9">Go 1.9 Release Notes</a> for more information. -</p> - -<h3 id="go1.9.minor">Minor revisions</h3> - -<p> -go1.9.1 (released 2017/10/04) includes two security fixes. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.1+label%3ACherryPickApproved">Go -1.9.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.9.2 (released 2017/10/25) includes fixes to the compiler, linker, runtime, -documentation, <code>go</code> command, -and the <code>crypto/x509</code>, <code>database/sql</code>, <code>log</code>, -and <code>net/smtp</code> packages. -It includes a fix to a bug introduced in Go 1.9.1 that broke <code>go</code> <code>get</code> -of non-Git repositories under certain conditions. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.2+label%3ACherryPickApproved">Go -1.9.2 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.9.3 (released 2018/01/22) includes fixes to the compiler, runtime, -and the <code>database/sql</code>, <code>math/big</code>, <code>net/http</code>, -and <code>net/url</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.3+label%3ACherryPickApproved">Go -1.9.3 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.9.4 (released 2018/02/07) includes a security fix to “go get”. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.4+label%3ACherryPickApproved">Go -1.9.4</a> milestone on our issue tracker for details. -</p> - -<p> -go1.9.5 (released 2018/03/28) includes fixes to the compiler, go command, and -<code>net/http/pprof</code> package. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.5+label%3ACherryPickApproved">Go -1.9.5 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.9.6 (released 2018/05/01) includes fixes to the compiler and go command. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.6+label%3ACherryPickApproved">Go -1.9.6 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.9.7 (released 2018/06/05) includes fixes to the go command, and the -<code>crypto/x509</code>, and <code>strings</code> packages. -In particular, it adds <a href="https://go.googlesource.com/go/+/d4e21288e444d3ffd30d1a0737f15ea3fc3b8ad9"> -minimal support to the go command for the vgo transition</a>. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.7+label%3ACherryPickApproved">Go -1.9.7 milestone</a> on our issue tracker for details. -</p> - - -<h2 id="go1.8">go1.8 (released 2017/02/16)</h2> - -<p> -Go 1.8 is a major release of Go. -Read the <a href="/doc/go1.8">Go 1.8 Release Notes</a> for more information. -</p> - -<h3 id="go1.8.minor">Minor revisions</h3> - -<p> -go1.8.1 (released 2017/04/07) includes fixes to the compiler, linker, runtime, -documentation, <code>go</code> command and the <code>crypto/tls</code>, -<code>encoding/xml</code>, <code>image/png</code>, <code>net</code>, -<code>net/http</code>, <code>reflect</code>, <code>text/template</code>, -and <code>time</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.1">Go -1.8.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.8.2 (released 2017/05/23) includes a security fix to the -<code>crypto/elliptic</code> package. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.2">Go -1.8.2 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.8.3 (released 2017/05/24) includes fixes to the compiler, runtime, -documentation, and the <code>database/sql</code> package. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.3">Go -1.8.3 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.8.4 (released 2017/10/04) includes two security fixes. -It contains the same fixes as Go 1.9.1 and was released at the same time. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.4">Go -1.8.4 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.8.5 (released 2017/10/25) includes fixes to the compiler, linker, runtime, -documentation, <code>go</code> command, -and the <code>crypto/x509</code> and <code>net/smtp</code> packages. -It includes a fix to a bug introduced in Go 1.8.4 that broke <code>go</code> <code>get</code> -of non-Git repositories under certain conditions. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.5">Go -1.8.5 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.8.6 (released 2018/01/22) includes the same fix in <code>math/big</code> -as Go 1.9.3 and was released at the same time. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.6">Go -1.8.6 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.8.7 (released 2018/02/07) includes a security fix to “go get”. -It contains the same fix as Go 1.9.4 and was released at the same time. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.7">Go -1.8.7</a> milestone on our issue tracker for details. -</p> - -<h2 id="go1.7">go1.7 (released 2016/08/15)</h2> - -<p> -Go 1.7 is a major release of Go. -Read the <a href="/doc/go1.7">Go 1.7 Release Notes</a> for more information. -</p> - -<h3 id="go1.7.minor">Minor revisions</h3> - -<p> -go1.7.1 (released 2016/09/07) includes fixes to the compiler, runtime, -documentation, and the <code>compress/flate</code>, <code>hash/crc32</code>, -<code>io</code>, <code>net</code>, <code>net/http</code>, -<code>path/filepath</code>, <code>reflect</code>, and <code>syscall</code> -packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.1">Go -1.7.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.7.2 should not be used. It was tagged but not fully released. -The release was deferred due to a last minute bug report. -Use go1.7.3 instead, and refer to the summary of changes below. -</p> - -<p> -go1.7.3 (released 2016/10/19) includes fixes to the compiler, runtime, -and the <code>crypto/cipher</code>, <code>crypto/tls</code>, -<code>net/http</code>, and <code>strings</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.3">Go -1.7.3 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.7.4 (released 2016/12/01) includes two security fixes. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.4">Go -1.7.4 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.7.5 (released 2017/01/26) includes fixes to the compiler, runtime, -and the <code>crypto/x509</code> and <code>time</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.5">Go -1.7.5 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.7.6 (released 2017/05/23) includes the same security fix as Go 1.8.2 and -was released at the same time. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.2">Go -1.8.2 milestone</a> on our issue tracker for details. -</p> - -<h2 id="go1.6">go1.6 (released 2016/02/17)</h2> - -<p> -Go 1.6 is a major release of Go. -Read the <a href="/doc/go1.6">Go 1.6 Release Notes</a> for more information. -</p> - -<h3 id="go1.6.minor">Minor revisions</h3> - -<p> -go1.6.1 (released 2016/04/12) includes two security fixes. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.1">Go -1.6.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.6.2 (released 2016/04/20) includes fixes to the compiler, runtime, tools, -documentation, and the <code>mime/multipart</code>, <code>net/http</code>, and -<code>sort</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.2">Go -1.6.2 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.6.3 (released 2016/07/17) includes security fixes to the -<code>net/http/cgi</code> package and <code>net/http</code> package when used in -a CGI environment. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.3">Go -1.6.3 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.6.4 (released 2016/12/01) includes two security fixes. -It contains the same fixes as Go 1.7.4 and was released at the same time. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.4">Go -1.7.4 milestone</a> on our issue tracker for details. -</p> - -<h2 id="go1.5">go1.5 (released 2015/08/19)</h2> - -<p> -Go 1.5 is a major release of Go. -Read the <a href="/doc/go1.5">Go 1.5 Release Notes</a> for more information. -</p> - -<h3 id="go1.5.minor">Minor revisions</h3> - -<p> -go1.5.1 (released 2015/09/08) includes bug fixes to the compiler, assembler, and -the <code>fmt</code>, <code>net/textproto</code>, <code>net/http</code>, and -<code>runtime</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.5.1">Go -1.5.1 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.5.2 (released 2015/12/02) includes bug fixes to the compiler, linker, and -the <code>mime/multipart</code>, <code>net</code>, and <code>runtime</code> -packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.5.2">Go -1.5.2 milestone</a> on our issue tracker for details. -</p> - -<p> -go1.5.3 (released 2016/01/13) includes a security fix to the <code>math/big</code> package -affecting the <code>crypto/tls</code> package. -See the <a href="https://golang.org/s/go153announce">release announcement</a> for details. -</p> - -<p> -go1.5.4 (released 2016/04/12) includes two security fixes. -It contains the same fixes as Go 1.6.1 and was released at the same time. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.1">Go -1.6.1 milestone</a> on our issue tracker for details. -</p> - -<h2 id="go1.4">go1.4 (released 2014/12/10)</h2> - -<p> -Go 1.4 is a major release of Go. -Read the <a href="/doc/go1.4">Go 1.4 Release Notes</a> for more information. -</p> - -<h3 id="go1.4.minor">Minor revisions</h3> - -<p> -go1.4.1 (released 2015/01/15) includes bug fixes to the linker and the <code>log</code>, <code>syscall</code>, and <code>runtime</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.1">Go 1.4.1 milestone on our issue tracker</a> for details. -</p> - -<p> -go1.4.2 (released 2015/02/17) includes bug fixes to the <code>go</code> command, the compiler and linker, and the <code>runtime</code>, <code>syscall</code>, <code>reflect</code>, and <code>math/big</code> packages. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.2">Go 1.4.2 milestone on our issue tracker</a> for details. -</p> - -<p> -go1.4.3 (released 2015/09/22) includes security fixes to the <code>net/http</code> package and bug fixes to the <code>runtime</code> package. -See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.3">Go 1.4.3 milestone on our issue tracker</a> for details. -</p> - -<h2 id="go1.3">go1.3 (released 2014/06/18)</h2> - -<p> -Go 1.3 is a major release of Go. -Read the <a href="/doc/go1.3">Go 1.3 Release Notes</a> for more information. -</p> - -<h3 id="go1.3.minor">Minor revisions</h3> - -<p> -go1.3.1 (released 2014/08/13) includes bug fixes to the compiler and the <code>runtime</code>, <code>net</code>, and <code>crypto/rsa</code> packages. -See the <a href="https://github.com/golang/go/commits/go1.3.1">change history</a> for details. -</p> - -<p> -go1.3.2 (released 2014/09/25) includes bug fixes to cgo and the crypto/tls packages. -See the <a href="https://github.com/golang/go/commits/go1.3.2">change history</a> for details. -</p> - -<p> -go1.3.3 (released 2014/09/30) includes further bug fixes to cgo, the runtime package, and the nacl port. -See the <a href="https://github.com/golang/go/commits/go1.3.3">change history</a> for details. -</p> - -<h2 id="go1.2">go1.2 (released 2013/12/01)</h2> - -<p> -Go 1.2 is a major release of Go. -Read the <a href="/doc/go1.2">Go 1.2 Release Notes</a> for more information. -</p> - -<h3 id="go1.2.minor">Minor revisions</h3> - -<p> -go1.2.1 (released 2014/03/02) includes bug fixes to the <code>runtime</code>, <code>net</code>, and <code>database/sql</code> packages. -See the <a href="https://github.com/golang/go/commits/go1.2.1">change history</a> for details. -</p> - -<p> -go1.2.2 (released 2014/05/05) includes a -<a href="https://github.com/golang/go/commits/go1.2.2">security fix</a> -that affects the tour binary included in the binary distributions (thanks to Guillaume T). -</p> - -<h2 id="go1.1">go1.1 (released 2013/05/13)</h2> - -<p> -Go 1.1 is a major release of Go. -Read the <a href="/doc/go1.1">Go 1.1 Release Notes</a> for more information. -</p> - -<h3 id="go1.1.minor">Minor revisions</h3> - -<p> -go1.1.1 (released 2013/06/13) includes several compiler and runtime bug fixes. -See the <a href="https://github.com/golang/go/commits/go1.1.1">change history</a> for details. -</p> - -<p> -go1.1.2 (released 2013/08/13) includes fixes to the <code>gc</code> compiler -and <code>cgo</code>, and the <code>bufio</code>, <code>runtime</code>, -<code>syscall</code>, and <code>time</code> packages. -See the <a href="https://github.com/golang/go/commits/go1.1.2">change history</a> for details. -If you use package syscall's <code>Getrlimit</code> and <code>Setrlimit</code> -functions under Linux on the ARM or 386 architectures, please note change -<a href="//golang.org/cl/11803043">11803043</a> -that fixes <a href="//golang.org/issue/5949">issue 5949</a>. -</p> - -<h2 id="go1">go1 (released 2012/03/28)</h2> - -<p> -Go 1 is a major release of Go that will be stable in the long term. -Read the <a href="/doc/go1.html">Go 1 Release Notes</a> for more information. -</p> - -<p> -It is intended that programs written for Go 1 will continue to compile and run -correctly, unchanged, under future versions of Go 1. -Read the <a href="/doc/go1compat.html">Go 1 compatibility document</a> for more -about the future of Go 1. -</p> - -<p> -The go1 release corresponds to -<code><a href="weekly.html#2012-03-27">weekly.2012-03-27</a></code>. -</p> - -<h3 id="go1.minor">Minor revisions</h3> - -<p> -go1.0.1 (released 2012/04/25) was issued to -<a href="//golang.org/cl/6061043">fix</a> an -<a href="//golang.org/issue/3545">escape analysis bug</a> -that can lead to memory corruption. -It also includes several minor code and documentation fixes. -</p> - -<p> -go1.0.2 (released 2012/06/13) was issued to fix two bugs in the implementation -of maps using struct or array keys: -<a href="//golang.org/issue/3695">issue 3695</a> and -<a href="//golang.org/issue/3573">issue 3573</a>. -It also includes many minor code and documentation fixes. -</p> - -<p> -go1.0.3 (released 2012/09/21) includes minor code and documentation fixes. -</p> - -<p> -See the <a href="https://github.com/golang/go/commits/release-branch.go1">go1 release branch history</a> for the complete list of changes. -</p> - -<h2 id="pre.go1">Older releases</h2> - -<p> -See the <a href="pre_go1.html">Pre-Go 1 Release History</a> page for notes -on earlier releases. -</p> - diff --git a/doc/devel/weekly.html b/doc/devel/weekly.html deleted file mode 100644 index e17461db24..0000000000 --- a/doc/devel/weekly.html +++ /dev/null @@ -1,6200 +0,0 @@ -<!--{ - "Title": "Weekly Snapshot History" -}--> - -<p>This page summarizes the changes between tagged weekly snapshots of Go. -Such snapshots are no longer created. This page remains as a historical reference only.</p> - -<p>For recent information, see the <a href="//golang.org/change">change log</a> and <a href="//groups.google.com/group/golang-dev/">development mailing list</a>.</p> - -<h2 id="2012-03-27">2012-03-27 (<a href="release.html#go1">Go 1</a>)</h2> - -<pre> -* cmd/dist: fix detection of go1 version. -* cmd/go: add missing error check (thanks Evan Shaw), - allow underscores in tool name (thanks Shenghou Ma), - bug fixes, - copy tag_test.go from goinstall, - explain versions better, - respect $GOBIN always, - update for go1 tag format. -* cmd/godoc: canonicalize custom path redirects, - fix app engine version, - use virtual filesystem to implement -templates flag. -* codewalk/sharemem.xml: fix references to files. -* crypto/tls: don't select ECC ciphersuites with no mutual curve. -* doc: add JSON-RPC: a tale of interfaces article (thanks Francisco Souza), - describe the Windows MSI installer as experimental, - link to Go Project Dashboard from package list, - update wiki tutorial templates and template discussion, - and many minor fixes. -* exp/types: generalized GCImporter API. -* go/build: cgoEnabled is not known to cmd/dist anymore (thanks Shenghou Ma), - fix import check. -* godoc: make 'Overview' section collapsible. -* misc/dist: many fixes and tweaks. -* misc/emacs: fix indentation bug. -* misc/goplay: fix error on IE8 (thanks Yasuhiro Matsumoto). -* net: ignore ECONNABORTED from syscall.Accept (thanks Devon H. O'Dell). -* os: add missing byte to FileMode buffer (thanks Stefan Nilsson). -* path/filepath: convert drive letter to upper case in windows EvalSymlinks (thanks Alex Brainman), - correct comment in EvalSymlinks (thanks Alex Brainman), - use windows GetShortPathName api to force GetLongPathName to do its work (thanks Alex Brainman), - windows drive letter cannot be a digit (thanks Alex Brainman). -* run.bash: compile the codewalks. -* runtime: restore deadlock detection in the simplest case (thanks Rémy Oudompheng), - work around false negative in deadlock detection. -* text/template: fix typo in package comment. -* windows: installer fixes (thanks Joe Poirier). -</pre> - -<h2 id="2012-03-22">2012-03-22 (Go 1 Release Candidate 2)</h2> - -<pre> -As with last week's snapshot, this snapshot is another Go 1 release candidate. -A notable change in this snapshot are Windows installer fixes. - -Changes in this snapshot: -* 5l, 6l, 8l: fix stack split logic for stacks near default segment size. -* archive/zip: move r.zip off disk, into reader_test.go. -* build: catch API changes during build, - do more during windows build (thanks Alex Brainman), - lengthen timeout for the lengthy runtime test (thanks Shenghou Ma), - unset GOPATH before tests (thanks Shenghou Ma). -* cmd/cgo: add support for function export for gccgo (thanks Rémy Oudompheng), - fix handling of errno for gccgo. -* cmd/go: add -fno-common by default on Darwin (thanks Shenghou Ma), - don't add detail to errPrintedOutput, - fix directory->import path conversion, - make build errors more visible, - use .o, not .{5,6,8}, for gccgo created object files, - work around occasional ETXTBSY running cgo. -* cmd/godoc: add toys, tour button to playground, - inform users that the playground doesn't work via local godoc, - style example headings like links, - use *goroot as base path in zip file, - use FormatText for formating code in html template, - use shorter titles for tabs. -* cmd/gofmt: show ascii in usage (thanks Yasuhiro Matsumoto). -* cmd/pack: also recognize '\\' as path separator in filenames (thanks Shenghou Ma). -* crypto/tls: always send a Certificate message if one was requested. -* doc/install: remove reference to "Go Tutorial" (thanks Shenghou Ma). -* doc/play: use []rune instead of []int (thanks Yasuhiro Matsumoto). -* doc: add Go Concurrency Patterns: Timing out, moving on article (thanks Francisco Souza), - add Go image/draw package article and convert code snippets to Go1, - add Gobs of data article (thanks Francisco Souza), - add Godoc: documenting Go code article (thanks Francisco Souza), - add JSON and Go article (thanks Francisco Souza), - general update of gccgo installation instructions, - minor updates to most docs. -* flag: add examples. -* gc: fix struct and array comparisons for new bool rules (thanks Anthony Martin), - use quoted string format in import error, - when expanding append inline, preserve arguments. -* go/build: clarify why we exclude files starting with '_' or '.' (thanks Shenghou Ma), - clearer argument name for Import (src -> srcDir), - do not report Target for local imports, - fix match. -* go/printer, gofmt: fix multi-line logic. -* html/template: add Templates and XXXEscape functions, - fix nil pointer bug, - fix panic on Clone. -* io/ioutil: fix crash when Stat fails. -* make.bat: fix for old files (thanks Christopher Redden), - don't show error message if old generated files do not exist (thanks Shenghou Ma), - properly handle directories with spaces (thanks Alex Brainman). -* misc/cgo/gmp: update for Go 1 (thanks Shenghou Ma). -* misc/dashboard: remove old python package dashboard. -* misc/dist: don't ship cmd/cov or cmd/prof, - force modes to 0755 or 0644 in tarballs, - remove exp and old before building. -* misc/vim: restore fileencodings (thanks Yasuhiro Matsumoto). -* net/http: couple more triv.go modernizations, - ensure triv.go compiles and runs (thanks Robert Hencke). -* net: drop unnecessary type assertions and fix leak in test (thanks Mikio Hara). -* os: IsNotExist() should also consider ERROR_PATH_NOT_FOUND on Windows (thanks Shenghou Ma), - do not assume syscall.Write will write everything, - remove document duplication in error predicate functions (thanks Shenghou Ma), - return some invented data from Stat(DevNull) on windows (thanks Alex Brainman). -* path/filepath: implement Match and Glob on windows (thanks Alex Brainman). -* reflect: document PkgPath, Method, StructField, - panic if MakeSlice is given bad len/cap arguments. -* run.bat: disable test in test\bench\go1 to fix build (thanks Alex Brainman). -* runtime/cgo: darwin signal masking (thanks Mikio Hara), - linux signal masking (thanks Mikio Hara). -* runtime: do not handle signals before configuring handler, - manage stack by ourselves for badcallback on windows/amd64 (thanks Shenghou Ma), - remove unused goc2c.c (thanks Shenghou Ma). -* sort: add time complexity to doc (thanks Stefan Nilsson), - fix computation of maxDepth to avoid infinite loop (thanks Stefan Nilsson). -* spec: delete references to unsafe.Reflect,Typeof,Unreflect. -* syscall: Test SCM_CREDENTIALS, SO_PASSCRED on Linux (thanks Albert Strasheim), - add a test for passing an fd over a unix socket, - delete passfd_test.go. -* test: use testlib in a few more cases (thanks Shenghou Ma). -* text/template: fix a couple of parse bugs around identifiers, - variables do not take arguments. -</pre> - -<h2 id="2012-03-13">2012-03-13 (Go 1 Release Candidate 1)</h2> - -<pre> -This weekly snapshot is very close to what we expect will be the contents of -the Go 1 release. There are still a few minor documentation issues to resolve, -and a handful of bugs that should be addressed before the release, but the vast -majority of Go programs should be completely unaffected by any changes we make -between now and the full release. - -If you're interested in helping us test, eager to try out Go 1, or just -curious, this weekly snapshot is the one to try. We'll issue a new App Engine -Go 1 beta SDK very soon, so if you're an App Engine user you can try it there -too. - -To help us focus on any remaining bugs and avoid introducing new ones, we will -restrict our attention to critical fixes and issues marked Go1-Must in the -issue tracker. Everything non-essential will be held until after the Go 1 -release is cut and in the field for a while. - -Changes in this snapshot: -* archive/zip: verify CRC32s in non-streamed files, - write data descriptor signature for OS X; fix bugs reading it. -* build: build correct cmd/dist matching GOHOSTARCH (thanks Shenghou Ma), - re-enable some broken tests in run.bash (thanks Shenghou Ma), - remove some references to Make.inc etc. - use run.go for running tests. -* builder: use short test for subrepos (thanks Shenghou Ma). -* cgo, runtime: diagnose callback on non-Go thread. -* cmd/api: set compiler for all build contexts, - work on Windows again, and make gccgo files work a bit more. -* cmd/cgo: document CGO_LDFLAGS and CGO_CFLAGS, - silence const warnings. -* cmd/dist, cmd/go: move CGO_ENABLED from 'go tool dist env' to 'go env' (thanks Shenghou Ma). -* cmd/dist: fix build for Linux/ARM (thanks Shenghou Ma), - use correct hg tag for go version (thanks Alex Brainman). -* cmd/fix: add rules for net/http -> net/http/httputil renames. -* cmd/gc: allow ~ in import paths, - delete old map delete in walk, - do not confuse unexported methods of same name, - if $GOROOT_FINAL is set, rewrite file names in object files, - implement len(array) / cap(array) rule, - import path cannot start with slash on Windows (thanks Shenghou Ma), - must not inline panic, recover, - show duplicate key in error, - unnamed struct types can have methods. -* cmd/go: add -compiler, - add env command, use to fix misc/cgo/testso, - allow go get with arbitrary URLs, - allow ssh tunnelled bzr, git and svn (thanks Ingo Oeser), - always provide .exe suffix on windows (thanks Shenghou Ma), - document import path meta tag discovery in go help remote, - honor buildflags in run, test (thanks Rémy Oudompheng), - local import fixes, - make go get new.code/... work, - rebuild external test package dependencies, - respect $GOBIN always, - support -compiler for go list, fix isStale for gccgo (thanks Rémy Oudompheng). -* cmd/godoc: add support for serving templates. - fix codewalk handler (thanks Francisco Souza). - remove extra / in paths (thanks Ugorji Nwoke), - support $GOPATH, simplify file system code, - switch on +1 buttons. -* cmd/gofmt: fix race in long test (thanks Mikio Hara). -* codereview: fix for Mercurial 2.1. -* crypto/x509: allow server gated crypto in windows systemVerify (thanks Mikkel Krautz), - do not forget to free cert context (thanks Alex Brainman), - don't include empty additional primes in PKCS#1 private key, - enforce path length constraint, - new home for root fetchers; build chains using Windows API (thanks Mikkel Krautz). -* csv: clarify what a negative FieldsPerRecord means. -* database/sql: add docs about connection state, pooling, - ensure Stmts are correctly closed (thanks Gwenael Treguier), - fix double connection free on Stmt.Query error, - fix typo bug resulting in double-Prepare. -* database/sql: add ErrBadConn. -* doc/go1: template packages have changed since r60. -* doc/go_mem: init-created goroutine behavior changes for Go 1 (thanks Shenghou Ma). -* doc/gopher: flip frontpage gopher's eyes. -* doc: add "About the go command" article, - add C? Go? Cgo! article (thanks Francisco Souza), - add Go's declaration syntax article (thanks Francisco Souza), - add more gophers, - add note about import . to Go 1 compatibility notes, - several doc fixes and improvements, - update Effective Go init section, - update progs/run (thanks Shenghou Ma), - update reference gopher, - web site tweaks. -* encoding/asn1: handle UTCTime before the year 2000. -* encoding/binary: improve package comment (thanks Stefan Nilsson). -* encoding/gob: fix memory corruption. -* encoding/json: document that nil slice encodes as `null`. -* exp/wingui: moved to code.google.com/p/gowingui. -* expvar: add locking to String, and use RWMutex properly throughout, - add missing locking in String methods. -* fmt, log: stop using unicode. -* fmt: minor tweak of package doc to show headings in godoc (thanks Volker Dobler). -* go/build, cmd/go: add support for .syso files. -* go/build: add NoGoError, - add dependency test, - do not parse .syso files (thanks Alex Brainman). -* go/parser: avoid endless loop in case of internal error, - better error synchronization. -* go/printer, gofmt: nicer formatting of multi-line returns. -* go/printer: example for Fprint. -* go/scanner: better panic diagnostic. -* go spec: no known implementation differences anymore, - fix inaccuracy in type identity definition. -* io: better document WriterAt. -* misc/dashboard: remove obsolete package builder code. -* misc/dist: add source archive support, - add windows installer and zip support, - minimum target requirement is 10.6 for Darwin (thanks Shenghou Ma). -* misc/emacs: fix extra indentation after comments that end with a period. -* misc/xcode: example install of language spec for Xcode 4.x (thanks Emil Hessman). -* net, net/rpc, reflect, time: document concurrency guarantees. -* net/http: fix crash with Transport.CloseIdleConnections, - return appropriate errors from ReadRequest. -* net: add skip message to test (thanks Mikio Hara), - disable use of external listen along with other external network uses, - do not use reflect for DNS messages (thanks Rémy Oudompheng), - document ReadMsgUnix, WriteMsgUnix, - fix TestDialTimeout on windows builder, - improve server and file tests (thanks Mikio Hara), - make Dial and Listen behavior consistent across over platforms (thanks Mikio Hara), - remove dependence on bytes, fmt, strconv, - silence another epoll print, - use IANA reserved port to test dial timeout (thanks Mikio Hara). -* os: document FileInfo.Size as system-dependent for irregular files, - fix SameFile to work for directories on windows (thanks Alex Brainman). -* path/filepath/path_test.go: repair and enable TestAbs. -* path/filepath: disable AbsTest on windows, - retrieve real file name in windows EvalSymlinks (thanks Alex Brainman). -* runtime/pprof: disable test on Leopard 64-bit. -* runtime: add Compiler, - fix windows/amd64 exception handler (thanks Alex Brainman), - inline calls to notok, - move runtime.write back to C, - print error on receipt of signal on non-Go thread, - remove unused runtime·signame and runtime·newError, - try extending arena size in 32-bit allocator (thanks Rémy Oudompheng), - wait for main goroutine before setting GOMAXPROCS (thanks Rémy Oudompheng). -* strconv: add table-based isPrint, remove dependence on bytes, unicode, and strings. -* sync/atomic: disable store and load test on a single processor machine (thanks Mikio Hara). -* syscall: fix mkall.sh, mksyscall_linux.pl, and regen for Linux/ARM (thanks Shenghou Ma). -* test/run: use all available cores on ARM system (thanks Shenghou Ma). -* test: actually run them on windows (thanks Alex Brainman), - add inherited interface test to ddd.go, - enable method expression tests in ddd.go, - invoke go command in run.go, - match gccgo error messages for bug388.go, - skip . files in directory. -* testing: do not print 'no tests' when there are examples. -* time: during short test, do not bother tickers take longer than expected (thanks Shenghou Ma), - mention receiver in Unix, UnixNano docs. -* unicode/utf16: remove dependence on package unicode. -* unicode/utf8: remove dependence on unicode. -* windows: make background of gopher icon transparent (thanks Volker Dobler). -</pre> - -<h2 id="2012-03-04">2012-03-04</h2> - -<pre> -This snapshot includes a major re-design of the go/build package. -Its FindTree, ScanDir, Tree, and DirInfo types have been replaced with the -Import and Package types. There is no gofix. Code that uses go/build will need -to be updated manually to use the package's new interface. - -Other changes: -* 6a/6l: add IMUL3Q and SHLDL. -* all: remove unused unexported functions and constants (thanks Rémy Oudompheng). -* build: add GO_ prefix to LDFLAGS and GCFLAGS (thanks Gustavo Niemeyer). -* cmd/cc: fix an out of bounds array access (thanks Anthony Martin), - grow some global arrays. -* cmd/dist: force line-buffering stdout/stderr on Unix (thanks Shenghou Ma), - recognize CC="ccache clang" as clang. -* cmd/go: avoid repeated include dirs (thanks Rémy Oudompheng), - fix -I flag for gc command (thanks Gustavo Niemeyer), - fix verbose command displaying (thanks Gustavo Niemeyer), - fixes for gccgo (thanks Rémy Oudompheng), - many fixes, - test -i should not disable -c (thanks Shenghou Ma). -* cmd/vet: don't give error for Printf("%+5.2e", x) (thanks Shenghou Ma). -* cmd/yacc/units.y: update comment, give better error messages when $GOROOT not set (thanks Shenghou Ma). -* crypto/tls: force OS X target version to 10.6 for API compatibility (thanks Mikkel Krautz). -* crypto/x509: fix typo in Verify documentation (thanks Mikkel Krautz). -* dist: treat CC as one unit (thanks Scott Lawrence). -* doc/go1: add justification discussions to major changes, - minor corrections and updates. -* doc: describe API changes to go/build, - elaborate available checks for cmd/vet (thanks Shenghou Ma), - expand code.html to discuss the go tool in more depth, - instruct FreeBSD/Linux users to rm the old version first, - remove Go for C++ Programmers, - remove roadmap document, - remove tutorial, - update codelab/wiki to Go 1 (thanks Shenghou Ma), -* encoding/gob: fix "// +build" comment for debug.go (thanks Shenghou Ma), - more hardening for lengths of input strings. -* encoding/json: drop MarshalForHTML; gofix calls to Marshal, - escape output from Marshalers. -* encoding/xml: fix anonymous field Unmarshal example (thanks Gustavo Niemeyer), - fix xml test tag usage (thanks Gustavo Niemeyer). -* gc: disallow absolute import paths, - fix escape analysis + inlining + closure bug, - fix string comparisons for new bool rules (thanks Anthony Martin), - reject import paths containing special characters (thanks Anthony Martin). -* go/ast: examples for ast.Print, ast.Inspect. -* go/doc, godoc: fix range of type declarations. -* go/parser: check import path restrictions, - expand test cases for bad import. -* go/printer, gofmt: improved comment placement. -* go/printer: fix printing of variadic function calls (thanks Anthony Martin), - fix test for new import path restrictions (thanks Anthony Martin), - replace multiline logic, - simpler exprList code, more tests. -* godoc: add Examples link to top-level index, - bring back highlighting, selections, and alerts, - consistent placement of documentation sections, - don't show directories w/o packages in flat dir mode, - don't show testdata directories, - fix codewalks. -* gotype: provide -comments flag. -* html/template: make doctype check case-insensitive (thanks Scott Lawrence), - use correct method signature in introduction example (thanks Mike Rosset). -* io: document that I/O is not necessarily safe for parallel access. -* ld: allow more -L options (thanks Shenghou Ma), - fix alignment of rodata section. -* misc: add zsh completion for go tool (thanks Rémy Oudompheng). -* misc/bash: Completion for go tool (thanks Yissakhar Z. Beck). -* misc/dashboard: fix bug in UI template, - record install counts for external packages. -* misc/dist: implement binary distribution scripts in go. -* misc/gobuilder: send commit time in RFC3339 format. -* misc/xcode: move Xcode3 specific files into sub directory. -* net/http/cgi: add an empty response test, - fix empty response. -* net/http/httptest: make Server.Close wait for outstanding requests to finish. -* net/http/httputil: fix DumpRequestOut on https URLs, - make https DumpRequestOut less racy. -* net/http: add overlooked 418 status code, per RFC 2324, - fix ProxyFromEnvironment bug, docs, add tests, - make a test more paranoid & reliable on Windows. -* net/rpc: silence read error on closing connection. -* net: add stubs for NetBSD (thanks Benny Siegert), - make -external flag for tests default to true (thanks Mikio Hara), - reorganize test files (thanks Mikio Hara). -* os: diagnose chdir error during StartProcess, - implement UserTime/SystemTime on windows (thanks Alex Brainman), - implement sameFile on windows (thanks Alex Brainman), - release process handle at the end of windows (*Process).Wait (thanks Alex Brainman), - sleep 5ms after process has exited on windows (thanks Alex Brainman). -* path/filepath: note that SplitList is different from strings.Split, - steer people away from HasPrefix. -* reflect: don't panic comparing functions in DeepEqual. - make Value.Interface return immutable data. -* runtime/pprof: support OS X CPU profiling. -* runtime: add sanity checks to the runtime-gdb.py prettyprinters, - check for ARM syscall failures (thanks Shenghou Ma), - darwin and linux signal masking, - run init on main thread, - size arena to fit in virtual address space limit. -* spec: allow disallow of \uFFFD in import path, - apply method sets, embedding to all types, not just named types, - clarifications around exports, uniqueness of identifiers, - import path implementation restriction, - inside functions, variables must be evaluated, - use the term "lexical token" (rather then "lexical symbol"). -* sync: add Once example, remove old WaitGroup example. -* test/bench/shootout: update post-Makefile. -* test: add documentation, misc fixes. -* testing: add -test.example flag to control execution of examples. -* text/template: add example showing use of custom function, - add examples that use multiple templates, - fix redefinition bugs. -* time: add a comment about how to use the Duration constants. -</pre> - -<h2 id="2012-02-22">2012-02-22</h2> - -<pre> -This weekly snapshot includes changes to the os and runtime packages. - -This should be the last of the significant incompatible changes before Go 1. - -There are no longer error constants such as EINVAL in the os package, since the -set of values varied with the underlying operating system. There are new -portable functions like IsPermission to test common error properties, plus a -few new error values with more Go-like names, such as ErrPermission and -ErrNoEnv. - -The os.Getenverror function has been removed. To distinguish between a -non-existent environment variable and an empty string, use os.Environ or -syscall.Getenv. - -The Process.Wait method has dropped its option argument and the associated -constants are gone from the package. Also, the function Wait is gone; only the -method of the Process type persists. - -The non-portable Waitmsg type has been replaced with the portable ProcessState. - -Much of the API exported by package runtime has been removed in favor of -functionality provided by other packages. Code using the runtime.Type -interface or its specific concrete type implementations should now use package -reflect. Code using runtime.Semacquire or runtime.Semrelease should use -channels or the abstractions in package sync. - -The runtime.Alloc, runtime.Free, and runtime.Lookup functions, an unsafe API -created for debugging the memory allocator, have no replacement. - -The runtime.Cgocalls and runtime.Goroutines functions have been renamed to -runtime.NumCgoCall and runtime.NumGoroutine. - -The "go fix" command will update code to accommodate most of these changes. - -Other changes: -* 5c, 6c, 8c, 6g, 8g: correct boundary checking (thanks Shenghou Ma). -* 5g, 6g, 8g: flush modified globals aggressively. -* 8a, 8l: add EMMS instruction (thanks Evan Shaw). -* bufio: don't return errors from good Peeks. -* build: add make.bash --no-clean option, - improve Windows support. -* builder: reuse existing workspace if possible (thanks Shenghou Ma), - update for os.Wait changes. -* bytes: document Compare/Equal semantics for nil arguments, and add tests. -* cgo: fix definition of opaque types (thanks Gustavo Niemeyer). -* cmd/api: record return type of functions for variable typecheck (thanks Rémy Oudompheng). -* cmd/cgo: bug fixes. -* cmd/dist: add clang specific -Wno options (thanks Bobby Powers), - fix install cmd/5g on non-arm system, - fix pprof permissions (thanks Bobby Powers), - make dir check in defaulttarg() more robust (thanks Shenghou Ma), - use correct package target when cross-compiling (thanks Alex Brainman). -* cmd/gc: correctly typecheck expression lists in returns (thanks Rémy Oudompheng), - don't believe that variables mentioned 256 times are unused (thanks Rémy Oudompheng), - error on constant shift overflows (thanks Rémy Oudompheng), - fix comparison of struct with _ field. - fix error for floating-point constant %, - new, less strict bool rules. -* cmd/go: add tool -n flag, - go test -i correctly handle cgo packages (thanks Shenghou Ma). -* codereview: fix submit message for new clone URL (thanks Shenghou Ma). -* database/sql/driver: API cleanups. -* doc: many fixes and adjustments. -* encoding/gob: cache engine for user type, not base type, - catch internal error when it happens, - fix mutually recursive slices of structs. -* encoding/json: ignore anonymous fields. -* go/doc: return Examples in name order. -* go/parser: imaginary constants and ! may start an expression. -* go/printer, gofmt: improved comma placement. -* go/printer: don't lose relevant parentheses when rewriting selector expressions. -* godoc: adjust line height in pre blocks, - don't print spurious suggestion when running "go doc foo", - fix absolute->relative mapping, - fix tag mismatch validation errors (thanks Scott Lawrence), - import example code support, - support flat directory view again. -* html/template: add Clone and AddParseTree, - don't indirect past a Stringer, - minor tweak to docs to improve HTML typography. -* image: add Decode example. -* ld: add NOPTRBSS for large, pointer-free uninitialized data. -* math/rand: Intn etc. should panic if their argument is <= 0. -* misc/dist/windows: distro builder updates (thanks Joe Poirier). -* misc/goplay: remain in work directory, build in temp directory. -* net, os, syscall: delete os.EPLAN9 (thanks Mikio Hara). -* net/http: add optional Server.TLSConfig field. -* net/smtp: use EHLO then HELO. -* net/textproto: accept bad MIME headers as browsers do. -* net/url: regularise receiver names. -* net: make LocalAddr on multicast return group address (thanks Mikio Hara), - make parseProcNetIGMP more robust (thanks Mikio Hara), - more selfConnect debugging: panic if ra == nil in internetSocket, - panic if sockaddrToTCP returns nil incorrectly, - other miscellaneous fixes. -* path, path/filepath: polish documentation (thanks Rémy Oudompheng). -* pprof: add Profile type. -* runtime: avoid malloc during malloc, - define NSIG to fix plan 9 build (thanks David du Colombier), - fix FreeBSD signal handling around thread creation (thanks Devon H. O'Dell), - goroutine profile, stack dumps, - implement runtime.osyield on FreeBSD 386, amd64 (thanks Devon H. O'Dell), - permit default behavior of SIGTSTP, SIGTTIN, SIGTTOU, - release unused memory to the OS (thanks Sébastien Paolacci), - remove an obsolete file (thanks Mikio Hara). -* spec: make all comparison results untyped bool, - refine the wording about variables in type switches, - struct comparison only compares non-blank fields. -* syscall: Make Pdeathsig type Signal in SysProcAttr on Linux (thanks Albert Strasheim), - fix bounds check in Error, - force Windows to always use US English error messages (thanks Shenghou Ma). -* test: migrated to new go-based testing framework. -* text/template: evaluate function fields. -* time: use Go distribution zoneinfo if system copy not found. -</pre> - -<h2 id="2012-02-14">2012-02-14</h2> - -<pre> -This release includes some package changes that require changes to client code. - -The flate, gzip and zlib's NewWriterXxx functions no longer return an error. -The compiler will flag all affected code which must then be updated by hand. - -The os package's Exec and Time functions were removed. Callers should use -syscall.Exec and time.Now instead. The ShellExpand function was renamed to -ExpandEnv. The NewFile function now takes a uintptr and the *File.Fd method -returns a uintptr. - -The runtime package's Type type and its methods have been removed. -Use the reflect package instead. - -Other changes: -* 8a, 8l: add LFENCE, MFENCE, SFENCE (thanks Darren Elwood). -* all.bat: report error code back to the gobuilder (thanks Alex Brainman). -* archive/zip: hide Write method from *Writer type. -* build: create the correct $GOTOOLDIR, - get rid of deps.bash (thanks Anthony Martin), - reject make.bash on Windows. -* builder: set $GOBUILDEXIT for Windows (thanks Alex Brainman), -* bytes: add Reader, - return error in WriteTo if buffer is not drained. -* cgo: add support for returning errno with gccgo (thanks Rémy Oudompheng). -* cmd/api: follow constant references. -* cmd/cgo: omit //line in -godefs, -cdefs output. -* cmd/dist: fixes (thanks Alex Brainman, Gustavo Niemeyer, Mikio Hara, Shenghou Ma). -* cmd/fix: warn about exp, old, deleted packages. -* cmd/gc: suspend safemode during typecheck of inlined bodies. -* cmd/go: a raft of fixes, - connect os.Stdin for go run and go tool, - go get scheme detection (thanks Daniel Krech), - respect test -timeout flag. -* cmd/vet: warn for construct 'Println(os.Stderr, ...)' (thanks Shenghou Ma). -* compress/gzip: remove dead code (thanks Alex Brainman). -* container/heap: add example. -* dashboard: add gobuilder -fail mode. -* database/sql: more tests, - remove Into from ScannerInto/ScanInto, - rename ErrTransactionFinished to ErrTxDone, - support ErrSkip in Tx.Exec (thanks Andrew Balholm), - treat pointers as nullable types as with encoding/json (thanks Andrew Pritchard). -* debug/macho: drop terrifyingly monstrous URL from package comment. -* dist: prevent recusive loop on windows when fatal() is called (thanks Daniel Theophanes). -* doc: add App Engine docs to 'learn' and 'reference' pages, - add playground.js, - new document about compatibility of releases, - update install.html for binary distros, add install-source.html. -* effective_go: use new map deletion syntax. -* encoding/binary: add Size, to replace the functionality of the old TotalSize, - another attempt to describe the type of Read and Write's data, - slices are allowed; say so. -* encoding/json: document buffering. -* encoding/xml: add support for the omitempty flag (thanks Gustavo Niemeyer). -* exp/norm: merged charinfo and decomposition tables. -* exp/types: use build.FindTree in GcImporter (thanks James Whitehead). -* flate: delete WrongValueError type. -* fmt: diagnose invalid verb applied to pointer, - scan FALSE correctly. -* gc: bug fixes, better error messages. -* go/doc: handle recursive embedded types (thanks Gary Burd), - don't lose exported consts/vars with unexported type, - treat predeclared error interface like an exported type. -* go/printer: implement SourcePos mode. -* godoc: list examples in index, - new design, - regard lone examples as "whole file" examples. -* html/template: added more words about examples and doc (thanks Bjorn Tipling). -* log/syslog: return length of data provided by the user, not length of header. -* make.bat: remove double quotes (thanks Alex Brainman). -* math: fix gamma doc, link to OEIS. -* mime: unexport some internal details. -* misc/dist: add binary distribution packaging script for linux, - new hierarchy for binary distribution packaging scripts. -* net/http: add ServeContent, - don't spin on temporary accept failure, - fix client goroutine leak with persistent connections, - fix reference to URL.RawPath in docs (thanks Bjorn Tipling), - panic on duplicate registrations, - use mtime < t+1s to check for unmodified (thanks Hong Ruiqi). -* net: avoid Shutdown during Close, - avoid TCP self-connect, - disable TestDialTimeout on Windows, - disable multicast test on Alpha GNU/Linux, - disable wild use of SO_REUSEPORT on BSD variants (thanks Mikio Hara), - enable flags on stream for multicast listeners (thanks Mikio Hara), - make use of listenerBacklog (thanks Mikio Hara), - prefer an IPv4 listen if no address given (thanks Mikio Hara). -* os/exec: add Cmd.Waitmsg. -* os/signal: revive this package. -* regexp/syntax: add package and Parse commentary. -* regexp: allow substitutions in Replace, ReplaceString. -* runtime, pprof: add profiling of thread creation. -* runtime, time: accelerate tests in short mode (thanks Rémy Oudompheng). -* runtime: exit early on OABI systems (thanks Shenghou Ma), - drop to 32 bit malloc if 64 bit will not work, - fix "SysReserve returned unaligned address" bug on 32-bit systems (thanks Shenghou Ma), - fix grsec support (thanks Gustavo Niemeyer), - on 386, fix FP control word on all threads, not just initial thread, - put lockorder before pollorder in Select memory block, - use startpanic so that only one thread handles an incoming SIGQUIT. -* spec: add forward links from 'method set' to where it gets used, - clarify implementation restrictions on untyped floats, - disallow recursive embedded interfaces, - method names must be unique, - send on closed channel counts as "proceeding", - strings are more slices than arrays. -* strconv: handle very large inputs. -* strings: add Seek and ReadAt methods to Reader. -* sync/atomic: disable hammer pointer tests on wrong size system. -* testing: let runtime catch the panic. -* text/template: refer HTML users to html/template. -* text/template/parse: deep Copy method for nodes. -* time: clean up MarshalJSON, add RFC3339 method, - use "2006-01-02 15:04:05.999999999 -0700 MST" as String format. -</pre> - -<h2 id="2012-02-07">2012-02-07</h2> - -<pre> -This weekly snapshot includes a re-organization of the Go tools. - -Only the go, godoc, and gofmt tools are installed to $GOROOT/bin (or $GOBIN). -The remainder are installed to $GOROOT/bin/tool. -This puts the lesser-used tools (6g, cgo, govet, etc.) outside the user PATH. -Instead these tools may be called through the go tool with 'go tool command'. -For example, to vet hello.go you would type 'go tool vet hello.go'. -Type 'go tool' see the list of available tools. - -With the move, some tools were given simpler names: - 6cov -> cov - 6nm -> nm - goapi -> api - gofix -> fix - gopack -> pack - gopprof -> pprof - govet -> vet - goyacc -> yacc - -The os/signal package has been moved to exp/signal. - -A new tool named 'dist' has been introduced to handle building the gc tool -chain and to bootstrap the go tool. The old build scripts and make files -have been removed. - -Other changes: -* 5a, 6a, 8a, cc: check in y.tab.[ch]. -* 5l, 6l, 8l, ld: remove memory leaks (thanks Shenghou Ma). -* 5l, 6l, 8l: implement -X flag. -* 5l: make -v option output less nonessential clutter (thanks Shenghou Ma), - optimize the common case in patch() (thanks Shenghou Ma). -* 8a, 8l: implement support for RDTSC instruction (thanks Shenghou Ma). -* 8g: use uintptr for local pc. -* archive/zip: support full range of FileMode flags (thanks Gustavo Niemeyer). -* bufio: remove special error type, update docs. -* build: move the "-c" flag into HOST_CFLAGS (thanks Anthony Martin), - remove unnecessary pragmas (thanks Anthony Martin). -* builder: drop recover blocks. -* bytes: API tweaks. -* cgo: accept null pointers in gccgo flavour of C.GoString (thanks Rémy Oudompheng), - print line numbers in fatal errors when relevant (thanks Rémy Oudompheng). -* cmd/dist: add GOBIN to env's output (thanks Gustavo Niemeyer), - fix bug in bsubst (thanks Alex Brainman), - fix build on openbsd (thanks Mikio Hara), - generate files for package runtime, - ignore file names beginning with . or _, - prevent race on VERSION creation (thanks Gustavo Niemeyer). -* cmd/gc: another special (%hhS) case for method names, - describe debugging flags (thanks Anthony Martin), - diagnose \ in import path, - disallow switch _ := v.(type), - don't print implicit type on struct literal in export, - fix codegen reordering for expressions involving && and ||, - use octal escapes in mkopnames (thanks Anthony Martin). - use original constant expression in error messages (thanks Rémy Oudompheng). -* cmd/go: add support for release tags via git branches (thanks Gustavo Niemeyer), - build: print import errors when invoked on files (thanks Kyle Lemons), - clean test directories as they complete, - fix error message on non-existing tools (thanks Rémy Oudompheng), - fix handling of gccgo standard library (thanks Rémy Oudompheng), - fixed panic on `go clean -n` and `go clean -x` (thanks Sanjay Menakuru), - introduce support for "go build" with gccgo (thanks Rémy Oudompheng), - make vcs command actually gather output (thanks Roger Peppe), - pass env CGO_CFLAGS to cgo (thanks Jeff Hodges), - record location of failed imports for error reporting (thanks Rémy Oudompheng). -* cmd/goapi: expand embedded interfaces. -* cmd/goinstall: remove now that 'go get' works (thanks Gustavo Niemeyer). -* cmd/ld: fix gdbscript (thanks Wei Guangjing). -* cmd/pack: change gopack to pack in error messages. -* codereview: miscellaneous fixes and improvements. -* crypto/elliptic: p224Contract could produce a non-minimal representation. -* crypto/tls: better error message when connecting to SSLv3 servers. -* crypto/x509: use case-insensitive hostname matching. -* dashboard: support for sub-repositories, update to go1beta. -* database/sql: permit scanning into interface{}. -* doc: update go1.html for recent changes. -* encoding/base32: add DecodeString and EncodeToString helper methods, - ignore new line characters during decode. -* encoding/base64: ignore new line characters during decode. -* encoding/gob: document CommonType. -* encoding/hex: canonicalize error type names. -* encoding/json: call (*T).MarshalJSON for addressable T values. -* encoding/xml: fix decoding of xml.Name with sub-elements (thanks Gustavo Niemeyer), - fix documentation for Decoder.Skip. -* exp/norm: Added some benchmarks for form-specific performance measurements, - a few minor changes in prepration for a table format change. -* expvar: revise API. -* fix: add image/{bmp,tiff} to go1pkgrename. -* flag: allow a FlagSet to not write to os.Stderr, - describe valid input for Duration flags. -* fmt: add test of NaN map keys, - fix caching bug in Scan. -* go/build: put a space between 'generated by make' and package statement, - update syslist.go package comment. -* go/doc: fix URL linking in ToHTML (thanks Gary Burd), - added error, rune to list of predeclared types, - don't lose factory functions of non-exported types, - don't show methods of exported anonymous fields, - enable AllMethods flag (and fix logic). -* go/printer: don't print incorrect programs. -* go/scanner: idiomatic receiver names. -* go/spec: update language on map types. -* go/token: remove dependency on encoding/gob. -* gob: fuzz testing, plus a fix for very large type names. -* gobuilder: use go tool to build and test sub-repositories. -* godoc: add URL mode m=methods, - diagnostic for empty FS tree, - fix identifier search, - fix redirect loop for URL "/", - provide link to subdirectories, if any, - sort list of "other packages", - update metadata in appinit.go. -* gophertool: fix link to the build status dashboard (thanks Jongmin Kim). -* hgignore: add VERSION.cache (thanks Gustavo Niemeyer), - delete dregs, ignore tmpltohtml. -* html: add package doc. -* image: add package docs, rename s/UnknownFormatError/ErrFormat/ and, - delete the image.Repeated type, - remove image/bmp and image/tiff from std. -* io/ioutil: document EOF behavior in ReadFile and ReadAll. -* io: API tweaks. -* libmach: add stubs for Plan 9 (thanks Anthony Martin). -* make.bash: don't remove hgpatch. -* math/big: add raw access to Int bits, - API and documentation cleanup. -* misc/goplay: use go tool "run" (thanks Olivier Duperray). -* misc/osx: don't set GOROOT or modify profile files, - update for dist tool, drop image.bash, update readme. -* net, syscall: add IPv4 multicast helpers for windows (thanks Mikio Hara). -* net/http/httputil: fix race in DumpRequestOut, - preserve query params in reverse proxy. -* net/http: don't set Content-Type header for HEAD requests by default (thanks Patrick Mylund Nielsen), - fix nil pointer dereference in error case (thanks Volker Dobler), - close client fd sooner on response read error, - set cookies in client jar on POST requests (thanks Volker Dobler). -* net/rpc: fix data race on Call.Error. -* net: ListenMulticastUDP to listen concurrently across multiple listeners (thanks Mikio Hara), - disable normal multicast testing on linux/arm (thanks Mikio Hara), - fix Plan 9 build (thanks Anthony Martin), - fix windows build (thanks Alex Brainman), - move DNSConfigError to a portable file, - remove types InvalidConnError and UnknownSocketError, - replace error variable name e, errno with err (thanks Mikio Hara), - run TestDialTimeout on windows (thanks Alex Brainman), - update comments to remove redundant "net" prefix (thanks Mikio Hara). -* os/exec: TestExtraFiles - close any leaked file descriptors, - make sure file is not closed early in leaked fd test. -* os/signal: move to exp/signal. -* os/user: windows implementation (thanks Alex Brainman). -* os: Process.handle use syscall.Handle (thanks Wei Guangjing), - file windows use syscall.InvalidHandle instead of -1 (thanks Wei Guangjing), - remove SIGXXX signals variables, - turn FileStat.Sys into a method on FileInfo (thanks Gustavo Niemeyer). -* path/filepath: repair and simplify the symlink test. -* reflect: add comment about Type.Field allocation, - test that PtrTo returns types that match program types. -* runtime: add runtime.cputicks() and seed fastrand with it (thanks Damian Gryski), - delete UpdateMemStats, replace with ReadMemStats(&stats) (thanks Rémy Oudompheng), - fix float64 hash, - use GOTRACEBACK to decide whether to show runtime frames, - use per-map hash seeds (thanks Damian Gryski). -* spec: add number to the fibonacci sequence. -* std: add struct field tags to untagged literals. -* strings: add Fields example. -* syscall: add Timeval.Nano, Timespec.Nano, for conversion to Duration, - cache environment variables on Plan 9 (thanks Anthony Martin), - fix // +build comments in types_*.go, - fix build directive in types_linux.go, - update bootstrap scripts to sync with new go command (thanks Mikio Hara). -* test: add import test that caused an incorrect gccgo error, - add test for receiver named _, - add test of NaN in map, - add test which crashed gccgo compiler, - don't use package main for files without a main function, - fix bug headers, - float to integer test case, - make map nan timing test more robust, - match gccgo error messages, - test append with two different named types with same element type, - test method expressions with parameters, and with import, - test slice beyond len, - test that x := <-c accepts a general expression. -* testing: capture panics, present them, and mark the test as a failure. -* unicode: document large var blocks and the SpecialCase vars. -* vet: add a check for untagged struct literals. -</pre> - -<h2 id="2012-01-27">2012-01-27</h2> - -<pre> -This weekly snapshot renamed the html package to exp/html. The package will not -be present in the Go 1 distribution, but will be installable from source. - -Error variables in the archive/tar, archive/zip, compress/gzip, compress/zlib, -and crypto/bcrypt packages have been renamed from FooError to ErrFoo. -There is no gofix, but the compiler will flag code that needs updating. - -This weekly snapshot relocates many packages to sub-repositories of the main -Go repository. These are the old and new import paths: - - crypto/bcrypt code.google.com/p/go.crypto/bcrypt - crypto/blowfish code.google.com/p/go.crypto/blowfish - crypto/cast5 code.google.com/p/go.crypto/cast5 - crypto/md4 code.google.com/p/go.crypto/md4 - crypto/ocsp code.google.com/p/go.crypto/ocsp - crypto/openpgp code.google.com/p/go.crypto/openpgp - crypto/openpgp/armor code.google.com/p/go.crypto/openpgp/armor - crypto/openpgp/elgamal code.google.com/p/go.crypto/openpgp/elgamal - crypto/openpgp/errors code.google.com/p/go.crypto/openpgp/errors - crypto/openpgp/packet code.google.com/p/go.crypto/openpgp/packet - crypto/openpgp/s2k code.google.com/p/go.crypto/openpgp/s2k - crypto/ripemd160 code.google.com/p/go.crypto/ripemd160 - crypto/twofish code.google.com/p/go.crypto/twofish - crypto/xtea code.google.com/p/go.crypto/xtea - exp/ssh code.google.com/p/go.crypto/ssh - net/dict code.google.com/p/go.net/dict - net/websocket code.google.com/p/go.net/websocket - exp/spdy code.google.com/p/go.net/spdy - encoding/git85 code.google.com/p/go.codereview/git85 - patch code.google.com/p/go.codereview/patch - -Gofix will update imports of these packages to use the new import paths. -Installations that depend on these packages will need to install them using a -'go get' command. - -Other changes: -* 6c, 8c: make floating point code NaN-safe. -* 6l, 8l: remove unused macro definition (thanks Shenghou Ma). -* archive/tar: fix race in TestNonSeekable. -* archive/zip: add functions to convert between os.FileInfo & FileHeader. -* build: do not build all C compilers (thanks Shenghou Ma), - remove code now in subrepositories. -* bytes: remove dead code, complete documentation, - restore panic on out-of-memory, - turn buffer size overflows into errors. -* cgo: -cdefs should translate unsafe.Pointer to void * (thanks Shenghou Ma). -* cmd/gc: forgotten recursion on ninit itself in order.c. -* cmd/go: bug fixes, implement go get, - correctly handle -n and -x flags for 'go run' (thanks Shenghou Ma), - solve ambiguity of get lp.net/project/foo (thanks Gustavo Niemeyer), - update doc.go with text generated from the usage strings. -* cmd/goapi: new tool for tracking exported API over time. -* codereview: support for subrepositories. -* compress/flate: fix a typo, improve compression rate by 3-4%, - increase the length of hash table from 1<<15 to 1<<17. 0%-16% speedup, - make lazy matching work, - reduce memory pressure at cost of additional arithmetic operation, - use append instead of slice+counter. -* crypto: rename some FooError to ErrFoo. -* dashboard: fix -commit for new xml package. -* database/sql: add NullInt64, NullFloat64, NullBool (thanks James P. Cooper), - convert SQL null values to []byte as nil (thanks James P. Cooper), - fix Tx.Query (thanks Blake Mizerany). -* doc: expand FAQ on GOMAXPROCS, update to Go 1. -* doc/go1: add encoding/xml and net/url changes (thanks Gustavo Niemeyer), - add more info about hash and net changes, delete reference to html, - add flag, runtime, testing, image , mime, filepath.Walk, - document sub-repositories. -* encoding/binary: document that PutVarint, PutUvarint may panic. -* encoding/varint: deleted WriteXvarint. -* encoding/xml: add docs for ignoring tag (thanks Gustavo Niemeyer), - bring API closer to other packages (thanks Gustavo Niemeyer), - improve []byte handling (thanks Gustavo Niemeyer), - remove Marshaler support (thanks Gustavo Niemeyer), - support ignoring fields with "-" (thanks Gustavo Niemeyer). -* exp/ebnflint: test spec during 'go test'. -* exp/norm: fixes a subtle bug introduced by change 10087: random offset. -* gc, runtime: handle floating point map keys. -* gc: avoid DOT in error messages, - do not try to add a key with incorrect type to a hash (thanks Jeff R. Allen), - fix order of evaluation, - fix recursion loop in interface comparison, - handle function calls in arguments to builtin complex operations, - missed typecheck in subscripting a const string, - permit unsafe.Pointer for inlined functions, - softer criteria for inlinability, - static implements check on typeswitches only applies to concrete case types, - test case for recursive interface bug. -* go/ast: respect ImportSpec.EndPos (thanks Scott Lawrence). -* go/build: add BuildTags to Context, allow !tag. -* go/doc: rewrite and add lots of tests. -* go/parser: use explicit parser.Mode type. -* go/printer, gofmt: respect line breaks in signatures. -* go/scanner: use explicit scanner.Mode type. -* gob: annotate debug.go so it's not normally built, - reduce the maximum message size. -* godoc: log node printing error, - move overview before API TOC, - update metadata upon launch. -* gofix: add -debug flag for quicker diagnosis of internal errors, - handle xml.Unmarshal in xmlapi fix (thanks Gustavo Niemeyer), - update go1pkgrename for subrepositories. -* goyacc: fix indexing bug when yydebug >= 2. -* ld: fix Mach-O code signing for non-cgo binaries (thanks Mikkel Krautz). -* libmach: cross compiling support (thanks Shenghou Ma). -* math/big: assembly versions of bitLen for x86-64, 386, and ARM (thanks David G. Andersen), - return type of bitLen is an int; use MOVL on amd64 (thanks David G. Andersen), - add examples for Rat and Int's SetString and Scan methods, - slight improvement to algorithm used for internal bitLen function (thanks David G. Andersen), - test both bitLen and bitLen_g. -* net/http: add Request.RequestURI field, - disabled test for Transport race / deadlock bug, - fix Transport deadlock (thanks Yoshiyuki Kanno), - make ParseForm ignore unknown content types (thanks Roger Peppe), - parse CONNECT requests (thanks Andrew Balholm). -* net/rpc: fix data race in benchmark, - fix race in TestClientWriteError test, - log Call reply discard. -* net: Dial, ListenPacket with "ip:protocol" network for raw IP sockets (thanks Mikio Hara), - actually reset deadline when time is zero, - consistent OpError message (thanks Mikio Hara), - fix dialing google test (thanks Mikio Hara), - make WriteTo fail when UDPConn is already connected (thanks Mikio Hara). -* regexp: remove vestigial Error type. -* runtime: add type algorithms for zero-sized types, - move NumCPU declaration into debug.go. -* spec: function invocation, panic on *nil. -* syscall: add NOTE_* constants on OS X (thanks Robert Figueiredo). -* test: explicitly use variables to avoid gccgo "not used" error. -* text/template: add example for Template. -</pre> - -<h2 id="2012-01-20">2012-01-20</h2> - -<pre> -This weekly snapshot renamed the exp/sql package to database/sql, and moved -utf8.String from unicode/utf8 to exp/utf8string. - -Package net's SetTimeout methods were changed to SetDeadline. - -Many functions in package os now take a os.FileMode argument instead of a -plain uint32. An os.ModeSticky constant is also now defined. - -The meaning of the first buffer element for image.YCbCr has changed to match -the semantics of the other image types like image.RGBA. - -The NewMD5, NewSHA1 and NewSHA256 functions in crypto/hmac have been -deprecated. Use New instead, explicitly passing the hash function. - -Other changes: -* buildscripts: move to buildscript directory (thanks Shenghou Ma). -* bytes: add the usual copyright notice to example_test.go (thanks Olivier Duperray). -* cmd/go: remove mentions of 'gotest' from the documentation, - skip _obj directories in package scans. -* container/heap: better package documentation. -* crypto/elliptic: add constant-time P224. -* crypto/hmac: Add HMAC-SHA224 and HMAC-SHA384/512 (thanks Luit van Drongelen), -* crypto/tls: add FreeBSD root certificate location (thanks Shenghou Ma). -* crypto/x509: remove explicit uses of rsa. -* doc: various updates (thanks Jongmin Kim, Scott Lawrence, Shenghou Ma, Stefan Nilsson). -* encoding/json: allow / and % in tag names, - document angle bracket escaping, - fix comments, tweak tests for tag names (thanks Mikio Hara). -* encoding/xml: marshal/unmarshal xml.Name in field (thanks Gustavo Niemeyer). -* exp/inotify: fix data race in linux tests. -* exp/proxy: fix build after URL changes (thanks Gustavo Niemeyer). -* exp/sql: copy when scanning into []byte by default, - rename NullableString to NullString and allow its use as a parameter. -* exp/ssh: add marshal functions for uint32 and uint64 types, - handle versions with just '\n', - rename (some) fields (thanks Christopher Wedgwood). -* exp/terminal: fix build on non-Linux using Makefiles. -* fmt: enable and fix malloc test, -* gc: don't emit pkgpath for error type, - don't fault on return outside function (thanks Scott Lawrence), - fieldnames in structliterals in exported inlines should not be qualified if they're embedded builtin types, - fix infinite recursion for embedded interfaces, - give esc.c's sink an orig so -mm diagnostics work again, - handle printing of string/arrayrune conversions. - remove redundant code (thanks Shenghou Ma). -* go/build: no back slash in FindTree returned pkg name (thanks Alex Brainman). -* go/doc: collect imports, - don't shadow receiver. - rewrote and completed test framework. - print only one newline between paragraphs -* go/parser: expressions may have comments. -* go/scanner: fix example (thanks Olivier Duperray). -* go/token: replaced Files() with Iterate(). -* godoc: add anchors to cmd documentation headings, - remove "need more packages?" link, - specify HTML page metadata with a JSON blob, - support canonical Paths in HTML metadata. -* html/template: fix docs after API changes (thanks Gustavo Niemeyer). -* html: in foreign content, check for HTML integration points in breakout. -* image/color: rename modelYCbCr to yCbCrModel (thanks Benny Siegert), - simplify documentation (thanks David Crawshaw). -* image: add PixOffset methods. -* math/rand: decrease test duration in short mode, - document default initial seed for global generator (thanks Scott Lawrence). -* mime: make FormatMediaType take full type for consistency. -* misc/cgo/test: make tests run on windows (thanks Alex Brainman). -* net/http/cgi: increase a flaky test timeout. -* net/http: change test to use override param instead of chan, - log handler panic before closing HTTP connection, - send cookies in jar on redirect (thanks Jeff Hodges), - the documentation should call NewRequest with the right signature (thanks Christoph Hack), - update the Client docs a bit. -* net/url: cleaned up URL interface (v2) (thanks Gustavo Niemeyer). -* net: consistent log format in test (thanks Mikio Hara), - various build fixes (thanks Mikio Hara), - use NewTimer, not NewTicker, in fd_windows.go. -* old/netchan: fix data race on client hashmap. -* os/exec: trivial allocation removal in LookPath (thanks Gustavo Niemeyer). -* os: remove old note about NewSyscallError being special (thanks Alex Brainman), -* path: added examples (thanks Sanjay Menakuru). -* pkg: Add and fix Copyright of "hand generated" files (thanks Olivier Duperray), - add missing godoc comments to windows versions (thanks Alex Brainman). -* regexp: add SubexpNames. -* runtime: implement runtime.usleep for FreeBSD/386 and amd64 (thanks Shenghou Ma), - madvise and SysUnused for Darwin (thanks Dave Cheney). -* sync/atomic: fix data race in tests. -* syscall: add Unix method to TimeSpec, TimeVal, - fix plan9 build (thanks Mikio Hara). -* test: change several tests to not print, - fix bug364 to actually run, - match gccgo error messages for bug345, - split golden.out into expected output per test. -* testing: do not recover example's panic (thanks Shenghou Ma), - document examples. -* text/template/parse: use human error prints. -* text/template: fix nil error on redefinition. -* time: add Since, which returns the time elapsed since some past time t. -</pre> - -<h2 id="2012-01-15">2012-01-15</h2> - -<pre> -This weekly snapshot includes two package changes that may require changes to -client code. - -The image package's Tiled type has been renamed to Repeated. - -The encoding/xml package has been changed to make more idiomatic use of struct -tags, among other things. If you use the xml package please read the change -description to see if your code is affected: - http://code.google.com/p/go/source/detail?r=70e914beb409 - -Function inlining is now enabled by default in the gc compiler. - -Other changes: -* bytes: Buffer read of 0 bytes at EOF shouldn't be an EOF. -* cgo: if value for constant did not parse, get it from DWARF info, - write _cgo_export.h to object directory, not source dir. -* cmd/go: add -p flag for parallelism (like make -j), - add -v flag to build and install, - add ... patterns in import path arguments, - fix data race during build, - fix import directory list for compilation, - fix linker arguments, - handle cgo pkg-config pragmas, - handle path to cmd directory, - include test files in fmt, vet, and fix (thanks Sanjay Menakuru), - kill test processes after 10 minutes, - pass arguments to command for run (thanks Eric Eisner), - rely on exit code to tell if test passed, - use relative paths in go fix, go fmt, go vet output. -* cmd/gofmt: fix simplify.go by running gofmt on cmd/gofmt (thanks Olivier Duperray). -* crypto/openpgp: assorted cleanups, - truncate hashes before checking DSA signatures. -* crypto/tls: improve TLS Client Authentication (thanks Jeff R. Allen), - update generate_cert.go for new time package. -* dashboard: better caching, bug fixes. -* doc: update "How to Write Go Code" to use the go tool. - fix broken function codewalk examples. -* encoding/asn1: document support for *big.Int (thanks Florian Weimer). -* encoding/gob: fix panic when decoding []byte to incompatible slice types (thanks Alexey Borzenkov). -* encoding/json: don't marshal special float values (thanks Evan Shaw). -* encoding/xml: major Go 1 fixup (thanks Gustavo Niemeyer). -* exp/proxy: new package. -* exp/sql: add time.Time support, - close Rows on EOF, - fix potential corruption in QueryRow.Scan into a *[]byte. -* exp/ssh: various small fixes (thanks Dave Cheney). -* exp/terminal: add SetPrompt and handle large pastes, - add to level Makefile for the (non-Linux?) systems that need it. -* flag: add Duration flag type, - change Set method Value interface to return error instead of bool. -* gc: better errors messages, - avoid false positives when using scalar struct fields (thanks Rémy Oudompheng), - closure code gen improvements, - disallow declaration of variables outside package, - fix switch on interface values (thanks Rémy Oudompheng), - inlining bug fixes, - improve unsafe.Pointer type-check error messages (thanks Ryan Hitchman), - put limit on size of exported recursive interface (thanks Lorenzo Stoakes), -* go-mode.el: fix syntax highlighting of backticks (thanks Florian Weimer). -* go/ast: remove unnecessary result value from ast.Fprint/Print. -* go/build: allow colon in #cgo flags, - pass CgoLDFLAGS at end of link command. -* go/doc: new API, don't ignore anonymous non-exported fields, initial testing support. -* go/parser: remove unused Parse* functions. Simplified ParseExpr signature. -* go/printer: don't crash if AST contains BadXXX nodes. -* go/scanner: 17% faster scanning, remove InsertSemis mode. -* goinstall: use correct checkout URL for Google Code svn repos. -* gotest: make _testmain.go conform to gofmt rules (thanks Benny Siegert). -* goyacc: fix units.y build breakage (thanks Shenghou Ma). -* html/template: reenable testcases and fix mis-escaped sequences (thanks Mike Samuel). -* html: "in select in table" insertion mode (thanks Andrew Balholm), - adjust foreign attributes, - foreign element HTML integration points, tag name adjustment, - parse <frameset> inside body (thanks Andrew Balholm), - propagate foreign namespaces only when adding foreign content. -* json: better error messages when the ,string option is misused. -* ld: parse but do not implement -X flag. -* log/syslog: add Alert method (thanks Vadim Vygonets). -* make.bash: remove old dregs (thanks Alex Brainman). -* math/big: simplify fast string conversion. -* math: fix typo in all_test.go (thanks Charles L. Dorian). -* misc/windows: add src/pkg/runtime/z* files to installation script (thanks Alex Brainman). -* net/http: don't ignore Request.Write's Flush error, - allow cookies with negative Max-Age attribute as these are (thanks Volker Dobler). -* net/textproto: avoid corruption when reading a single header. -* net: add IP-level socket option helpers for Unix variants (thanks Mikio Hara), - fix incorrect mode on ListenIP, ListenUDP (thanks Mikio Hara), - make use of the kernel state to listen on TCP, Unix (thanks Mikio Hara), - platform-dependent default socket options (thanks Mikio Hara). -* os: add ModeCharDevice. -* runtime: add NumCPU, - delete duplicate implementation of pcln walker, - distinct panic message for call of nil func value, - enable runtime.ncpu on FreeBSD (thanks Devon H. O'Dell), - make garbage collector faster by deleting code, - regenerate defs_darwin_{386,amd64}.h (thanks Dave Cheney), - runtime.usleep() bugfix on darwin/amd64 and linux/arm (thanks Shenghou Ma). -* spec: pointer comparison for pointers to 0-sized variables, - change the wording regarding select statement choice. -* strconv: fix round up corner case, - faster FormatFloat(x, *, -1, 64) using Grisu3 algorithm (thanks Rémy Oudompheng), - implement fast path for rounding already short numbers (thanks Rémy Oudompheng), - return ErrSyntax when unquoting illegal octal sequences. -* syscall: linux-only support for parent death signal (thanks Albert Strasheim), - make Environ return original order. -* testing: fix defer race, - use flag.Duration for -timeout flag. -* text/template: handle panic values that are not errors (thanks Rémy Oudompheng), - for range on a map, sort the keys if feasible. -* time: add ParseDuration, - fix docs for After and NewTicker. -* windows: use ArbitraryUserPointer as TLS slot (thanks Wei Guangjing). -</pre> - -<h2 id="2011-12-22">2011-12-22</h2> - -<pre> -This snapshot includes changes to the images/ycbcr and testing packages, and -changes to the build system. - -The types for managing Y'CbCr images in the image/ycbcr have been moved to the -image and image/color packages. A gofix module will rewrite affected code. - -The testing package's B type (used when running benchmarks) now has the same -methods as T (used in tests), such as Print, Error, and Fatal. - -This weekly adds a new command named 'go' for building and testing go programs. -For Go 1, the go command will replace the makefile-based approach that we have -been using. It is not yet ready for general use, but all.bash does use it to -build the tree. If you have problems building the weekly, you can 'export -USE_GO_TOOL=false' before running all.bash to fall back to the makefiles. - -Other changes: -* archive/zip: add SetModTime method to FileHeader. -* build: make use of env (thanks Mikio Hara), - fixes to make "go install" work on windows (thanks Alex Brainman). -* bytes: add two Buffer examples. -* cgo: support export for built-in types (thanks Maxim Pimenov). -* cmd/go: avoid infinite loop with package specific flags (thanks Mikio Hara), - fixes to build standard library, - implement test command, - make sure use of pthread for gcc-4.5 and beyond (thanks Mikio Hara), - respect $GCFLAGS, - use spaces consistently in help message (thanks Roger Peppe), - many other improvements. -* codereview: initialize "found" in codereview.py (thanks Miki Tebeka). -* crypto/mime/net/time: add netbsd to +build tags (thanks Joel Sing). -* crypto/tls: don't assume an RSA private key in the API. -* crypto/x509: don't crash with nil receiver in accessor method. -* doc/effective_go: discuss redeclaration. -* doc: delete go course notes, - refer to http://build.golang.org/ where applicable (thanks Robert Hencke), - suggest code.google.com/p/go instead of go.googlecode.com/hg. -* encoding/binary: add Write and Read examples, - add more benchmarks (thanks Roger Peppe). -* encoding/gob: arrays are zero only if their elements are zero. -* encoding/json: cleanup leftover variables in array decoding (thanks Rémy Oudompheng), - examples for Marshal and Unmarshal. -* exp/ssh: rename ClientAuthPublicKey helper ClientAuthKeyring (thanks Dave Cheney), - simplify Stdin/out/errPipe methods (thanks Dave Cheney). -* fmt: speed up floating point print, clean up some code, - make the malloc test check its counts. -* gc: allow use of unsafe.Pointer in generated code, - avoid unsafe in defn of package runtime, - better linenumbers for inlined functions, - better loopdepth analysis for labels, - implement and test \r in raw strings, - inlining, allow empty bodies, fix _ arguments, - omit argument names from function types in error messages. -* go/ast, parser: remember short variable decls. w/ correspoding ident objects. -* go/build: add new +build tags 'cgo' and 'nocgo'. -* go/doc, godoc: move export filtering into go/doc -* go/printer, gofmt: fine tuning of line spacing. -* go/scanner: strip CRs from raw literals. -* gob: isZero for struct values. -* godoc: allow examples for methods (thanks Volker Dobler), - show methods of anonymous fields. -* goinstall: only suggest -fix for bad imports when appropriate. -* govet: add checking for printf verbs, - divide the program into one file per vetting suite. -* html: more parser improvements (thanks Andrew Balholm). -* json: some tests to demonstrate bad error messages, - use strconv.Append variants to avoid allocations in encoding. -* ld: add support for netbsd signature note section (thanks Joel Sing), - allow for IMAGE_REL_AMD64_ADDR32NB relocation type (thanks Alex Brainman). -* math/big: Rand shouldn't hang if argument is also receiver. -* misc/builder: set default builder host to build.golang.org. -* misc/dashboard: delete old build dashboard code , - improvements and fixes for the go implementation. -* misc/vim: fix go filetype detection (thanks Paul Sbarra). -* net, syscall, os: set CLOEXEC flag on epoll/kqueue descriptor. -* net, syscall: interface address and mask (thanks Mikio Hara). -* net/http: added interface for a cookie jar (thanks Volker Dobler), - test fixes (thanks Alex Brainman). -* net: add DialTimeout, - sort Makefile entries (thanks Mikio Hara). -* os, syscall: beginnings of NetBSD support (thanks Christopher Nielsen). -* os/exec: add test to verify net package's epoll fd doesn't go to child, - disable the ExtraFiles test on darwin. -* os: don't trust O_CLOEXEC on OS X, - make sure Remove returns correct error on windows (thanks Alex Brainman). -* path, path/filepath: add Dir to complement Base. -* path/filepath.Rel: document that the returned path is always relative. -* runtime: don't panic on SIGILL, just crash. -* spec: be precise about newlines. -* sql: add Rows.Columns. -* strconv: fix bug in extended-float based conversion, - implement faster parsing of decimal numbers, and - reduce buffer size for multi-precision decimals (thanks Rémy Oudompheng). -* syscall: regenerate z-files for linux/arm (thanks Mikio Hara), - sort Makefile, mkall.sh and mkerrors.sh entries (thanks Mikio Hara). -* test/bench/go1: first draft of Go 1 benchmark suite. -* testing: compare Log to Println (thanks Robert Hencke), - make signalling safer for parallel tests. -* text/template: better error message for empty templates, - fix handing of nil arguments to functions (thanks Gustavo Niemeyer). -* time: add JSON marshaler for Time (thanks Robert Hencke), - new AddDate method (thanks Roger Peppe). -* various: use $GCFLAGS and $GCIMPORTS like Make does (thanks Maxim Pimenov). -</pre> - -<h2 id="2011-12-14">2011-12-14</h2> - -<pre> -This snapshot includes language changes and changes to goinstall and gofmt. - -Equality and inequality (== and !=) are now defined for struct and array -values, respectively, provided the elements of the data structures can -themselves be compared. See the Go 1 release notes for the details: - http://weekly.golang.org/doc/go1.html#equality - -The rune type is now an alias for int32 and character literals have the default -type of rune. Code that uses int where it should use rune will break. -See the Go 1 release notes for the details: - http://weekly.golang.org/doc/go1.html#rune - -Goinstall now expects Google Code import paths to be of the form: - "code.google.com/p/go-tour/tree" -It will reject imports in the old style "go-tour.googlecode.com/hg/tree". -There is a gofix module to rename such imports. -Use goinstall -fix to update broken packages. - -Gofmt's flags have been modified slightly. -The -tabintent flag has been renamed -tabs. -The -spaces flag has been removed. - -Other changes: -* 5c, 6c, 8c: support 64-bit switch value (thanks Anthony Martin). -* 8c: handle 64-bit switch value. -* archive/tar: use struct comparison not DeepEqual (thanks Christopher Wedgwood). -* archive/zip: make zip understand os.FileMode (thanks Roger Peppe). -* bufio: make the minimum read buffer size 16 bytes. -* build: disable cgo on Windows/amd64, - regularize packages so they may be built without Makefiles. -* bytes: faster Count, Index, Equal. -* cgo: add basic gccgo support (thanks Rémy Oudompheng). -* codereview: fix path slash issue (thanks Yasuhiro Matsumoto). -* compress/flate: fix out of bounds error. -* contribute.html: do not fill in the reviewer field (thanks Florian Weimer). -* crypto/aes: made faster by eliminating some indirection (thanks Taru Karttunen). -* crypto/dsa: don't truncate input hashes. -* doc/go_tutorial: make clear the file example is Unix-specific. -* doc: add Defer, Panic, and Recover article, - add Error Handling article, - add Go 1 release notes document. -* encoding/gob: better error messages when types mismatch. -* env.bash: export CGO_ENABLED so cgo tests run (thanks Alex Brainman). -* exp/sql: simplify some string conversions. -* exp/ssh: Wait returns an *ExitError (thanks Gustav Paul). -* exp/ssh: improve client channel close behavior (thanks Dave Cheney). -* fmt: don't recur if String method (etc.) misbehaves. -* gc: better error messages, - inlining (disabled without -l), - many bug fixes (thanks Lucio De Re and Rémy Oudompheng). -* go/printer, godoc: print comments in example code. -* go: implement doc, fmt, fix, list, vet, build, and install. -* gobuilder: goinstall packages after building go tree. -* godoc: <pre> must not occur inside <p> (thanks Olivier Duperray), - added an opensearch description document (thanks Christoph Hack), - text wrapping. -* gofix: add httputil fix (thanks Yasuhiro Matsumoto). -* gotest: use go/build more (thanks Robert Hencke). -* gzip: convert between Latin-1 and Unicode (thanks Vadim Vygonets). -* html/template: define the FuncMap type locally. -* html: a first step at parsing foreign content (MathML, SVG), - more parser improvements (thanks Andrew Balholm). -* http: close connection after printing panic stack trace (thanks Roger Peppe), - fix failing Transport HEAD request with gzip-looking response. -* json: treat renamed byte slices the same as []byte. -* ld: first pass at linker support for NetBSD binaries (thanks Christopher Nielsen), - fix memory leaks (thanks Scott Lawrence), - increase default stack size on Windows for cgo. -* math: delete non-Sqrt-based Hypot, - implement, document, and fix special cases (thanks Charles L. Dorian), -* misc/benchcmp: don't require "Benchmark" at beginning of line. -* misc/osx: rename profile.go to profile_go (thanks Scott Lawrence). -* net/http: fix trivial example server (thanks Olivier Duperray), - net/http: make test remove temporary file and directory. -* net/smtp: add CRAM-MD5 authentication (thanks Vadim Vygonets). -* reflect: fix Slice cap (thanks Gustavo Niemeyer). -* regexp: performance improvements; avoid allocation of input interface. -* runtime: bump gc 'extra bytes' check (thanks Christopher Wedgwood), - madvise and SysUnused for Linux (thanks Sébastien Paolacci), - make gc_test test extra allocated space, not total space, - support for NetBSD (thanks Christopher Nielsen). -* spec: adjust complex constant example (thanks Robert Hencke), - values of underlying type uintptr can be converted to unsafe.Pointer, - var x = 'a' defaults to type rune. -* strconv: include package and function name in error strings, - make QuoteRune etc. take a rune argument, - some performance improvements. -* syscall: add constants for flock() system call under Linux, - regenerate z-files for darwin, freebsd (thanks Mikio Hara), - regenerate z-files for openbsd, - return error, not uintptr, when function returns error (thanks Alex Brainman). -* test/bench: move to test/bench/shootout. -* test/garbage: move to test/bench/garbage. -* test: make array smaller in nilptr test. -* time: allow sleep tests to run for 200% too long, - fix Time.Add (thanks Hector Chu), - fix daysIn for December (thanks Peter Mundy), - gob marshaler for Time (thanks Robert Hencke), - use Duration for AfterFunc. -* various: a grab-bag of time.Duration cleanups. -</pre> - -<h2 id="2011-12-06">2011-12-06</h2> - -<pre> -This snapshot includes a language change and changes to the strconv and go/doc -packages. The package changes require changes to client code. -The language change is backwards-compatible. - -Type elision in arrays, slices, or maps of composite literals has been -extended to include pointers to composite literals. Code like this - var t = []*T{&T{}, &T{}} -may now be written as - var t = []*T{{}, {}} -You can use gofmt -s to simplify such code. - -The strconv package has been given a more idiomatic and efficient interface. -Client code can be updated with gofix. See the docs for the details: - http://weekly.golang.org/pkg/strconv/ - -The go/doc package's ToHTML function now takes a []byte argument instead of a -string. - -Other changes: -* crypto/aes: eliminate some bounds checking and truncation (thanks Rémy Oudompheng). -* crypto/x509: if a parent cert has a raw subject, use it. -* encoding/gob: don't send type info for unexported fields. -* exp/ssh: allow for msgUserAuthBanner during authentication (thanks Gustav Paul). -* fmt: benchmark floating point, - only use Stringer or Error for strings. -* gc: changes in export format in preparation of inlining, - disallow map/func equality via interface comparison, - use gofmt spacing when printing map type. -* go/doc: exclude lines ending in ':' from possible headings. -* gobuilder: -commit mode for packages, - cripple -package mode temporarily, - use new dashboard protocol. -* godoc: improved output of examples in html (thanks Volker Dobler). -* gofmt: handle &T in composite literal simplify. -* goinstall: honour -install=false flag when -make=true. -* hash: rewrite comment on Hash.Sum method. -* html: more parser improvements (thanks Andrew Balholm). -* image: avoid func comparison during ColorModel comparison. -* math: add special-cases comments to Sinh and Tanh (thanks Charles L. Dorian). -* misc/dashboard: further implementation work. -* net, syscall: remove BindToDevice from UDPConn, IPConn (thanks Mikio Hara). -* net/mail: correctly compare parsed times in the test. -* os/exec: make LookPath always search CWD under Windows (thanks Benny Siegert). -* runtime: prep for type-specific algorithms. -* strconv: 34% to 63% faster conversions. -</pre> - -<h2 id="2011-12-02">2011-12-02</h2> - -<pre> -This weekly snapshot includes changes to the hash package and a gofix for the -time and os.FileInfo changes in the last snapshot. - -The hash.Hash's Sum method has been given a []byte argument, -permitting the user to append the hash to an existing byte slice. -Existing code that uses Sum can pass nil as the argument. -Gofix will make this change automatically. - -Other changes: -* crypto/tls: cleanup certificate load on windows (thanks Alex Brainman). -* exp/ssh: add Std{in,out,err}Pipe methods to Session (thanks Dave Cheney). -* dashboard: don't choke on weird builder names. -* exp/ssh: export type signal, now Signal (thanks Gustav Paul). -* os: add ModeType constant to mask file type bits (thanks Gustavo Niemeyer). -* text/template: replace Add with AddParseTree. -* go/doc: detect headings and format them in html (thanks Volker Dobler). -</pre> - -<h2 id="2011-12-01">2011-12-01</h2> - -<pre> -This weekly snapshot includes changes to the time, os, and text/template -packages. The changes to the time and os packages are significant and related. -Code that uses package time, package text/template, or package os's FileInfo -type will require changes. - -In package time, there is now one type - time.Time - to represent times. -Note that time.Time should be used as a value, in contrast to old code -which typically used a *time.Time, a pointer to a large struct. (Drop the *.) -Any function that previously accepted a *time.Time, an int64 -number of seconds since 1970, or an int64 number of nanoseconds -since 1970 should now accept a time.Time. Especially as a replacement -for the int64s, the type is good documentation about the meaning of -its value. - -Whether you were previously calling time.Seconds, time.Nanoseconds, -time.LocalTime, or time.UTC, the replacement is the new function -time.Now. - -If you previously wrote code like: - - t0 := time.Nanoseconds() - myFunction() - t1 := time.Nanoseconds() - delta := t1 - t0 - fmt.Printf("That took %.2f seconds\n", float64(t1-t0)/1e9) - -you can now write: - - t0 := time.Now() - myFunction() - t1 := time.Now() - delta := t1.Sub(t0) - fmt.Printf("That took %s\n", delta) - -In this snippet, the variable delta is of the new type time.Duration, the -replacement for the many int64 parameters that were nanosecond -counts (but not since 1970). - -Gofix can do the above conversions and some others, but it does not -rewrite explicit int64 types as time.Time. It is very likely that you will -need to edit your program to change these types after running gofix. -As always, be sure to read the changes that gofix makes using your -version control system's diff feature. - -See http://weekly.golang.org/pkg/time/ for details. - -In package os, the FileInfo struct is replaced by a FileInfo interface, -admitting implementations by code beyond the operating system. -Code that refers to *os.FileInfo (a pointer to the old struct) should -instead refer to os.FileInfo (the new interface). -The interface has just a few methods: - - type FileInfo interface { - Name() string // base name of the file - Size() int64 // length in bytes - Mode() FileMode // file mode bits - ModTime() time.Time // modification time - IsDir() bool // abbreviation for Mode().IsDir() - } - -If you need access to the underlying stat_t provided by the operating -system kernel, you can access it by assuming that the FileInfo you are -holding is actually an *os.FileStat, and that it's Sys field is actually a -*syscall.Stat_t, as in: - - dev := fi.(*os.FileStat).Sys.(*syscall.Stat_t).Dev - -Of course, this is not necessarily portable across different operating -systems. - -Gofix will take care of rewriting *os.FileInfo to os.FileInfo for you, -and it will also rewrite expressions like fi.Name into calls like fi.Name(). - -See http://weekly.golang.org/pkg/os/#FileInfo for details. - -The template package has been changed to export a new, simpler API. -The Set type is gone. Instead, templates are automatically associated by -being parsed together; nested definitions implicitly create associations. -Only associated templates can invoke one another. -This approach dramatically reduces the breadth of the construction API. -The html/template package has been updated also. -There's a gofix for the simplest and most common uses of the old API. -Code that doesn't mention the Set type is likely to work after running gofix; -code that uses Set will need to be updated by hand. -The template definition language itself is unchanged. - -See http://weekly.golang.org/pkg/text/template/ for details. - - -Other changes: -* cgo: add support for callbacks from dynamic libraries. -* codereview: gofmt check for non-src/ files (thanks David Crawshaw). -* crypto/openpgp/packet: fix private key checksum. -* crypto/tls: add openbsd root certificate location, - don't rely on map iteration order. -* crypto/x509, crypto/tls: support PKCS#8 private keys. -* dashboard: start of reimplementation in Go for App Engine. -* encoding/xml: fix copy bug. -* exp/gui: move exp/gui and exp/gui/x11 to http://code.google.com/p/x-go-binding -* exp/ssh: various improvements (thanks Dave Cheney and Gustav Paul). -* filepath/path: fix Rel buffer sizing (thanks Gustavo Niemeyer). -* gc: fix Nconv bug (thanks Rémy Oudompheng) and other fixes. -* go/printer, gofmt: performance improvements. -* gofix: test and fix missorted renames. -* goinstall: add -fix flag to run gofix on packages on build failure, - better error reporting, - don't hit network unless a checkout or update is required, - support Google Code sub-repositories. -* html: parser improvements (thanks Andrew Balholm). -* http: fix sniffing bug causing short writes. -* json: speed up encoding, caching reflect calls. -* ld: align ELF data sections. -* math/big: fix destination leak into result value (thanks Roger Peppe), - use recursive subdivision for significant speedup. -* math: faster Cbrt and Sincos (thanks Charles L. Dorian). -* misc/osx: scripts to make OS X package and disk image (thanks Scott Lawrence). -* os: fail if Open("") is called on windows (thanks Alex Brainman). -* runtime: make sure stack is 16-byte aligned on syscall (thanks Alex Brainman). -* spec, gc: allow direct conversion between string and named []byte, []rune. -* sql: add Tx.Stmt to use an existing prepared stmt in a transaction, - more driver docs & tests; no functional changes. -* strings: add ContainsAny and ContainsRune (thanks Scott Lawrence). -* syscall: add SUSv3 RLIMIT/RUSAGE constants (thanks Sébastien Paolacci), - fix openbsd sysctl hostname/domainname workaround, - implement Syscall15 (thanks Alex Brainman). -* time: fix Timer stop. -</pre> - -<h2 id="2011-11-18">2011-11-18</h2> - -<pre> -This snapshot includes some language changes. - -Map and function value comparisons are now disallowed (except for comparison -with nil) as per the Go 1 plan. Function equality was problematic in some -contexts and map equality compares pointers, not the maps' content. - -As an experiment, structs are now allowed to be copied even if they contain -unexported fields. This gives packages the ability to return opaque values in -their APIs. - -Other changes: -* 6a, 8a: allow $(-1) for consistency with $1, $(1), $-1. -* 6l: code generation fixes (thanks Michał Derkacz). -* build: fix check for selinux allow_execstack on Fedora (thanks Bobby Powers). -* builtin: document delete. -* cgo: don't panic on undeclared enums/structs (thanks Rémy Oudompheng), - fix g0 stack guard. -* crypto/tls: fix handshake message test. -* crypto: update incorrect references to Cipher interface; should be Block. -* doc: clean ups, additions, and fixes to several documents. -* doc/install: add openbsd (thanks Joel Sing!). -* doc: link to Chinese translation of A Tour of Go. -* encoding/json: add marshal/unmarshal benchmark, - decode [] as empty slice, not nil slice, - make BenchmarkSkipValue more consistent. -* env.bash: check for presence of make/gmake (thanks Scott Lawrence). -* exp/sql: NumInput() allow -1 to ignore checking (thanks Yasuhiro Matsumoto), - add DB.Close, fix bugs, remove Execer on Driver (only Conn), - document that for drivers, io.EOF means no more rows, - add client side support for publickey auth (thanks Dave Cheney), - add direct-tcpip client support (thanks Dave Cheney), - change test listen address, also exit test if fails, - other fixes and improvements (thanks Dave Cheney). -* exp/terminal: rename shell to terminal and add SetSize. -* fcgi: fix server capability discovery. -* fmt: distinguish empty vs nil slice/map in %#v. -* gc: better error, type checks, and many fixes, - remove m[k] = x, false syntax (use delete(m, k) instead), - support for building with Plan 9 yacc (thanks Anthony Martin). -* go/printer: make //line formatting idempotent. -* godefs: delete, replaced by cgo -godefs. -* godoc: document -templates flag, fix remote search, - provide mode for flat (non-indented) directory listings. -* gofmt: leave nil nodes of the AST unchanged (thanks Rémy Oudompheng). -* html/template: indirect top-level values before printing. -* html: more parser improvements (thanks Andrew Balholm). -* http: fix serving from CWD with http.ServeFile, - make Dir("") equivalent to Dir("."). -* ld: fix .bss for ldpe (thanks Wei Guangjing). -* math/big: replace nat{} -> nat(nil). -* math: faster Lgamma (thanks Charles L. Dorian). -* mime: implement TypeByExtension for windows. -* misc/bbedit: error and rune support (thanks Anthony Starks). -* misc/benchcmp: benchmark comparison script. -* misc/emacs: add delete builtin (thanks Bobby Powers). -* misc/kate: add error and rune (thanks Evan Shaw). -* misc/notepadplus: error and rune support (thanks Anthony Starks). -* misc/windows: Windows installer in MSI format (thanks Joe Poirier). -* net, io/ioutil: remove use of os.Time (thanks Anthony Martin). -* net/http: fix EOF handling on response body (thanks Gustavo Niemeyer), - fix sniffing when using ReadFrom, - use t.Errorf from alternate goroutine in test. -* os: remove undocumented Envs (use os.Environ instead). -* reflect: empty slice/map is not DeepEqual to nil, - make Value an opaque struct. -* runtime, syscall: convert from godefs to cgo. -* runtime: add nanotime for Plan 9 (thanks Anthony Martin), - add timer support, use for package time, - avoid allocation for make([]T, 0). -* strconv: add Ftoa benchmarks, make Ftoa faster. -* syscall: delete syscall.Sleep, take over env implementation, use error. -* testing: add file:line stamps to messages, print results to standard output. -* text/template: refactor set parsing. -* time: add ISOWeek method to Time (thanks Volker Dobler). -* various: avoid func compare, reduce overuse of os.EINVAL + others. -</pre> - -<h2 id="2011-11-09">2011-11-09</h2> - -<pre> -This weekly snapshot renames various Go packages as described in the Go 1 plan. -Import statements in client code can be updated automatically with gofix. - -The changes are: - asn1 -> encoding/asn1 - big -> math/big - cmath -> math/cmplx - csv -> encoding/csv - exec -> os/exec - exp/template/html -> html/template - gob -> encoding/gob - http -> net/http - http/cgi -> net/http/cgi - http/fcgi -> net/http/fcgi - http/httptest -> net/http/httptest - http/pprof -> net/http/pprof - json -> encoding/json - mail -> net/mail - rpc -> net/rpc - rpc/jsonrpc -> net/rpc/jsonrpc - scanner -> text/scanner - smtp -> net/smtp - syslog -> log/syslog - tabwriter -> text/tabwriter - template -> text/template - template/parse -> text/template/parse - rand -> math/rand - url -> net/url - utf16 -> unicode/utf16 - utf8 -> unicode/utf8 - xml -> encoding/xml -</pre> - -<h2 id="2011-11-08">2011-11-08</h2> - -<pre> -This weekly snapshot includes some package changes. - -In preparation for the Go 1 package reorganziation the sources for various -packages have been moved, but the import paths remain unchanged. This -inconsistency breaks goinstall at this snapshot. If you use goinstall, please -stay synced to the previous weekly snapshot until the next one is tagged. - -The Error methods in the html, bzip2, and sql packages that return error values -have been renamed to Err. - -Some non-core parts of the http package have been moved to net/http/httputil. -The Dump* and NewChunked* functions and ClientConn, ServerConn, and -ReverseProxy types have been moved from http to httputil. - -The API for html/template is now a direct copy of the template API, instead of -exposing a single Escape function. For HTML templates, use the -html/template package as you would the template package. - -Other changes: -* all: rename os.EOF to io.EOF in non-code contexts (thanks Vincent Vanackere), - sort imports with gofix. -* archive/zip: close file opened with OpenReader (thanks Dmitry Chestnykh). -* bufio: return nil line from ReadLine on error, as documented. -* builtin: document basic types and the built-in error type. -* bytes: add Contains function. -* exp/sql: finish implementation of transactions, flesh out types, docs. -* exp/ssh: improved client authentication support (thanks Dave Cheney). -* gc: better error message for range over non-receive channel, - bug fixes and clean-ups, - detect type switch variable not used cases, - fix escaping of package paths in symbol names, - helpful error message on method call on pointer to pointer, - portably read archive headers (thanks Ron Minnich). -* gob: fix bug when registering the same type multiple times. -* gofix: avoid panic on body-less functions in netudpgroup, - make fix order implicit by date. -* gofmt, gofix: sort imports. -* goinstall: support launchpad.net/~user branches (thanks Jani Monoses). -* gopack: do not look for Go metadata in non-Go objects. -* gotest: don't run examples that have no expected output. -* html: the parser bug fixing campaign continues (thanks Andrew Balholm). -* http: fix whitespace handling in sniffer, - only recognize application/x-www-form-urlencoded in ParseForm, - support Trailers in ReadRequest. -* lib9: add ctime. -* math: faster Gamma (thanks Charles L. Dorian), - improved accuracy for Tan (thanks Charles L. Dorian), - improved high-angle test for Cos, Sin and Tan (thanks Charles L. Dorian). -* net: implement LookupTXT for windows (thanks Alex Brainman). -* os,text,unicode: renamings. -* runtime/cgo: fix data declaration to be extern. -* runtime: add timespec definition for freebsd, - add windows callback tests (thanks Alex Brainman), - fix prototype for openbsd thrsleep, - fix set and not used, - unify mutex code across OSes, - windows_386 sighandler to use correct g (thanks Alex Brainman). -* template: format error with pointer receiver, - make redefinition of a template in a set more consistent. -* test: clear execute bit from source file (thanks Mikio Hara), - make closedchan.go exit with failure if something fails. -* time: faster Nanoseconds call. -* websocket: return an error HTTP response for bad websocket request. -* xml: allow parsing of <_> </_>. (thanks David Crawshaw). -</pre> - -<h2 id="2011-11-02">2011-11-02 (new error type)</h2> - -<pre> -This snapshot introduces the built-in error type, defined as - - type error interface { - Error() string - } - -The error type replaces os.Error. Notice that the method name has changed from -String to Error. Package fmt's Print formats both Stringers and errors: -in general there is no need to implement both String and Error methods. - -Gofix can update most code. If you have split your package across many files, -it may help to use the -force=error command-line option, which forces gofix to -apply the error fix even if it is not obvious that a particular file needs it. -As always, it is a good idea to read and test the changes that gofix made -before committing them to your version control system. -</pre> - -<h2 id="2011-11-01">2011-11-01</h2> - -<pre> -* 6l: remove mention of -e flag - it does nothing. -* cc: change cas to newcase (thanks Ron Minnich). -* crypto/openpgp/error: use Error in names of error impl types. -* crypto/rsa: change public exponent from 3 to 65537. -* crypto/tls: add Error method to alert. -* doc: add link to A Tour of Go in Japanese, - add 'all' make rule to build all docs, - refer to tour.golang.org instead of go-tour.appspot.com. -* exp/norm: fixed bug that crept in with moving to the new regexp. -* exp/ssh: fix length header leaking into channel data (thanks Dave Cheney). -* fmt: handle os.Error values explicity (as distinct from Stringer). -* gc: clean up printing, - fix [568]g -V crash (thanks Mikio Hara), - test + fix escape analysis bug. -* go/build: avoid os.Error in tests. -* go/doc: remove os.NewError anti-heuristic. -* go/parser: test and fix := scoping bug. -* gob: split uses of gobError, remove unnecessary embedding. -* gofix: test import insertion, deletion. -* goinstall: intelligent vcs selection for common sites (thanks Julian Phillips). -* gopack: change archive file name length back to 16. -* html: fix print argument in test, - more parser improvements (thanks Andrew Balholm). -* json: properly handle nil slices (thanks Alexander Reece). -* math: improved accuracy for Sin and Cos (thanks Charles L. Dorian). -* misc/emacs: fix restoration of windows after gofmt (thanks Jan Newmarch). -* misc/vim: add rune keyword (thanks Jongmin Kim). -* misc/windows: can be used for amd64 (thanks Alex Brainman). -* net: document why we do not use SO_REUSEADDR on windows (thanks Alex Brainman). -* os: do not interpret 0-length read as EOF. -* pkg: remove .String() from some print arguments. -* rpc: avoid infinite loop on input error. -* runtime/pprof: document OS X being broken. -* runtime: lock the main goroutine to the main OS thread during init. -* spec: define that initialization is sequential. -* strconv: use better errors than os.EINVAL, os.ERANGE. -* syscall: fix Await msg on Plan 9 (thanks Andrey Mirtchovski). -* template: do not use error as stringer, - fix error checking on execute without parse (thanks Scott Lawrence). -* test/alias.go: additional tests. -* test: error-related fixes. -* textproto: prevent long lines in HTTP headers from causing HTTP 400 responses. -* time: add RFC1123 with numeric timezone format (thanks Scott Lawrence). -</pre> - -<h2 id="2011-10-26">2011-10-26 (new rune type)</h2> - -<pre> -This snapshot introduces the rune type, an alias for int that -should be used for Unicode code points. - -A future release of Go (after Go 1) will change rune to be an -alias for int32 instead of int. Using rune consistently is the way -to make your code build both before and after this change. - -To test your code for rune safety, you can rebuild the Go tree with - - GOEXPERIMENT=rune32 ./all.bash - -which builds a compiler in which rune is an alias for int32 instead of int. - -Also, run govet on your code to identify methods that might need to have their -signatures updated. -</pre> - -<h2 id="2011-10-25">2011-10-25</h2> - -<pre> -* big: make SetString return nil if an error occurs, - new Rat.Inv method, - usable zero Rat values without need for explicit initialization. -* codereview: show LGTMs in hg p. -* crypto/x509: fix names in certificate generation. -* exp/ssh: add experimental ssh client, - introduce Session to replace Cmd for interactive commands, - server cleanups (thanks Dave Cheney). -* exp/types: fix crash in parseBasicType on unknown type. -* fmt: don't panic formatting nil interfaces (thanks Gustavo Niemeyer). -* go/ast, go/token: actually run tests; fix go/ast test. -* gotest: explicit -help flag, use $GCFLAGS like make does. -* govet: check canonical dynamic method signatures. -* html: improved parsing (thanks Andrew Balholm), - parse <select> tags, parse and render comment nodes, - remove the Tokenizer.ReturnComments option. -* http: Transport: with TLS InsecureSkipVerify, skip hostname check. -* misc/vim: add highlighting for delete (thanks Dave Cheney). -* net: do not set SO_REUSEADDR for windows (thanks Alex Brainman). -* os/inotify: move to exp/inotify (thanks Mikio Hara). -* runtime: include bootstrap m in mcpu accounting (thanks Hector Chu). -* syscall: use uintptr for Mount flags. -</pre> - -<h2 id="2011-10-18">2011-10-18</h2> - -<pre> -This weekly snapshot includes some language and package changes that may -require code changes. Please read these notes carefully, as there are many -changes and your code will likely be affected. - -The syntax for map deletion has been changed. Code that looks like: - m[x] = 0, false -should be written as: - delete(m, x) -The compiler still accepts m[x] = 0, false for now; even so, you can use gofix -to rewrite such assignments into delete(m, x). - -The Go compiler will reject a return statement without arguments when any of -the result variables has been shadowed. Code rejected as a result of this -change is likely to be buggy. - -Receive-only channels (<-chan T) cannot be closed. -The compiler will diagnose such attempts. - -The first element of a map iteration is chosen at random. Code that depends on -iteration order will need to be updated. - -Goroutines may be run during program initialization. - -A string may be appended to a byte slice. This code is now legal: - var b []byte - var s string - b = append(b, s...) - -The gotry command and its associated try package have been deleted. -It was a fun experiment that - in the end - didn't carry its weight. - -The gotype tool has been moved to exp/gotype and its associated go/types -package has been moved to exp/types. The deprecated go/typechecker package has -been deleted. - -The enbflint tool has been moved to pkg/exp/ebnflint and its associated ebnf -package has been moved to pkg/exp/ebnf. - -The netchan package has been moved to old/netchan. - -The http/spdy package has been moved to exp/spdy. - -The exp/datafmt package has been deleted. - -The container/vector package has been deleted. Slices are better: - http://code.google.com/p/go-wiki/wiki/SliceTricks - -Other changes: -* 5l/6l/8l: correct ELFRESERVE diagnostic (thanks Anthony Martin). -* 6l/8l: support OS X code signing (thanks Mikkel Krautz). -* asn1: accept UTF8 strings as ASN.1 ANY values. -* big: handle aliasing correctly for Rat.SetFrac. -* build: add missing nuke target (thanks Anthony Martin), - catch future accidental dependencies to exp or old packages, - more robustly detect gold 2.20 (thanks Christopher Wedgwood), - pass $GCFLAGS to compiler, - stop on failed deps.bash. -* crypto/tls: add 3DES ciphersuites, - add server side SNI support, - fetch root CA from Windows store (thanks Mikkel Krautz), - fetch root certificates using Mac OS API (thanks Mikkel Krautz), - fix broken looping code in windows root CA fetcher (thanks Mikkel Krautz), - more Unix root certificate locations. -* crypto/x509: add code for dealing with PKIX public keys, - keep the raw Subject and Issuer. -* csv: fix overly aggressive TrimLeadingSpace. -* exp/ssh: general cleanups for client support (thanks Dave Cheney). -* exp/template/html: fix bug in cssEscaper. -* exp/terminal: split terminal handling from exp/ssh. -* exp/winfsnotify: filesystem watcher for Windows (thanks Hector Chu). -* fmt: fix test relying on map iteration order. -* gc: changes to export format in preparation for inlining, - pass FlagNoPointers to runtime.new, - preserve uint8 and byte distinction in errors and import data, - stricter multiple assignment + test, - treat uintptr as potentially containing a pointer. -* go/scanner: remove AllowIllegalChars mode. -* go/token: document deserialization property. -* gob: avoid one copy for every message written. -* godefs: add enum/const testdata (thanks Dave Cheney). -* godoc: generate package toc in template, not in JavaScript, - show "unexported" declarations when executing "godoc builtin", - show correct source name with -path. -* gofix: make fix order explicit, add mapdelete. -* gofmt: fix //line handling, - disallow rewrites for incomplete programs. -* gotest: avoid conflicts with the name of the tested package (thanks Esko Luontola), - test example code. -* goyacc: clean up after units (thanks Anthony Martin), - make more gofmt-compliant. -* html: add a Render function, various bug fixes and improvements, - parser improvements (thanks Andrew Balholm). -* http: DoS protection: cap non-Handler Request.Body reads, - RoundTrippers shouldn't mutate Request, - avoid panic caused by nil URL (thanks Anthony Martin), - fix read timeouts and closing, - remove Request.RawURL. -* image/tiff: implement PackBits decoding (thanks Benny Siegert). -* ld: fix "cannot create 8.out.exe" (thanks Jaroslavas Počepko). -* misc/emacs: add a "godoc" command, like M-x man (thanks Evan Martin). -* misc/swig: delete binaries (thanks Anthony Martin). -* misc/windows: automated toolchain packager (thanks Joe Poirier). -* net/windows: implement ip protocol name to number resolver (thanks Alex Brainman). -* net: add File method to IPConn (thanks Mikio Hara), - allow LookupSRV on non-standard DNS names, - fix "unexpected socket family" error from WriteToUDP (thanks Albert Strasheim), - fix socket leak in case of Dial failure (thanks Chris Farmiloe), - remove duplicate error information in Dial (thanks Andrey Mirtchovski), - return error from CloseRead and CloseWrite (thanks Albert Strasheim), - skip ICMP test on Windows too unless uid 0. -* reflect: disallow Interface method on Value obtained via unexported name, - make unsafe use of SliceHeader gc-friendly. -* rpc: don't panic on write error. -* runtime: faster strings, - fix crash if user sets MemProfileRate=0, - fix crash when returning from syscall during gc (thanks Hector Chu), - fix memory leak in parallel garbage collector. -* scanner: invalidate scanner.Position when no token is present. -* spec: define order of multiple assignment. -* syscall/windows: dll function load and calling changes (thanks Alex Brainman). -* syscall: add #ifdefs to fix the manual corrections in ztypes_linux_arm.go (thanks Dave Cheney), - adjust Mount to accommodate stricter FS implementations. -* testing: fix time reported for failing tests. -* utf8: add Valid and ValidString. -* websocket: tweak hybi ReadHandshake to support Firefox (thanks Luca Greco). -* xml: match Marshal's XMLName behavior in Unmarshal (thanks Chris Farmiloe). -</pre> - -<h2 id="2011-10-06">2011-10-06</h2> - -<pre> -This weekly snapshot includes changes to the io, image, and math packages that -may require changes to client code. - -The io package's Copyn function has been renamed to CopyN. - -The math package's Fabs, Fdim, Fmax, Fmin and Fmod functions -have been renamed to Abs, Dim, Max, Min, and Mod. - -Parts of the image package have been moved to the new image/color package. -The spin-off renames some types. The new names are simply better: - image.Color -> color.Color - image.ColorModel -> color.Model - image.ColorModelFunc -> color.ModelFunc - image.PalettedColorModel -> color.Palette - image.RGBAColor -> color.RGBA - image.RGBAColorModel -> color.RGBAModel - image.RGBA64Color -> color.RGBA64 - image.RGBA64ColorModel -> color.RGBA64Model -(similarly for NRGBAColor, GrayColorModel, etc) -The image.ColorImage type stays in the image package, but is renamed: - image.ColorImage -> image.Uniform -The image.Image implementations (image.RGBA, image.RGBA64, image.NRGBA, -image.Alpha, etc) do not change their name, and gain a nice symmetry: -an image.RGBA is an image of color.RGBA, etc. -The image.Black, image.Opaque uniform images remain unchanged (although their -type is renamed from image.ColorImage to image.Uniform). -The corresponding color types (color.Black, color.Opaque, etc) are new. -Nothing in the image/ycbcr is renamed yet. The ycbcr.YCbCrColor and -ycbcr.YCbCrImage types will eventually migrate to color.YCbCr and image.YCbCr, -at a later date. - -* 5g/6g/8g: fix loop finding bug, fix -f(), registerize variables again. -* 5l/6l/8l: add a DT_DEBUG dynamic tag to a dynamic ELF binary. -* archive/zip: read and write unix file modes (thanks Gustavo Niemeyer). -* build: clear execute bit from source files (thanks Mikio Hara). -* bytes: add EqualFold. -* cgo: allow Windows path characters in flag directives (thanks Joe Poirier), - support for mingw-w64 4.5.1 and newer (thanks Wei Guangjing). -* codereview: extra repo sanity check, - fix for Mercurial 1.9.2, - fix hg change in Windows console (thanks Yasuhiro Matsumoto). -* crypto/elliptic: use %x consistently in error print. -* doc/spec: remove notes about gccgo limitations, now fixed. -* doc: add 'Debugging Go code with GDB' tutorial, - fix memory model read visibility bug. -* encoding/binary: PutX functions require buffer of sufficient size, - added benchmarks, support for varint encoding. -* exec: add Command.ExtraFiles. -* exp/sql{,/driver}: new database packages. -* exp/ssh: move common code to common.go (thanks Dave Cheney). -* exp/template/html: work continues. -* fmt: replace channel cache with slice. -* gc: limit helper threads based on ncpu. -* go/doc, godoc, gotest: support for reading example documentation. -* go: documentation and skeleton implementation of new command. -* gob: protect against invalid message length, - allow sequential decoders on the same input stream. -* hgpatch: do not use hg exit status (thanks Yasuhiro Matsumoto). -* http: add Location method to Response, - don't send a 400 Bad Request after a client shutdown. -* index/suffixarray: 4.5x faster index serialization (to memory). -* io/ioutil: add a comment on why devNull is a ReaderFrom. -* json: use strings.EqualFold instead of strings.ToLower. -* misc/emacs: fix indent bug. -* net: add shutdown: TCPConn.CloseWrite and CloseRead. -* net: use AF_UNSPEC instead of individual address family (thanks Mikio Hara). -* path/filepath: added Rel as the complement of Abs (thanks Gustavo Niemeyer). -* pkg/syscall: add Mkfifo for linux platforms. -* regexp: move to old/regexp, replace with exp/regexp, speedups. -* runtime/gdb: fix pretty printing of channels, - gracefully handle not being able to find types. -* runtime: check for nil value pointer in select syncsend case, - faster finalizers, - fix malloc sampling bug, - fix map memory leak, - fix spurious deadlock reporting, - fix usleep on linux/386 and re-enable parallel gc (thanks Hector Chu), - parallelize garbage collector mark + sweep. -* strconv: faster Unquote in common case. -* strings: add EqualFold, Replacer, NewReplacer. -* suffixarray: add benchmarks for construction (thanks Eric Eisner). -* syscall: add GetsockoptByte, SetsockoptByte for openbsd (thanks Mikio Hara), - add IPv4 ancillary data for linux (thanks Mikio Hara), - mark stdin, stdout, stderr non-inheritable by child processes (thanks Alex Brainman), - mksyscall_windows.pl creates non-syscall packages (thanks Jaroslavas Počepko), - update multicast socket options (thanks Mikio Hara). -* testing: support for running tests in parallel (thanks Miki Tebeka). -* time: make month/day name comparisons case insenstive. -* unicode: fix make tables. -* vim: Send GoFmt errors to a location list (thanks Paul Sbarra). -* websocket: add hybi-13 support, add mutex to make websocket full-duplex. -</pre> - -<h2 id="2011-09-21">2011-09-21</h2> - -<pre> -This weekly contains several improvements, bug fixes, and new packages. - -* archive/tar: document Header fields and Type flags (thanks Mike Rosset). -* bytes: fix Replace so it actually copies (thanks Gustavo Niemeyer). -* cgo: use GOARCH from the environment (thanks Jaroslavas Počepko). -* codereview: save CL messages in $(hg root)/last-change. -* crypto/bcrypt: new package (thanks Jeff Hodges). -* crypto/blowfish: exposing the blowfish key schedule (thanks Jeff Hodges). -* doc: link to golang-france. -* doc: when configuring gold for gccgo, use --enable-gold=default. -* exp/norm: changed trie to produce smaller tables. -* exp/ssh: new package, - refactor halfConnection to transport (thanks Dave Cheney). -* exp/template/html: more fixes and improvements. -* filepath: fix Glob to return no error on nonmatching patterns. -* gc: disallow invalid map keys, - handle complex CONVNOP. -* gob: allocation fixes. -* godoc: simplify internal FileSystem interface. -* http/cgi: clean up environment (thanks Yasuhiro Matsumoto). -* http: always include Content-Length header, even for 0 (thanks Dave Grijalva), - check explicit wrong Request.ContentLength values, - fix TLS handshake blocking server accept loop, - prevent DumpRequest from adding implicit headers. -* httptest: add NewUnstartedServer. -* json: clearer Unmarshal doc, - skip nil in UnmarshalJSON and (for symmetry) MarshalJSON. -* net: use /etc/hosts first when looking up IP addresses (thanks Andrey Mirtchovski). -* reflect: add comment about the doubled semantics of Value.String. -* runtime: implement pprof support for windows (thanks Hector Chu), - increase stack system space on windows/amd64 (thanks Hector Chu). -* suffixarray: generate less garbage during construction (thanks Eric Eisner), - improved serialization code using gob instead of encoding/binary. -* sync/atomic: replace MFENCE with LOCK XADD. -</pre> - -<h2 id="2011-09-16">2011-09-16</h2> - -<pre> -This weekly snapshot includes changes to the image, path/filepath, and time -packages. Code that uses these packages may need to be updated. - -The image package's NewX functions (NewRGBA, NewNRGBA, etc) have been changed -to take a Rectangle argument instead of a width and height. -Gofix can make these changes automatically. - -The path/filepath package's Walk function has been changed to take a WalkFunc -function value instead of a Visitor interface value. WalkFunc is like the -Visitor's VisitDir and VisitFile methods except it handles both files and -directories: - func(path string, info *os.FileInfo, err os.Error) os.Error -To skip walking a directory (like returning false from VisitDir) the WalkFunc -must return SkipDir. - -The time package's Time struct's Weekday field has been changed to a method. -The value is calculated on demand, avoiding the need to re-parse -programmatically-constructed Time values to find the correct weekday. - -There are no gofixes for the filepath or time API changes, but instances of the -old APIs will be caught by the compiler. The Weekday one is easy to update by -hand. The Walk one may take more consideration, but will have fewer instances -to fix. - -* build: add build comments to core packages. -* codereview: Mercurial 1.9 fix for hg diff @nnn. -* crypto/tls: handle non-TLS more robustly, - support SSLv3. -* debug/elf: permit another case of SHT_NOBITS section overlap in test. -* exm/template/html: more work on this auto-escaping HTML template package. -* exp/norm: added regression test tool for the standard Unicode test set. -* exp/regexp/syntax: fix invalid input parser crash, - import all RE2 parse tests + fix bugs. -* exp/regexp: add MustCompilePOSIX, CompilePOSIX, leftmost-longest matching. -* flag: make zero FlagSet useful. -* gc: clean up if grammar. -* go/build: handle cgo, // +build comments. -* go/printer: use panic/defer instead of goroutine for handling errors. -* go/token: support to serialize file sets. -* godoc, suffixarray: switch to exp/regexp. -* godoc: show packages matching a query at the top, - support for complete index serialization, - use go/build to find files in a package. -* gofmt: accept program fragments on standard input, add else test. -* http/cgi: add openbsd environment configuration. -* http: document that Response.Body is non-nil. -* image/png: don't use a goroutine to decode, to permit decode during init. -* json: if a field's tag is "-", ignore the field for encoding and decoding. -* ld: grow dwarf includestack on demand. -* net, syscall: implement SetsockoptIPMReq(), and - move to winsock v2.2 for multicast support (thanks Paul Lalonde). -* net: add a LookupTXT function. -* os: os.RemoveAll to check for wboth error codes on Windows (thanks Jaroslavas Počepko). -* path/filepath: fix Visitor doc (thanks Gustavo Niemeyer), - make UNC file names work (thanks Yasuhiro Matsumoto). -* runtime: optimizations to channels on Windows (thanks Hector Chu), - syscall to return both AX and DX for windows/386 (thanks Alex Brainman). -* sync/atomic: add 64-bit Load and Store. -* syscall: add route flags for linux (thanks Mikio Hara). -* test: add test for inheriting private method from anonymous field. -* websocket: fix infinite recursion in Addr.String() (thanks Tarmigan Casebolt), - rename websocket.WebSocketAddr to *websocket.Addr. -</pre> - -<h2 id="2011-09-07">2011-09-07</h2> - -<pre> -This weekly snapshot consists of improvements and bug fixes, including fixes -for issues introduced by escape analysis changes in the gc compiler. - -* build: clear execute bit from Go files (thanks Mike Rosset), - error out if problem with sudo.bash /usr/local/bin (thanks Mike Rosset). -* exp/norm: add Reader and Writer, - performance improvements of quickSpan. -* exp/regexp: bug fixes and RE2 tests. -* exp/template/html: string replacement refactoring, - tweaks to js{,_test}.go. -* gc: add -p flag to catch import cycles earlier, - fix label recursion bugs, - fix zero-length struct eval, - zero stack-allocated slice backing arrays, -* gc, ld: fix Windows file paths (thanks Hector Chu). -* go/parser: accept corner cases of signature syntax. -* gobuilder: ignore _test.go files when looking for docs, more logging. -* godoc: minor tweaks for App Engine use. -* gofix: do not convert url in field names (thanks Gustavo Niemeyer). -* gofmt: indent multi-line signatures. -* gopprof: regexp fixes (thanks Hector Chu). -* image/png: check zlib checksum during Decode. -* libmach: fix incorrect use of memset (thanks Dave Cheney). -* misc/goplay: fix template output. -* net: ParseCIDR returns IPNet instead of IPMask (thanks Mikio Hara), - sync CIDRMask code, doc. -* os: use GetFileAttributesEx to implement Stat on windows (thanks Alex Brainman). -* runtime: fix openbsd 386 raisesigpipe, - implement exception handling on windows/amd64 (thanks Hector Chu), - test for concurrent channel consumers (thanks Christopher Wedgwood). -* sort: use heapsort to bail out quicksort (thanks Ziad Hatahet). -* sync/atomic: add LoadUintptr, add Store functions. -* syscall: update routing message attributes handling (thanks Mikio Hara). -* template: fix deadlock, - indirect or dereference function arguments if necessary, - slightly simplify the test for assignability of arguments. -* url: handle ; in ParseQuery. -* websocket: fix incorrect prints found by govet (thanks Robert Hencke). -</pre> - -<h2 id="2011-09-01">2011-09-01</h2> - -<pre> -This weekly contains performance improvements and bug fixes. - -The gc compiler now does escape analysis, which improves program performance -by placing variables on the call stack instead of the heap when it is safe to -do so. - -The container/vector package is deprecated and will be removed at some point -in the future. - -Other changes: -* archive/tar: support symlinks. (thanks Mike Rosset) -* big: fix nat.scan bug. (thanks Evan Shaw) -* bufio: handle a "\r\n" that straddles the buffer. - add openbsd. - avoid redundant bss declarations. - fix unused parameters. - fix windows/amd64 build with newest mingw-w64. (thanks Hector Chu) -* bytes: clarify that NewBuffer is not for beginners. -* cgo: explain how to free something. - fix GoBytes. (thanks Gustavo Niemeyer) - fixes callback for windows amd64. (thanks Wei Guangjing) - note that CString result must be freed. (thanks Gustavo Niemeyer) -* cov: remove tautological #defines. (thanks Lucio De Re) -* dashboard: yet another utf-8 fix. -* doc/codelab/wiki: fix Makefile. -* doc/progs: fix windows/amd64. (thanks Jaroslavas Počepko) -* doc/tmpltohtml: update to new template package. -* doc: emphasize that environment variables are optional. -* effective_go: convert to use tmpltohtml. -* exp/norm: reduced the size of the byte buffer used by reorderBuffer by half by reusing space when combining. - a few minor fixes to support the implementation of norm. - added implementation for []byte versions of methods. -* exp/template/html: add some tests for ">" attributes. - added handling for URL attributes. - differentiate URL-valued attributes (such as href). - reworked escapeText to recognize attr boundaries. -* exp/wingui: made compatible with windows/amd64. (thanks Jaroslavas Počepko) -* flag: add Parsed, restore Usage. -* gc: add openbsd. - escape analysis. - fix build on Plan 9. (thanks Lucio De Re) - fix div bug. - fix pc/line table. (thanks Julian Phillips) - fix some spurious leaks. - make static initialization more static. - remove JCXZ; add JCXZW, JCXZL, and JCXZQ instructions. (thanks Jaroslavas Počepko) - shuffle #includes. - simplify escape analysis recursion. - tweak and enable escape analysis. -* go/ast cleanup: base File/PackageExports on FilterFile/FilterPackage code. - adjustments to filter function. - fix ast.MergePackageFiles to collect infos about imports. (thanks Sebastien Binet) - generalize ast.FilterFile. -* go/build: add test support & use in gotest. - separate test imports out when scanning. (thanks Gustavo Niemeyer) -* go/parser: fix type switch scoping. - fix type switch scoping. -* gob: explain that Debug isn't useful unless it's compiled in. -* gobuilder: increase log limit. -* godashboard: fix utf-8 in user names. -* godoc: first step towards reducing index size. - add dummy playground.js to silence godoc warning at start-up. - added systematic throttling to indexing goroutine. - fix bug in zip.go. - support for reading/writing (splitted) index files. - use virtual file system when generating package synopses. -* gofix: forgot to rename the URL type. - osopen: fixed=true when changing O_CREAT. (thanks Tarmigan Casebolt) -* goinstall: error out with paths that end with '/'. (thanks Tarmigan Casebolt) - report lack of $GOPATH on errors. (thanks Gustavo Niemeyer) - select the tag that is closest to runtime.Version. -* gotry: add missing $. (thanks Tarmigan Casebolt) -* http: add MaxBytesReader to limit request body size. - add file protocol transport. - adjust test threshold for larger suse buffers. - delete error kludge. - on invalid request, send 400 response. - return 413 instead of 400 when the request body is too large. (thanks Dave Cheney) - support setting Transport's TLS client config. -* image/tiff: add a decode benchmark. (thanks Benny Siegert) - decoder optimization. (thanks Benny Siegert) -* image: add PalettedImage interface, and make image/png recognize it. (thanks Jaroslavas Počepko) -* io: add TeeReader. (thanks Hector Chu) -* json: add struct tag option to wrap literals in strings. - calculate Offset for Indent correctly. (thanks Jeff Hodges) - fix decode bug with struct tag names with ,opts being ignored. -* ld: handle Plan 9 ar format. (thanks Lucio De Re) - remove duplicate bss definitions. -* libmach: support reading symbols from Windows .exe for nm. (thanks Mateusz Czapliński) -* math: fix Pow10 loop. (thanks Volker Dobler) -* mime: ParseMediaType returns os.Error now, not a nil map. - media type formatter. (thanks Pascal S. de Kloe) - text charset defaults. (thanks Pascal S. de Kloe) -* misc/dashboard: remove limit for json package list. -* misc/emacs: refine label detection. -* net: add ParseMAC function. (thanks Paul Borman) - change the internal form of IPMask for IPv4. (thanks Mikio Hara) - disable "tcp" test on openbsd. - fix windows build. (thanks Alex Brainman) - join and leave a IPv6 group address, on a specific interface. (thanks Mikio Hara) - make use of IPv4len, IPv6len. (thanks Mikio Hara) - move internal string manipulation routines to parse.go. (thanks Mikio Hara) -* os: disable Hostname test on OpenBSD. - fix WNOHANG Waitmsg. (thanks Gustavo Niemeyer) -* reflect: add Value.Bytes, Value.SetBytes methods. -* rpc: add benchmark for async rpc calls. -* runtime: add openbsd 386 defs.h. - add runtime support for openbsd 386. - add runtime· prefix to showframe. - ctrlhandler for windows amd64. (thanks Wei Guangjing) - fix stack cleanup on windows/amd64. (thanks Hector Chu) - fix void warnings. - go interface to cdecl calbacks. (thanks Jaroslavas Počepko) - handle string + char literals in goc2c. - make arm work on Ubuntu Natty qemu. - openbsd thread tweaks. - simplify stack traces. - speed up cgo calls. (thanks Alex Brainman) - use cgo runtime functions to call windows syscalls. (thanks Alex Brainman) - windows/amd64 callbacks fixed and syscall fixed to allow using it in callbacks. (thanks Jaroslavas Počepko) -* strconv: put decimal on stack. -* spec: update section on Implementation Differences. -* syscall: SOMAXCONN should be 0x7fffffff at winsock2. (thanks Yasuhiro Matsumoto) - add openbsd 386. - handle RTM_NEWROUTE in ParseNetlinkRouteAttr on Linux. (thanks Albert Strasheim) - handle routing entry in ParseRoutingSockaddr on BSD variants. (thanks Mikio Hara) - openbsd amd64 syscall support. - use the vdso page on linux x86 for faster syscalls instead of int $0x80. (thanks Yuval Pavel Zholkover) -* template/parse: give if, range, and with a common representation. -* template: grammar fix for template documentation. (thanks Bill Neubauer) - range over channel. - remove else and end nodes from public view. -* test: put GOROOT/bin before all others in run. -* time: fix Plan 9 build. (thanks Fazlul Shahriar) - fix zone during windows test. -* type switches: test for pathological case. -* version.bash: update VERSION on -save if already present. (thanks Gustavo Niemeyer) -* websocket: implements new version of WebSocket protocol. (thanks Fumitoshi Ukai) -* windows/386: clean stack after syscall. (thanks Jaroslavas Počepko) -* xml: marshal "parent>child" tags correctly. (thanks Ross Light) -</pre> - -<h2 id="2011-08-17">2011-08-17 (<a href="release.html#r60">base for r60</a>)</h2> - -<pre> -This weekly contains some package re-shuffling. Users of the http and -template packages may be affected. - -This weekly replaces the template package with exp/template. -The original template package is still available as old/template. -The old/template package is deprecated and will be removed at some point -in the future. The Go tree has been updated to use the new template package. -We encourage users of the old template package to switch to the new one. -Code that uses template or exp/template will need to change -its import lines to "old/template" or "template", respectively. - -The http package's URL parsing and query escaping code (such as ParseURL and -URLEscape) has been moved to the new url package, with several simplifications -to the names. Client code can be updated automatically with gofix. - -* asn1: support unmarshaling structs with int32 members (thanks Dave Cheney). -* build: allow builds without cgo or hg, - support versioning without hg (thanks Gustavo Niemeyer). -* builtin: add documentation for builtins. -* cgo: omit duplicate symbols in writeDefs (thanks Julian Phillips). -* misc: add support for OpenBSD. -* doc/codewalk: new Markov chain codewalk. -* exp/norm: added trie lookup code and associated tests, - generate trie struct in triegen.go for better encapsulation, - implementation of decomposition and composing functionality. -* exp/template/html: new experimental package for auto-escaping HTML templates. -* exp/template: don't panic on range of nil interface, - rename Parse*File and Parse*Files for clarity, - support field syntax on maps (thanks Gustavo Niemeyer), and - many other fixes and changes. -* gc: implement nil chan and nil map support. -* go/parser: range clause and type literal fixes. -* godoc: show all top-level decls for (fake) package builtin. -* goinstall: really report all newly-installed public packages. -* html: parse more malformed tags. -* http: fix ParseMultipartForm after MultipartReader error, - fix side effects in DefaultTransport's RoundTrip method (thanks Dave Grijalva). -* json: fix []unmarshaler case. -* ld: make addaddrplus4 static (thanks Lucio De Re). -* syscall: move multicast address handling to the net package. -* net: Plan 9 support (thanks Fazlul Shahriar), - add SetTimeout to Listener interface (thanks Aleksandar Dezelin), - add multicast stubs for OpenBSD, - return correct local address for an accepted TCP connection (thanks Mikio Hara). -* reflect: panic on Invalid Interface call (thanks Gustavo Niemeyer). -* rpc: implement ServeRequest to synchronously serve a single request, - make Server.Mutex unexported. -* runtime: better checks for syscall.NewCallback parameter (thanks Alex Brainman), - correct SEH installation during callbacks (thanks Alex Brainman), - fix GC bitmap corruption, - fix pseudo-randomness on some selects (thanks Gustavo Niemeyer). -* syscall: make LazyDLL/LazyProc.Mutex unexported. -* test: allow multiple patterns in errchk, - new nil semantics. -* time: take fractional seconds even if not in the format string. -* url: new package. -* utf8: rename some internal constants to remove leading underscores. -* xml: escape string chardata in xml.Marshal. -</pre> - -<h2 id="2011-08-10">2011-08-10</h2> - -<pre> -This weekly contains performance improvements and bug fixes. - -There are no outward-facing changes, but imports of the old-style -container/vector package have also been removed from the core library (thanks -John Asmuth, Kyle Consalus). - -Other changes: - -* 5g: fix set but not used error (thanks Dave Cheney). -* cmd/ld: Corrected mismatched print formats and variables (thanks Lucio De Re). -* errchk: add -0 flag. -* exp/norm: fix build by adding a test placeholder, - maketables tool for generating tables for normalization. -* exp/template: bug fixes, - ensure that a valid Set is returned even on error (thanks Roger Peppe), - make index on maps return zero when key not present (thanks Roger Peppe), - split the parse tree into a separate package exp/template/parse, - add url query formatting filter. -* faq: lots of small tweaks plus a couple of new discussions, - variant types, unions. -* fmt: call UpdateMemStats in malloc counter. -* go/build: use GOBIN as binary path for GOROOT. -* gob: add UpdateMemStats calls to malloc counter, - avoid a couple of init-time allocations, - don't invoke GobEncoder on zero values. -* gofmt: update test script so 'make test' succeeds. -* html: parse doctype tokens; merge adjacent text nodes. -* http: add more MPEG-4 MIME types to sniffer, and disable MP4 sniffing, - add test to serve content in index.html (thanks Yasuhiro Matsumoto), - configurable and default request header size limit, - correct format flags when printing errors in tests (thanks Alex Brainman), - correct path to serve index.html (thanks Yasuhiro Matsumoto), -* ld: add one empty symbol into pe to make dumpbin works (thanks Wei Guangjing), - fail linking if the top-level package is not main. -* misc/vim: godoc command (thanks Yasuhiro Matsumoto). -* net: add support for openbsd (thanks Joel Sing), - fix /proc/net/igmp,igmp6 reading bug on linux (thanks Mikio Hara), - implement windows LookupMX and LookupAddr (thanks Mikio Hara), - sort SRV records before returning from LookupSRV (thanks Alex Brainman), -* os: add support for openbsd (thanks Joel Sing). -* runtime: add more specialized type algorithms, - correct Note documentation, - faster chan creation on Linux/FreeBSD/Plan9, - openbsd amd64 runtime support (thanks Joel Sing), - remove unnecessary locking (thanks Hector Chu). -* scanner: correct error position for illegal UTF-8 encodings. -* syscall: delay load of dll functions on Windows (thanks Alex Brainman), - move BSD mmap syscall (thanks Joel Sing), - update routing message support for BSD variants (thanks Mikio Hara). -* test/bench: note changes after recent improvements to locking and runtime. -* time: add nanoseconds to the Time structure, - parse and format fractional seconds. -</pre> - -<h2 id="2011-07-29">2011-07-29</h2> - -<pre> -This weekly contains performance improvements and many bug fixes. - -* 6l: OpenBSD support. -* archive/zip: handle zip files with more than 65535 files, - more efficient reader and bug fix. -* big: refine printf formatting and optimize string conversion. -* build: fixes for mingw-w64 (thanks Wei Guangjing), - miscellaneous fixes. -* cgo: add GoBytes, fix gmp example. -* exp/norm: API for normalization library. -* exp/regexp: implement regexp API using exp/regexp/syntax. -* exp/template: more tweaks and fixes, convert the tree to use exp/template. -* fmt: handle precision 0 format strings in standard way. -* gc: a raft of bug fixes. -* go/parser: report illegal label declarations at ':'. -* gob: send empty but non-nil maps. -* godoc: allow form feed in text files, - app engine configuration and updated documentation. -* goinstall: abort and warn when using any url scheme, not just 'http://', - write to goinstall.log in respective GOPATH. -* html: handle character entities without semicolons (thanks Andrew Balholm), - parse misnested formatting tags according to the HTML5 spec, - sync html/testdata/webkit with upstream WebKit. -* http: content-type sniffing, - make serveFile redirects relative (thanks Andrew Balholm), - other fixes. -* image/tiff: Do not panic when RowsPerStrip is missing (thanks Benny Siegert). -* io/ioutil: improve performance of ioutil.Discard (thanks Mike Solomon). -* ld: detect all import cycles, - ldpe fixes (thanks Wei Guangjing), - remove cseekend and redo pe writing (thanks Alex Brainman), - remove overlap of ELF sections on dynamic binaries (thanks Gustavo Niemeyer). -* net/textproto: avoid 1 copy in ReadLine, ReadContinuedLine. -* net: fix memory corruption in windows *netFD.ReadFrom (thanks Alex Brainman). -* runtime: faster entersyscall/exitsyscall, - fix scheduler races (thanks Hector Chu), - higher goroutine arg limit, clearer error, - parallelism-related performance optimizations and fixes, - replace byte-at-a-time zeroing loop with memclr (thanks Quan Yong Zhai). -* sort: fix Float64Slice sort; NaN smallest value (thanks Florian Uekermann). -* src: removed some uses of container/vector (thanks John Asmuth). -* sync: improve Once fast path. -* unicode: fix case-mapping for roman numerals. -</pre> - -<h2 id="2011-07-19">2011-07-19</h2> - -<pre> -This weekly snapshot includes a language change and a change to the image -package that may require changes to client code. - -The language change is that an "else" block is now required to have braces -except if the body of the "else" is another "if". Since gofmt always puts those -braces in anyway, programs will not be affected unless they contain "else for", -"else switch", or "else select". Run gofmt to fix any such programs. - -The image package has had significant changes made to the Pix field of struct -types such as image.RGBA and image.NRGBA. The image.Image interface type has -not changed, though, and you should not need to change your code if you don't -explicitly refer to Pix fields. For example, if you decode a number of images -using the image/jpeg package, compose them using image/draw, and then encode -the result using image/png, then your code should still work as before. - -If you do explicitly refer to Pix fields, there are two changes. First, Pix[0] -now refers to the pixel at Bounds().Min instead of the pixel at (0, 0). Second, -the element type of the Pix slice is now uint8 instead of image.FooColor. For -example, for an image.RGBA, the channel values will be packed R, G, B, A, R, G, -B, A, etc. For 16-bits-per-channel color types, the pixel data will be stored -as big-endian uint8s. - -Most Pix field types have changed, and so if your code still compiles after -this change, then you probably don't need to make any further changes (unless -you use an image.Paletted's Pix field). If you do get compiler errors, code -that used to look like this: - - // Get the R, G, B, A values for the pixel at (x, y). - var m *image.RGBA = loadAnImage() - c := m.Pix[y*m.Stride + x] - r, g, b, a := c.R, c.G, c.B, c.A - -should now look like this: - - // Get the R, G, B, A values for the pixel at (x, y). - var m *image.RGBA = loadAnImage() - i := (y-m.Rect.Min.Y)*m.Stride + (x-m.Rect.Min.X)*4 - r := m.Pix[i+0] - g := m.Pix[i+1] - b := m.Pix[i+2] - a := m.Pix[i+3] - -This image package change will not be fixed by gofix: how best to translate -code into something efficient and idiomatic depends on the surrounding context, -and is not easily automatable. Examples of what to do can be found in the -changes to image/draw/draw.go in http://codereview.appspot.com/4675076/ - -Other changes: -* 6l: change default output name to 6.out.exe on windows (thanks Alex Brainman). -* archive/zip: add Writer, - add Mtime_ns function to get modified time in sensible format. -* cc, ld, gc: fixes for Plan 9 build (thanks Lucio De Re). -* cgi: close stdout reader pipe when finished. -* cgo: add missing semicolon in generated struct, - windows amd64 port (thanks Wei Guangjing). -* codereview: fix for Mercurial 1.9. -* dashboard: list "most installed this week" with rolling count. -* debug/elf: read ELF Program headers (thanks Matthew Horsnell). -* debug/pe: fixes ImportedSymbols for Win64 (thanks Wei Guangjing). -* debug/proc: remove unused package. -* doc/talks/io2010: update with gofix and handle the errors. -* exp/eval, exp/ogle: remove packages eval and ogle. -* exp/regexp/syntax: add Prog.NumCap. -* exp/template: API changes, bug fixes, and tweaks. -* flag: make -help nicer. -* fmt: Scan(&int) was mishandling a lone digit. -* gc: fix closure bug, - fix to build with clang (thanks Dave Cheney), - make size of struct{} and [0]byte 0 bytes (thanks Robert Hencke), - some enhancements to printing debug info. -* gif: fix local color map and coordinates. -* go/build: fixes for windows (thanks Alex Brainman), - include processing of .c files for cgo packages (thanks Alex Brainman), - less aggressive failure when GOROOT not found. -* go/printer: changed max. number of newlines from 3 to 2. -* gob: register more slice types (thanks Bobby Powers). -* godoc: support for file systems stored in .zip files. -* goinstall, dashboard: Google Code now supports git (thanks Tarmigan Casebolt). -* hash/crc32: add SSE4.2 support. -* html: update section references in comments to the latest HTML5 spec. -* http: drain the pipe output in TestHandlerPanic to avoid logging deadlock, - fix Content-Type of file extension (thanks Yasuhiro Matsumoto), - implement http.FileSystem for zip files, - let FileServer work when path doesn't begin with a slash, - support for periodic flushing in ReverseProxy. -* image/draw: add benchmarks. -* json: add omitempty struct tag option, - allow using '$' and '-' as the struct field's tag (thanks Mikio Hara), - encode \r and \n in strings as e.g. "\n", not "\u000A" (thanks Evan Martin), - escape < and > in any JSON string for XSS prevention. -* ld: allow seek within write buffer< - add a PT_LOAD PHDR entry for the PHDR (thanks David Anderson). -* net: windows/amd64 port (thanks Wei Guangjing). -* os: plan9: add Process.Signal as a way to send notes (thanks Yuval Pavel Zholkover). -* os: don't permit Process.Signal after a successful Wait. -* path/filepath: fixes for windows paths (thanks Alex Brainman). -* reflect: add Value.NumMethod, - panic if Method index is out of range for a type. -* runtime: faster entersyscall, exitsyscall, - fix panic for make(chan [0]byte), - fix subtle select bug (thanks Hector Chu), - make goc2c build on Plan 9 (thanks Lucio De Re), - make TestSideEffectOrder work twice, - several parallelism-related optimizations and fixes, - stdcall_raw stack 16byte align for Win64 (thanks Wei Guangjing), - string-related optimizations (thanks Quan Yong Zhai), - track running goroutine count. -* strconv: handle [-+]Infinity in atof. -* sync: add fast paths to WaitGroup, - improve RWMutex performance. -* syscall: add Flock on Linux, - parse and encode SCM_RIGHTS and SCM_CREDENTIALS (thanks Albert Strasheim). -</pre> - -<h2 id="2011-07-07">2011-07-07 (<a href="release.html#r59">base for r59</a>)</h2> - -<pre> -This weekly snapshot includes changes to the strings, http, reflect, json, and -xml packages. Code that uses these packages will need changes. Most of these -changes can be made automatically with gofix. - -The strings package's Split function has itself been split into Split and -SplitN. SplitN is the same as the old Split. The new Split is equivalent to -SplitN with a final argument of -1. - -The http package has a new FileSystem interface that provides access to files. -The FileServer helper now takes a FileSystem argument instead of an explicit -file system root. By implementing your own FileSystem you can use the -FileServer to serve arbitrary data. - -The reflect package supports a new struct tag scheme that enables sharing of -struct tags between multiple packages. -In this scheme, the tags must be of the form: - key:"value" key2:"value2" -reflect.StructField's Tag field now has type StructTag (a string type), which -has method Get(key string) string that returns the associated value. -Clients of json and xml will need to be updated. Code that says - type T struct { - X int "name" - } -should become - type T struct { - X int `json:"name"` // or `xml:"name"` - } -Use govet to identify struct tags that need to be changed to use the new syntax. - -Other changes: -* 5l, 6l, 8l: drop use of ed during build. -* asn1: support T61 and UTF8 string. -* bufio: do not cache Read errors (thanks Graham Miller). -* build: make version.bash aware of branches. -* cgi: don't depend on CGI.pm for tests. -* codereview: make --ignore_hgpatch_failure work again, - restrict sync to default branch. -* crypto/openpgp: add ability to reserialize keys, - bug fix (thanks Gideon Jan-Wessel Redelinghuys). -* crypto/tls: fix generate_cert.go. -* crypto/x509: prevent chain cycles in Verify. -* csv: new package. -* doc: remove ed from apt-get package list. -* docs: fold the prog.sh scripting from makehtml into htmlgen itself. -* ebnflint: better handling of stdin. -* exp/regexp/syntax: new experimental RE2-based regexp implementation. -* exp/template: a new experimental templating package. -* fmt: add SkipSpace to fmt's ScanState interface. -* fmt: rename errno and error to err for doc consistency. -* gc: avoid package name ambiguity in error messages, - fix package quoting logic, - fixes for Plan 9 (thanks Lucio De Re). -* go/build: evaluate symlinks before comparing path to GOPATH. -* gob: use exported fields in structs in the package documentation. -* godoc: ignore directories that begin with '.', - search GOPATH for documentation. -* gofix: os/signal, path/filepath, and sort fixes (thanks Robert Hencke), -* goinstall: add support for generic hosts (thanks Julian Phillips), - only report successfully-installed packages to the dashboard, - try to access via https (thanks Yasuhiro Matsumoto). -* gotest: add -test.benchtime and -test.cpu flags. -* html: fixes and improvements (thanks Yasuhiro Matsumoto). -* http/cgi: add Handler.Dir to specify working directory (thanks Yasuhiro Matsumoto). -* http: add StripPrefix handler wrapper, - assume ContentLength 0 on GET requests, - better handling of 0-length Request.Body, - do TLS handshake explicitly before copying TLS state, - document that ServerConn and ClientConn are low-level, - make NewChunkedReader public (thanks Andrew Balholm), - respect Handlers setting Connection: close in their response. -* image: more tests, Paletted.Opaque optimization. -* io.WriteString: if the object has a WriteString method, use it (thanks Evan Shaw). -* ld: elide the Go symbol table when using -s (thanks Anthony Martin). -* ld: fix ELF strip by removing overlap of sections (thanks Gustavo Niemeyer). -* mime/multipart: parse LF-delimited messages, not just CRLF. -* mime: permit lower-case media type parameters (thanks Pascal S. de Kloe). -* misc/dashboard: new features and improvements (not yet deployed). -* misc/emacs: update list of builtins (thanks Quan Yong Zhai). -* misc/vim: allow only utf-8 for file encoding (thanks Yasuhiro Matsumoto). -* os: fix documentation for FileInfo.Name, - simplify WriteString, - use a different symbol from syscall in mkunixsignals.sh. -* path/filepath: enable TestWalk to run on windows (thanks Alex Brainman). -* reflect: add MethodByName, - allow Len on String values. -* regexp: document that Regexp is thread-safe. -* runtime/cgo: check for errors from pthread_create (thanks Albert Strasheim). -* runtime: add Semacquire/Semrelease benchmarks, - improved Semacquire/Semrelease implementation, - windows/amd64 port (thanks Wei Guangjing). -* sync: add fast path to Once, - improve Mutex to allow successive acquisitions, - new and improved benchmarks. -* syscall: regenerate zerrors for darwin/linux/freebsd, - support for tty options in StartProcess (thanks Ken Rockot). -* testing: make ResetTimer not start/stop the timer, - scale benchmark precision to 0.01ns if needed. -* time: zero-pad two-digit years. -* unicode/maketables: update debugging data. -* windows: define and use syscall.Handle (thanks Wei Guangjing). -* xml: add Marshal and MarshalIndent. -</pre> - -<h2 id="2011-06-23">2011-06-23</h2> - -<pre> -This snapshot includes a language change that restricts the use of goto. -In essence, a "goto" statement outside a block cannot jump to a label inside -that block. Your code may require changes if it uses goto. -This changeset shows how the new rule affected the Go tree: - http://code.google.com/p/go/source/detail?r=dc6d3cf9279d - -The os.ErrorString type has been hidden. If your code uses os.ErrorString it -must be changed. Most uses of os.ErrorString can be replaced with os.NewError. - -Other changes: -* 5c: do not use R9 and R10. -* 8l: more fixes for Plan 9 (thanks Lucio De Re). -* build: Make.ccmd: link with mach lib (thanks Joe Poirier). -* build: exclude packages that fail on Plan 9 (thanks Anthony Martin). -* cc: nit: silence comment warnings (thanks Dave Cheney). -* codereview.py: note that hg change -d abandons a change list (thanks Robert Hencke). -* crypto/openpgp: add ElGamal support. -* doc/faq: add question about converting from []T to []interface{}. -* doc: Effective Go: fix variadic function example (thanks Ben Lynn). -* exec: LookPath should not search %PATH% for files like c:cmd.exe (thanks Alex Brainman), - add support for Plan 9 (thanks Anthony Martin), - better error message for windows LookPath (thanks Alex Brainman). -* fmt: catch panics from calls to String etc. -* gc: descriptive panic for nil pointer -> value method call, - implement goto restriction, - unsafe.Alignof, unsafe.Offsetof, unsafe.Sizeof now return uintptr. -* go/build: include Import objects in Script Inputs. -* godefs: rudimentary tests (thanks Robert Hencke). -* goinstall: refactor and generalize repo handling code (thanks Julian Phillips), - temporarily use Makefiles by default (override with -make=false). -* gopprof: update list of memory allocators. -* http: add Server.ListenAndServeTLS, - buffer request.Write, - fix req.Cookie(name) with cookies in one header, - permit handlers to explicitly remove the Date header, - write Header keys with empty values. -* image: basic test for the 16-bits-per-color-channel types. -* io: clarify Read, ReadAt, Copy, Copyn EOF behavior. -* ld: don't attempt to build dynamic sections unnecessarily (thanks Gustavo Niemeyer). -* libmach: fix disassembly of FCMOVcc and FCOMI (thanks Anthony Martin), - fix tracing on linux (for cov) (thanks Anthony Martin). -* mime: fix RFC references (thanks Pascal S. de Kloe). -* misc/gobuilder: run make single-threaded on windows (thanks Alex Brainman). -* misc/godashboard: Accept sub-directories for goinstall's report (thanks Yasuhiro Matsumoto). -* nacl, tiny: remove vestiges (thanks Robert Hencke). -* net, syscall: interface for windows (thanks Yasuhiro Matsumoto). -* os: change Waitmsg String method to use pointer receiver (thanks Graham Miller). -* runtime: don't use twice the memory with grsec-like kernels (thanks Gustavo Niemeyer), -* spec: disallow goto into blocks. -* sync: restore GOMAXPROCS during benchmarks. -* syscall: add LSF support for linux (thanks Mikio Hara), - add socket control message support for darwin, freebsd, linux (thanks Mikio Hara), - add tty support to StartProcess (thanks Ken Rockot), - fix build for Sizeof change. -* test: test of goto restrictions. -* time: add support for Plan 9 (thanks Anthony Martin). -</pre> - -<h2 id="2011-06-16">2011-06-16</h2> - -<pre> -This snapshot includes changes to the sort and image/draw packages that will -require changes to client code. - -The sort.IntArray type has been renamed to IntSlice, and similarly for -StringArray and Float64Array. - -The image/draw package's Draw function now takes an additional argument, -a compositing operator. If in doubt, use draw.Over. - -Other changes: -* build: fix header files for Plan 9 (thanks Lucio De Re). -* cgo: handle new Apple LLVM-based gcc from Xcode 4.2. -* crypto/openpgp: add ability to encrypt and sign messages. -* doc/gopher: add goggled gopher logo for App Engine. -* doc: Update notes for 3-day Go course. -* exec: make LookPath work when PATHEXT var not set on Windows (thanks Alex Brainman). -* exp/regexp/syntax: syntax data structures, parser, escapes, character classes. -* exp/template: lexical scanner for new template package. -* fmt: debugging formats for characters: %+q %#U. -* gc: frame compaction for arm, - handle go print() and go println(), - work around goto bug. -* go/build: fixes, self-contained tests. -* go/printer, gofmt: print "select {}" on one line. -* godoc: replace OS file system accesses in favor of a FileSystem interface. -* gofix: fix inconsistent indentation in help output (thanks Scott Lawrence). -* goinstall: use go/build package to scan and build packages. -* http/spdy: improve error handling (thanks William Chan). -* http: use runtime/debug.Stack() to dump stack trace on panic. -* ld: dwarf emit filenames in debug_line header instead of as extended opcodes, - fix link Windows PE __declspec(dllimport) symbol (thanks Wei Guangjing), - make .rodata section read-only (thanks Gustavo Niemeyer). -* mail: decode RFC 2047 "B" encoding. -* mime/multipart: remove temp files after tests on Windows (thanks Alex Brainman). -* net: export all fields in Interface (thanks Mikio Hara), - rearrange source to run more tests on Windows (thanks Alex Brainman), - sendfile for win32 (thanks Yasuhiro Matsumoto). -* os: Plan 9, fix OpenFile & Chmod, add Process.Kill (thanks Yuval Pavel Zholkover). -* runtime: fix Plan 9 "lingering goroutines bug" (thanks Yuval Pavel Zholkover). -* spec: clarify rules for append, scope rules for :=, - specify constant conversions, - unsafe.Alignof/Offsetof/Sizeof return uintptr. -* syscall, os, exec: add *syscall.SysProcAttr field to os.ProcAttr and exec.Cmd. -* syscall: add ptrace on darwin (thanks Jeff Hodges), - mksyscall_windows.pl should output unix newline (thanks Yasuhiro Matsumoto). - update BPF support for BSD variants (thanks Mikio Hara), - use strict in perl scripts (thanks Yasuhiro Matsumoto). -* xml: handle non-string attribute fields (thanks Maxim Ushakov). -</pre> - -<h2 id="2011-06-09">2011-06-09 (<a href="release.html#r58">base for r58</a>)</h2> - -<pre> -This snapshot includes changes to the strconv, http, and exp/draw packages. -Client code that uses the http or exp/draw packages will need to be changed, -and code that uses strconv or fmt's "%q" formatting directive merits checking. - -The strconv package's Quote function now escapes only those Unicode code points -not classified as printable by unicode.IsPrint. Previously Quote would escape -all non-ASCII characters. This also affects the fmt package's "%q" formatting -directive. The previous quoting behavior is still available via strconv's new -QuoteToASCII function. - -Most instances of the type map[string][]string in the http package have been -replaced with the new Values type. The http.Values type has the Get, Set, Add, -and Del helper methods to make working with query parameters and form values -more convenient. - -The exp/draw package has been split into the image/draw and exp/gui packages. - -Other changes: -* 8l, ld: initial adjustments for Plan 9 native compilation of 8l (thanks Lucio De Re). -* arm: floating point improvements (thanks Fan Hongjian). -* big: Improved speed of nat-to-string conversion (thanks Michael T. Jones), - Rat outputs the requested precision from FloatString (thanks Graham Miller), - gobs for big.Rats. -* cgo: support non intel gcc machine flags (thanks Dave Cheney). -* compress/lzw: do not use background goroutines, - reduce decoder buffer size from 3*4096 to 2*4096. -* crypto/twofish: fix Reset index overflow bug. -* crypto: reorg, cleanup and add function for generating CRLs. -* exec: export the underlying *os.Process in Cmd. -* gc: enable building under clang/2.9 (thanks Dave Cheney), - preparatory work toward escape analysis, compact stack frames. -* go/build: new incomplete package for building go programs. -* godefs: do not assume forward type references are enums (thanks Robert Hencke). -* gofix, gofmt: fix diff regression from exec change. -* html: improve attribute parsing, note package status. -* http: don't fail on accept hitting EMFILE, - fix handling of 0-length HTTP requests. -* image/draw: fix clipping bug where sp/mp were not shifted when r.Min was. -* image/gif: fix buglet in graphics extension. -* image/tiff: support for bit depths other than 8 (thanks Benny Siegert). -* ld: fix and simplify ELF symbol generation (thanks Anthony Martin) -* libmach: use the standardized format for designated initializers (thanks Jeff Hodges) -* mail: address list parsing. -* net: add network interface identification API (thanks Mikio Hara), - fix bug in net.Interfaces: handle elastic sdl_data size correctly (thanks Mikio Hara). -* netchan: added drain method to importer (thanks David Jakob Fritz). -* os: add Process.Kill and Process.Signal (thanks Evan Shaw), - fix Getenv for Plan 9 (thanks Yuval Pavel Zholkover). -* runtime: improve memmove by checking memory overlap (thanks Quan Yong Zhai), - support for Linux grsecurity systems (thanks Jonathan Mark). -* spec: handle a corner case for shifts. -* testing: check that tests and benchmarks do not affect GOMAXPROCS (thanks Dmitriy Vyukov). -* unicode: add IsPrint and related properties, general categories. -</pre> - -<h2 id="2011-06-02">2011-06-02</h2> - -<pre> -This snapshot includes changes to the exec package that will require changes -to client code. - -The exec package has been re-designed with a more convenient and succinct API. -This code: - args := []string{"diff", "-u", "file1.txt", "file2.txt"} - p, err := exec.Run("/usr/bin/diff", args, os.Environ(), "", - exec.DevNull, exec.Pipe, exec.DevNull) - if err != nil { - return nil, err - } - var buf bytes.Buffer - io.Copy(&buf, p.Stdout) - w, err := p.Wait(0) - p.Close() - if err != nil { - return nil, err - } - return buf.Bytes(), err -can be rewritten as: - return exec.Command("diff", "-u", "file1.txt", "file2.txt").Output() -See the exec package documentation for the details ("godoc exec"). - -By setting the GOPATH environment variable you can use goinstall to build and -install your own code and external libraries outside of the Go tree (and avoid -writing Makefiles). -See the goinstall command documentation for the details ("godoc goinstall"). - -Other changes: -* 5g: alignment fixes. -* 6l, 8l: fix Mach-O binaries with many dynamic libraries. -* 8l: emit resources (.rsrc) in Windows PE. (thanks Wei Guangjing). -* asn1: fix marshaling of empty optional RawValues (thanks Mikkel Krautz). -* big: make Int and Rat implement fmt.Scanner (thanks Evan Shaw), - ~8x faster number scanning, - remove some unnecessary conversions. -* cgo: restrict #cgo directives to prevent shell expansion (thanks Gustavo Niemeyer), - support pkg-config for flags and libs (thanks Gustavo Niemeyer). -* compress/flate: fix Huffman tree bug, - do not use background goroutines. -* crypto/openpgp: add support for symmetrically encrypting files. -* crypto/tls/generate_cert.go: fix misspelling of O_CREATE. -* dashboard: send notification emails when the build breaks. -* doc: mention go/printer instead of container/vector in effective go, - put Release History link on 'Documentation' page, - put Weekly Snapshot History link on 'Contributing' page. -* encoding/base64: add DecodeString and EncodeToString. -* encoding/binary: add a non-reflect fast path for Read, - add a non-reflect fast path for Write. -* encoding/hex: add hex dumping. -* encoding/line: delete package. Its functionality is now in bufio. -* filepath: Abs must always return a clean path (thanks Gustavo Niemeyer). -* fmt: fix bug in UnreadRune, - make %q work for integers, printing a quoted character literal, - return EOF when out of input in Scan*. -* gc: check parameter declarations in interface fields (thanks Anthony Martin), - disallow ... in type conversions (thanks Anthony Martin), - do not force heap allocation on referencing outer variable in a closure, - fix m[x], _ = y.(T), - implement new shift rules, - patch y.tab.c to fix build when using Bison 2.5, - relax assignability of method receivers (thanks Anthony Martin), - typecheck the whole tree before walking. -* go/scanner: don't allow "0x" and "0X" as integers (thanks Evan Shaw). -* gobuilder: fixes for windows (thanks Alex Brainman). -* godoc: basic setup for running godoc on local app engine emulator, - display advert for the package dashboard on package list page. -* goinstall: fixes for windows (thanks Alex Brainman), - more verbose logging with -v. -* gotest, pkg/exec: use bash to run shell scripts on windows (thanks Alex Brainman). -* http/spdy: redo interfaces, flesh out implementation & frame types (thanks William Chan). -* http: Transport hook to register non-http(s) protocols, - add client+server benchmark, - catch Handler goroutine panics, - fix Set-Cookie date parsing, - have client set Content-Length when possible, - let Transport use a custom net.Dial function, - propagate Set-Cookie in reverse proxy, - ServeFile shouldn't send Content-Length when Content-Encoding is set. -* image: add a SubImage method. -* image/gif: simplify blockReader.Read. -* image/png: fix encoding of images that don't start at (0, 0). -* io, net, http: sendfile support. -* io: add ByteScanner, RuneScanner interfaces. -* ld: add -w to disable dwarf, make errors obviously from dwarf. -* mail: new package. -* mime/multipart: misc code/doc fixes. -* misc/cgo: remove reference to 'destroy' function. -* misc/emacs: don't select the mark after gofmt (thanks Eric Eisner). -* misc/gophertool: Chrome extension to aid in Go development -* misc/vim: limit Fmt command to Go buffers (thanks Yasuhiro Matsumoto). -* net: if we stop polling, remove any pending events for the socket, - update IP multicast socket options (thanks Mikio Hara). -* os: Fix test to work on Solaris, - fix Readdir(0) on EOF, - fix Readdir, Readdirnames (thanks Yuval Pavel Zholkover), - fix os.MkdirAll with backslash path separator (thanks Yasuhiro Matsumoto), - handle OpenFile flag parameter properly on Windows (thanks Alex Brainman). -* path/filepath: remove string constants. -* pkg: spelling tweaks, I-Z (thanks Robert Hencke). -* quietgcc: fix typo, respect $TMPDIR. -* runtime: do not garbage collect windows callbacks (thanks Alex Brainman), - fix mmap error return on linux (thanks Dmitry Chestnykh), - reset GOMAXPROCS during tests, - save cdecl registers in Windows SEH handler (thanks Alexey Borzenkov). -* spec: be precise with the use of the informal ellipsis and the Go token, - clarify rules for shifts. -* strconv: add QuoteRune; analogous to Quote but for runes rather than strings. -* strings: implement UnreadByte, UnreadRune. -* sync: always wake up sleeping goroutines on Cond.Signal (thanks Gustavo Niemeyer). -* sync/atomic: fix check64. -* syscall: add ProcAttr field to pass an unescaped command line on windows (thanks Vincent Vanackere), - add routing messages support for Linux and BSD (thanks Mikio Hara). -* template: fixes and clean-ups (thanks Gustavo Niemeyer). -* time: fix Format bug: midnight/noon are 12AM/PM not 0AM/PM. -* unicode: make the tables smaller. -</pre> - -<h2 id="2011-05-22">2011-05-22</h2> - -<pre> -This snapshot includes changes to the http package that will require changes to -client code. - -The finalURL return value of the Client.Get method has been removed. -This value is now accessible via the new Request field on http.Response. -For example, this code: - - res, finalURL, err := http.Get(...) - -should be rewritten as: - - res, err := http.Get(...) - if err != nil { - // ... - } - finalURL := res.Request.URL.String() - -Uses of http.Get that assign the finalURL value to _ can be rewritten -automatically with gofix. - -This snapshot also includes an optimization to the append function that makes it -between 2 and 5 times faster in typical use cases. - -Other changes: -* 5a, 6a, 8a, cc: remove old environment variables. -* 5c, 5g: fix build with too-smart gcc. -* 5l, 8l: add ELF symbol table to binary. -* 5l: delete pre-ARMv4 instruction implementations, other fixes. -* 6l, 8l: emit windows dwarf sections like other platforms (thanks Alex Brainman). -* 6l: fix emit windows dwarf sections (thanks Wei Guangjing). -* 8g: fix conversion from float to uint64 (thanks Anthony Martin). -* Make.cmd: create TARGDIR if necessary (thanks Gustavo Niemeyer). -* asn1: add big support. -* big: add Int methods to act on numbered bits (thanks Roger Peppe), - better support for string conversions, - support %v and # modifier, better handling of unknown formats. -* cgi: export RequestFromMap (thanks Evan Shaw), - set Request.TLS and Request.RemoteAddr for children. -* cgo: use packed struct to fix Windows behavior. -* codereview: add release branch support, - fetch metadata using JSON API, not XML scraping, - handle 'null as missing field' in rietveld json. -* compress/lzw: silently drop implied codes that are too large. -* compress/zlib: actually use provided dictionary in NewWriterDict -* crypto/openpgp: add key generation support, - change PublicKey.Serialize to include the header. -* crypto/rand: add utility functions for number generation (thanks Anthony Martin). -* crypto/tls: export the verified chains. -* crypto/x509/crl: add package. -* crypto/x509: export raw SubjectPublicKeyInfo, - support DSA public keys in X.509 certs, - support parsing and verifying DSA signatures (thanks Jonathan Allie). -* doc/roadmap: put "App Engine support" under "Done". -* doc: add I/O 2011 talks to talks/, docs.html, and front page. -* effective go: explain about values/pointers in String() example, - update to new Open signature. -* exp/draw: fast paths for drawing a YCbCr or an NRGBA onto an RGBA. -* filepath: make EvalSymlinks work on Windows (thanks Alex Brainman). -* flag: allow distinct sets of flags. -* gc: fix type switch error message for invalid cases (thanks Lorenzo Stoakes), - fix unsafe.Sizeof, - preserve original expression for errors. -* go/ast, go/doc, godoc: consider struct fields and interface methods when filtering ASTs. -* go/ast: consider anonymous fields and set Incomplete bit when filtering ASTs, - properly maintain map of package global imports. -* go/doc, godoc: when filtering for godoc, don't remove elements of a declaration. -* go/parser: accept parenthesized receive operations in select statements, - always introduce an ast.Object when declaring an identifier. -* go/printer, gofmt: fix alignment of "=" in const/var declarations, - fix formatting of expression lists (missing blank). -* go/printer: added simple performance benchmark, - make tests follow syntactic restrictions, - more accurate comment for incomplete structs/interfaces, -* go/token: faster FileSet.Position implementation. -* go/types: type checker API + testing infrastructure. -* godoc: added -index flag to enable/disable search index, - if there is no search box, don't run the respective JS code. -* gofmt: update test.sh (exclude a file w/ incorrect syntax). -* html: parse empty, unquoted, and single-quoted attribute values. -* http/cgi: correctly set request Content-Type (thanks Evan Shaw), - pass down environment variables for IRIX and Solaris. -* http/pprof: fix POST reading bug. -* http/spdy: new incomplete package (thanks Ross Light). -* http: Client.Do should follow redirects for GET and HEAD, - add Header.Write method (thanks Evan Shaw), - add Request.SetBasicAuth method, - add Transport.ProxySelector, - add http.SetCookie(ResponseWriter, *Cookie), - don't Clean query string in relative redirects, - fix FormFile nil pointer dereference on missing multipart form, - fix racy test with a simpler version, - fix two Transport gzip+persist crashes, - include Host header in requests, - make HEAD client request follow redirects (thanks Eivind Uggedal). - update cookie doc to reference new RFC 6265, - write cookies according to RFC 6265 (thanks Christian Himpel). -* image/bmp: implement a BMP decoder. -* image/gif: new package provides a GIF decoder. -* image/jpeg: decode grayscale images, not just color images. - optimizations and tweaks. -* image/png: encode paletted images with alpha channel (thanks Dmitry Chestnykh), - speed up opaque RGBA encoding. -* image/tiff: implement a decoder (thanks Benny Siegert). -* image: add type-specific Set methods and use them when decoding PNG, - make AlphaColor.Set conform to usual signature (thanks Roger Peppe), - png & jpeg encoding benchmarks. -* ld: do not emit reference to dynamic library named "", - fix alignment of rodata section on Plan 9 (thanks Anthony Martin), - make ELF binaries with no shared library dependencies static binaries. -* make.bash: remove old bash version of gotest on Windows (thanks Alex Brainman). -* make: add nuke target for C commands and libs (thanks Anthony Martin). -* mime/multipart: add FileName accessor on Part, - add Writer, - return an error on Reader EOF, not (nil, nil). -* misc/cgo/test: run tests. -* misc/emacs: use UTF-8 when invoking gofmt as a subprocess (thanks Sameer Ajmani). -* misc/vim: new Vim indentation script. -* net, http: add and make use of IP address scope identification API (thanks Mikio Hara). -* net: default to 127.0.0.1, not localhost, in TestICMP, - don't crash on unexpected DNS SRV responses, - enable SO_REUSEPORT on BSD variants (thanks Mikio Hara), - protocol family adaptive address family selection (thanks Mikio Hara), - re-enable wildcard listening (thanks Mikio Hara), - sort records returned by LookupSRV (thanks Gary Burd). -* os: make Readdir & Readdirnames return os.EOF at end, - make Setenv update C environment variables. -* reflect: allow unexported key in Value.MapIndex. -* runtime, sync/atomic: fix arm cas. -* runtime: add newline to "finalizer already set" error (thanks Albert Strasheim), - handle out-of-threads on Linux gracefully (thanks Albert Strasheim), - fix function args not checked warning on ARM (thanks Dave Cheney), - make StackSystem part of StackGuard (thanks Alexey Borzenkov), - maybe fix Windows build broken by cgo setenv CL. -* spec: clarify semantics of integer division, - clarify semantics of range clause, - fix error in production syntax, - narrow syntax for expression and select statements, - newlines cannot be used inside a char or "" string literal, - restricted expressions may still be parenthesized. -* strings: make Reader.Read use copy instead of an explicit loop. -* syscall: add Windows file mapping functions and constants (thanks Evan Shaw), - add IPv6 scope zone ID support (thanks Mikio Hara), - add netlink support for linux/386, linux/amd64, linux/arm (thanks Mikio Hara), - add Sendfile, - adjust freebsd syscalls.master URL properly (thanks Mikio Hara), - change Overlapped.HEvent type, it is a handle (thanks Alex Brainman). -* syslog: fix skipping of net tests (thanks Gustavo Niemeyer). -* template: support string, int and float literals (thanks Gustavo Niemeyer). -* xml: fix reflect error. -</pre> - -<h2 id="2011-04-27">2011-04-27 (<a href="release.html#r57">base for r57</a>)</h2> - -<pre> -This snapshot 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. -</pre> - -<h2 id="2011-04-13">2011-04-13</h2> - -<pre> -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). -</pre> - -<h2 id="2011-04-04">2011-04-04</h2> - -<pre> -This snapshot 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). -</pre> - -<h2 id="2011-03-28">2011-03-28</h2> - -<pre> -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. -</pre> - -<h2 id="2011-03-15">2011-03-15</h2> - -<pre> -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. -</pre> - -<h2 id="2011-03-07">2011-03-07 (<a href="release.html#r56">base for r56</a>)</h2> - -<pre> -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). -</pre> - -<h2 id="2011-02-24">2011-02-24</h2> - -<pre> -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. -</pre> - -<h2 id="2011-02-15">2011-02-15</h2> - -<pre> -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). -</pre> - -<h2 id="2011-02-01">2011-02-01</h2> - -<pre> -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 canceling 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. -</pre> - -<h2 id="2011-01-20">2011-01-20</h2> - -<pre> -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. -</pre> - -<h2 id="2011-01-19">2011-01-19</h2> - -<pre> -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). -</pre> - -<h2 id="2011-01-12">2011-01-12</h2> - -<pre> -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 marshaling 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).</pre> - -<h2 id="2011-01-06">2011-01-06</h2> - -<pre> -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. -</pre> - -<h2 id="2010-12-22">2010-12-22</h2> - -<pre> -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. -</pre> - -<h2 id="2010-12-15">2010-12-15</h2> - -<pre> -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 foreseeable 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). -</pre> - -<h2 id="2010-12-08">2010-12-08</h2> - -<pre> -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). -</pre> - -<h2 id="2010-12-02">2010-12-02</h2> - -<pre> -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. -</pre> - -<h2 id="2010-11-23">2010-11-23</h2> - -<pre> -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). -</pre> - -<h2 id="2010-11-10">2010-11-10</h2> - -<pre> -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. -</pre> - -<h2 id="2010-11-02">2010-11-02</h2> - -<pre> -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). -</pre> - -<h2 id="2010-10-27">2010-10-27</h2> - -<pre> -*** 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. -</pre> - -<h2 id="2010-10-20">2010-10-20</h2> - -<pre> -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. -</pre> - -<h2 id="2010-10-13">2010-10-13</h2> - -<pre> -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). -</pre> - -<h2 id="2010-09-29">2010-09-29</h2> - -<pre> -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). -</pre> - -<h2 id="2010-09-22">2010-09-22</h2> - -<pre> -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. -</pre> - -<h2 id="2010-09-15">2010-09-15</h2> - -<pre> -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) -</pre> - -<h2 id="2010-09-06">2010-09-06</h2> - -<pre> -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). -</pre> - -<h2 id="2010-08-25">2010-08-25</h2> - -<pre> -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. -</pre> - -<h2 id="2010-08-11">2010-08-11</h2> - -<pre> -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. -</pre> - -<h2 id="2010-08-04">2010-08-04</h2> - -<pre> -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). -</pre> - -<h2 id="2010-07-29">2010-07-29</h2> - -<pre> -* 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). -</pre> - -<h2 id="2010-07-14">2010-07-14</h2> - -<pre> -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). -</pre> - -<h2 id="2010-07-01">2010-07-01</h2> - -<pre> -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. -</pre> - -<h2 id="2010-06-21">2010-06-21</h2> - -<pre> -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. -</pre> - -<h2 id="2010-06-09">2010-06-09</h2> - -<pre> -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). -</pre> - -<h2 id="2010-05-27">2010-05-27</h2> - -<pre> -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. -</pre> - -<h2 id="2010-05-04">2010-05-04</h2> - -<pre> -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. -</pre> - -<h2 id="2010-04-27">2010-04-27</h2> - -<pre> -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 marshaling embedded structs (thanks Raif S. Naffah), - new "innerxml" tag to collect inner XML. -</pre> - -<h2 id="2010-04-13">2010-04-13</h2> - -<pre> -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 behavior 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/ -</pre> - -<h2 id="2010-03-30">2010-03-30</h2> - -<pre> -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). -</pre> - -<h2 id="2010-03-22">2010-03-22</h2> - -<pre> -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. -</pre> - -<h2 id="2010-03-15">2010-03-15</h2> - -<pre> -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. -</pre> - -<h2 id="2010-03-04">2010-03-04</h2> - -<pre> -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) -</pre> - -<h2 id="2010-02-23">2010-02-23</h2> - -<pre> -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) -</pre> - -<h2 id="2010-02-17">2010-02-17</h2> - -<pre> -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 marshaling) -* build: fix build for Native Client, Linux/ARM -* dashboard: show benchmarks, add garbage collector benchmarks -* encoding/pem: add marshaling 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) -</pre> - -<h2 id="2010-02-04">2010-02-04</h2> - -<pre> -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 implementation 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 -</pre> - -<h2 id="2010-01-27">2010-01-27</h2> - -<pre> -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) -</pre> - -<h2 id="2010-01-13">2010-01-13</h2> - -<pre> -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 -</pre> - -<h2 id="2010-01-05">2010-01-05</h2> - -<pre> -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 <a href="http://golang.org/doc/devel/roadmap.html">http://golang.org/doc/devel/roadmap.html</a>. -</pre> - -<h2 id="2009-12-22">2009-12-22</h2> - -<pre> -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) -</pre> - -<h2 id="2009-12-09">2009-12-09</h2> - -<pre> -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) -</pre> |