From: Andrew Gerrand Date: Wed, 27 May 2015 20:10:43 +0000 (-0700) Subject: doc: move pre-go1 release notes to separate file X-Git-Tag: go1.5beta1~400 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=477614e4a12899c72aeaa0e5cee2f3283929542f;p=gostls13.git doc: move pre-go1 release notes to separate file Fixes #10924 Change-Id: I0caf5f8f82682ee48e95270d43328550bfd8b6e1 Reviewed-on: https://go-review.googlesource.com/10440 Reviewed-by: Rob Pike --- diff --git a/doc/devel/pre_go1.html b/doc/devel/pre_go1.html new file mode 100644 index 0000000000..813e23cda6 --- /dev/null +++ b/doc/devel/pre_go1.html @@ -0,0 +1,455 @@ + + +

+This page summarizes the changes between stable releases of Go prior to Go 1. +See the Release History page for notes on recent releases. +

+ +

r60 (released 2011/09/07)

+ +

+The r60 release corresponds to +weekly.2011-08-17. +This section highlights the most significant changes in this release. +For a more detailed summary, see the +weekly release notes. +For complete information, see the +Mercurial change list. +

+ +

Language

+ +

+An "else" block is now required to have braces except if the body of the "else" +is another "if". Since gofmt always puts those braces in anyway, +gofmt-formatted programs will not be affected. +To fix other programs, run gofmt. +

+ +

Packages

+ +

+Package http's URL parsing and query escaping code +(such as ParseURL and URLEscape) has been moved to +the new url package, with several simplifications to +the names. Client code can be updated automatically with gofix. +

+ +

+Package image has had significant changes made to the +Pix field of struct types such as +image.RGBA and +image.NRGBA. +The image.Image interface type has not changed, +though, and you should not need to change your code if you don't explicitly +refer to Pix fields. For example, if you decode a number of images +using the image/jpeg package, compose them using +image/draw, and then encode the result using +image/png, then your code should still work as +before. +If your code does refer to Pix fields see the +weekly.2011-07-19 +snapshot notes for how to update your code. +

+ +

+Package template has been replaced with a new +templating package (formerly exp/template). The original template +package is still available as old/template. +The old/template package is deprecated and will be removed. +The Go tree has been updated to use the new template package. We encourage +users of the old template package to switch to the new one. Code that uses +template or exp/template will need to change its +import lines to "old/template" or "template", +respectively. +

+ +

Tools

+ +

+Goinstall now uses a new tag selection scheme. +When downloading or updating, goinstall looks for a tag or branch with the +"go." prefix that corresponds to the local Go version. For Go +release.r58 it looks for go.r58. For +weekly.2011-06-03 it looks for go.weekly.2011-06-03. +If the specific go.X tag or branch is not found, it chooses the +closest earlier version. If an appropriate tag or branch is found, goinstall +uses that version of the code. Otherwise it uses the default version selected +by the version control system. Library authors are encouraged to use the +appropriate tag or branch names in their repositories to make their libraries +more accessible. +

+ +

Minor revisions

+ +

+r60.1 includes a +linker +fix, a pair of +goplay +fixes, +and a json package +fix and +a new +struct tag +option. +

+ +

+r60.2 +fixes +a memory leak involving maps. +

+ +

+r60.3 fixes a +reflect bug. +

+ +

r59 (released 2011/08/01)

+ +

+The r59 release corresponds to +weekly.2011-07-07. +This section highlights the most significant changes in this release. +For a more detailed summary, see the +weekly release notes. +For complete information, see the +Mercurial change list. +

+ +

Language

+ +

+This release includes a language change that restricts the use of +goto. In essence, a goto statement outside a block +cannot jump to a label inside that block. Your code may require changes if it +uses goto. +See this +changeset for how the new rule affected the Go tree. +

+ +

Packages

+ +

+As usual, gofix will handle the bulk of the rewrites +necessary for these changes to package APIs. +

+ +

+Package http has a new +FileSystem interface that provides access +to files. The FileServer helper now takes a +FileSystem argument instead of an explicit file system root. By +implementing your own FileSystem you can use the +FileServer to serve arbitrary data. +

+ +

+Package os's ErrorString type has been +hidden. Most uses of os.ErrorString can be replaced with +os.NewError. +

+ +

