Skip to content

Commit 4e9b3ba

Browse files
committed
doc/go1.12: finish most Go 1.12 release notes
Change-Id: I598c9a2031001a6780b75c31d9015c880741b170 Reviewed-on: https://go-review.googlesource.com/c/154637 Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent c040786 commit 4e9b3ba

File tree

1 file changed

+63
-47
lines changed

1 file changed

+63
-47
lines changed

doc/go1.12.html

+63-47
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,17 @@ <h2 id="introduction">DRAFT RELEASE NOTES - Introduction to Go 1.12</h2>
2626

2727
<p>
2828
The latest Go release, version 1.12, arrives six months after <a href="go1.11">Go 1.11</a>.
29-
Most of its changes are in TODO.
29+
Most of its changes are in the implementation of the toolchain, runtime, and libraries.
3030
As always, the release maintains the Go 1 <a href="/doc/go1compat">promise of compatibility</a>.
3131
We expect almost all Go programs to continue to compile and run as before.
3232
</p>
3333

34+
<p>
35+
There is a <a href="https://golang.org/issue/27993"><strong>known issue</strong> in
36+
the garbage collector</a> that can cause rare crashes. It is being investigated.
37+
Please <a href="https://golang.org/issue/new">report</a> any issues you encounter.
38+
</p>
39+
3440
<h2 id="language">Changes to the language</h2>
3541

3642
<p>
@@ -39,30 +45,30 @@ <h2 id="language">Changes to the language</h2>
3945

4046
<h2 id="ports">Ports</h2>
4147

42-
<h3 id="freebsd">FreeBSD</h3>
48+
<p><!-- CL 138675 -->
49+
The race detector is now supported on <code>linux/arm64</code>.
50+
</p>
4351

44-
<p>
52+
<p id="freebsd">
4553
Go 1.12 is the last release that is supported on FreeBSD 10.x, which has
4654
already reached end-of-life. Go 1.13 will require FreeBSD 11.2+ or FreeBSD
4755
12.0+.
4856
</p>
4957

50-
<h3 id="darwin">Darwin</h3>
51-
52-
<p>
53-
Go 1.12 is the last release that will run on macOS 10.10 Yosemite.
54-
Go 1.13 will require macOS 10.11 El Capitan or later.
58+
<p><!-- CL 146898 -->
59+
cgo is now supported on <code>linux/ppc64</code>.
5560
</p>
5661

57-
<p><!-- CL 141639 -->
58-
<code>libSystem</code> is now used when making syscalls on Darwin, ensuring forward-compatibility
59-
with future versions of macOS.
62+
<p id="hurd"><!-- CL 146023 -->
63+
<code>hurd</code> is now a recognized value for <code>GOOS</code>, reserved
64+
for the GNU/Hurd system for use with <code>gccgo</code>.
6065
</p>
6166

6267
<h3 id="windows">Windows</h3>
6368

6469
<p>
65-
TODO: status of ARM32 port?
70+
Go's new <code>windows/arm</code> port supports running Go on Windows 10
71+
IoT Core on 32-bit ARM chips such as the Raspberry Pi 3.
6672
</p>
6773

6874
<h3 id="aix">AIX</h3>
@@ -71,11 +77,16 @@ <h3 id="aix">AIX</h3>
7177
Go now supports AIX 7.2 and later on POWER8 architectures (<code>aix/ppc64</code>). External linking, cgo, pprof and the race detector aren't yet supported.
7278
</p>
7379

74-
<h3 id="hurd">Hurd</h3>
80+
<h3 id="darwin">Darwin</h3>
7581

76-
<p><!-- CL 146023 -->
77-
<code>hurd</code> is now a recognized value for <code>GOOS</code>, reserved
78-
for the GNU/Hurd system for use with <code>gccgo</code>.
82+
<p>
83+
Go 1.12 is the last release that will run on macOS 10.10 Yosemite.
84+
Go 1.13 will require macOS 10.11 El Capitan or later.
85+
</p>
86+
87+
<p><!-- CL 141639 -->
88+
<code>libSystem</code> is now used when making syscalls on Darwin,
89+
ensuring forward-compatibility with future versions of macOS and iOS.
7990
</p>
8091

8192
<h2 id="tools">Tools</h2>
@@ -221,7 +232,7 @@ <h3 id="compiler">Compiler toolchain</h3>
221232
in an error like "relocation target not defined for ABIInternal (but
222233
is defined for ABI0)", please refer to help section of the ABI
223234
design document.
224-
TODO(austin): Link to the design doc.
235+
<!-- TODO(austin): Link to the design doc. -->
225236
</p>
226237

227238
<p><!-- CL 145179 -->
@@ -230,6 +241,18 @@ <h3 id="compiler">Compiler toolchain</h3>
230241
printing and variable location information.
231242
</p>
232243

