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