mirror of
https://github.com/golang/go
synced 2024-11-21 03:14:40 -07:00
6b21949a91
R=r, r2 CC=golang-dev https://golang.org/cl/2493043
1461 lines
68 KiB
HTML
1461 lines
68 KiB
HTML
<!-- Release History -->
|
||
|
||
<h2 id="Releases">Release History</h2>
|
||
|
||
<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>
|
||
|
||
<h3 id="2010-10-13">2010-10-13</h3>
|
||
|
||
<pre>
|
||
This release includes changes to the log package, the removal of exp/iterable,
|
||
two new tools (gotry and goplay), one small language change, and many other
|
||
changes and fixes. If you use the log or iterable packages, you need to make
|
||
changes to your code.
|
||
|
||
The log package has changed. Loggers now have only one output, and output to
|
||
standard error by default. The names have also changed, although the old names
|
||
are still supported. They will be deleted in the next release, though, so it
|
||
would be good to update now if you can. For most purposes all you need to do
|
||
is make these substitutions:
|
||
log.Stderr -> log.Println or log.Print
|
||
log.Stderrf -> log.Printf
|
||
log.Crash -> log.Panicln or log.Panic
|
||
log.Crashf -> log.Panicf
|
||
log.Exit -> log.Exitln or log.Exit
|
||
log.Exitf -> log.Exitf (no change)
|
||
Calls to log.New() must drop the second argument.
|
||
Also, custom loggers with exit or panic properties will need to be reworked.
|
||
For full details, see the change description:
|
||
http://code.google.com/p/go/source/detail?r=d8a3c7563d
|
||
|
||
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
|
||
often a beginner’s bug than correct code.
|
||
|
||
The package exp/iterable has been removed. It was an interesting experiment,
|
||
but it encourages writing inefficient code and has outlived its utility.
|
||
|
||
The new tools:
|
||
* gotry: an exercise in reflection and an unusual tool. Run 'gotry' for details.
|
||
* goplay: a stand-alone version of the Go Playground. See misc/goplay.
|
||
|
||
Other changes:
|
||
* 6l: Mach-O fixes, and fix to work with OS X nm/otool (thanks Jim McGrath).
|
||
* [568]a: correct line numbers for statements.
|
||
* arm: code generation and runtime fixes,
|
||
adjust recover for new reflect.call,
|
||
enable 6 more tests after net fix.
|
||
* big: fix panic and round correctly in Rat.FloatString (thanks Anthony Martin).
|
||
* build: Make.cmd: remove $(OFILES) (thanks Eric Clark),
|
||
Make.pkg: remove .so before installing new one,
|
||
add GOHOSTOS and GOHOSTARCH environment variables.
|
||
* crypto/tls: better error messages for certificate issues,
|
||
make SetReadTimeout work.
|
||
* doc: add Sydney University video,
|
||
add The Expressiveness of Go talk.
|
||
* exp/draw/x11: support X11 vendors other than "The X.Org Foundation".
|
||
* expvar: add (*Int).Set (thanks Sam Thorogood).
|
||
* fmt: add Errorf helper function,
|
||
allow %d on []byte.
|
||
* gc: O(1) string comparison when lengths differ,
|
||
various bug fixes.
|
||
* http: return the correct error if a header line is too long.
|
||
* image: add image.Tiled type, the Go equivalent of Plan 9's repl bit.
|
||
* ld: be less picky about bad line number info.
|
||
* misc/cgo/life: fix for new slice rules (thanks Graham Miller).
|
||
* net: allow _ in DNS names.
|
||
* netchan: export before import when testing, and
|
||
zero out request to ensure correct gob decoding. (thanks Roger Peppe).
|
||
* os: make tests work on windows (thanks Alex Brainman).
|
||
* runtime: bug fix: serialize mcache allocation,
|
||
correct iteration of large map values,
|
||
faster strequal, memequal (thanks Graham Miller),
|
||
fix argument dump in traceback,
|
||
fix tiny build.
|
||
* smtp: new package (thanks Evan Shaw).
|
||
* syscall: add sockaddr_ll support for linux/386, linux/amd64 (thanks Mikio Hara),
|
||
add ucred structure for SCM_CREDENTIALS over UNIX sockets. (thanks Albert Strasheim).
|
||
* syscall: implement WaitStatus and Wait4() for windows (thanks Wei Guangjing).
|
||
* time: add After.
|
||
* websocket: enable tests on windows (thanks Alex Brainman).
|
||
</pre>
|
||
|
||
<h3 id="2010-09-29">2010-09-29</h3>
|
||
|
||
<pre>
|
||
This release includes some minor language changes and some significant package
|
||
changes. You may need to change your code if you use ...T parameters or the
|
||
http package.
|
||
|
||
The semantics and syntax of forwarding ...T parameters have changed.
|
||
func message(f string, s ...interface{}) { fmt.Printf(f, s) }
|
||
Here, s has type []interface{} and contains the parameters passed to message.
|
||
Before this language change, the compiler recognized when a function call
|
||
passed a ... parameter to another ... parameter of the same type, and just
|
||
passed it as though it was a list of arguments. But this meant that you
|
||
couldn't control whether to pass the slice as a single argument and you
|
||
couldn't pass a regular slice as a ... parameter, which can be handy. This
|
||
change gives you that control at the cost of a few characters in the call.
|
||
If you want the promotion to ..., append ... to the argument:
|
||
func message(f string, s ...interface{}) { fmt.Printf(f, s...) }
|
||
Without the ..., s would be passed to Printf as a single argument of type
|
||
[]interface{}. The bad news is you might need to fix up some of your code,
|
||
but the compiler will detect the situation and warn you.
|
||
|
||
Also, the http.Handler and http.HandlerFunc types have changed. Where http
|
||
handler functions previously accepted an *http.Conn, they now take an interface
|
||
type http.ResponseWriter. ResponseWriter implements the same methods as *Conn,
|
||
so in most cases the only change required will be changing the type signature
|
||
of your handler function's first parameter. See:
|
||
http://golang.org/pkg/http/#Handler
|
||
|
||
The utf8 package has a new type, String, that provides efficient indexing
|
||
into utf8 strings by rune (previously an expensive conversion to []int
|
||
was required). See:
|
||
http://golang.org/pkg/utf8/#String
|
||
|
||
The compiler will now automatically insert a semicolon at the end of a file if
|
||
one is not found. This effect of this is that Go source files are no longer
|
||
required to have a trailing newline.
|
||
|
||
Other changes:
|
||
* 6prof: more accurate usage message.
|
||
* archive/zip: new package for reading Zip files.
|
||
* arm: fix code generation, 10 more package tests pass.
|
||
* asn1: make interface consistent with json.
|
||
* bufio.UnreadRune: fix bug at EOF.
|
||
* build: clear custom variables like GREP_OPTIONS,
|
||
silence warnings generated by ubuntu gcc,
|
||
use full path when compiling libraries.
|
||
* bytes, strings: change lastIndexFunc to use DecodeLastRune (thanks Roger Peppe).
|
||
* doc: add to and consolidate non-english doc references,
|
||
consolidate FAQs into a single file, go_faq.html,
|
||
updates for new http interface.
|
||
* fmt/Printf: document and tweak error messages produced for bad formats.
|
||
* gc: allow select case expr = <-c,
|
||
eliminate duplicates in method table,
|
||
fix reflect table method receiver,
|
||
improve error message for x \= 0.
|
||
* go/scanner: treat EOF like a newline for purposes of semicolon insertion.
|
||
* gofmt: stability improvements.
|
||
* gotest: leave _testmain.go for "make clean" to clean up.
|
||
* http: correct escaping of different parts of URL,
|
||
support HTTP/1.0 Keep-Alive.
|
||
* json: do not write to unexported fields.
|
||
* libcgo: don't build for NaCl,
|
||
set g, m in thread local storage for windows 386 (thanks Wei Guangjing).
|
||
* math: Fix off-by-one error in Ilogb and Logb. (thanks Charles L. Dorian).
|
||
* misc/dashboard/builder: remove build files after benchmarking.
|
||
* nacl: update instructions for new SDK.
|
||
* net: enable v4-over-v6 on ip sockets,
|
||
fix crash in DialIP.
|
||
* os: check for valid arguments in windows Readdir (thanks Peter Mundy).
|
||
* runtime: add mmap of null page just in case,
|
||
correct stats in SysFree,
|
||
fix unwindstack crash.
|
||
* syscall: add IPPROTO_IPV6 and IPV6_V6ONLY const to fix nacl and windows build,
|
||
add inotify on Linux (thanks Balazs Lecz),
|
||
fix socketpair in syscall_bsd,
|
||
fix windows value of IPV6_V6ONLY (thanks Alex Brainman),
|
||
implement windows version of Utimes (thanks Alex Brainman),
|
||
make mkall.sh work for nacl.
|
||
* test: Add test that causes incorrect error from gccgo.
|
||
* utf8: add DecodeLastRune and DecodeLastRuneInString (thanks Roger Peppe).
|
||
* xml: Allow entities inside CDATA tags (thanks Dan Sinclair).
|
||
</pre>
|
||
|
||
<h3 id="2010-09-22">2010-09-22</h3>
|
||
|
||
<pre>
|
||
This release includes new package functionality, and many bug fixes and changes.
|
||
It also improves support for the arm and nacl platforms.
|
||
|
||
* 5l: avoid fixed buffers in list.
|
||
* 6l, 8l: clean up ELF code, fix NaCl.
|
||
* 6l/8l: emit DWARF frame info.
|
||
* Make.inc: make GOOS detection work on windows (thanks Alex Brainman).
|
||
* build: fixes for native arn build,
|
||
make all.bash run on Ubuntu ARM.
|
||
* cgo: bug fixes,
|
||
show preamble gcc errors (thanks Eric Clark).
|
||
* crypto/x509, crypto/tls: improve root matching and observe CA flag.
|
||
* crypto: Fix certificate validation.
|
||
* doc: variable-width layout.
|
||
* env.bash: fix building in directory with spaces in the path (thanks Alex Brainman).
|
||
* exp/4s, exp/nacl/av: sync to recent exp/draw changes.
|
||
* exp/draw/x11: mouse location is a signed integer.
|
||
* exp/nacl/av: update color to max out at 1<<16-1 instead of 1<<32-1.
|
||
* fmt: support '*' for width or precision (thanks Anthony Martin).
|
||
* gc: improvements to static initialization,
|
||
make sure path names are canonical.
|
||
* gob: make robust when decoding a struct with non-struct data.
|
||
* gobuilder: add -cmd for user-specified build command,
|
||
add -rev= flag to build specific revision and exit,
|
||
fix bug that caused old revisions to be rebuilt.
|
||
* godoc: change default filter file name to "",
|
||
don't use quadratic algorithm to filter paths,
|
||
show "Last update" info for directory listings.
|
||
* http: new redirect test,
|
||
URLEscape now escapes all reserved characters as per the RFC.
|
||
* nacl: fix zero-length writes.
|
||
* net/dict: parse response correctly (thanks Fazlul Shahriar).
|
||
* netchan: add a cross-connect test,
|
||
handle closing of channels,
|
||
provide a method (Importer.Errors()) to recover protocol errors.
|
||
* os: make Open() O_APPEND flag work on windows (thanks Alex Brainman),
|
||
make RemoveAll() work on windows (thanks Alex Brainman).
|
||
* pkg/Makefile: disable netchan test to fix windows build (thanks Alex Brainman).
|
||
* regexp: delete Iter methods.
|
||
* runtime: better panic for send to nil channel.
|
||
* strings: fix minor bug in LastIndexFunc (thanks Roger Peppe).
|
||
* suffixarray: a package for creating suffixarray-based indexes.
|
||
* syscall: Use vsyscall for syscall.Gettimeofday and .Time on linux amd64.
|
||
* test: fix NaCl build.
|
||
* windows: fix netchan test by using 127.0.0.1.
|
||
</pre>
|
||
|
||
<h3 id="2010-09-15">2010-09-15</h3>
|
||
|
||
<pre>
|
||
This release includes a language change: the lower bound of a subslice may
|
||
now be omitted, in which case the value will default to 0.
|
||
For example, s[0:10] may now be written as s[:10], and s[0:] as s[:].
|
||
|
||
The release also includes important bug fixes for the ARM architecture,
|
||
as well as the following fixes and changes:
|
||
|
||
* 5g: register allocation bugs
|
||
* 6c, 8c: show line numbers in -S output
|
||
* 6g, 6l, 8g, 8l: move read-only data to text segment
|
||
* 6l, 8l: make etext accurate; introduce rodata, erodata.
|
||
* arm: fix build bugs.
|
||
make libcgo build during OS X cross-compile
|
||
remove reference to deleted file syntax/slice.go
|
||
use the correct stat syscalls
|
||
work around reg allocator bug in 5g
|
||
* bufio: add UnreadRune.
|
||
* build: avoid bad environment interactions
|
||
fix build for tiny
|
||
generate, clean .exe files on Windows (thanks Joe Poirier)
|
||
test for _WIN32, not _MINGW32 (thanks Joe Poirier)
|
||
work with GNU Make 3.82 (thanks Jukka-Pekka Kekkonen)
|
||
* cgo: add typedef for uintptr in generated headers
|
||
silence warning for C call returning const pointer
|
||
* codereview: convert email address to lower case before checking CONTRIBUTORS
|
||
* crypto/tls: don't return an error from Close()
|
||
* doc/tutorial: update for slice changes.
|
||
* exec: separate LookPath implementations for unix/windows (thanks Joe Poirier)
|
||
* exp/draw/x11: allow clean shutdown when the user closes the window.
|
||
* exp/draw: clip destination rectangle to the image bounds.
|
||
fast path for drawing overlapping image.RGBAs.
|
||
fix double-counting of pt.Min for the src and mask points.
|
||
reintroduce the MouseEvent.Nsec timestamp.
|
||
rename Context to Window, and add a Close method.
|
||
* exp/debug: preliminary support for 'copy' function (thanks Sebastien Binet)
|
||
* fmt.Fscan: use UnreadRune to preserve data across calls.
|
||
* gc: better printing of named constants, func literals in errors
|
||
many bug fixes
|
||
fix line number printing with //line directives
|
||
fix symbol table generation on windows (thanks Alex Brainman)
|
||
implement comparison rule from spec change 33abb649cb63
|
||
implement new slice spec (thanks Scott Lawrence)
|
||
make string x + y + z + ... + w efficient
|
||
more accurate line numbers for ATEXT
|
||
remove &[10]int -> []int conversion
|
||
* go-mode.el: fix highlighting for 'chan' type (thanks Scott Lawrence)
|
||
* godoc: better support for directory trees for user-supplied paths
|
||
use correct delay time (bug fix)
|
||
* gofmt, go/printer: update internal estimated position correctly
|
||
* goinstall: warn when package name starts with http:// (thanks Scott Lawrence)
|
||
* http: check https certificate against host name
|
||
do not cache CanonicalHeaderKey (thanks Jukka-Pekka Kekkonen)
|
||
* image: change a ColorImage's minimum point from (0, 0) to (-1e9, -1e9).
|
||
introduce Intersect and Union rectangle methods.
|
||
* ld: handle quoted spaces in package path (thanks Dan Sinclair)
|
||
* libcgo: fix NaCl build.
|
||
* libmach: fix build on arm host
|
||
fix new thread race with Linux
|
||
* math: make portable Tan(Pi/2) return NaN
|
||
* misc/dashboard/builder: gobuilder, a continuous build client
|
||
* net: disable tests for functions not available on windows (thanks Alex Brainman)
|
||
* netchan: make -1 unlimited, as advertised.
|
||
* os, exec: rename argv0 to name
|
||
* path: add IsAbs (thanks Ivan Krasin)
|
||
* runtime: fix bug in tracebacks
|
||
fix crash trace on amd64
|
||
fix windows build (thanks Alex Brainman)
|
||
use manual stack for garbage collection
|
||
* spec: add examples for slices with omitted index expressions.
|
||
allow omission of low slice bound (thanks Scott Lawrence)
|
||
* syscall: fix windows Gettimeofday (thanks Alex Brainman)
|
||
* test(arm): disable zerodivide.go because compilation fails.
|
||
* test(windows): disable tests that cause the build to fail (thanks Joe Poirier)
|
||
* test/garbage/parser: sync with recent parser changes
|
||
* test: Add test for //line
|
||
Make gccgo believe that the variables can change.
|
||
Recognize gccgo error messages.
|
||
Reduce race conditions in chan/nonblock.go.
|
||
Run garbage collector before testing malloc numbers.
|
||
* websocket: Add support for secure WebSockets (thanks Jukka-Pekka Kekkonen)
|
||
* windows: disable unimplemented tests (thanks Joe Poirier)
|
||
</pre>
|
||
|
||
<h3 id="2010-09-06">2010-09-06</h3>
|
||
|
||
<pre>
|
||
This release includes the syntactic modernization of more than 100 files in /test,
|
||
and these additions, changes, and fixes:
|
||
* 6l/8l: emit DWARF in macho.
|
||
* 8g: use FCHS, not FMUL, for minus float.
|
||
* 8l: emit DWARF in ELF,
|
||
suppress emitting DWARF in Windows PE (thanks Alex Brainman).
|
||
* big: added RatString, some simplifications.
|
||
* build: create bin and pkg directories as needed; drop from hg,
|
||
delete Make.386 Make.amd64 Make.arm (obsoleted by Make.inc),
|
||
fix cgo with -j2,
|
||
let pkg/Makefile coordinate building of Go commands,
|
||
never use quietgcc in Make.pkg,
|
||
remove more references to GOBIN and GOROOT (thanks Christian Himpel).
|
||
* codereview: Fix uploading for Mercurial 1.6.3 (thanks Evan Shaw),
|
||
consistent indent, cut dead code,
|
||
fix hang on standard hg commands,
|
||
print status when tasks take longer than 30 seconds,
|
||
really disable codereview when not available,
|
||
upload files in parallel (5x improvement on large CLs).
|
||
* crypto/hmac: make Sum idempotent (thanks Jukka-Pekka Kekkonen).
|
||
* doc: add links to more German docs,
|
||
add round-robin flag to io2010 balance example,
|
||
fix a bug in the example in Constants subsection (thanks James Fysh),
|
||
various changes for validating HTML (thanks Scott Lawrence).
|
||
* fmt: delete erroneous sentence about return value for Sprint*.
|
||
* gc: appease bison version running on FreeBSD builder,
|
||
fix spurious syntax error.
|
||
* go/doc: use correct escaper for URL.
|
||
* go/printer: align ImportPaths in ImportDecls (thanks Scott Lawrence).
|
||
* go/typechecker: 2nd step towards augmenting AST with full type information.
|
||
* gofmt: permit omission of first index in slice expression.
|
||
* goinstall: added -a flag to mean "all remote packages" (thanks Scott Lawrence),
|
||
assume go binaries are in path (following new convention),
|
||
use https for Google Code checkouts.
|
||
* gotest: allow make test of cgo packages (without make install).
|
||
* http: add Date to server, Last-Modified and If-Modified-Since to file server,
|
||
add PostForm function to post url-encoded key/value data,
|
||
obscure passwords in return value of URL.String (thanks Scott Lawrence).
|
||
* image: introduce Config type and DecodeConfig function.
|
||
* libcgo: update Makefile to use Make.inc.
|
||
* list: update comment to state that the zero value is ready to use.
|
||
* math: amd64 version of Sincos (thanks Charles L. Dorian).
|
||
* misc/bash: add *.go completion for gofmt (thanks Scott Lawrence).
|
||
* misc/emacs: make _ a word symbol (thanks Scott Lawrence).
|
||
* misc: add zsh completion (using compctl),
|
||
syntax highlighting for Fraise.app (OS X) (thanks Vincent Ambo).
|
||
* net/textproto: Handle multi-line responses (thanks Evan Shaw).
|
||
* net: add LookupMX (thanks Corey Thomasson).
|
||
* netchan: Fix race condition in test,
|
||
rather than 0, make -1 mean infinite (a la strings.Split et al),
|
||
use acknowledgements on export send.
|
||
new methods Sync and Drain for clean teardown.
|
||
* regexp: interpret all Go characer escapes \a \b \f \n \r \t \v.
|
||
* rpc: fix bug that caused private methods to attempt to be registered.
|
||
* runtime: Correct commonType.kind values to match compiler,
|
||
add GOOS, GOARCH; fix FuncLine,
|
||
special case copy, equal for one-word interface values (thanks Kyle Consalus).
|
||
* scanner: fix incorrect reporting of error in Next (thanks Kyle Consalus).
|
||
* spec: clarify that arrays must be addressable to be sliceable.
|
||
* template: fix space handling around actions.
|
||
* test/solitaire: an exercise in backtracking and string conversions.
|
||
* test: Recognize gccgo error messages and other fixes.
|
||
* time: do not crash in String on nil Time.
|
||
* tutorial: regenerate HTML to pick up change to progs/file.go.
|
||
* websocket: fix missing Sec-WebSocket-Protocol on server response (thanks Jukka-Pekka Kekkonen).
|
||
</pre>
|
||
|
||
<h3 id="2010-08-25">2010-08-25</h3>
|
||
|
||
<pre>
|
||
This release includes changes to the build system that will likely require you
|
||
to make changes to your environment variables and Makefiles.
|
||
|
||
All environment variables are now optional:
|
||
- $GOOS and $GOARCH are now optional; their values should now be inferred
|
||
automatically by the build system,
|
||
- $GOROOT is now optional, but if you choose not to set it you must run
|
||
'gomake' instead of 'make' or 'gmake' when developing Go programs
|
||
using the conventional Makefiles,
|
||
- $GOBIN remains optional and now defaults to $GOROOT/bin;
|
||
if you wish to use this new default, make sure it is in your $PATH
|
||
and that you have removed the existing binaries from $HOME/bin.
|
||
|
||
As a result of these changes, the Go Makefiles have changed. If your Makefiles
|
||
inherit from the Go Makefiles, you must change this line:
|
||
include ../../Make.$(GOARCH)
|
||
to this:
|
||
include ../../Make.inc
|
||
|
||
This release also removes the deprecated functions in regexp and the
|
||
once package. Any code that still uses them will break.
|
||
See the notes from the last release for details:
|
||
http://golang.org/doc/devel/release.html#2010-08-11
|
||
|
||
Other changes:
|
||
* 6g: better registerization for slices, strings, interface values
|
||
* 6l: line number information in DWARF format
|
||
* build: $GOBIN defaults to $GOROOT/bin,
|
||
no required environment variables
|
||
* cgo: add C.GoStringN (thanks Eric Clark).
|
||
* codereview: fix issues with leading tabs in CL descriptions,
|
||
do not send "Abandoned" mail if the CL has not been mailed.
|
||
* crypto/ocsp: add missing Makefile.
|
||
* crypto/tls: client certificate support (thanks Mikkel Krautz).
|
||
* doc: update gccgo information for recent changes.
|
||
fix errors in Effective Go.
|
||
* fmt/print: give %p priority, analogous to %T,
|
||
honor Formatter in Print, Println.
|
||
* gc: fix parenthesization check.
|
||
* go/ast: facility for printing AST nodes,
|
||
first step towards augmenting AST with full type information.
|
||
* go/printer: do not modify tabwriter.Escape'd text.
|
||
* gofmt: do not modify multi-line string literals,
|
||
print AST nodes by setting -ast flag.
|
||
* http: fix typo in http.Request documentation (thanks Scott Lawrence)
|
||
parse query string always, not just in GET
|
||
* image/png: support 16-bit color.
|
||
* io: ReadAtLeast now errors if min > len(buf).
|
||
* jsonrpc: use `error: null` for success, not `error: ""`.
|
||
* libmach: implement register fetch for 32-bit x86 kernel.
|
||
* net: make IPv6 String method standards-compliant (thanks Mikio Hara).
|
||
* os: FileInfo.Permission() now returns uint32 (thanks Scott Lawrence),
|
||
implement env using native Windows API (thanks Alex Brainman).
|
||
* reflect: allow PtrValue.PointTo(nil).
|
||
* runtime: correct line numbers for .goc files,
|
||
fix another stack split bug,
|
||
fix freebsd/386 mmap.
|
||
* syscall: regenerate syscall/z* files for linux/386, linux/amd64, linux/arm.
|
||
* tabwriter: Introduce a new flag StripEscape.
|
||
* template: fix handling of space around actions,
|
||
vars preceded by white space parse correctly (thanks Roger Peppe).
|
||
* test: add test case that crashes gccgo.
|
||
* time: parse no longer requires minutes for time zone (thanks Jan H. Hosang)
|
||
* yacc: fix bounds check in error recovery.
|
||
</pre>
|
||
|
||
<h3 id="2010-08-11">2010-08-11</h3>
|
||
|
||
<pre>
|
||
This release introduces some package changes. You may need to change your
|
||
code if you use the once, regexp, image, or exp/draw packages.
|
||
|
||
The type Once has been added to the sync package. The new sync.Once will
|
||
supersede the functionality provided by the once package. We intend to remove
|
||
the once package after this release. See:
|
||
http://golang.org/pkg/sync/#Once
|
||
All instances of once in the standard library have been replaced with
|
||
sync.Once. Reviewing these changes may help you modify your existing code.
|
||
The relevant changeset:
|
||
http://code.google.com/p/go/source/detail?r=fa2c43595119
|
||
|
||
A new set of methods has been added to the regular expression package, regexp.
|
||
These provide a uniformly named approach to discovering the matches of an
|
||
expression within a piece of text; see the package documentation for details:
|
||
http://golang.org/pkg/regexp/
|
||
These new methods will, in a later release, replace the old methods for
|
||
matching substrings. The following methods are deprecated:
|
||
Execute (use FindSubmatchIndex)
|
||
ExecuteString (use FindStringSubmatchIndex)
|
||
MatchStrings(use FindStringSubmatch)
|
||
MatchSlices (use FindSubmatch)
|
||
AllMatches (use FindAll; note that n<0 means 'all matches'; was n<=0)
|
||
AllMatchesString (use FindAllString; note that n<0 means 'all matches'; was n<=0)
|
||
(Plus there are ten new methods you didn't know you wanted.)
|
||
Please update your code to use the new routines before the next release.
|
||
|
||
An image.Image now has a Bounds rectangle, where previously it ranged
|
||
from (0, 0) to (Width, Height). Loops that previously looked like:
|
||
for y := 0; y < img.Height(); y++ {
|
||
for x := 0; x < img.Width(); x++ {
|
||
// Do something with img.At(x, y)
|
||
}
|
||
}
|
||
should instead be:
|
||
b := img.Bounds()
|
||
for y := b.Min.Y; y < b.Max.Y; y++ {
|
||
for x := b.Min.X; x < b.Max.X; x++ {
|
||
// Do something with img.At(x, y)
|
||
}
|
||
}
|
||
The Point and Rectangle types have also moved from exp/draw to image.
|
||
|
||
Other changes:
|
||
* arm: bugfixes and syscall (thanks Kai Backman).
|
||
* asn1: fix incorrect encoding of signed integers (thanks Nicholas Waples).
|
||
* big: fixes to bitwise functions (thanks Evan Shaw).
|
||
* bytes: add IndexRune, FieldsFunc and To*Special (thanks Christian Himpel).
|
||
* encoding/binary: add complex (thanks Roger Peppe).
|
||
* exp/iterable: add UintArray (thanks Anschel Schaffer-Cohen).
|
||
* godoc: report Status 404 if a pkg or file is not found.
|
||
* gofmt: better reporting for unexpected semicolon errors.
|
||
* html: new package, an HTML tokenizer.
|
||
* image: change image representation from slice-of-slices to linear buffer,
|
||
introduce Decode and RegisterFormat,
|
||
introduce Transparent and Opaque,
|
||
replace Width and Height by Bounds, add the Point and Rect types.
|
||
* libbio: fix Bprint to address 6g issues with large data structures.
|
||
* math: fix amd64 Hypot (thanks Charles L. Dorian).
|
||
* net/textproto: new package, with example net/dict.
|
||
* os: fix ForkExec() handling of envv == nil (thanks Alex Brainman).
|
||
* png: grayscale support (thanks Mathieu Lonjaret).
|
||
* regexp: document that backslashes are the escape character.
|
||
* rpc: catch errors from ReadResponseBody.
|
||
* runtime: memory free fix (thanks Alex Brainman).
|
||
* template: add ParseFile method to template.Template.
|
||
* test/peano: use directly recursive type def.
|
||
</pre>
|
||
|
||
<h3 id="2010-08-04">2010-08-04</h3>
|
||
|
||
<pre>
|
||
This release includes a change to os.Open (and co.). The file permission
|
||
argument has been changed to a uint32. Your code may require changes - a simple
|
||
conversion operation at most.
|
||
|
||
Other changes:
|
||
* amd64: use segment memory for thread-local storage.
|
||
* arm: add gdb support to android launcher script,
|
||
bugfixes (stack clobbering, indices),
|
||
disable another flaky test,
|
||
remove old qemu dependency from gotest.
|
||
* bufio: introduce Peek.
|
||
* bytes: added test case for explode with blank string (thanks Scott Lawrence).
|
||
* cgo: correct multiple return value function invocations (thanks Christian Himpel).
|
||
* crypto/x509: unwrap Subject Key Identifier (thanks Adam Langley).
|
||
* gc: index bounds tests and other fixes.
|
||
* gofmt/go/parser: strengthen syntax checks.
|
||
* goinstall: check for error from exec.*Cmd.Wait() (thanks Alex Brainman).
|
||
* image/png: use image-specific methods for checking opacity.
|
||
* image: introduce Gray and Gray16 types,
|
||
remove the named colors except for Black and White.
|
||
* json: object members must have a value (thanks Anthony Martin).
|
||
* misc/vim: highlight misspelled words only in comments (thanks Christian Himpel).
|
||
* os: Null device (thanks Peter Mundy).
|
||
* runtime: do not fall through in SIGBUS/SIGSEGV.
|
||
* strings: fix Split("", "", -1) (thanks Scott Lawrence).
|
||
* syscall: make go errors not clash with windows errors (thanks Alex Brainman).
|
||
* test/run: diff old new,
|
||
* websocket: correct challenge response (thanks Tarmigan Casebolt),
|
||
fix bug involving spaces in header keys (thanks Bill Neubauer).
|
||
</pre>
|
||
|
||
<h3 id="2010-07-29">2010-07-29</h3>
|
||
|
||
<pre>
|
||
* 5g: more soft float support and several bugfixes.
|
||
* asn1: Enumerated, Flag and GeneralizedTime support.
|
||
* build: clean.bash to check that GOOS and GOARCH are set.
|
||
* bytes: add IndexFunc and LastIndexFunc (thanks Fazlul Shahriar),
|
||
add Title.
|
||
* cgo: If CC is set in environment, use it rather than "gcc",
|
||
use new command line syntax: -- separates cgo flags from gcc flags.
|
||
* codereview: avoid crash if no config,
|
||
don't run gofmt with an empty file list,
|
||
make 'hg submit' work with Mercurial 1.6.
|
||
* crypto/ocsp: add package to parse OCSP responses.
|
||
* crypto/tls: add client-side SNI support and PeerCertificates.
|
||
* exp/bignum: delete package - functionality subsumed by package big.
|
||
* fmt.Print: fix bug in placement of spaces introduced when ...T went in.
|
||
* fmt.Scanf: handle trailing spaces.
|
||
* gc: fix smaller-than-pointer-sized receivers in interfaces,
|
||
floating point precision/normalization fixes,
|
||
graceful exit on seg fault,
|
||
import dot shadowing bug,
|
||
many fixes including better handling of invalid input,
|
||
print error detail about failure to open import.
|
||
* gccgo_install.html: add description of the port to RTEMS (thanks Vinu Rajashekhar).
|
||
* gobs: fix bug in singleton arrays.
|
||
* godoc: display synopses for all packages that have some kind of documentation..
|
||
* gofmt: fix some linebreak issues.
|
||
* http: add https client support (thanks Fazlul Shahriar),
|
||
write body when content length unknown (thanks James Whitehead).
|
||
* io: MultiReader and MultiWriter (thanks Brad Fitzpatrick),
|
||
fix another race condition in Pipes.
|
||
* ld: many fixes including better handling of invalid input.
|
||
* libmach: correct handling of .5 files with D_REGREG addresses.
|
||
* linux/386: use Xen-friendly ELF TLS instruction sequence.
|
||
* mime: add AddExtensionType (thanks Yuusei Kuwana).
|
||
* misc/vim: syntax file recognizes constants like 1e9 (thanks Petar Maymounkov).
|
||
* net: TCPConn.SetNoDelay, back by popular demand.
|
||
* net(windows): fix crashing Read/Write when passed empty slice on (thanks Alex Brainman),
|
||
implement LookupHost/Port/SRV (thanks Wei Guangjing),
|
||
properly handle EOF in (*netFD).Read() (thanks Alex Brainman).
|
||
* runtime: fix bug introduced in revision 4a01b8d28570 (thanks Alex Brainman),
|
||
rename cgo2c, *.cgo to goc2c, *.goc (thanks Peter Mundy).
|
||
* scanner: better comment.
|
||
* strings: add Title.
|
||
* syscall: add ForkExec, Syscall12 on Windows (thanks Daniel Theophanes),
|
||
improve windows errno handling (thanks Alex Brainman).
|
||
* syscall(windows): fix FormatMessage (thanks Peter Mundy),
|
||
implement Pipe() (thanks Wei Guangjing).
|
||
* time: fix parsing of minutes in time zones.
|
||
* utf16(windows): fix cyclic dependency when testing (thanks Peter Mundy).
|
||
</pre>
|
||
|
||
<h3 id="2010-07-14">2010-07-14</h3>
|
||
|
||
<pre>
|
||
This release includes a package change. In container/vector, the Iter method
|
||
has been removed from the Vector, IntVector, and StringVector types. Also, the
|
||
Data method has been renamed to Copy to better express its actual behavior.
|
||
Now that Vector is just a slice, any for loops ranging over v.Iter() or
|
||
v.Data() can be changed to range over v instead.
|
||
|
||
Other changes:
|
||
* big: Improvements to Rat.SetString (thanks Evan Shaw),
|
||
add sign, abs, Rat.IsInt.
|
||
* cgo: various bug fixes.
|
||
* codereview: Fix for Mercurial >= 1.6 (thanks Evan Shaw).
|
||
* crypto/rand: add Windows implementation (thanks Peter Mundy).
|
||
* crypto/tls: make HTTPS servers easier,
|
||
add client OCSP stapling support.
|
||
* exp/eval: converted from bignum to big (thanks Evan Shaw).
|
||
* gc: implement new len spec, range bug fix, optimization.
|
||
* go/parser: require that '...' parameters are followed by a type.
|
||
* http: fix ParseURL to handle //relative_path properly.
|
||
* io: fix SectionReader Seek to seek backwards (thanks Peter Mundy).
|
||
* json: Add HTMLEscape (thanks Micah Stetson).
|
||
* ld: bug fixes.
|
||
* math: amd64 version of log (thanks Charles L. Dorian).
|
||
* mime/multipart: new package to parse multipart MIME messages
|
||
and HTTP multipart/form-data support.
|
||
* os: use TempFile with default TempDir for test files (thanks Peter Mundy).
|
||
* runtime/tiny: add docs for additional VMs, fix build (thanks Markus Duft).
|
||
* runtime: better error for send/recv on nil channel.
|
||
* spec: clarification of channel close(),
|
||
lock down some details about channels and select,
|
||
restrict when len(x) is constant,
|
||
specify len/cap for nil slices, maps, and channels.
|
||
* windows: append .exe to binary names (thanks Joe Poirier).
|
||
</pre>
|
||
|
||
<h3 id="2010-07-01">2010-07-01</h3>
|
||
|
||
<pre>
|
||
This release includes some package changes that may require changes to
|
||
client code.
|
||
|
||
The Split function in the bytes and strings packages has been changed.
|
||
The count argument, which limits the size of the return, previously treated
|
||
zero as unbounded. It now treats 0 as 0, and will return an empty slice.
|
||
To request unbounded results, use -1 (or some other negative value).
|
||
The new Replace functions in bytes and strings share this behavior.
|
||
This may require you change your existing code.
|
||
|
||
The gob package now allows the transmission of non-struct values at the
|
||
top-level. As a result, the rpc and netchan packages have fewer restrictions
|
||
on the types they can handle. For example, netchan can now share a chan int.
|
||
|
||
The release also includes a Code Walk: "Share Memory By Communicating".
|
||
It describes an idiomatic Go program that uses goroutines and channels:
|
||
http://golang.org/doc/codewalk/sharemem/
|
||
|
||
There is now a Projects page on the Go Dashboard that lists Go programs,
|
||
tools, and libraries:
|
||
http://godashboard.appspot.com/project
|
||
|
||
Other changes:
|
||
* 6a, 6l: bug fixes.
|
||
* bytes, strings: add Replace.
|
||
* cgo: use slash-free relative paths for .so references.
|
||
* cmath: correct IsNaN for argument cmplx(Inf, NaN) (thanks Charles L. Dorian).
|
||
* codereview: allow multiple email addresses in CONTRIBUTORS.
|
||
* doc/codewalk: add Share Memory By Communicating.
|
||
* exp/draw/x11: implement the mapping from keycodes to keysyms.
|
||
* fmt: Printf: fix bug in handling of %#v, allow other verbs for slices
|
||
Scan: fix handling of EOFs.
|
||
* gc: bug fixes and optimizations.
|
||
* gob: add DecodeValue and EncodeValue,
|
||
add support for complex numbers.
|
||
* goinstall: support for Bazaar+Launchpad (thanks Gustavo Niemeyer).
|
||
* io/ioutil: add TempFile for Windows (thanks Peter Mundy).
|
||
* ld: add -u flag to check safe bits; discard old -u, -x flags.
|
||
* math: amd64 versions of Exp and Fabs (thanks Charles L. Dorian).
|
||
* misc/vim: always override filetype detection for .go files.
|
||
* net: add support for DNS SRV requests (thanks Kirklin McDonald),
|
||
initial attempt to implement Windows version (thanks Alex Brainman).
|
||
* netchan: allow chan of basic types now that gob can handle such,
|
||
eliminate the need for a pointer value in Import and Export.
|
||
* os/signal: only catch all signals if os/signal package imported.
|
||
* regexp: bug fix: need to track whether match begins with fixed prefix.
|
||
* rpc: allow non-struct args and reply (they must still be pointers).
|
||
* runtime: bug fixes and reorganization.
|
||
* strconv: fix bugs in floating-point and base 2 conversions
|
||
* syscall: add syscall_bsd.go to zsycall_freebsd_386.go (thanks Peter Mundy),
|
||
add socketpair (thanks Ivan Krasin).
|
||
* time: implement time zones for Windows (thanks Alex Brainman).
|
||
* x509: support non-self-signed certs.
|
||
</pre>
|
||
|
||
<h3 id="2010-06-21">2010-06-21</h3>
|
||
|
||
<pre>
|
||
This release includes a language change. The "..." function parameter form is
|
||
gone; "...T" remains. Typically, "...interface{}" can be used instead of "...".
|
||
|
||
The implementation of Printf has changed in a way that subtly affects its
|
||
handling of the fmt.Stringer interface. You may need to make changes to your
|
||
code. For details, see:
|
||
https://groups.google.com/group/golang-nuts/msg/6fffba90a3e3dc06
|
||
|
||
The reflect package has been changed. If you have code that uses reflect,
|
||
it will need to be updated. For details, see:
|
||
https://groups.google.com/group/golang-nuts/msg/7a93d07c590e7beb
|
||
|
||
Other changes:
|
||
* 8l: correct test for sp == top of stack in 8l -K code.
|
||
* asn1: allow '*' in PrintableString.
|
||
* bytes.Buffer.ReadFrom: fix bug.
|
||
* codereview: avoid exception in match (thanks Paolo Giarrusso).
|
||
* complex divide: match C99 implementation.
|
||
* exp/draw: small draw.drawGlyphOver optimization.
|
||
* fmt: Print*: reimplement to switch on type first,
|
||
Scanf: improve error message when input does not match format.
|
||
* gc: better error messages for interface failures, conversions, undefined symbols.
|
||
* go/scanner: report illegal escape sequences.
|
||
* gob: substitute slice for map.
|
||
* goinstall: process dependencies for package main (thanks Roger Peppe).
|
||
* gopack: add S flag to force marking a package as safe,
|
||
simplify go metadata code.
|
||
* html: sync testdata/webkit to match WebKit tip.
|
||
* http: reply to Expect 100-continue requests automatically (thanks Brad Fitzpatrick).
|
||
* image: add an Alpha16 type.
|
||
* ld: pad Go symbol table out to page boundary (fixes cgo crash).
|
||
* misc/vim: reorganize plugin to be easier to use (thanks James Whitehead).
|
||
* path: add Base, analogous to Unix basename.
|
||
* pkg/Makefile: allow DISABLE_NET_TESTS=1 to disable network tests.
|
||
* reflect: add Kind, Type.Bits, remove Int8Type, Int8Value, etc.
|
||
* runtime: additional Windows support (thanks Alex Brainman),
|
||
correct fault for 16-bit divide on Leopard,
|
||
fix 386 signal handler bug.
|
||
* strconv: add AtofN, FtoaN.
|
||
* string: add IndexFunc and LastIndexFunc (thanks Roger Peppe).
|
||
* syslog: use local network for tests.
|
||
</pre>
|
||
|
||
<h3 id="2010-06-09">2010-06-09</h3>
|
||
|
||
<pre>
|
||
This release contains many fixes and improvements, including several
|
||
clarifications and consolidations to the Language Specification.
|
||
|
||
The type checking rules around assignments and conversions are simpler but more
|
||
restrictive: assignments no longer convert implicitly from *[10]int to []int
|
||
(write x[0:] instead of &x), and conversions can no longer change the names of
|
||
types inside composite types.
|
||
|
||
The fmt package now includes flexible type-driven (fmt.Scan) and
|
||
format-driven (fmt.Scanf) scanners for all basic types.
|
||
|
||
* big: bug fix for Quo aliasing problem.
|
||
* bufio: change ReadSlice to match description.
|
||
* cgo: bug fixes.
|
||
* doc: add Google I/O talk and programs,
|
||
codereview + Mercurial Queues info (thanks Peter Williams).
|
||
* exp/draw: Draw fast paths for the Over operator,
|
||
add Rectangle.Eq and Point.In, fix Rectangle.Clip (thanks Roger Peppe).
|
||
* fmt: Scan fixes and improvements.
|
||
* gc: backslash newline is not a legal escape sequence in strings,
|
||
better error message when ~ operator is found,
|
||
fix export of complex types,
|
||
new typechecking rules.
|
||
* go/parser: correct position of empty statement ';'.
|
||
* gofmt: fix test script.
|
||
* goinstall: use 'git pull' instead of 'git checkout' (thanks Michael Hoisie).
|
||
* http: add Head function for making HTTP HEAD requests,
|
||
handle status 304 correctly.
|
||
* image: add Opaque method to the image types.
|
||
make Color.RGBA return 16 bit color instead of 32 bit color.
|
||
* io/ioutil: add TempFile.
|
||
* math: Pow special cases and additional tests (thanks Charles L. Dorian).
|
||
* netchan: improve closing and shutdown.
|
||
* os: implement os.FileInfo.*time_ns for windows (thanks Alex Brainman).
|
||
* os/signal: correct the regexp for finding Unix signal names (thanks Vinu Rajashekhar).
|
||
* regexp: optimizations (thanks Kyle Consalus).
|
||
* runtime: fix printing -Inf (thanks Evan Shaw),
|
||
finish pchw -> tiny, added gettime for tiny (thanks Daniel Theophanes).
|
||
* spec: clean-ups and consolidation.
|
||
* syscall: additional Windows compatibility fixes (thanks Alex Brainman).
|
||
* test/bench: added regex-dna-parallel.go (thanks Kyle Consalus).
|
||
* vector: type-specific Do functions now take f(type) (thanks Michael Hoisie).
|
||
</pre>
|
||
|
||
<h3 id="2010-05-27">2010-05-27</h3>
|
||
|
||
<pre>
|
||
A sizeable release, including standard library improvements and a slew of
|
||
compiler bug fixes. The three-week interval was largely caused by the team
|
||
preparing for Google I/O.
|
||
|
||
* big: add Rat type (thanks Evan Shaw),
|
||
new features, much performance tuning, cleanups, and more tests.
|
||
* bignum: deprecate by moving into exp directory.
|
||
* build: allow MAKEFLAGS to be set outside the build scripts (thanks Christopher Wedgwood).
|
||
* bytes: add Trim, TrimLeft, TrimRight, and generic functions (thanks Michael Hoisie).
|
||
* cgo: fix to permit cgo callbacks from init code.
|
||
* cmath: update range of Phase and Polar due to signed zero (thanks Charles L. Dorian).
|
||
* codereview: work better with mq (thanks Peter Williams).
|
||
* compress: renamings
|
||
NewDeflater -> NewWriter
|
||
NewInflater -> NewReader
|
||
Deflater -> Compressor
|
||
Inflater -> Decompressor
|
||
* exp/draw/x11: respect $XAUTHORITY,
|
||
treat $DISPLAY the same way x-go-bindings does.
|
||
* exp/draw: fast path for glyph images, other optimizations,
|
||
fix Rectangle.Canon (thanks Roger Peppe).
|
||
* fmt: Scan, Scanln: Start of a simple scanning API in the fmt package,
|
||
fix Printf crash when given an extra nil argument (thanks Roger Peppe).
|
||
* gc: better error when computing remainder of non-int (thanks Evan Shaw),
|
||
disallow middot in Go programs,
|
||
distinguish array, slice literal in error messages,
|
||
fix shift/reduce conflict in go.y export syntax,
|
||
fix unsafe.Sizeof on ideal constants,
|
||
handle use of builtin function outside function call,
|
||
many other bug fixes.
|
||
* gob: add support for maps,
|
||
add test for indirect maps, slices, arrays.
|
||
* godoc: collect package comments from all package files.
|
||
* gofmt: don't lose mandatory semicolons,
|
||
exclude test w/ illegal syntax from test cases,
|
||
fix printing of labels.
|
||
* http: prevent crash if remote server is not responding with "HTTP/".
|
||
* json: accept escaped slash in string scanner (thanks Michael Hoisie),
|
||
fix array -> non-array decoding.
|
||
* libmach: skip __nl_symbol_ptr section on OS X.
|
||
* math: amd64 versions of Fdim, Fmax, Fmin,
|
||
signed zero Sqrt special case (thanks Charles L. Dorian).
|
||
* misc/kate: convert isn't a built in function (thanks Evan Shaw).
|
||
* net: implement BindToDevice,
|
||
implement raw sockets (thanks Christopher Wedgwood).
|
||
* netFD: fix race between Close and Read/Write (thanks Michael Hoisie).
|
||
* os: add Chtimes function (thanks Brad Fitzpatrick).
|
||
* pkg/Makefile: add netchan to standard package list.
|
||
* runtime: GOMAXPROCS returns previous value,
|
||
allow large map values,
|
||
avoid allocation for fixed strings,
|
||
correct tracebacks for nascent goroutines, even closures,
|
||
free old hashmap pieces during resizing.
|
||
* spec: added imaginary literal to semicolon rules (was missing),
|
||
fix and clarify syntax of conversions,
|
||
simplify section on channel types,
|
||
other minor tweaks.
|
||
* strconv: Btoui64 optimizations (thanks Kyle Consalus).
|
||
* strings: use copy instead of for loop in Map (thanks Kyle Consalus).
|
||
* syscall: implement BindToDevice (thanks Christopher Wedgwood),
|
||
add Utimes on Darwin/FreeBSD, add Futimes everywhere,
|
||
regenerate syscalls for some platforms.
|
||
* template: regularize name lookups of interfaces, pointers, and methods.
|
||
</pre>
|
||
|
||
<h3 id="2010-05-04">2010-05-04</h3>
|
||
|
||
<pre>
|
||
In this release we renamed the Windows OS target from 'mingw' to 'windows'.
|
||
If you are currently building for 'mingw' you should set GOOS=windows instead.
|
||
|
||
* 5l, 6l, 8l, runtime: make -s binaries work.
|
||
* 5l, 6l, 8l: change ELF header so that strip doesn't destroy binary.
|
||
* 8l: fix absolute path detection on Windows.
|
||
* big: new functions, optimizations, and cleanups,
|
||
add bitwise methods for Int (thanks Evan Shaw).
|
||
* bytes: Change IndexAny to look for UTF-8 encoded characters.
|
||
* darwin: bsdthread_create can fail; print good error.
|
||
* fmt: %T missing print <nil> for nil (thanks Christopher Wedgwood).
|
||
* gc: many fixes.
|
||
* misc/cgo/gmp: fix bug in SetString.
|
||
* net: fix resolv.conf EOF without newline bug (thanks Christopher Wedgwood).
|
||
* spec: some small clarifications (no language changes).
|
||
* syscall: add EWOULDBLOCK to sycall_nacl.go,
|
||
force O_LARGEFILE in Linux open system call,
|
||
handle EOF on pipe - special case on Windows (thanks Alex Brainman),
|
||
mingw Sleep (thanks Joe Poirier).
|
||
* test/bench: import new fasta C reference, update Go, optimizations.
|
||
* test: test of static initialization (fails).
|
||
* vector: use correct capacity in call to make.
|
||
* xml: allow text segments to end at EOF.
|
||
</pre>
|
||
|
||
<h3 id="2010-04-27">2010-04-27</h3>
|
||
|
||
<pre>
|
||
This release includes a new Codelab that illustrates the construction of a
|
||
simple wiki web application:
|
||
http://golang.org/doc/codelab/wiki/
|
||
|
||
It also includes a Codewalk framework for documenting code. See:
|
||
http://golang.org/doc/codewalk/
|
||
|
||
Other changes:
|
||
* 6g: fix need for parens around array index expression.
|
||
* 6l, 8l: include ELF header in PT_LOAD mapping for text segment.
|
||
* arm: add android runner script,
|
||
support for printing floats.
|
||
* big: implemented Karatsuba multiplication,
|
||
many fixes and improvements (thanks Evan Shaw).
|
||
* bytes: add Next method to Buffer, simplify Read,
|
||
shuffle implementation, making WriteByte 50% faster.
|
||
* crypto/tls: simpler implementation of record layer.
|
||
* exp/eval: fixes (thanks Evan Shaw).
|
||
* flag: eliminate unnecessary structs.
|
||
* gc: better windows support,
|
||
cmplx typecheck bug fix,
|
||
more specific error for statements at top level.
|
||
* go/parser: don't require unnecessary parens.
|
||
* godoc: exclude duplicate entries (thanks Andrei Vieru),
|
||
use int64 for timestamps (thanks Christopher Wedgwood).
|
||
* gofmt: fine-tune stripping of parentheses,
|
||
* json: Marshal, Unmarshal using new scanner,
|
||
preserve field name case by default,
|
||
scanner, Compact, Indent, and tests,
|
||
support for streaming.
|
||
* libmach: disassemble MOVLQZX correctly.
|
||
* math: more special cases for signed zero (thanks Charles L. Dorian).
|
||
* net: add Pipe,
|
||
fix bugs in packStructValue (thanks Michael Hoisie),
|
||
introduce net.Error interface.
|
||
* os: FileInfo: regularize the types of some fields,
|
||
create sys_bsd.go (thanks Giles Lean),
|
||
mingw bug fixes (thanks Alex Brainman).
|
||
* reflect: add FieldByNameFunc (thanks Raif S. Naffah),
|
||
implement Set(nil), SetValue(nil) for PtrValue and MapValue.
|
||
* regexp: allow escaping of any punctuation.
|
||
* rpc/jsonrpc: support for jsonrpc wire encoding.
|
||
* rpc: abstract client and server encodings,
|
||
add Close() method to rpc.Client.
|
||
* runtime: closures, defer bug fix for Native Client,
|
||
rename cgo2c, *.cgo to goc2c, *.goc to avoid confusion with real cgo.
|
||
several other fixes.
|
||
* scanner: implement Peek() to look at the next char w/o advancing.
|
||
* strings: add ReadRune to Reader, add FieldsFunc (thanks Kyle Consalus).
|
||
* syscall: match linux Setsid function signature to darwin,
|
||
mingw bug fixes (thanks Alex Brainman).
|
||
* template: fix handling of pointer inside interface.
|
||
* test/bench: add fannkuch-parallel.go (thanks Kyle Consalus),
|
||
pidigits ~10% performance win by using adds instead of shifts.
|
||
* time: remove incorrect time.ISO8601 and add time.RFC3339 (thanks Micah Stetson).
|
||
* utf16: add DecodeRune, EncodeRune.
|
||
* xml: add support for XML marshalling embedded structs (thanks Raif S. Naffah),
|
||
new "innerxml" tag to collect inner XML.
|
||
</pre>
|
||
|
||
<h3 id="2010-04-13">2010-04-13</h3>
|
||
|
||
<pre>
|
||
This release contains many changes:
|
||
|
||
* 8l: add DOS stub to PE binaries (thanks Evan Shaw).
|
||
* cgo: add //export.
|
||
* cmath: new complex math library (thanks Charles L. Dorian).
|
||
* docs: update to match current coding style (thanks Christopher Wedgwood).
|
||
* exp/eval: fix example and add target to Makefile (thanks Evan Shaw).
|
||
* fmt: change behaviour of format verb %b to match %x when negative (thanks Andrei Vieru).
|
||
* gc: compile s == "" as len(s) == 0,
|
||
distinguish fatal compiler bug from error+exit,
|
||
fix alignment on non-amd64,
|
||
good syntax error for defer func() {} - missing fina (),
|
||
implement panic and recover,
|
||
zero unnamed return values on entry if func has defer.
|
||
* goyacc: change to be reentrant (thanks Roger Peppe).
|
||
* io/ioutil: fix bug in ReadFile when Open succeeds but Stat fails.
|
||
* kate: update for recent language changes (thanks Evan Shaw).
|
||
* libcgo: initial mingw port work - builds but untested (thanks Joe Poirier).
|
||
* math: new functions and special cases (thanks Charles L. Dorian)
|
||
* net: use chan bool instead of chan *netFD to avoid cycle.
|
||
* netchan: allow client to send as well as receive.
|
||
* nntp: new package, NNTP client (thanks Conrad Meyer).
|
||
* os: rename os.Dir to os.FileInfo.
|
||
* rpc: don't log normal EOF,
|
||
fix ServeConn to block as documented.
|
||
* runtime: many bug fixes, better ARM support.
|
||
* strings: add IndexRune, Trim, TrimLeft, TrimRight, etc (thanks Michael Hoisie).
|
||
* syscall: implement some mingw syscalls required by os (thanks Alex Brainman).
|
||
* test/bench: add k-nucleotide-parallel (thanks Kyle Consalus).
|
||
* Unicode: add support for Turkish case mapping.
|
||
* xgb: move from the main repository to http://code.google.com/p/x-go-binding/
|
||
</pre>
|
||
|
||
<h3 id="2010-03-30">2010-03-30</h3>
|
||
|
||
<pre>
|
||
This release contains three language changes:
|
||
|
||
1. Accessing a non-existent key in a map is no longer a run-time error.
|
||
It now evaluates to the zero value for that type. For example:
|
||
x := myMap[i] is now equivalent to: x, _ := myMap[i]
|
||
|
||
2. It is now legal to take the address of a function's return value.
|
||
The return values are copied back to the caller only after deferred
|
||
functions have run.
|
||
|
||
3. The functions panic and recover, intended for reporting and recovering from
|
||
failure, have been added to the spec:
|
||
http://golang.org/doc/go_spec.html#Handling_panics
|
||
In a related change, panicln is gone, and panic is now a single-argument
|
||
function. Panic and recover are recognized by the gc compilers but the new
|
||
behavior is not yet implemented.
|
||
|
||
The ARM build is broken in this release; ARM users should stay at release.2010-03-22.
|
||
|
||
Other changes:
|
||
* bytes, strings: add IndexAny.
|
||
* cc/ld: Add support for #pragma dynexport,
|
||
Rename dynld to dynimport throughout. Cgo users will need to rerun cgo.
|
||
* expvar: default publishings for cmdline, memstats
|
||
* flag: add user-defined flag types.
|
||
* gc: usual bug fixes
|
||
* go/ast: generalized ast filtering.
|
||
* go/printer: avoid reflect in print.
|
||
* godefs: fix handling of negative constants.
|
||
* godoc: export pprof debug information, exported variables,
|
||
support for filtering of command-line output in -src mode,
|
||
use http GET for remote search instead of rpc.
|
||
* gofmt: don't convert multi-line functions into one-liners,
|
||
preserve newlines in multiline selector expressions (thanks Risto Jaakko Saarelma).
|
||
* goinstall: include command name in error reporting (thanks Andrey Mirtchovski)
|
||
* http: add HandleFunc as shortcut to Handle(path, HandlerFunc(func))
|
||
* make: use actual dependency for install
|
||
* math: add J1, Y1, Jn, Yn, J0, Y0 (Bessel functions) (thanks Charles L. Dorian)
|
||
* prof: add pprof from google-perftools
|
||
* regexp: don't return non-nil *Regexp if there is an error.
|
||
* runtime: add Callers,
|
||
add malloc sampling, pprof interface,
|
||
add memory profiling, more statistics to runtime.MemStats,
|
||
implement missing destroylock() (thanks Alex Brainman),
|
||
more malloc statistics,
|
||
run all finalizers in a single goroutine,
|
||
Goexit runs deferred calls.
|
||
* strconv: add Atob and Btoa,
|
||
Unquote could wrongly return a nil error on error (thanks Roger Peppe).
|
||
* syscall: add IPV6 constants,
|
||
add syscall_bsd.go for Darwin and other *BSDs (thanks Giles Lean),
|
||
implement SetsockoptString (thanks Christopher Wedgwood).
|
||
* websocket: implement new protocol (thanks Fumitoshi Ukai).
|
||
* xgb: fix request length and request size (thanks Firmansyah Adiputra).
|
||
* xml: add CopyToken (thanks Kyle Consalus),
|
||
add line numbers to syntax errors (thanks Kyle Consalus),
|
||
use io.ReadByter in place of local readByter (thanks Raif S. Naffah).
|
||
</pre>
|
||
|
||
<h3 id="2010-03-22">2010-03-22</h3>
|
||
|
||
<pre>
|
||
With this release we announce the launch of the Go Blog:
|
||
http://blog.golang.org/
|
||
The first post is a brief update covering what has happened since the launch.
|
||
|
||
This release contains some new packages and functionality, and many fixes:
|
||
* 6g/8g: fix issues with complex data types, other bug fixes.
|
||
* Makefiles: refactored to make writing external Makefiles easier.
|
||
* crypto/rand: new package.
|
||
* godoc: implemented command-line search via RPC,
|
||
improved comment formatting: recognize URLs.
|
||
* gofmt: more consistent formatting of const/var decls.
|
||
* http: add Error helper function,
|
||
add ParseQuery (thanks Petar Maymounkov),
|
||
change RawPath to mean raw path, not raw everything-after-scheme.
|
||
* image/jpeg: fix typos.
|
||
* json: add MarshalIndent (accepts user-specified indent string).
|
||
* math: add Gamma function (thanks Charles L. Dorian).
|
||
* misc/bbedit: support for cmplx, real, imag (thanks Anthony Starks).
|
||
* misc/vim: add new complex types, functions and literals.
|
||
* net: fix IPMask.String not to crash on all-0xff mask.
|
||
* os: drop File finalizer after normal Close.
|
||
* runtime: add GOROOT and Version,
|
||
lock finalizer table accesses.
|
||
* sha512: add sha384 (truncated version) (thanks Conrad Meyer).
|
||
* syscall: add const ARCH, analogous to OS.
|
||
* syscall: further additions to mingw port (thanks Alex Brainman).
|
||
* template: fixed html formatter []byte input bug.
|
||
* utf16: new package.
|
||
* version.bash: cope with ancient Mercurial.
|
||
* websocket: use URL.RawPath to construct WebSocket-Location: header.
|
||
</pre>
|
||
|
||
<h3 id="2010-03-15">2010-03-15</h3>
|
||
|
||
<pre>
|
||
This release includes a language change: support for complex numbers.
|
||
http://golang.org/doc/go_spec.html#Imaginary_literals
|
||
http://golang.org/doc/go_spec.html#Complex_numbers
|
||
There is no library support as yet.
|
||
|
||
This release also includes the goinstall command-line tool.
|
||
http://golang.org/cmd/goinstall/
|
||
http://groups.google.com/group/golang-nuts/t/f091704771128e32
|
||
|
||
* 5g/6g/8g: fix double function call in slice.
|
||
* arm: cleanup build warnings. (thanks Dean Prichard)
|
||
* big: fix mistakes with probablyPrime.
|
||
* bufio: add WriteRune.
|
||
* bytes: add ReadRune and WriteRune to bytes.Buffer.
|
||
* cc: stack split bug fix.
|
||
* crypto: add SHA-224 to sha256, add sha512 package. (thanks Conrad Meyer)
|
||
* crypto/ripemd160: new package. (thanks Raif S. Naffah)
|
||
* crypto/rsa: don't use safe primes.
|
||
* gc: avoid fixed length buffer cleanbuf. (thanks Dean Prichard)
|
||
better compilation of floating point +=
|
||
fix crash on complicated arg to make slice.
|
||
remove duplicate errors, give better error for I.(T)
|
||
* godoc: support for multiple packages in a directory, other fixes.
|
||
* gofmt: bug fixes.
|
||
* hash: add Sum64 interface.
|
||
* hash/crc32: add Update function.
|
||
* hash/crc64: new package implementing 64-bit CRC.
|
||
* math: add ilogb, logb, remainder. (thanks Charles L. Dorian)
|
||
* regexp: add ReplaceAllFunc, ReplaceAllStringFunc.
|
||
* runtime: clock garbage collection on bytes allocated, not pages in use.
|
||
* strings: make Split(s, "", n) faster. (thanks Spring Mc)
|
||
* syscall: minimal mingw version of syscall. (thanks Alex Brainman)
|
||
* template: add ParseFile, MustParseFile.
|
||
</pre>
|
||
|
||
<h3 id="2010-03-04">2010-03-04</h3>
|
||
|
||
<pre>
|
||
There is one language change: the ability to convert a string to []byte or
|
||
[]int. This deprecates the strings.Bytes and strings.Runes functions.
|
||
You can convert your existing sources using these gofmt commands:
|
||
gofmt -r 'strings.Bytes(x) -> []byte(x)' -w file-or-directory-list
|
||
gofmt -r 'strings.Runes(x) -> []int(x)' -w file-or-directory-list
|
||
After running these you might need to delete unused imports of the "strings"
|
||
package.
|
||
|
||
Other changes and fixes:
|
||
* 6l/8l/5l: add -r option
|
||
* 8g: make a[byte(x)] truncate x
|
||
* codereview.py: fix for compatibility with hg >=1.4.3
|
||
* crypto/blowfish: new package (thanks Raif S. Naffah)
|
||
* dashboard: more performance tuning
|
||
* fmt: use String method in %q to get the value to quote.
|
||
* gofmt: several cosmetic changes
|
||
* http: fix handling of Connection: close, bug in http.Post
|
||
* net: correct DNS configuration,
|
||
fix network timeout boundary condition,
|
||
put [ ] around IPv6 addresses for Dial.
|
||
* path: add Match,
|
||
fix bug in Match with non-greedy stars (thanks Kevin Ballard)
|
||
* strings: delete Bytes, Runes (see above)
|
||
* tests: an Eratosthenesque concurrent prime sieve (thanks Anh Hai Trinh)
|
||
</pre>
|
||
|
||
<h3 id="2010-02-23">2010-02-23</h3>
|
||
|
||
<pre>
|
||
This release is mainly bug fixes and a little new code.
|
||
There are no language changes.
|
||
|
||
6g/5g/8g: bug fixes
|
||
8a/8l: Added FCMOVcc instructions (thanks Evan Shaw and Charles Dorian)
|
||
crypto/x509: support certificate creation
|
||
dashboard: caching to avoid datastore queries
|
||
exec: add dir argument to Run
|
||
godoc: bug fixes and code cleanups
|
||
http: continued implementation and bug fixes (thanks Petar Maymounkov)
|
||
json: fix quoted strings in Marshal (thanks Sergei Skorobogatov)
|
||
math: more functions, test cases, and benchmarks (thanks Charles L. Dorian)
|
||
misc/bbedit: treat predeclared identifiers as "keywords" (thanks Anthony Starks)
|
||
net: disable UDP server test (flaky on various architectures)
|
||
runtime: work around Linux kernel bug in futex,
|
||
pchw is now tiny
|
||
sync: fix to work on armv5 (thanks Dean Prichard)
|
||
websocket: fix binary frame size decoding (thanks Timo Savola)
|
||
xml: allow unquoted attribute values in non-Strict mode (thanks Amrut Joshi)
|
||
treat bool as value in Unmarshal (thanks Michael Hoisie)
|
||
</pre>
|
||
|
||
<h3 id="2010-02-17">2010-02-17</h3>
|
||
|
||
<pre>
|
||
There are two small language changes:
|
||
* NUL bytes may be rejected in souce files, and the tools do reject them.
|
||
* Conversions from string to []int and []byte are defined but not yet implemented.
|
||
|
||
Other changes and fixes:
|
||
* 5a/6a/8a/5c/6c/8c: remove fixed-size arrays for -I and -D options (thanks Dean Prichard)
|
||
* 5c/6c/8c/5l/6l/8l: add -V flag to display version number
|
||
* 5c/6c/8c: use "cpp" not "/bin/cpp" for external preprocessor (thanks Giles Lean)
|
||
* 8a/8l: Added CMOVcc instructions (thanks Evan Shaw)
|
||
* 8l: pe executable building code changed to include import table for kernel32.dll functions (thanks Alex Brainman)
|
||
* 5g/6g/8g: bug fixes
|
||
* asn1: bug fixes and additions (incl marshalling)
|
||
* build: fix build for Native Client, Linux/ARM
|
||
* dashboard: show benchmarks, add garbage collector benchmarks
|
||
* encoding/pem: add marshalling support
|
||
* exp/draw: fast paths for a nil mask
|
||
* godoc: support for directories outside $GOROOT
|
||
* http: sort header keys when writing Response or Request to wire (thanks Petar Maymounkov)
|
||
* math: special cases and new functions (thanks Charles Dorian)
|
||
* mime: new package, used in http (thanks Michael Hoisie)
|
||
* net: dns bug fix - use random request id
|
||
* os: finalize File, to close fd.
|
||
* path: make Join variadic (thanks Stephen Weinberg)
|
||
* regexp: optimization bug fix
|
||
* runtime: misc fixes and optimizations
|
||
* syscall: make signature of Umask on OS X, FreeBSD match Linux. (thanks Giles Lean)
|
||
</pre>
|
||
|
||
<h3 id="2010-02-04">2010-02-04</h3>
|
||
|
||
<pre>
|
||
There is one language change: support for ...T parameters:
|
||
http://golang.org/doc/go_spec.html#Function_types
|
||
|
||
You can now check build status on various platforms at the Go Dashboard:
|
||
http://godashboard.appspot.com
|
||
|
||
* 5l/6l/8l: several minor fixes
|
||
* 5a/6a/8a/5l/6l/8l: avoid overflow of symb buffer (thanks Dean Prichard)
|
||
* compress/gzip: gzip deflater (i.e., writer)
|
||
* debug/proc: add mingw specific build stubs (thanks Joe Poirier)
|
||
* exp/draw: separate the source-point and mask-point in Draw
|
||
* fmt: handle nils safely in Printf
|
||
* gccgo: error messages now match those of gc
|
||
* godoc: several fixes
|
||
* http: bug fixes, revision of Request/Response (thanks Petar Maymounkov)
|
||
* image: new image.A type to represent anti-aliased font glyphs
|
||
add named colors (e.g. image.Blue), suitable for exp/draw
|
||
* io: fixed bugs in Pipe
|
||
* malloc: merge into package runtime
|
||
* math: fix tests on FreeBSD (thanks Devon H. O'Dell)
|
||
add functions; update tests and special cases (thanks Charles L. Dorian)
|
||
* os/signal: send SIGCHLDs to Incoming (thanks Chris Wedgwood)
|
||
* reflect: add StringHeader to reflect
|
||
* runtime: add SetFinalizer
|
||
* time: Sleep through interruptions (thanks Chris Wedgwood)
|
||
add RFC822 formats
|
||
experimental implemenation of Ticker using two goroutines for all tickers
|
||
* xml: allow underscores in XML element names (thanks Michael Hoisie)
|
||
allow any scalar type in xml.Unmarshal
|
||
</pre>
|
||
|
||
<h3 id="2010-01-27">2010-01-27</h3>
|
||
|
||
<pre>
|
||
There are two small language changes: the meaning of chan <- chan int
|
||
is now defined, and functions returning functions do not need to
|
||
parenthesize the result type.
|
||
|
||
There is one significant implementation change: the compilers can
|
||
handle multiple packages using the same name in a single binary.
|
||
In the gc compilers, this comes at the cost of ensuring that you
|
||
always import a particular package using a consistent import path.
|
||
In the gccgo compiler, the cost is that you must use the -fgo-prefix
|
||
flag to pass a unique prefix (like the eventual import path).
|
||
|
||
5a/6a/8a: avoid use of fixed-size buffers (thanks Dean Prichard)
|
||
5g, 6g, 8g: many minor bug fixes
|
||
bufio: give Writer.WriteString same signature as bytes.Buffer.WriteString.
|
||
container/list: PushFrontList, PushBackList (thanks Jan Hosang)
|
||
godoc: trim spaces from search query (thanks Christopher Wedgwood)
|
||
hash: document that Sum does not change state, fix crypto hashes
|
||
http: bug fixes, revision of Request/Response (thanks Petar Maymounkov)
|
||
math: more handling of IEEE 754 special cases (thanks Charles Dorian)
|
||
misc/dashboard: new build dashboard
|
||
net: allow UDP broadcast,
|
||
use /etc/hosts to resolve names (thanks Yves Junqueira, Michael Hoisie)
|
||
netchan: beginnings of new package for connecting channels across a network
|
||
os: allow FQDN in Hostname test (thanks Icarus Sparry)
|
||
reflect: garbage collection bug in Call
|
||
runtime: demo of Go on raw (emulated) hw in runtime/pchw,
|
||
performance fix on OS X
|
||
spec: clarify meaning of chan <- chan int,
|
||
func() func() int is allowed now,
|
||
define ... T (not yet implemented)
|
||
template: can use interface values
|
||
time: fix for +0000 time zone,
|
||
more robust tick.Stop.
|
||
xgb: support for authenticated connections (thanks Firmansyah Adiputra)
|
||
xml: add Escape (thanks Stephen Weinberg)
|
||
</pre>
|
||
|
||
<h3 id="2010-01-13">2010-01-13</h3>
|
||
|
||
<pre>
|
||
This release is mainly bug fixes with a little new code.
|
||
There are no language changes.
|
||
|
||
build: $GOBIN should no longer be required in $PATH (thanks Devon H. O'Dell),
|
||
new package target "make bench" to run benchmarks
|
||
8g: faster float -> uint64 conversion (thanks Evan Shaw)
|
||
5g, 6g, 8g:
|
||
clean opnames.h to avoid stale errors (thanks Yongjian Xu),
|
||
a handful of small compiler fixes
|
||
5g, 6g, 8g, 5l, 6l, 8l: ignore $GOARCH, which is implied by name of tool
|
||
6prof: support for writing input files for google-perftools's pprof
|
||
asn1: fix a few structure-handling bugs
|
||
cgo: many bug fixes (thanks Devon H. O'Dell)
|
||
codereview: repeated "hg mail" sends "please take another look"
|
||
gob: reserve ids for future expansion
|
||
godoc: distinguish HTML generation from plain text HTML escaping (thanks Roger Peppe)
|
||
gofmt: minor bug fixes, removed -oldprinter flag
|
||
http: add CanonicalPath (thanks Ivan Krasin),
|
||
avoid header duplication in Response.Write,
|
||
correctly escape/unescape URL sections
|
||
io: new interface ReadByter
|
||
json: better error, pointer handling in Marshal (thanks Ivan Krasin)
|
||
libmach: disassembly of FUCOMI, etc (thanks Evan Shaw)
|
||
math: special cases for most functions and 386 hardware Sqrt (thanks Charles Dorian)
|
||
misc/dashboard: beginning of a build dashboard at godashboard.appspot.com.
|
||
misc/emacs: handling of new semicolon rules (thanks Austin Clements),
|
||
empty buffer bug fix (thanks Kevin Ballard)
|
||
misc/kate: highlighting improvements (tahnks Evan Shaw)
|
||
os/signal: add signal names: signal.SIGHUP, etc (thanks David Symonds)
|
||
runtime: preliminary Windows support (thanks Hector Chu),
|
||
preemption polling to reduce garbage collector pauses
|
||
scanner: new lightweight scanner package
|
||
template: bug fix involving spaces before a delimited block
|
||
test/bench: updated timings
|
||
time: new Format, Parse functions
|
||
</pre>
|
||
|
||
<h3 id="2010-01-05">2010-01-05</h3>
|
||
|
||
<pre>
|
||
This release is mainly bug fixes. There are no language changes.
|
||
|
||
6prof: now works on 386
|
||
8a, 8l: add FCOMI, FCOMIP, FUCOMI, and FUCOMIP (thanks Evan Shaw)
|
||
big: fix ProbablyPrime on small numbers
|
||
container/vector: faster []-based implementation (thanks Jan Mercl)
|
||
crypto/tls: extensions and Next Protocol Negotiation
|
||
gob: one encoding bug fix, one decoding bug fix
|
||
image/jpeg: support for RST markers
|
||
image/png: support for transparent paletted images
|
||
misc/xcode: improved support (thanks Ken Friedenbach)
|
||
net: return nil Conn on error from Dial (thanks Roger Peppe)
|
||
regexp: add Regexp.NumSubexp (thanks Peter Froehlich)
|
||
syscall: add Nanosleep on FreeBSD (thanks Devon H. O'Dell)
|
||
template: can use map in .repeated section
|
||
|
||
There is now a public road map, in the repository and online
|
||
at <a href="http://golang.org/doc/devel/roadmap.html">http://golang.org/doc/devel/roadmap.html</a>.
|
||
</pre>
|
||
|
||
<h3 id="2009-12-22">2009-12-22</h3>
|
||
|
||
<pre>
|
||
Since the last release there has been one large syntactic change to
|
||
the language, already discussed extensively on this list: semicolons
|
||
are now implied between statement-ending tokens and newline characters.
|
||
See http://groups.google.com/group/golang-nuts/t/5ee32b588d10f2e9 for
|
||
details.
|
||
|
||
By default, gofmt now parses and prints the new lighter weight syntax.
|
||
To convert programs written in the old syntax, you can use:
|
||
|
||
gofmt -oldparser -w *.go
|
||
|
||
Since everything was being reformatted anyway, we took the opportunity to
|
||
change the way gofmt does alignment. Now gofmt uses tabs at the start
|
||
of a line for basic code alignment, but it uses spaces for alignment of
|
||
interior columns. Thus, in an editor with a fixed-width font, you can
|
||
choose your own tab size to change the indentation, and no matter what
|
||
tab size you choose, columns will be aligned properly.
|
||
|
||
|
||
In addition to the syntax and formatting changes, there have been many
|
||
smaller fixes and updates:
|
||
|
||
6g,8g,5g: many bug fixes, better registerization,
|
||
build process fix involving mkbuiltin (thanks Yongjian Xu),
|
||
method expressions for concrete types
|
||
8l: support for Windows PE files (thanks Hector Chu)
|
||
bytes: more efficient Buffer handling
|
||
bytes, strings: new function Fields (thanks Andrey Mirtchovski)
|
||
cgo: handling of enums (thanks Moriyoshi Koizumi),
|
||
handling of structs with bit fields, multiple files (thanks Devon H. O'Dell),
|
||
installation of .so to non-standard locations
|
||
crypto/sha256: new package for SHA 256 (thanks Andy Davis)
|
||
encoding/binary: support for slices of fixed-size values (thanks Maxim Ushakov)
|
||
exp/vector: experimental alternate vector representation (thanks Jan Mercl)
|
||
fmt: %p for chan, map, slice types
|
||
gob: a couple more bug fixes
|
||
http: support for basic authentication (thanks Ivan Krasin)
|
||
image/jpeg: basic JPEG decoder
|
||
math: correct handling of Inf and NaN in Pow (thanks Charles Dorian)
|
||
misc/bash: completion file for bash (thanks Alex Ray)
|
||
os/signal: support for handling Unix signals (thanks David Symonds)
|
||
rand: Zipf-distributed random values (thanks William Josephson)
|
||
syscall: correct error return bug on 32-bit machines (thanks Christopher Wedgwood)
|
||
syslog: new package for writing to Unix syslog daemon (thanks Yves Junqueira)
|
||
template: will automatically invoke niladic methods
|
||
time: new ISO8601 format generator (thanks Ben Olive)
|
||
xgb: converted generator to new syntax (thanks Tor Andersson)
|
||
xml: better mapping of tag names to Go identifiers (thanks Kei Son),
|
||
better handling of unexpected EOF (thanks Arvindh Rajesh Tamilmani)
|
||
</pre>
|
||
|
||
<h3 id="2009-12-09">2009-12-09</h3>
|
||
|
||
<pre>
|
||
Since the last release there are two changes to the language:
|
||
|
||
* new builtin copy(dst, src) copies n = min(len(dst), len(src))
|
||
elements to dst from src and returns n. It works correctly
|
||
even if dst and src overlap. bytes.Copy is gone.
|
||
Convert your programs using:
|
||
gofmt -w -r 'bytes.Copy(d, s) -> copy(d, s)' *.go
|
||
|
||
* new syntax x[lo:] is shorthand for x[lo:len(x)].
|
||
Convert your programs using:
|
||
gofmt -w -r 'a[b:len(a)] -> a[b:]' *.go
|
||
|
||
In addition, there have been many smaller fixes and updates:
|
||
|
||
* 6g/8g/5g: many bug fixes
|
||
* 8g: fix 386 floating point stack bug (thanks Charles Dorian)
|
||
* all.bash: now works even when $GOROOT has spaces (thanks Sergio Luis O. B. Correia),
|
||
starting to make build work with mingw (thanks Hector Chu),
|
||
FreeBSD support (thanks Devon O'Dell)
|
||
* big: much faster on 386.
|
||
* bytes: new function IndexByte, implemented in assembly
|
||
new function Runes (thanks Peter Froehlich),
|
||
performance tuning in bytes.Buffer.
|
||
* codereview: various bugs fixed
|
||
* container/vector: New is gone; just declare a Vector instead.
|
||
call Resize to set len and cap.
|
||
* cgo: many bug fixes (thanks Eden Li)
|
||
* crypto: added MD4 (thanks Chris Lennert),
|
||
added XTEA (thanks Adrian O'Grady).
|
||
* crypto/tls: basic client
|
||
* exp/iterable: new functions (thanks Michael Elkins)
|
||
* exp/nacl: native client tree builds again
|
||
* fmt: preliminary performance tuning
|
||
* go/ast: more powerful Visitor (thanks Roger Peppe)
|
||
* gob: a few bug fixes
|
||
* gofmt: better handling of standard input, error reporting (thanks Fazlul Shahriar)
|
||
new -r flag for rewriting programs
|
||
* gotest: support for Benchmark functions (thanks Trevor Strohman)
|
||
* io: ReadFile, WriteFile, ReadDir now in separate package io/ioutil.
|
||
* json: new Marshal function (thanks Michael Hoisie),
|
||
better white space handling (thanks Andrew Skiba),
|
||
decoding into native data structures (thanks Sergey Gromov),
|
||
handling of nil interface values (thanks Ross Light).
|
||
* math: correct handling of sin/cos of large angles
|
||
* net: better handling of Close (thanks Devon O'Dell and Christopher Wedgwood)
|
||
support for UDP broadcast (thanks Jonathan Wills),
|
||
support for empty packets
|
||
* rand: top-level functions now safe to call from multiple goroutines
|
||
(thanks Roger Peppe).
|
||
* regexp: a few easy optimizations
|
||
* rpc: better error handling, a few bug fixes
|
||
* runtime: better signal handling on OS X, malloc fixes,
|
||
global channel lock is gone.
|
||
* sync: RWMutex now allows concurrent readers (thanks Péter Szabó)
|
||
* template: can use maps as data (thanks James Meneghello)
|
||
* unicode: updated to Unicode 5.2.
|
||
* websocket: new package (thanks Fumitoshi Ukai)
|
||
* xgb: preliminary X Go Bindings (thanks Tor Andersson)
|
||
* xml: fixed crash (thanks Vish Subramanian)
|
||
* misc: bbedit config (thanks Anthony Starks),
|
||
kate config (thanks Evan Shaw)
|
||
</pre>
|