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