github.com/bgentry/go@v0.0.0-20150121062915-6cf5a733d54d/doc/devel/release.html (about) 1 <!--{ 2 "Title": "Release History" 3 }--> 4 5 <p>This page summarizes the changes between official stable releases of Go. 6 The <a href="//golang.org/change">change log</a> has the full details.</p> 7 8 <p>To update to a specific release, use:</p> 9 10 <pre> 11 git pull 12 git checkout <i>release-branch</i> 13 </pre> 14 15 <h2 id="go1.4">go1.4 (released 2014/12/10)</h2> 16 17 <p> 18 Go 1.4 is a major release of Go. 19 Read the <a href="/doc/go1.4">Go 1.4 Release Notes</a> for more information. 20 </p> 21 22 <h3 id="go1.4.minor">Minor revisions</h3> 23 24 <p> 25 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. 26 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. 27 </p> 28 29 <h2 id="go1.3">go1.3 (released 2014/06/18)</h2> 30 31 <p> 32 Go 1.3 is a major release of Go. 33 Read the <a href="/doc/go1.3">Go 1.3 Release Notes</a> for more information. 34 </p> 35 36 <h3 id="go1.3.minor">Minor revisions</h3> 37 38 <p> 39 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. 40 See the <a href="//code.google.com/p/go/source/list?name=release-branch.go1.3&r=073fc578434bf3e1e22749b559d273c8da728ebb">change history</a> for details. 41 </p> 42 43 <p> 44 go1.3.2 (released 2014/09/25) includes bug fixes to cgo and the crypto/tls packages. 45 See the <a href="//code.google.com/p/go/source/list?name=release-branch.go1.3&r=go1.3.2">change history</a> for details. 46 </p> 47 48 <p> 49 go1.3.3 (released 2014/09/30) includes further bug fixes to cgo, the runtime package, and the nacl port. 50 See the <a href="//code.google.com/p/go/source/list?name=release-branch.go1.3&r=go1.3.3">change history</a> for details. 51 </p> 52 53 <h2 id="go1.2">go1.2 (released 2013/12/01)</h2> 54 55 <p> 56 Go 1.2 is a major release of Go. 57 Read the <a href="/doc/go1.2">Go 1.2 Release Notes</a> for more information. 58 </p> 59 60 <h3 id="go1.2.minor">Minor revisions</h3> 61 62 <p> 63 go1.2.1 (released 2014/03/02) includes bug fixes to the <code>runtime</code>, <code>net</code>, and <code>database/sql</code> packages. 64 See the <a href="//code.google.com/p/go/source/list?name=release-branch.go1.2&r=7ada9e760ce34e78aee5b476c9621556d0fa5d31">change history</a> for details. 65 </p> 66 67 <p> 68 go1.2.2 (released 2014/05/05) includes a 69 <a href="//code.google.com/p/go/source/detail?r=bda3619e7a2c&repo=tools">security fix</a> 70 that affects the tour binary included in the binary distributions (thanks to Guillaume T). 71 </p> 72 73 <h2 id="go1.1">go1.1 (released 2013/05/13)</h2> 74 75 <p> 76 Go 1.1 is a major release of Go. 77 Read the <a href="/doc/go1.1">Go 1.1 Release Notes</a> for more information. 78 </p> 79 80 <h3 id="go1.1.minor">Minor revisions</h3> 81 82 <p> 83 go1.1.1 (released 2013/06/13) includes several compiler and runtime bug fixes. 84 See the <a href="//code.google.com/p/go/source/list?name=release-branch.go1.1&r=43c4a41d24382a56a90e924800c681e435d9e399">change history</a> for details. 85 </p> 86 87 <p> 88 go1.1.2 (released 2013/08/13) includes fixes to the <code>gc</code> compiler 89 and <code>cgo</code>, and the <code>bufio</code>, <code>runtime</code>, 90 <code>syscall</code>, and <code>time</code> packages. 91 See the <a href="//code.google.com/p/go/source/list?name=release-branch.go1.1&r=a6a9792f94acd4ff686b2bc57383d163608b91cf">change history</a> for details. 92 If you use package syscall's <code>Getrlimit</code> and <code>Setrlimit</code> 93 functions under Linux on the ARM or 386 architectures, please note change 94 <a href="//golang.org/change/55ac276af5a7">55ac276af5a7</a> 95 that fixes <a href="//golang.org/issue/5949">issue 5949</a>. 96 </p> 97 98 <h2 id="go1">go1 (released 2012/03/28)</h2> 99 100 <p> 101 Go 1 is a major release of Go that will be stable in the long term. 102 Read the <a href="/doc/go1.html">Go 1 Release Notes</a> for more information. 103 </p> 104 105 <p> 106 It is intended that programs written for Go 1 will continue to compile and run 107 correctly, unchanged, under future versions of Go 1. 108 Read the <a href="/doc/go1compat.html">Go 1 compatibility document</a> for more 109 about the future of Go 1. 110 </p> 111 112 <p> 113 The go1 release corresponds to 114 <code><a href="weekly.html#2012-03-27">weekly.2012-03-27</a></code>. 115 </p> 116 117 <h3 id="go1.minor">Minor revisions</h3> 118 119 <p> 120 go1.0.1 (released 2012/04/25) was issued to 121 <a href="//golang.org/change/a890477d3dfb">fix</a> an 122 <a href="//golang.org/issue/3545">escape analysis bug</a> 123 that can lead to memory corruption. 124 It also includes several minor code and documentation fixes. 125 </p> 126 127 <p> 128 go1.0.2 (released 2012/06/13) was issued to fix two bugs in the implementation 129 of maps using struct or array keys: 130 <a href="//golang.org/issue/3695">issue 3695</a> and 131 <a href="//golang.org/issue/3573">issue 3573</a>. 132 It also includes many minor code and documentation fixes. 133 </p> 134 135 <p> 136 go1.0.3 (released 2012/09/21) includes minor code and documentation fixes. 137 </p> 138 139 <p> 140 See the <a href="//code.google.com/p/go/source/list?name=release-branch.go1">go1 release branch history</a> for the complete list of changes. 141 </p> 142 143 <h2 id="r60">r60 (released 2011/09/07)</h2> 144 145 <p> 146 The r60 release corresponds to 147 <code><a href="weekly.html#2011-08-17">weekly.2011-08-17</a></code>. 148 This section highlights the most significant changes in this release. 149 For a more detailed summary, see the 150 <a href="weekly.html#2011-08-17">weekly release notes</a>. 151 For complete information, see the 152 <a href="//code.google.com/p/go/source/list?r=release-branch.r60">Mercurial change list</a>. 153 </p> 154 155 <h3 id="r60.lang">Language</h3> 156 157 <p> 158 An "else" block is now required to have braces except if the body of the "else" 159 is another "if". Since gofmt always puts those braces in anyway, 160 gofmt-formatted programs will not be affected. 161 To fix other programs, run gofmt. 162 </p> 163 164 <h3 id="r60.pkg">Packages</h3> 165 166 <p> 167 <a href="/pkg/http/">Package http</a>'s URL parsing and query escaping code 168 (such as <code>ParseURL</code> and <code>URLEscape</code>) has been moved to 169 the new <a href="/pkg/url/">url package</a>, with several simplifications to 170 the names. Client code can be updated automatically with gofix. 171 </p> 172 173 <p> 174 <a href="/pkg/image/">Package image</a> has had significant changes made to the 175 <code>Pix</code> field of struct types such as 176 <a href="/pkg/image/#RGBA">image.RGBA</a> and 177 <a href="/pkg/image/#NRGBA">image.NRGBA</a>. 178 The <a href="/pkg/image/#Image">image.Image</a> interface type has not changed, 179 though, and you should not need to change your code if you don't explicitly 180 refer to <code>Pix</code> fields. For example, if you decode a number of images 181 using the <a href="/pkg/image/jpeg/">image/jpeg</a> package, compose them using 182 <a href="/pkg/image/draw/">image/draw</a>, and then encode the result using 183 <a href="/pkg/img/png">image/png</a>, then your code should still work as 184 before. 185 If your code <i>does</i> refer to <code>Pix</code> fields see the 186 <a href="/doc/devel/weekly.html#2011-07-19">weekly.2011-07-19</a> 187 snapshot notes for how to update your code. 188 </p> 189 190 <p> 191 <a href="/pkg/template/">Package template</a> has been replaced with a new 192 templating package (formerly <code>exp/template</code>). The original template 193 package is still available as <a href="/pkg/old/template/">old/template</a>. 194 The <code>old/template</code> package is deprecated and will be removed. 195 The Go tree has been updated to use the new template package. We encourage 196 users of the old template package to switch to the new one. Code that uses 197 <code>template</code> or <code>exp/template</code> will need to change its 198 import lines to <code>"old/template"</code> or <code>"template"</code>, 199 respectively. 200 </p> 201 202 <h3 id="r60.cmd">Tools</h3> 203 204 <p> 205 <a href="/cmd/goinstall/">Goinstall</a> now uses a new tag selection scheme. 206 When downloading or updating, goinstall looks for a tag or branch with the 207 <code>"go."</code> prefix that corresponds to the local Go version. For Go 208 <code>release.r58</code> it looks for <code>go.r58</code>. For 209 <code>weekly.2011-06-03</code> it looks for <code>go.weekly.2011-06-03</code>. 210 If the specific <code>go.X</code> tag or branch is not found, it chooses the 211 closest earlier version. If an appropriate tag or branch is found, goinstall 212 uses that version of the code. Otherwise it uses the default version selected 213 by the version control system. Library authors are encouraged to use the 214 appropriate tag or branch names in their repositories to make their libraries 215 more accessible. 216 </p> 217 218 <h3 id="r60.minor">Minor revisions</h3> 219 220 <p> 221 r60.1 includes a 222 <a href="//golang.org/change/1824581bf62d">linker 223 fix</a>, a pair of 224 <a href="//golang.org/change/9ef4429c2c64">goplay</a> 225 <a href="//golang.org/change/d42ed8c3098e">fixes</a>, 226 and a <code>json</code> package 227 <a href="//golang.org/change/d5e97874fe84">fix</a> and 228 a new 229 <a href="//golang.org/change/4f0e6269213f">struct tag 230 option</a>. 231 </p> 232 233 <p> 234 r60.2 235 <a href="//golang.org/change/ff19536042ac">fixes</a> 236 a memory leak involving maps. 237 </p> 238 239 <p> 240 r60.3 fixes a 241 <a href="//golang.org/change/01fa62f5e4e5">reflect bug</a>. 242 </p> 243 244 <h2 id="r59">r59 (released 2011/08/01)</h2> 245 246 <p> 247 The r59 release corresponds to 248 <code><a href="weekly.html#2011-07-07">weekly.2011-07-07</a></code>. 249 This section highlights the most significant changes in this release. 250 For a more detailed summary, see the 251 <a href="weekly.html#2011-07-07">weekly release notes</a>. 252 For complete information, see the 253 <a href="//code.google.com/p/go/source/list?r=release-branch.r59">Mercurial change list</a>. 254 </p> 255 256 <h3 id="r59.lang">Language</h3> 257 258 <p> 259 This release includes a language change that restricts the use of 260 <code>goto</code>. In essence, a <code>goto</code> statement outside a block 261 cannot jump to a label inside that block. Your code may require changes if it 262 uses <code>goto</code>. 263 See <a href="//golang.org/change/dc6d3cf9279d">this 264 changeset</a> for how the new rule affected the Go tree. 265 </p> 266 267 <h3 id="r59.pkg">Packages</h3> 268 269 <p> 270 As usual, <a href="/cmd/gofix/">gofix</a> will handle the bulk of the rewrites 271 necessary for these changes to package APIs. 272 </p> 273 274 <p> 275 <a href="/pkg/http">Package http</a> has a new 276 <a href="/pkg/http/#FileSystem">FileSystem</a> interface that provides access 277 to files. The <a href="/pkg/http/#FileServer">FileServer</a> helper now takes a 278 <code>FileSystem</code> argument instead of an explicit file system root. By 279 implementing your own <code>FileSystem</code> you can use the 280 <code>FileServer</code> to serve arbitrary data. 281 </p> 282 283 <p> 284 <a href="/pkg/os/">Package os</a>'s <code>ErrorString</code> type has been 285 hidden. Most uses of <code>os.ErrorString</code> can be replaced with 286 <a href="/pkg/os/#NewError">os.NewError</a>. 287 </p> 288 289 <p> 290 <a href="/pkg/reflect/">Package reflect</a> supports a new struct tag scheme 291 that enables sharing of struct tags between multiple packages. 292 In this scheme, the tags must be of the form: 293 </p> 294 <pre> 295 `key:"value" key2:"value2"` 296 </pre> 297 <p> 298 The <a href="/pkg/reflect/#StructField">StructField</a> type's Tag field now 299 has type <a href="/pkg/reflect/#StructTag">StructTag</a>, which has a 300 <code>Get</code> method. Clients of <a href="/pkg/json">json</a> and 301 <a href="/pkg/xml">xml</a> will need to be updated. Code that says 302 </p> 303 <pre> 304 type T struct { 305 X int "name" 306 } 307 </pre> 308 <p> 309 should become 310 </p> 311 <pre> 312 type T struct { 313 X int `json:"name"` // or `xml:"name"` 314 } 315 </pre> 316 <p> 317 Use <a href="/cmd/govet/">govet</a> to identify struct tags that need to be 318 changed to use the new syntax. 319 </p> 320 321 <p> 322 <a href="/pkg/sort/">Package sort</a>'s <code>IntArray</code> type has been 323 renamed to <a href="/pkg/sort/#IntSlice">IntSlice</a>, and similarly for 324 <a href="/pkg/sort/#Float64Slice">Float64Slice</a> and 325 <a href="/pkg/sort/#StringSlice">StringSlice</a>. 326 </p> 327 328 <p> 329 <a href="/pkg/strings/">Package strings</a>'s <code>Split</code> function has 330 itself been split into <a href="/pkg/strings/#Split">Split</a> and 331 <a href="/pkg/strings/#SplitN">SplitN</a>. 332 <code>SplitN</code> is the same as the old <code>Split</code>. 333 The new <code>Split</code> is equivalent to <code>SplitN</code> with a final 334 argument of -1. 335 </p> 336 337 <a href="/pkg/image/draw/">Package image/draw</a>'s 338 <a href="/pkg/image/draw/#Draw">Draw</a> function now takes an additional 339 argument, a compositing operator. 340 If in doubt, use <a href="/pkg/image/draw/#Op">draw.Over</a>. 341 </p> 342 343 <h3 id="r59.cmd">Tools</h3> 344 345 <p> 346 <a href="/cmd/goinstall/">Goinstall</a> now installs packages and commands from 347 arbitrary remote repositories (not just Google Code, Github, and so on). 348 See the <a href="/cmd/goinstall/">goinstall documentation</a> for details. 349 </p> 350 351 <h2 id="r58">r58 (released 2011/06/29)</h2> 352 353 <p> 354 The r58 release corresponds to 355 <code><a href="weekly.html#2011-06-09">weekly.2011-06-09</a></code> 356 with additional bug fixes. 357 This section highlights the most significant changes in this release. 358 For a more detailed summary, see the 359 <a href="weekly.html#2011-06-09">weekly release notes</a>. 360 For complete information, see the 361 <a href="//code.google.com/p/go/source/list?r=release-branch.r58">Mercurial change list</a>. 362 </p> 363 364 <h3 id="r58.lang">Language</h3> 365 366 <p> 367 This release fixes a <a href="//golang.org/change/b720749486e1">use of uninitialized memory in programs that misuse <code>goto</code></a>. 368 </p> 369 370 <h3 id="r58.pkg">Packages</h3> 371 372 <p> 373 As usual, <a href="/cmd/gofix/">gofix</a> will handle the bulk of the rewrites 374 necessary for these changes to package APIs. 375 </p> 376 377 <p> 378 <a href="/pkg/http/">Package http</a> drops the <code>finalURL</code> return 379 value from the <a href="/pkg/http/#Client.Get">Client.Get</a> method. The value 380 is now available via the new <code>Request</code> field on <a 381 href="/pkg/http/#Response">http.Response</a>. 382 Most instances of the type map[string][]string in have been 383 replaced with the new <a href="/pkg/http/#Values">Values</a> type. 384 </p> 385 386 <p> 387 <a href="/pkg/exec/">Package exec</a> has been redesigned with a more 388 convenient and succinct API. 389 </p> 390 391 <p> 392 <a href="/pkg/strconv/">Package strconv</a>'s <a href="/pkg/strconv/#Quote">Quote</a> 393 function now escapes only those Unicode code points not classified as printable 394 by <a href="/pkg/unicode/#IsPrint">unicode.IsPrint</a>. 395 Previously Quote would escape all non-ASCII characters. 396 This also affects the <a href="/pkg/fmt/">fmt</a> package's <code>"%q"</code> 397 formatting directive. The previous quoting behavior is still available via 398 strconv's new <a href="/pkg/strconv/#QuoteToASCII">QuoteToASCII</a> function. 399 </p> 400 401 <p> 402 <a href="/pkg/os/signal/">Package os/signal</a>'s 403 <a href="/pkg/os/#Signal">Signal</a> and 404 <a href="/pkg/os/#UnixSignal">UnixSignal</a> types have been moved to the 405 <a href="/pkg/os/">os</a> package. 406 </p> 407 408 <p> 409 <a href="/pkg/image/draw/">Package image/draw</a> is the new name for 410 <code>exp/draw</code>. The GUI-related code from <code>exp/draw</code> is now 411 located in the <a href="/pkg/exp/gui/">exp/gui</a> package. 412 </p> 413 414 <h3 id="r58.cmd">Tools</h3> 415 416 <p> 417 <a href="/cmd/goinstall/">Goinstall</a> now observes the GOPATH environment 418 variable to build and install your own code and external libraries outside of 419 the Go tree (and avoid writing Makefiles). 420 </p> 421 422 423 <h3 id="r58.minor">Minor revisions</h3> 424 425 <p>r58.1 adds 426 <a href="//golang.org/change/293c25943586">build</a> and 427 <a href="//golang.org/change/bf17e96b6582">runtime</a> 428 changes to make Go run on OS X 10.7 Lion. 429 </p> 430 431 <h2 id="r57">r57 (released 2011/05/03)</h2> 432 433 <p> 434 The r57 release corresponds to 435 <code><a href="weekly.html#2011-04-27">weekly.2011-04-27</a></code> 436 with additional bug fixes. 437 This section highlights the most significant changes in this release. 438 For a more detailed summary, see the 439 <a href="weekly.html#2011-04-27">weekly release notes</a>. 440 For complete information, see the 441 <a href="//code.google.com/p/go/source/list?r=release-branch.r57">Mercurial change list</a>. 442 </p> 443 444 <p>The new <a href="/cmd/gofix">gofix</a> tool finds Go programs that use old APIs and rewrites them to use 445 newer ones. After you update to a new Go release, gofix helps make the 446 necessary changes to your programs. Gofix will handle the http, os, and syscall 447 package changes described below, and we will update the program to keep up with 448 future changes to the libraries. 449 Gofix can’t 450 handle all situations perfectly, so read and test the changes it makes before 451 committing them. 452 See <a href="//blog.golang.org/2011/04/introducing-gofix.html">the gofix blog post</a> for more 453 information.</p> 454 455 <h3 id="r57.lang">Language</h3> 456 457 <p> 458 <a href="/doc/go_spec.html#Receive_operator">Multiple assignment syntax</a> replaces the <code>closed</code> function. 459 The syntax for channel 460 receives allows an optional second assigned value, a boolean value 461 indicating whether the channel is closed. This code: 462 </p> 463 464 <pre> 465 v := <-ch 466 if closed(ch) { 467 // channel is closed 468 } 469 </pre> 470 471 <p>should now be written as:</p> 472 473 <pre> 474 v, ok := <-ch 475 if !ok { 476 // channel is closed 477 } 478 </pre> 479 480 <p><a href="/doc/go_spec.html#Label_scopes">Unused labels are now illegal</a>, just as unused local variables are.</p> 481 482 <h3 id="r57.pkg">Packages</h3> 483 484 <p> 485 <a href="/pkg/gob/">Package gob</a> will now encode and decode values of types that implement the 486 <a href="/pkg/gob/#GobEncoder">GobEncoder</a> and 487 <a href="/pkg/gob/#GobDecoder">GobDecoder</a> interfaces. This allows types with unexported 488 fields to transmit self-consistent descriptions; examples include 489 <a href="/pkg/big/#Int.GobDecode">big.Int</a> and <a href="/pkg/big/#Rat.GobDecode">big.Rat</a>. 490 </p> 491 492 <p> 493 <a href="/pkg/http/">Package http</a> has been redesigned. 494 For clients, there are new 495 <a href="/pkg/http/#Client">Client</a> and <a href="/pkg/http/#Transport">Transport</a> 496 abstractions that give more control over HTTP details such as headers sent 497 and redirections followed. These abstractions make it easy to implement 498 custom clients that add functionality such as <a href="//code.google.com/p/goauth2/source/browse/oauth/oauth.go">OAuth2</a>. 499 For servers, <a href="/pkg/http/#ResponseWriter">ResponseWriter</a> 500 has dropped its non-essential methods. 501 The Hijack and Flush methods are no longer required; 502 code can test for them by checking whether a specific value implements 503 <a href="/pkg/http/#Hijacker">Hijacker</a> or <a href="/pkg/http/#Flusher">Flusher</a>. 504 The RemoteAddr and UsingTLS methods are replaced by <a href="/pkg/http/#Request">Request</a>'s 505 RemoteAddr and TLS fields. 506 The SetHeader method is replaced by a Header method; 507 its result, of type <a href="/pkg/http/#Header">Header</a>, 508 implements Set and other methods. 509 </p> 510 511 <p> 512 <a href="/pkg/net/">Package net</a> 513 drops the <code>laddr</code> argument from <a href="/pkg/net/#Conn.Dial">Dial</a> 514 and drops the <code>cname</code> return value 515 from <a href="/pkg/net/#LookupHost">LookupHost</a>. 516 The implementation now uses <a href="/cmd/cgo/">cgo</a> to implement 517 network name lookups using the C library getaddrinfo(3) 518 function when possible. This ensures that Go and C programs 519 resolve names the same way and also avoids the OS X 520 application-level firewall. 521 </p> 522 523 <p> 524 <a href="/pkg/os/">Package os</a> 525 introduces simplified <a href="/pkg/os/#File.Open">Open</a> 526 and <a href="/pkg/os/#File.Create">Create</a> functions. 527 The original Open is now available as <a href="/pkg/os/#File.OpenFile">OpenFile</a>. 528 The final three arguments to <a href="/pkg/os/#Process.StartProcess">StartProcess</a> 529 have been replaced by a pointer to a <a href="/pkg/os/#ProcAttr">ProcAttr</a>. 530 </p> 531 532 <p> 533 <a href="/pkg/reflect/">Package reflect</a> has been redesigned. 534 <a href="/pkg/reflect/#Type">Type</a> is now an interface that implements 535 all the possible type methods. 536 Instead of a type switch on a Type <code>t</code>, switch on <code>t.Kind()</code>. 537 <a href="/pkg/reflect/#Value">Value</a> is now a struct value that 538 implements all the possible value methods. 539 Instead of a type switch on a Value <code>v</code>, switch on <code>v.Kind()</code>. 540 Typeof and NewValue are now called <a href="/pkg/reflect/#Type.TypeOf">TypeOf</a> and <a href="/pkg/reflect/#Value.ValueOf">ValueOf</a> 541 To create a writable Value, use <code>New(t).Elem()</code> instead of <code>Zero(t)</code>. 542 See <a href="//golang.org/change/843855f3c026">the change description</a> 543 for the full details. 544 The new API allows a more efficient implementation of Value 545 that avoids many of the allocations required by the previous API. 546 </p> 547 548 <p> 549 Remember that gofix will handle the bulk of the rewrites 550 necessary for these changes to package APIs. 551 </p> 552 553 <h3 id="r57.cmd">Tools</h3> 554 555 <p><a href="/cmd/gofix/">Gofix</a>, a new command, is described above.</p> 556 557 <p> 558 <a href="/cmd/gotest/">Gotest</a> is now a Go program instead of a shell script. 559 The new <code>-test.short</code> flag in combination with package testing's Short function 560 allows you to write tests that can be run in normal or “short” mode; 561 all.bash runs tests in short mode to reduce installation time. 562 The Makefiles know about the flag: use <code>make testshort</code>. 563 </p> 564 565 <p> 566 The run-time support now implements CPU and memory profiling. 567 Gotest's new 568 <a href="/cmd/gotest/"><code>-test.cpuprofile</code> and 569 <code>-test.memprofile</code> flags</a> make it easy to 570 profile tests. 571 To add profiling to your web server, see the <a href="/pkg/http/pprof/">http/pprof</a> 572 documentation. 573 For other uses, see the <a href="/pkg/runtime/pprof/">runtime/pprof</a> documentation. 574 </p> 575 576 <h3 id="r57.minor">Minor revisions</h3> 577 578 <p>r57.1 fixes a <a href="//golang.org/change/ff2bc62726e7145eb2ecc1e0f076998e4a8f86f0">nil pointer dereference in http.FormFile</a>.</p> 579 <p>r57.2 fixes a <a href="//golang.org/change/063b0ff67d8277df03c956208abc068076818dae">use of uninitialized memory in programs that misuse <code>goto</code></a>.</p> 580 581 <h2 id="r56">r56 (released 2011/03/16)</h2> 582 583 <p> 584 The r56 release was the first stable release and corresponds to 585 <code><a href="weekly.html#2011-03-07">weekly.2011-03-07.1</a></code>. 586 The numbering starts at 56 because before this release, 587 what we now consider weekly snapshots were called releases. 588 </p>