+Package reflect supports a new struct tag scheme +that enables sharing of struct tags between multiple packages. +In this scheme, the tags must be of the form: +

+
+	`key:"value" key2:"value2"`
+
+

+The StructField type's Tag field now +has type StructTag, which has a +Get method. Clients of json and +xml will need to be updated. Code that says +

+
+	type T struct {
+		X int "name"
+	}
+
+

+should become +

+
+	type T struct {
+		X int `json:"name"`  // or `xml:"name"`
+	}
+
+

+Use govet to identify struct tags that need to be +changed to use the new syntax. +

+ +

+Package sort's IntArray type has been +renamed to IntSlice, and similarly for +Float64Slice and +StringSlice. +

+ +

+Package strings's Split function has +itself been split into Split and +SplitN. +SplitN is the same as the old Split. +The new Split is equivalent to SplitN with a final +argument of -1. +

+ +Package image/draw's +Draw function now takes an additional +argument, a compositing operator. +If in doubt, use draw.Over. +

+ +

Tools

+ +

+Goinstall now installs packages and commands from +arbitrary remote repositories (not just Google Code, Github, and so on). +See the goinstall documentation for details. +

+ +

r58 (released 2011/06/29)

+ +

+The r58 release corresponds to +weekly.2011-06-09 +with additional bug fixes. +This section highlights the most significant changes in this release. +For a more detailed summary, see the +weekly release notes. +For complete information, see the +Mercurial change list. +

+ +

Language

+ +

+This release fixes a use of uninitialized memory in programs that misuse goto. +

+ +

Packages

+ +

+As usual, gofix will handle the bulk of the rewrites +necessary for these changes to package APIs. +

+ +

+Package http drops the finalURL return +value from the Client.Get method. The value +is now available via the new Request field on http.Response. +Most instances of the type map[string][]string in have been +replaced with the new Values type. +

+ +

+Package exec has been redesigned with a more +convenient and succinct API. +

+ +

+Package strconv's Quote +function now escapes only those Unicode code points not classified as printable +by unicode.IsPrint. +Previously Quote would escape all non-ASCII characters. +This also affects the fmt package's "%q" +formatting directive. The previous quoting behavior is still available via +strconv's new QuoteToASCII function. +

+ +

+Package os/signal's +Signal and +UnixSignal types have been moved to the +os package. +

+ +

+Package image/draw is the new name for +exp/draw. The GUI-related code from exp/draw is now +located in the exp/gui package. +

+ +

Tools

+ +

+Goinstall now observes the GOPATH environment +variable to build and install your own code and external libraries outside of +the Go tree (and avoid writing Makefiles). +

+ + +

Minor revisions

+ +

r58.1 adds +build and +runtime +changes to make Go run on OS X 10.7 Lion. +

+ +

r57 (released 2011/05/03)

+ +

+The r57 release corresponds to +weekly.2011-04-27 +with additional bug fixes. +This section highlights the most significant changes in this release. +For a more detailed summary, see the +weekly release notes. +For complete information, see the +Mercurial change list. +

+ +

The new gofix tool finds Go programs that use old APIs and rewrites them to use +newer ones. After you update to a new Go release, gofix helps make the +necessary changes to your programs. Gofix will handle the http, os, and syscall +package changes described below, and we will update the program to keep up with +future changes to the libraries. +Gofix can’t +handle all situations perfectly, so read and test the changes it makes before +committing them. +See the gofix blog post for more +information.

+ +

Language

+ +

+Multiple assignment syntax replaces the closed function. +The syntax for channel +receives allows an optional second assigned value, a boolean value +indicating whether the channel is closed. This code: +

+ +
+	v := <-ch
+	if closed(ch) {
+		// channel is closed
+	}
+
+ +

should now be written as:

+ +
+	v, ok := <-ch
+	if !ok {
+		// channel is closed
+	}
+
+ +

Unused labels are now illegal, just as unused local variables are.

+ +

Packages

+ +

+Package gob will now encode and decode values of types that implement the +GobEncoder and +GobDecoder interfaces. This allows types with unexported +fields to transmit self-consistent descriptions; examples include +big.Int and big.Rat. +

+ +

