diff --git a/doc/go1.3.html b/doc/go1.3.html index e13faa1b08..056c4cbe81 100644 --- a/doc/go1.3.html +++ b/doc/go1.3.html @@ -117,6 +117,26 @@ This means that a non-pointer Go value such as an integer will never be mistaken pointer and prevent unused memory from being reclaimed.
+
+Starting with Go 1.3, the runtime assumes that values with pointer type
+contain pointers and other values do not.
+This assumption is fundamental to the precise behavior of both stack expansion
+and garbage collection.
+Programs that use package unsafe
+to store uintptrs in pointer values are illegal and will crash if the runtime detects the behavior.
+Programs that use package unsafe to store pointers
+in uintptr values are also illegal but more difficult to diagnose during execution.
+Because the pointers are hidden from the runtime, a stack expansion or garbage collection
+may reclaim the memory they point at, creating
+dangling pointers.
+
+Updating: Code that converts a uintptr value stored in memory
+to unsafe.Pointer is illegal and must be rewritten.
+Such code can be identified by go vet.
+