From 7ef0eb1cba873c0d3d1da6df9b6c98ab2882d35d Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 20 May 2014 13:38:45 -0400 Subject: [PATCH] doc/go1.3.html: mention cgo [0]byte bug fix fallout Fixes #7958. LGTM=r R=r CC=golang-codereviews https://golang.org/cl/91590044 --- doc/go1.3.html | 73 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/doc/go1.3.html b/doc/go1.3.html index db7425ccdb..4c59f212cd 100644 --- a/doc/go1.3.html +++ b/doc/go1.3.html @@ -36,7 +36,8 @@ as of Go 1.3 it is not supported by Go either.

Support for DragonFly BSD

-Go 1.3 now includes experimental support for DragonFly BSD on the amd64 (64-bit x86) and 386 (32-bit x86) architectures. It uses DragonFly BSD 3.6 or above. +Go 1.3 now includes experimental support for DragonFly BSD on the amd64 (64-bit x86) and 386 (32-bit x86) architectures. +It uses DragonFly BSD 3.6 or above.

Support for FreeBSD

@@ -52,8 +53,8 @@ As of Go 1.3, support for Go on FreeBSD requires that the kernel be compiled wit

-In concert with the switch to EABI syscalls for ARM platforms, Go 1.3 will run only on -FreeBSD 10. The x86 platforms, 386 and amd64, are unaffected. +In concert with the switch to EABI syscalls for ARM platforms, Go 1.3 will run only on FreeBSD 10. +The x86 platforms, 386 and amd64, are unaffected.

Support for Native Client

@@ -83,13 +84,15 @@ As of Go 1.3, support for Go on OpenBSD requires OpenBSD 5.5 or above.

Support for Plan 9

-Go 1.3 now includes experimental support for Plan 9 on the 386 (32-bit x86) architecture. It requires the Tsemacquire syscall, which has been in Plan 9 since June, 2012. +Go 1.3 now includes experimental support for Plan 9 on the 386 (32-bit x86) architecture. +It requires the Tsemacquire syscall, which has been in Plan 9 since June, 2012.

Support for Solaris

-Go 1.3 now includes experimental support for Solaris on the amd64 (64-bit x86) architecture. It requires illumos, Solaris 11 or above. +Go 1.3 now includes experimental support for Solaris on the amd64 (64-bit x86) architecture. +It requires illumos, Solaris 11 or above.

Changes to the memory model

@@ -228,7 +231,8 @@ of the specified target, but not the target itself.

Cross compiling with cgo enabled -is now supported. The CC_FOR_TARGET and CXX_FOR_TARGET environment +is now supported. +The CC_FOR_TARGET and CXX_FOR_TARGET environment variables are used when running all.bash to specify the cross compilers for C and C++ code, respectively.

@@ -238,11 +242,36 @@ Finally, the go command now supports packages that import Objective-C files (suffixed .m) through cgo.

+

Changes to cgo

+ +

+The cmd/cgo command, +which processes import "C" declarations in Go packages, +has corrected a serious bug that may cause some packages to stop compiling. +Previously, all pointers to incomplete struct types translated to the Go type *[0]byte, +with the effect that the Go compiler could not diagnose passing one kind of struct pointer +to a function expecting another. +Go 1.3 corrects this mistake by translating each different +incomplete struct to a different named type. +However, some Go code took advantage of this bug to pass (for example) a *C.FILE +from one package to another. +This is not legal and no longer works: in general Go packages +should avoid exposing C types and names in their APIs. +

+ +

+Updating: Code confusing pointers to incomplete types or +passing them across package boundaries will no longer compile +and must be rewritten. +If the conversion is correct and must be preserved, +use an explicit conversion via unsafe.Pointer. +

+

SWIG 3.0 required for programs that use SWIG

-For Go programs that use SWIG, SWIG version 3.0 is now required. The -cmd/go command will now link the +For Go programs that use SWIG, SWIG version 3.0 is now required. +The cmd/go command will now link the SWIG generated object files directly into the binary, rather than building and linking with a shared library.

@@ -252,8 +281,8 @@ building and linking with a shared library.

In the gc tool chain, the assemblers now use the same command-line flag parsing rules as the Go flag package, a departure -from the traditional Unix flag parsing. This may affect scripts that invoke -the tool directly. +from the traditional Unix flag parsing. +This may affect scripts that invoke the tool directly. For example, go tool 6a -SDfoo must now be written go tool 6a -S -D foo. @@ -304,7 +333,8 @@ is now about 40% faster.

  • The regular expression package regexp is now significantly faster for certain simple expressions due to the implementation of -a second, one-pass execution engine. The choice of which engine to use is automatic; +a second, one-pass execution engine. +The choice of which engine to use is automatic; the details are hidden from the user.
  • @@ -364,7 +394,8 @@ See the relevant package documentation for more information about each change.
  • The complex power function, Pow, -now specifies the behavior when the first argument is zero. It was undefined before. +now specifies the behavior when the first argument is zero. +It was undefined before. The details are in the documentation for the function.
  • @@ -406,8 +437,8 @@ The net/http package now supports disabling HTTP keep-alive connections on the server with Server.SetKeepAlivesEnabled. The default continues to be that the server does keep-alive (reuses -connections for multiple requests) by default. Only -resource-constrained servers or those in the process of graceful +connections for multiple requests) by default. +Only resource-constrained servers or those in the process of graceful shutdown will want to disable them. @@ -415,7 +446,8 @@ shutdown will want to disable them. The net/http package adds an optional Transport.TLSHandshakeTimeout setting to cap the amount of time HTTP client requests will wait for -TLS handshakes to complete. It's now also set by default +TLS handshakes to complete. +It's now also set by default on DefaultTransport. @@ -424,8 +456,8 @@ The net/http package's DefaultTransport, used by the HTTP client code, now enables TCP -keep-alives by -default. Other Transport +keep-alives by default. +Other Transport values with a nil Dial field continue to function the same as before: no TCP keep-alives are used. @@ -437,7 +469,8 @@ keep-alives for incoming server requests when ListenAndServe or ListenAndServeTLS -are used. When a server is started otherwise, TCP keep-alives are not enabled. +are used. +When a server is started otherwise, TCP keep-alives are not enabled.
  • @@ -445,8 +478,8 @@ The net/http package now provides an optional Server.ConnState callback to hook various phases of a server connection's lifecycle -(see ConnState). This -can be used to implement rate limiting or graceful shutdown. +(see ConnState). +This can be used to implement rate limiting or graceful shutdown.
  • -- 2.48.1