+Package http has been redesigned. +For clients, there are new +Client and Transport +abstractions that give more control over HTTP details such as headers sent +and redirections followed. These abstractions make it easy to implement +custom clients that add functionality such as OAuth2. +For servers, ResponseWriter +has dropped its non-essential methods. +The Hijack and Flush methods are no longer required; +code can test for them by checking whether a specific value implements +Hijacker or Flusher. +The RemoteAddr and UsingTLS methods are replaced by Request's +RemoteAddr and TLS fields. +The SetHeader method is replaced by a Header method; +its result, of type Header, +implements Set and other methods. +

+ +

+Package net +drops the laddr argument from Dial +and drops the cname return value +from LookupHost. +The implementation now uses cgo to implement +network name lookups using the C library getaddrinfo(3) +function when possible. This ensures that Go and C programs +resolve names the same way and also avoids the OS X +application-level firewall. +

+ +

+Package os +introduces simplified Open +and Create functions. +The original Open is now available as OpenFile. +The final three arguments to StartProcess +have been replaced by a pointer to a ProcAttr. +

+ +

+Package reflect has been redesigned. +Type is now an interface that implements +all the possible type methods. +Instead of a type switch on a Type t, switch on t.Kind(). +Value is now a struct value that +implements all the possible value methods. +Instead of a type switch on a Value v, switch on v.Kind(). +Typeof and NewValue are now called TypeOf and ValueOf +To create a writable Value, use New(t).Elem() instead of Zero(t). +See the change description +for the full details. +The new API allows a more efficient implementation of Value +that avoids many of the allocations required by the previous API. +

+ +

+Remember that gofix will handle the bulk of the rewrites +necessary for these changes to package APIs. +

+ +

Tools

+ +

Gofix, a new command, is described above.

+ +

+Gotest is now a Go program instead of a shell script. +The new -test.short flag in combination with package testing's Short function +allows you to write tests that can be run in normal or “short” mode; +all.bash runs tests in short mode to reduce installation time. +The Makefiles know about the flag: use make testshort. +

+ +

+The run-time support now implements CPU and memory profiling. +Gotest's new +-test.cpuprofile and +-test.memprofile flags make it easy to +profile tests. +To add profiling to your web server, see the http/pprof +documentation. +For other uses, see the runtime/pprof documentation. +

+ +

Minor revisions

+ +

r57.1 fixes a nil pointer dereference in http.FormFile.

+

r57.2 fixes a use of uninitialized memory in programs that misuse goto.

+ +

r56 (released 2011/03/16)

+ +

+The r56 release was the first stable release and corresponds to +weekly.2011-03-07.1. +The numbering starts at 56 because before this release, +what we now consider weekly snapshots were called releases. +

diff --git a/doc/devel/release.html b/doc/devel/release.html index c4540aff96..ee6d3e0729 100644 --- a/doc/devel/release.html +++ b/doc/devel/release.html @@ -145,449 +145,10 @@ go1.0.3 (released 2012/09/21) includes minor code and documentation fixes. See the go1 release branch history for the complete list of changes.

-

r60 (released 2011/09/07)

+

Older releases

-The r60 release corresponds to -weekly.2011-08-17. -This section highlights the most significant changes in this release. -For a more detailed summary, see the -weekly release notes. -For complete information, see the -Mercurial change list. +See the Pre-Go 1 Release History page for notes +on earlier releases.

-

Language

- -

-An "else" block is now required to have braces except if the body of the "else" -is another "if". Since gofmt always puts those braces in anyway, -gofmt-formatted programs will not be affected. -To fix other programs, run gofmt. -

- -

Packages

- -

-Package http's URL parsing and query escaping code -(such as ParseURL and URLEscape) has been moved to -the new url package, with several simplifications to -the names. Client code can be updated automatically with gofix. -

- -

-Package image has had significant changes made to the -Pix field of struct types such as -image.RGBA and -image.NRGBA. -The image.Image interface type has not changed, -though, and you should not need to change your code if you don't explicitly -refer to Pix fields. For example, if you decode a number of images -using the image/jpeg package, compose them using -image/draw, and then encode the result using -image/png, then your code should still work as -before. -If your code does refer to Pix fields see the -weekly.2011-07-19 -snapshot notes for how to update your code. -

- -

-Package template has been replaced with a new -templating package (formerly exp/template). The original template -package is still available as old/template. -The old/template package is deprecated and will be removed. -The Go tree has been updated to use the new template package. We encourage -users of the old template package to switch to the new one. Code that uses -template or exp/template will need to change its -import lines to "old/template" or "template", -respectively. -