244+
<p><!-- CL 61511 -->
245+
Go programs now also maintain stack frame pointers on <code>linux/arm64</code>
246+
for the benefit of profiling tools like <code>perf</code>. The frame pointer
247+
maintenance has a small run-time overhead that varies but averages around 3%.
248+
To build a toolchain that does not use frame pointers, set
249+
<code>GOEXPERIMENT=noframepointer</code> when running <code>make.bash</code>.
250+
</p>
251+
252+
<p><!-- CL 142717 -->
253+
The obsolete "safe" compiler mode (enabled by the <code>-u</code> gcflag) has been removed.
254+
</p>
255+
233256
<h3 id="godoc"><code>godoc</code> and <code>go</code> <code>doc</code></h3>
234257

235258
<p>
@@ -253,6 +276,14 @@ <h3 id="trace">Trace</h3>
253276
latency and throughput.
254277
</p>
255278

279+
<h3 id="assembler">Assembler</h3>
280+
281+
<p><!-- CL 147218 -->
282+
On <code>arm64</code>, the platform register was renamed from
283+
<code>R18</code> to <code>R18_PLATFORM</code> to prevent accidental
284+
use, as the OS could choose to reserve this register.
285+
</p>
286+
256287
<h2 id="runtime">Runtime</h2>
257288

258289
<p><!-- CL 138959 -->
@@ -336,12 +367,8 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
336367
in mind.
337368
</p>
338369

339-
<!-- CL 147218: https://golang.org/cl/147218: cmd/asm: rename R18 to R18_PLATFORM on ARM64 -->
340-
<!-- CL 116275: https://golang.org/cl/116275: cmd/compile: avoid string allocations when map key is struct or array literal -->
341-
<!-- CL 142717: https://golang.org/cl/142717: cmd/compile: remove obsolete "safe" mode -->
342-
<!-- CL 146058: https://golang.org/cl/146058: It is invalid to convert a nil unsafe.Pointer to uintptr and back, with arithmetic.: cmd/compile: assume unsafe pointer arithmetic generates non-nil results -->
343-
<!-- CL 146898: https://golang.org/cl/146898: cmd/link, runtime: add initial cgo support for ppc64 -->
344-
<!-- CL 115677: https://golang.org/cl/115677: cmd/vet: check embedded field tags too -->
370+
<!-- TODO: CL 115677: https://golang.org/cl/115677: cmd/vet: check embedded field tags too -->
371+
345372
<dl id="bufio"><dt><a href="/pkg/bufio/">bufio</a></dt>
346373
<dd>
347374
<p><!-- CL 149297 -->
@@ -352,14 +379,6 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
352379

353380
</dl><!-- bufio -->
354381

355-
<dl id="build"><dt><a href="/pkg/build/">build</a></dt>
356-
<dd>
357-
<p><!-- CL 61511 -->
358-
TODO: <a href="https://golang.org/cl/61511">https://golang.org/cl/61511</a>: support frame-pointer for arm64
359-
</p>
360-
361-
</dl><!-- build -->
362-
363382
<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
364383
<dd>
365384
<p><!-- CL 137855 -->
@@ -375,14 +394,6 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
375394

376395
</dl><!-- bytes -->
377396

378-
<dl id="cmd,runtime"><dt><a href="/pkg/cmd,runtime/">cmd,runtime</a></dt>
379-
<dd>
380-
<p><!-- CL 138675 -->
381-
TODO: <a href="https://golang.org/cl/138675">https://golang.org/cl/138675</a>: enable race detector on arm64
382-
</p>
383-
384-
</dl><!-- cmd,runtime -->
385-
386397
<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
387398
<dd>
388399
<p><!-- CL 139419 -->
@@ -501,14 +512,6 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
501512

502513
</dl><!-- image/png -->
503514

504-
<dl id="internal/poll"><dt><a href="/pkg/internal/poll/">internal/poll</a></dt>
505-
<dd>
506-
<p><!-- CL 130676 -->
507-
TODO: <a href="https://golang.org/cl/130676">https://golang.org/cl/130676</a>: use F_FULLFSYNC fcntl for FD.Fsync on OS X
508-
</p>
509-
510-
</dl><!-- internal/poll -->
511-
512515
<dl id="io"><dt><a href="/pkg/io/">io</a></dt>
513516
<dd>
514517
<p><!-- CL 139457 -->
@@ -620,6 +623,11 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
620623
on most Unix systems.
621624
</p>
622625

626+
<p><!-- CL 130676 -->
627+
<a href="/pkg/os/#File.Sync"><code>File.Sync</code></a> now uses <code>F_FULLFSYNC</code> on macOS
628+
to properly flush content to permanent storage. Note that this might have a negative performance impact.
629+
</p>
630+
623631
</dl><!-- os -->
624632

625633
<dl id="path/filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
@@ -790,3 +798,11 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
790798

791799
</dl><!-- text/template -->
792800

801+
<dl id="unsafe"><dt><a href="/pkg/unsafe/">unsafe</a></dt>
802+
<dd>
803+
<p><!-- CL 146058 -->
804+
It is invalid to convert a nil <code>unsafe.Pointer</code> to <code>uintptr</code> and back with arithmetic.
805+
(This was already invalid, but will now cause the compiler to misbehave.)
806+
</p>
807+
808+
</dl><!-- unsafe -->

0 commit comments

Comments
 (0)