github.com/bgentry/go@v0.0.0-20150121062915-6cf5a733d54d/doc/devel/release.html (about)

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