- -

Tools

- -

-Goinstall now uses a new tag selection scheme. -When downloading or updating, goinstall looks for a tag or branch with the -"go." prefix that corresponds to the local Go version. For Go -release.r58 it looks for go.r58. For -weekly.2011-06-03 it looks for go.weekly.2011-06-03. -If the specific go.X tag or branch is not found, it chooses the -closest earlier version. If an appropriate tag or branch is found, goinstall -uses that version of the code. Otherwise it uses the default version selected -by the version control system. Library authors are encouraged to use the -appropriate tag or branch names in their repositories to make their libraries -more accessible. -

- -

Minor revisions

- -

-r60.1 includes a -linker -fix, a pair of -goplay -fixes, -and a json package -fix and -a new -struct tag -option. -

- -

-r60.2 -fixes -a memory leak involving maps. -

- -

-r60.3 fixes a -reflect bug. -

- -

r59 (released 2011/08/01)

- -

-The r59 release corresponds to -weekly.2011-07-07. -This section highlights the most significant changes in this release. -For a more detailed summary, see the -weekly release notes. -For complete information, see the -Mercurial change list. -

- -

Language

- -

-This release includes a language change that restricts the use of -goto. In essence, a goto statement outside a block -cannot jump to a label inside that block. Your code may require changes if it -uses goto. -See this -changeset for how the new rule affected the Go tree. -

- -

Packages

- -

-As usual, gofix will handle the bulk of the rewrites -necessary for these changes to package APIs. -

- -

-Package http has a new -FileSystem interface that provides access -to files. The FileServer helper now takes a -FileSystem argument instead of an explicit file system root. By -implementing your own FileSystem you can use the -FileServer to serve arbitrary data. -

- -

-Package os's ErrorString type has been -hidden. Most uses of os.ErrorString can be replaced with -os.NewError. -

- -

-Package reflect supports a new struct tag scheme -that enables sharing of struct tags between multiple packages. -In this scheme, the tags must be of the form: -

-
-	`key:"value" key2:"value2"`
-
-

-The StructField type's Tag field now -has type StructTag, which has a -Get method. Clients of json and -xml will need to be updated. Code that says -

-
-	type T struct {
-		X int "name"
-	}
-
-

-should become -

-
-	type T struct {
-		X int `json:"name"`  // or `xml:"name"`
-	}
-
-

-Use govet to identify struct tags that need to be -changed to use the new syntax. -

- -

-Package sort's IntArray type has been -renamed to IntSlice, and similarly for -Float64Slice and -StringSlice. -

- -

-Package strings's Split function has -itself been split into Split and -SplitN. -SplitN is the same as the old Split. -The new Split is equivalent to SplitN with a final -argument of -1. -

- -Package image/draw's -Draw function now takes an additional -argument, a compositing operator. -If in doubt, use draw.Over. -

- -

Tools

- -

-Goinstall now installs packages and commands from -arbitrary remote repositories (not just Google Code, Github, and so on). -See the goinstall documentation for details. -

- -

r58 (released 2011/06/29)

- -

-The r58 release corresponds to -weekly.2011-06-09 -with additional bug fixes. -This section highlights the most significant changes in this release. -For a more detailed summary, see the -weekly release notes. -For complete information, see the -Mercurial change list. -

- -

Language

- -

-This release fixes a use of uninitialized memory in programs that misuse goto. -

- -

Packages

- -

-As usual, gofix will handle the bulk of the rewrites -necessary for these changes to package APIs. -

- -

-Package http drops the finalURL return -value from the Client.Get method. The value -is now available via the new Request field on http.Response. -Most instances of the type map[string][]string in have been -replaced with the new Values type. -

- -

-Package exec has been redesigned with a more -convenient and succinct API. -

- -

-Package strconv's Quote -function now escapes only those Unicode code points not classified as printable -by unicode.IsPrint. -Previously Quote would escape all non-ASCII characters. -This also affects the fmt package's "%q" -formatting directive. The previous quoting behavior is still available via -strconv's new QuoteToASCII function. -

- -

-Package os/signal's -Signal and -UnixSignal types have been moved to the -os package. -

- -

-Package image/draw is the new name for -exp/draw. The GUI-related code from exp/draw is now -located in the exp/gui package. -

- -

