github.com/rsc/go@v0.0.0-20150416155037-e040fd465409/doc/devel/release.html (about)

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