From 7ef0eb1cba873c0d3d1da6df9b6c98ab2882d35d Mon Sep 17 00:00:00 2001
From: Russ Cox  
-Go 1.3 now includes experimental support for DragonFly BSD on the Support for DragonFly BSD
 
 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.
-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.
 
-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.
 
 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.
 
.m) through 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.
+
-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.
 
 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.
 
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.
 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.
 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.
 
 
 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.