github.com/roboticscm/goman@v0.0.0-20210203095141-87c07b4a0a55/doc/devel/release.html (about)

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