aboutsummaryrefslogtreecommitdiff
path: root/src/unsafe
AgeCommit message (Collapse)Author
2024-07-11unsafe: say "functions like syscall.Syscall", not only SyscallIan Lance Taylor
Fixes #68301 Change-Id: I9d7f623370705ab2ad4c49489b5a89162467f22a Reviewed-on: https://go-review.googlesource.com/c/go/+/596936 Commit-Queue: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Keith Randall <khr@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com>
2024-07-08unsafe: clarify when String bytes can be modifiedIan Lance Taylor
They can be modified when the string returned by String no longer exists. Fixes #68300 Change-Id: I526a068151f7aad1ab6827504b51a84e7399cafe Reviewed-on: https://go-review.googlesource.com/c/go/+/596955 Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Commit-Queue: Ian Lance Taylor <iant@golang.org> Auto-Submit: Ian Lance Taylor <iant@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-05-21unsafe: document the behavior of Sizeof on an interfaceNayef Ghattas
unsafe.Sizeof() can return a different value than reflect.TypeOf(x).Size() for a variable of an interface static type. This change points out the difference in behavior, by emphasizing that unsafe.Sizeof() only returns the size of the interface value itself, rather than the size of the value stored in the interface. Fixes #67465. Change-Id: Ia6a809debb7970be171b0fc186209e5d161784e7 Reviewed-on: https://go-review.googlesource.com/c/go/+/586275 Auto-Submit: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Carlos Amedee <carlos@golang.org> Reviewed-by: Felix Geisendörfer <felix.geisendoerfer@datadoghq.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Commit-Queue: Ian Lance Taylor <iant@golang.org>
2024-03-21unsafe: add available godoc linkcui fliter
Change-Id: I1391ec36063dc609a61cc3b37827a56c7cf97c03 Reviewed-on: https://go-review.googlesource.com/c/go/+/539839 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: qiulaidongfeng <2645477756@qq.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@golang.org>
2022-11-09unsafe: add docs for SliceData, String, and StringDataMatthew Dempsky
Updates #53003. Change-Id: I076d1eb4bd0580002ad8008f3ca213c5edc951ee Reviewed-on: https://go-review.googlesource.com/c/go/+/427095 Run-TryBot: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
2022-07-21unsafe: document when Sizeof/Offsetof/Alignof are not constantIan Lance Taylor
They are not constant if their arguments have types that are variable size. Fixes #53921 Change-Id: I2d46754c27f55a281331c099a11ea3cd85ec4e89 Reviewed-on: https://go-review.googlesource.com/c/go/+/417917 Auto-Submit: Ian Lance Taylor <iant@google.com> Run-TryBot: Ian Lance Taylor <iant@google.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Rob Pike <r@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com>
2022-04-11all: gofmt main repoRuss Cox
[This CL is part of a sequence implementing the proposal #51082. The design doc is at https://go.dev/s/godocfmt-design.] Run the updated gofmt, which reformats doc comments, on the main repository. Vendored files are excluded. For #51082. Change-Id: I7332f099b60f716295fb34719c98c04eb1a85407 Reviewed-on: https://go-review.googlesource.com/c/go/+/384268 Reviewed-by: Jonathan Amsterdam <jba@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2022-04-04unsafe: document that Sizeof includes field alignmentIan Lance Taylor
Fixes #52018 Change-Id: I6d06d5b5279b9bdc899b0ad43488577d3c0b94be Reviewed-on: https://go-review.googlesource.com/c/go/+/397516 Trust: Ian Lance Taylor <iant@golang.org> Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com> Reviewed-by: Rob Pike <r@golang.org>
2022-04-01all: remove trailing blank doc comment linesRuss Cox
A future change to gofmt will rewrite // Doc comment. // func f() to // Doc comment. func f() Apply that change preemptively to all doc comments. For #51082. Change-Id: I4023e16cfb0729b64a8590f071cd92f17343081d Reviewed-on: https://go-review.googlesource.com/c/go/+/384259 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-03-15all: untab /* */ doc commentsRuss Cox
A long time ago, gofmt insisted on inserting tabs in /* */ comments at the top level of the file, like this: /* Package doc comment. */ package p Gofmt still insists on the tab for comments not at top level, but it has relaxed the rules about top-level comments. A few very old doc comments are indented, left over from the old rule. We are considering formatting doc comments, and so to make everything consistent, standardize on unindented doc comments by removing tabs in the few doc comments that are still indented this way. Also update some cmd/gofmt testdata to match. Change-Id: I293742e39b52f8a48ec41f72ca4acdafa7ce43bc Reviewed-on: https://go-review.googlesource.com/c/go/+/384261 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2021-07-02spec, unsafe: clarify unsafe.Slice docsIan Lance Taylor
For #19367 Change-Id: If0ff8ddba3b6b48e2e198cf3653e73284c7572a3 Reviewed-on: https://go-review.googlesource.com/c/go/+/332409 Trust: Ian Lance Taylor <iant@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Griesemer <gri@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
2021-06-28spec: change unsafe.Slice((*T)(nil), 0) to return []T(nil)Matthew Dempsky
Updates #46742. Change-Id: I044933a657cd1a5cdb29863e49751df5fe9c258a Reviewed-on: https://go-review.googlesource.com/c/go/+/331069 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Trust: Matthew Dempsky <mdempsky@google.com> Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
2021-04-22spec: add unsafe.Add and unsafe.SliceMatthew Dempsky
Updates #19367. Updates #40481. Change-Id: I578066ad68d2cd6bea50df1a534cf799e4404a7f Reviewed-on: https://go-review.googlesource.com/c/go/+/312212 Trust: Matthew Dempsky <mdempsky@google.com> Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2018-11-14cmd/compile: assume unsafe pointer arithmetic generates non-nil resultsKeith Randall
I've never seen a case where unsafe arithmetic is used to generate a nil. (Something like var x uintptr; unsafe.Pointer(x - x).) We can assume that if someone is doing arithmetic with pointers, the result will be non-nil. Our unsafe rules already forbid this, although we should be more explicit. RELNOTE=It is invalid to convert a nil unsafe.Pointer to uintptr and back, with arithmetic. (This was already invalid, but this statement has been added for clarification.) Fixes #27180 Change-Id: I1880b7725a9fd99e4613799930fdad9aaa99e8f0 Reviewed-on: https://go-review.googlesource.com/c/146058 Reviewed-by: Austin Clements <austin@google.com>
2018-10-11unsafe: document that Alignof, Offsetof, and Sizeof return a constantRob Pike
Nothing is changing but the documentation, which did not mention this property of these functions. Fixes #27587. Change-Id: I75bcee4a1dd9ec8cd82826c9a6e02ba7d599f719 Reviewed-on: https://go-review.googlesource.com/c/141377 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-02-26unsafe: fix reference to string headerIan Lance Taylor
Fixes #24115 Change-Id: I89d3d5a9c0916fd2e21fe5930549c4129de8ab48 Reviewed-on: https://go-review.googlesource.com/96983 Reviewed-by: Giovanni Bajo <rasky@develer.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-08-26all: remove some double spaces from commentsDaniel Martí
Went mainly for the ones that make no sense, such as the ones mid-sentence or after commas. Change-Id: Ie245d2c19cc7428a06295635cf6a9482ade25ff0 Reviewed-on: https://go-review.googlesource.com/57293 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-07unsafe: remove incorrect type conversion in docsIan Lance Taylor
Fixes #17818. Change-Id: Id7242b0bdd5e1db254b44ae29900fc4f3362c743 Reviewed-on: https://go-review.googlesource.com/32828 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-08-18unsafe: document use of &^ to round/align pointersJosh Bleecher Snyder
Follow-up to CL 27156 Change-Id: I4f1cfced2dced9c9fc8a05bbc00ec4229e85c5c9 Reviewed-on: https://go-review.googlesource.com/27314 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-03-02all: single space after period.Brad Fitzpatrick
The tree's pretty inconsistent about single space vs double space after a period in documentation. Make it consistently a single space, per earlier decisions. This means contributors won't be confused by misleading precedence. This CL doesn't use go/doc to parse. It only addresses // comments. It was generated with: $ perl -i -npe 's,^(\s*// .+[a-z]\.) +([A-Z]),$1 $2,' $(git grep -l -E '^\s*//(.+\.) +([A-Z])') $ go test go/doc -update Change-Id: Iccdb99c37c797ef1f804a94b22ba5ee4b500c4f7 Reviewed-on: https://go-review.googlesource.com/20022 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Dave Day <djd@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-01-29unsafe: fix typo in documentation of valid Pointer->uintptr->Pointer conversionsRahul Chaudhry
Change-Id: Ib669d5241372326a46361ee096570e960b7a957f Reviewed-on: https://go-review.googlesource.com/19082 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-01-27unsafe: clarify wording in recent Alignof changesIan Lance Taylor
Change-Id: I595379d2f02b0a43735f0375758e4997ce3b64a7 Reviewed-on: https://go-review.googlesource.com/18986 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-01-27unsafe: clarify that Alignof returns required alignmentIan Lance Taylor
Also document the special behavior of Alignof(s.f), and mention the correspondence between Alignof and reflect.Type.{Align,FieldAlign}. Change-Id: I6f81047a04c86887f1b1164473225616cae45a26 Reviewed-on: https://go-review.googlesource.com/18949 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2016-01-22unsafe: document valid uses of PointerRuss Cox
Add docs for valid uses of Pointer. Then document change made for #13372 in CL 18584. Fixes #8994. Change-Id: Ifba71e5aeafd11f684aed0b7ddacf3c8ec07c580 Reviewed-on: https://go-review.googlesource.com/18640 Reviewed-by: Alan Donovan <adonovan@google.com> Reviewed-by: Robert Griesemer <gri@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Rick Hudson <rlh@golang.org>
2015-01-28unsafe: minor doc string improvementsRobert Griesemer
Change-Id: I369723c7a65f9a72c60b55704cebf40d78cf4f75 Reviewed-on: https://go-review.googlesource.com/3444 Reviewed-by: Alan Donovan <adonovan@google.com>
2015-01-27unsafe: fix doc stringsRobert Griesemer
Change-Id: I73a416291a2374dbb8ce8586f24059f8dce56529 Reviewed-on: https://go-review.googlesource.com/3360 Reviewed-by: Alan Donovan <adonovan@google.com>
2014-10-24unsafe: document that unsafe programs are not protectedRob Pike
The compatibility guideline needs to be clear about this even though it means adding a clause that was not there from the beginning. It has always been understood, so this isn't really a change in policy, just in its expression. LGTM=bradfitz, gri, rsc R=golang-codereviews, bradfitz, gri, rsc CC=golang-codereviews https://golang.org/cl/162060043
2014-09-08build: move package sources from src/pkg to srcRuss Cox
Preparation was in CL 134570043. This CL contains only the effect of 'hg mv src/pkg/* src'. For more about the move, see golang.org/s/go14nopkg.