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