1
0
mirror of https://github.com/golang/go synced 2024-11-24 10:10:07 -07:00

release.2011-02-01

R=rsc
CC=golang-dev
https://golang.org/cl/4119050
This commit is contained in:
Andrew Gerrand 2011-02-02 10:59:59 +11:00
parent 1fa4173444
commit 7aa758df0c
2 changed files with 160 additions and 16 deletions

View File

@ -48,4 +48,3 @@ f7e692dc29b02fba8e5d59b967880a347b53607c release.2010-12-02
514c7ba501a1dd74d69ea2d0a2b4116802ada2b5 release.2011-01-12 514c7ba501a1dd74d69ea2d0a2b4116802ada2b5 release.2011-01-12
72f9cb714f08b98c6a65ab2f2256fad6bb16967a release.2011-01-19 72f9cb714f08b98c6a65ab2f2256fad6bb16967a release.2011-01-19
d8ba80011a986470a54e5262ec125105aa4adc34 release.2011-01-20 d8ba80011a986470a54e5262ec125105aa4adc34 release.2011-01-20
d8ba80011a986470a54e5262ec125105aa4adc34 release

View File

@ -5,6 +5,151 @@
<p>This page summarizes the changes between tagged releases of Go. <p>This page summarizes the changes between tagged releases of Go.
For full details, see the <a href="http://code.google.com/p/go/source/list">Mercurial change log</a>.</p> For full details, see the <a href="http://code.google.com/p/go/source/list">Mercurial change log</a>.</p>
<h3 id="2011-02-01">2011-02-01</h3>
<pre>
This release includes significant changes to channel operations and minor
changes to the log package. Your code will require modification if it uses
channels in non-blocking communications or the log package's Exit functions.
Non-blocking channel operations have been removed from the language.
The equivalent operations have always been possible using a select statement
with a default clause. If a default clause is present in a select, that clause
will execute (only) if no other is ready, which allows one to avoid blocking on
a communication.
For example, the old non-blocking send operation,
if ch <- v {
// sent
} else {
// not sent
}
should be rewritten as,
select {
case ch <- v:
// sent
default:
// not sent
}
Similarly, this receive,
v, ok := <-ch
if ok {
// received
} else {
// not received
}
should be rewritten as,
select {
case v := <-ch:
// received
default:
// not received
}
This change is a prelude to redefining the 'comma-ok' syntax for a receive.
In a later release, a receive expression will return the received value and an
optional boolean indicating whether the channel has been closed. These changes
are being made in two stages to prevent this semantic change from silently
breaking code that uses 'comma-ok' with receives.
There are no plans to have a boolean expression form for sends.
Sends to a closed channel will panic immediately. Previously, an unspecified
number of sends would fail silently before causing a panic.
The log package's Exit, Exitf, and Exitln functions have been renamed Fatal,
Fatalf, and Fatalln respectively. This brings them in line with the naming of
the testing package.
The port to the "tiny" operating system has been removed. It is unmaintained
and untested. It was a toy to show that Go can run on raw hardware and it
served its purpose. The source code will of course remain in the repository
history, so it could be brought back if needed later.
This release also changes some of the internal structure of the memory
allocator in preparation for other garbage collector changes.
If you run into problems, please let us know.
There is one known issue that we are aware of but have not debugged yet:
http://code.google.com/p/go/issues/detail?id=1464&.
Other changes in this release:
* 5l: document -F, force it on old ARMs (software floating point emulation)
* 6g: fix registerization of temporaries (thanks Eoghan Sherry),
fix uint64(uintptr(unsafe.Pointer(&x))).
* 6l: Relocate CMOV* instructions (thanks Gustavo Niemeyer),
windows/amd64 port (thanks Wei Guangjing).
* 8l: add PE dynexport, emit DWARF in Windows PE, and
code generation fixes (thanks Wei Guangjing).
* bufio: make Flush a no-op when the buffer is empty.
* bytes: Add Buffer.ReadBytes, Buffer.ReadString (thanks Evan Shaw).
* cc: mode to generate go-code for types and variables.
* cgo: define CGO_CFLAGS and CGO_LDFLAGS in Go files (thanks Gustavo Niemeyer),
windows/386 port (thanks Wei Guangjing).
* codereview: fix windows (thanks Hector Chu),
handle file patterns better,
more ASCII vs. Unicode nonsense.
* crypto/dsa: add support for DSA.
* crypto/openpgp: add s2k.
* crypto/rand: use defer to unlock mutex (thanks Anschel Schaffer-Cohen).
* crypto/rsa: correct docstring for SignPKCS1v15.
* crypto: add package, a common place to store identifiers for hash functions.
* doc/codelab/wiki: update to work with template changes, add to run.bash.
* doc/spec: clarify address operators.
* ebnflint: exit with non-zero status on error.
* encoding/base32: new package (thanks Miek Gieben).
* encoding/line: make it an io.Reader too.
* exec: use custom error for LookPath (thanks Gustavo Niemeyer).
* fmt/doc: define width and precision for strings.
* gc: clearer error for struct == struct,
fix send precedence,
handle invalid name in type switch,
special case code for single-op blocking and non-blocking selects.
* go/scanner: fix build (adjust scanner EOF linecount).
* gob: better debugging, commentary,
make nested interfaces work,
report an error when encoding a non-empty struct with no public fields.
* godoc: full text index for whitelisted non-Go files,
show line numbers for non-go files (bug fix).
* gofmt -r: match(...) arguments may be nil; add missing guards.
* govet: add Panic to the list of functions.
* http: add host patterns (thanks Jose Luis Vázquez González),
follow relative redirect in Get.
* json: handle capital floating point exponent (1E100) (thanks Pieter Droogendijk).
* ld: add -I option to set ELF interpreter,
more robust decoding of reflection type info in generating dwarf.
* lib9: update to Unicode 6.0.0.
* make.bash: stricter selinux test (don't complain unless it is enabled).
* misc/vim: Import/Drop commands (thanks Gustavo Niemeyer),
set 'syntax sync' to a large value (thanks Yasuhiro Matsumoto).
* net: fix race condition in test,
return cname in LookupHost.
* netchan: avoid race condition in test,
fixed documentation for import (thanks Anschel Schaffer-Cohen).
* os: add ETIMEDOUT (thanks Albert Strasheim).
* runtime: generate Go defs for C types,
implementation of callback functions for windows (thanks Alex Brainman),
make Walk web browser example work (thanks Hector Chu),
make select fairer,
prefer fixed stack allocator over general memory allocator,
simpler heap map, memory allocation.
* scanner: fix Position returned by Scan, Pos,
don't read ahead in Init.
* suffixarray: use binary search for both ends of Lookup (thanks Eric Eisner).
* syscall: add missing network interface constants (thanks Mikio Hara).
* template: treat map keys as zero, not non-existent (thanks Roger Peppe).
* time: allow cancelling of After events (thanks Roger Peppe),
support Solaris zoneinfo directory.
* token/position: added SetLinesForContent.
* unicode: update to unicode 6.0.0.
* unsafe: add missing case to doc for Pointer.
</pre>
<h3 id="2011-01-20">2011-01-20</h3> <h3 id="2011-01-20">2011-01-20</h3>
<pre> <pre>
@ -26,7 +171,7 @@ The 5g (ARM) compiler now has registerization enabled. If you discover it
causes bugs, use 5g -N to disable the registerizer and please let us know. causes bugs, use 5g -N to disable the registerizer and please let us know.
The xml package now allows the extraction of nested XML tags by specifying The xml package now allows the extraction of nested XML tags by specifying
struct tags of the form “parent>child”. See the XML documentation for an struct tags of the form "parent>child". See the XML documentation for an
example: http://golang.org/pkg/xml/ example: http://golang.org/pkg/xml/
* 5a, 5l, 6a, 6l, 8a, 8l: handle out of memory, large allocations (thanks Jeff R. Allen). * 5a, 5l, 6a, 6l, 8a, 8l: handle out of memory, large allocations (thanks Jeff R. Allen).
@ -60,7 +205,7 @@ example: http://golang.org/pkg/xml/
avoid nil dereference if /etc/services can't be opened (thanks Corey Thomasson), avoid nil dereference if /etc/services can't be opened (thanks Corey Thomasson),
implement windows timeout (thanks Wei Guangjing). implement windows timeout (thanks Wei Guangjing).
* netchan: do not block sends; implement flow control (thanks Roger Peppe). * netchan: do not block sends; implement flow control (thanks Roger Peppe).
* regexp: reject bare ?. (thanks Ben Lynn) * regexp: reject bare '?'. (thanks Ben Lynn)
* runtime/cgo: don't define crosscall2 in dummy _cgo_main.c. * runtime/cgo: don't define crosscall2 in dummy _cgo_main.c.
* runtime/debug: new package for printing stack traces from a running goroutine. * runtime/debug: new package for printing stack traces from a running goroutine.
* runtime: add per-pause gc stats, * runtime: add per-pause gc stats,
@ -187,16 +332,16 @@ outstanding cgo issues were resolved.
<pre> <pre>
Package crypto/cipher has been started, to replace crypto/block. Package crypto/cipher has been started, to replace crypto/block.
As part of the changes, rc4.Ciphers XORKeyStream method signature has changed from As part of the changes, rc4.Cipher's XORKeyStream method signature has changed from
XORKeyStream(buf []byte) XORKeyStream(buf []byte)
to to
XORKeyStream(dst, src []byte) XORKeyStream(dst, src []byte)
to implement the cipher.Stream interface. If you use crypto/block, youll need to implement the cipher.Stream interface. If you use crypto/block, you'll need
to switch to crypto/cipher once it is complete. to switch to crypto/cipher once it is complete.
Package smtps StartTLS now takes a *tls.Config argument. Package smtp's StartTLS now takes a *tls.Config argument.
Package reflects ArrayCopy has been renamed to Copy. There are new functions Package reflect's ArrayCopy has been renamed to Copy. There are new functions
Append and AppendSlice. Append and AppendSlice.
The print/println bootstrapping functions now write to standard error. The print/println bootstrapping functions now write to standard error.
@ -330,7 +475,7 @@ will fail to compile rather than behave erroneously.
The bytes package has changed. Its Add and AddByte functions have been removed, The bytes package has changed. Its Add and AddByte functions have been removed,
as their functionality is provided by the recently-introduced built-in function as their functionality is provided by the recently-introduced built-in function
“append”. Any code that uses them will need to be changed: "append". Any code that uses them will need to be changed:
s = bytes.Add(s, b) -> s = append(s, b...) s = bytes.Add(s, b) -> s = append(s, b...)
s = bytes.AddByte(b, c) -> s = append(s, b) s = bytes.AddByte(b, c) -> s = append(s, b)
s = bytes.Add(nil, c) -> append([]byte(nil), c) s = bytes.Add(nil, c) -> append([]byte(nil), c)
@ -355,8 +500,8 @@ or
and the fields are passed as successive arguments to the formatter, and the fields are passed as successive arguments to the formatter,
by analogy to fmt.Print. by analogy to fmt.Print.
The utf8 package has changed. The order of EncodeRunes arguments has been The utf8 package has changed. The order of EncodeRune's arguments has been
reversed to satisfy the convention of “destination first”. reversed to satisfy the convention of "destination first".
Any code that uses EncodeRune will need to be updated. Any code that uses EncodeRune will need to be updated.
Other changes: Other changes:
@ -494,12 +639,12 @@ to address both of these deficiencies.
The syntax for arrays, slices, and maps of composite literals has been The syntax for arrays, slices, and maps of composite literals has been
simplified. Within a composite literal of array, slice, or map type, elements simplified. Within a composite literal of array, slice, or map type, elements
that are themselves composite literals may elide the type if it is identical to that are themselves composite literals may elide the type if it is identical to
the outer literals element type. For example, these expressions: the outer literal's element type. For example, these expressions:
[][]int{[]int{1, 2, 3}, []int{4, 5}} [][]int{[]int{1, 2, 3}, []int{4, 5}}
map[string]Point{“x”: Point{1.5, -3.5}, “y”: Point{0, 0}} map[string]Point{"x": Point{1.5, -3.5}, "y": Point{0, 0}}
can be simplified to: can be simplified to:
[][]int{{1, 2, 3}, {4, 5}} [][]int{{1, 2, 3}, {4, 5}}
map[string]Point{“x”: {1.5, -3.5}, “y”: {0, 0}} map[string]Point{"x": {1.5, -3.5}, "y": {0, 0}}
Gofmt can make these simplifications mechanically when invoked with the Gofmt can make these simplifications mechanically when invoked with the
new -s flag. new -s flag.
@ -515,8 +660,8 @@ The gob package can now encode and decode interface values containing types
registered ahead of time with the new Register function. These changes required registered ahead of time with the new Register function. These changes required
a backwards-incompatible change to the wire format. Data written with the old a backwards-incompatible change to the wire format. Data written with the old
version of the package will not be readable with the new one, and vice versa. version of the package will not be readable with the new one, and vice versa.
(Steps were made in this change to make sure this doesnt happen again.) (Steps were made in this change to make sure this doesn't happen again.)
We dont know of anyone using gobs to create permanent data, but if you do this We don't know of anyone using gobs to create permanent data, but if you do this
and need help converting, please let us know, and do not update to this release and need help converting, please let us know, and do not update to this release
yet. We will help you convert your data. yet. We will help you convert your data.
@ -612,7 +757,7 @@ For full details, see the change description:
The language change is that uses of pointers to interface values no longer The language change is that uses of pointers to interface values no longer
automatically dereference the pointer. A pointer to an interface value is more automatically dereference the pointer. A pointer to an interface value is more
often a beginners bug than correct code. often a beginner's bug than correct code.
The package exp/iterable has been removed. It was an interesting experiment, The package exp/iterable has been removed. It was an interesting experiment,
but it encourages writing inefficient code and has outlived its utility. but it encourages writing inefficient code and has outlived its utility.