Tools

- -

-Goinstall now observes the GOPATH environment -variable to build and install your own code and external libraries outside of -the Go tree (and avoid writing Makefiles). -

- - -

Minor revisions

- -

r58.1 adds -build and -runtime -changes to make Go run on OS X 10.7 Lion. -

- -

r57 (released 2011/05/03)

- -

-The r57 release corresponds to -weekly.2011-04-27 -with additional bug fixes. -This section highlights the most significant changes in this release. -For a more detailed summary, see the -weekly release notes. -For complete information, see the -Mercurial change list. -

- -

The new gofix tool finds Go programs that use old APIs and rewrites them to use -newer ones. After you update to a new Go release, gofix helps make the -necessary changes to your programs. Gofix will handle the http, os, and syscall -package changes described below, and we will update the program to keep up with -future changes to the libraries. -Gofix can’t -handle all situations perfectly, so read and test the changes it makes before -committing them. -See the gofix blog post for more -information.

- -

Language

- -

-Multiple assignment syntax replaces the closed function. -The syntax for channel -receives allows an optional second assigned value, a boolean value -indicating whether the channel is closed. This code: -

- -
-	v := <-ch
-	if closed(ch) {
-		// channel is closed
-	}
-
- -

should now be written as:

- -
-	v, ok := <-ch
-	if !ok {
-		// channel is closed
-	}
-
- -

Unused labels are now illegal, just as unused local variables are.

- -

Packages

- -

-Package gob will now encode and decode values of types that implement the -GobEncoder and -GobDecoder interfaces. This allows types with unexported -fields to transmit self-consistent descriptions; examples include -big.Int and big.Rat. -

- -

-Package http has been redesigned. -For clients, there are new -Client and Transport -abstractions that give more control over HTTP details such as headers sent -and redirections followed. These abstractions make it easy to implement -custom clients that add functionality such as OAuth2. -For servers, ResponseWriter -has dropped its non-essential methods. -The Hijack and Flush methods are no longer required; -code can test for them by checking whether a specific value implements -Hijacker or Flusher. -The RemoteAddr and UsingTLS methods are replaced by Request's -RemoteAddr and TLS fields. -The SetHeader method is replaced by a Header method; -its result, of type Header, -implements Set and other methods. -

- -

-Package net -drops the laddr argument from Dial -and drops the cname return value -from LookupHost. -The implementation now uses cgo to implement -network name lookups using the C library getaddrinfo(3) -function when possible. This ensures that Go and C programs -resolve names the same way and also avoids the OS X -application-level firewall. -

- -

-Package os -introduces simplified Open -and Create functions. -The original Open is now available as OpenFile. -The final three arguments to StartProcess -have been replaced by a pointer to a ProcAttr. -

- -

-Package reflect has been redesigned. -Type is now an interface that implements -all the possible type methods. -Instead of a type switch on a Type t, switch on t.Kind(). -Value is now a struct value that -implements all the possible value methods. -Instead of a type switch on a Value v, switch on v.Kind(). -Typeof and NewValue are now called TypeOf and ValueOf -To create a writable Value, use New(t).Elem() instead of Zero(t). -See the change description -for the full details. -The new API allows a more efficient implementation of Value -that avoids many of the allocations required by the previous API. -

- -

-Remember that gofix will handle the bulk of the rewrites -necessary for these changes to package APIs. -

- -

Tools

- -

Gofix, a new command, is described above.

- -

-Gotest is now a Go program instead of a shell script. -The new -test.short flag in combination with package testing's Short function -allows you to write tests that can be run in normal or “short” mode; -all.bash runs tests in short mode to reduce installation time. -The Makefiles know about the flag: use make testshort. -

- -

-The run-time support now implements CPU and memory profiling. -Gotest's new --test.cpuprofile and --test.memprofile flags make it easy to -profile tests. -To add profiling to your web server, see the http/pprof -documentation. -For other uses, see the runtime/pprof documentation. -

- -

Minor revisions

- -

r57.1 fixes a nil pointer dereference in http.FormFile.

-

r57.2 fixes a use of uninitialized memory in programs that misuse goto.

- -

r56 (released 2011/03/16)

- -

-The r56 release was the first stable release and corresponds to -weekly.2011-03-07.1. -The numbering starts at 56 because before this release, -what we now consider weekly snapshots were called releases. -