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