Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

api: audit for Go 1.13 go1.13.txt #32813

Closed
rsc opened this issue Jun 27, 2019 · 17 comments
Closed

api: audit for Go 1.13 go1.13.txt #32813

rsc opened this issue Jun 27, 2019 · 17 comments
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done. release-blocker
Milestone

Comments

@rsc
Copy link
Contributor

rsc commented Jun 27, 2019

next.txt was copied to go1.13.txt but I am not sure an audit of that API happened.
Here is a tracking bug for it, with the netbsd-amd64 syscall additions removed (they're probably fine).

Missing approvals

debug/elf

Added in CL 184099:

  • pkg debug/elf, type Symbol struct, Library string
  • pkg debug/elf, type Symbol struct, Version string

errors

  • pkg errors, func As(error, interface{}) bool
  • pkg errors, func Is(error, error) bool
  • pkg errors, func Unwrap(error) error
  • pkg encoding/csv, method (*ParseError) Unwrap() error
  • pkg encoding/json, method (*MarshalerError) Unwrap() error
  • pkg net, method (*DNSConfigError) Unwrap() error
  • pkg net, method (*DNSError) Is(error) bool
  • pkg net, method (*OpError) Is(error) bool
  • pkg net, method (*OpError) Unwrap() error
  • pkg net, type DNSError struct, IsNotFound bool
  • pkg net/url, method (*Error) Unwrap() error
  • pkg os/exec, method (*Error) Unwrap() error
  • pkg os, method (*LinkError) Unwrap() error
  • pkg os, method (*PathError) Unwrap() error
  • pkg os, method (*SyscallError) Unwrap() error
  • pkg os, var ErrTemporary error
  • pkg os, var ErrTimeout error
  • pkg syscall, method (Errno) Is(error) bool
  • pkg text/template, method (ExecError) Unwrap() error

syscall

Added in CL 174197:

  • pkg syscall (windows-386), type SysProcAttr struct, ProcessAttributes *SecurityAttributes
  • pkg syscall (windows-386), type SysProcAttr struct, ThreadAttributes *SecurityAttributes
  • pkg syscall (windows-amd64), type SysProcAttr struct, ProcessAttributes *SecurityAttributes
  • pkg syscall (windows-amd64), type SysProcAttr struct, ThreadAttributes *SecurityAttributes

text/scanner

Likely revert:

  • pkg text/scanner, const AllowDigitSeparators = 1024
  • pkg text/scanner, const AllowDigitSeparators ideal-int

Approved But Missing From Release Notes

Post-approval: gri:

  • pkg text/scanner, const GoTokens = 2036

Approved in #29835:

  • pkg database/sql, method (*Conn) Raw(func(interface{}) error) error

Approved in #30064:

  • pkg go/token, func IsExported(string) bool
  • pkg go/token, func IsIdentifier(string) bool
  • pkg go/token, func IsKeyword(string) bool

Approved in #30638:

  • pkg os/exec, method (*Cmd) String() string

CL 175337 (adding RFC constant; post-approval: rsc):

  • pkg net/http, const SameSiteNoneMode = 4
  • pkg net/http, const SameSiteNoneMode SameSite

For #29655 (adding RFC constant; post-approval: rsc):

  • pkg net/http, const StatusEarlyHints = 103
  • pkg net/http, const StatusEarlyHints ideal-int

For #27945, approved separately:

  • pkg unicode, const Version = "11.0.0"
  • pkg unicode, var Dogra *RangeTable
  • pkg unicode, var Gunjala_Gondi *RangeTable
  • pkg unicode, var Hanifi_Rohingya *RangeTable
  • pkg unicode, var Makasar *RangeTable
  • pkg unicode, var Medefaidrin *RangeTable
  • pkg unicode, var Old_Sogdian *RangeTable
  • pkg unicode, var Sogdian *RangeTable

Approved

I am not sure we have a bug for the creation of crypto/ed25519, but I approved it at the time and it is in the release notes. That covers:

  • pkg crypto/ed25519, const PrivateKeySize = 64
  • pkg crypto/ed25519, const PrivateKeySize ideal-int
  • pkg crypto/ed25519, const PublicKeySize = 32
  • pkg crypto/ed25519, const PublicKeySize ideal-int
  • pkg crypto/ed25519, const SeedSize = 32
  • pkg crypto/ed25519, const SeedSize ideal-int
  • pkg crypto/ed25519, const SignatureSize = 64
  • pkg crypto/ed25519, const SignatureSize ideal-int
  • pkg crypto/ed25519, func GenerateKey(io.Reader) (PublicKey, PrivateKey, error)
  • pkg crypto/ed25519, func NewKeyFromSeed([]uint8) PrivateKey
  • pkg crypto/ed25519, func Sign(PrivateKey, []uint8) []uint8
  • pkg crypto/ed25519, func Verify(PublicKey, []uint8, []uint8) bool
  • pkg crypto/ed25519, method (PrivateKey) Public() crypto.PublicKey
  • pkg crypto/ed25519, method (PrivateKey) Seed() []uint8
  • pkg crypto/ed25519, method (PrivateKey) Sign(io.Reader, []uint8, crypto.SignerOpts) ([]uint8, error)
  • pkg crypto/ed25519, type PrivateKey []uint8
  • pkg crypto/ed25519, type PublicKey []uint8
  • pkg crypto/tls, const Ed25519 = 2055
  • pkg crypto/tls, const Ed25519 SignatureScheme
  • pkg crypto/x509, const Ed25519 = 4
  • pkg crypto/x509, const Ed25519 PublicKeyAlgorithm
  • pkg crypto/x509, const PureEd25519 = 16
  • pkg crypto/x509, const PureEd25519 SignatureAlgorithm

Post-approval: austin, thanm (comment below)

  • pkg debug/dwarf, method (*UnsupportedType) Common() *CommonType
  • pkg debug/dwarf, method (*UnsupportedType) Size() int64
  • pkg debug/dwarf, method (*UnsupportedType) String() string
  • pkg debug/dwarf, type UnsupportedType struct
  • pkg debug/dwarf, type UnsupportedType struct, embedded CommonType
  • pkg debug/dwarf, type UnsupportedType struct, Tag Tag

Post-approval: gri (comment below)

  • pkg go/constant, func Make(interface{}) Value
  • pkg go/constant, func Val(Value) interface{}
  • pkg go/types, func CheckExpr(*token.FileSet, *Package, token.Pos, ast.Expr, *Info) error

Approved in #25805:

  • pkg bytes, func ToValidUTF8([]uint8, []uint8) []uint8
  • pkg strings, func ToValidUTF8(string, string) string

Approved in #31231:

  • pkg database/sql, method (*NullInt32) Scan(interface{}) error
  • pkg database/sql, method (NullInt32) Value() (driver.Value, error)
  • pkg database/sql, method (*NullTime) Scan(interface{}) error
  • pkg database/sql, method (NullTime) Value() (driver.Value, error)
  • pkg database/sql, type NullInt32 struct
  • pkg database/sql, type NullInt32 struct, Int32 int32
  • pkg database/sql, type NullInt32 struct, Valid bool
  • pkg database/sql, type NullTime struct
  • pkg database/sql, type NullTime struct, Time time.Time
  • pkg database/sql, type NullTime struct, Valid bool

Approved in #28327:

  • pkg log, func Writer() io.Writer

Approved in #29578:

  • pkg math/big, method (*Int) TrailingZeroBits() uint

Approved in #29579:

  • pkg math/big, method (*Rat) SetUint64(uint64) *Rat

Approved in #23378:

  • pkg net, type ListenConfig struct, KeepAlive time.Duration

Approved in #30694:

  • pkg net/http, type Server struct, BaseContext func(net.Listener) context.Context
  • pkg net/http, type Server struct, ConnContext func(context.Context, net.Conn) context.Context

For #29915 (post-approval: rsc):

  • pkg net/http, method (Header) Clone() Header

For #23544 (post-approval: rsc):

  • pkg net/http, func NewRequestWithContext(context.Context, string, string, io.Reader) (*Request, error)
  • pkg net/http, method (*Request) Clone(context.Context) *Request

For #26013 (post-approval: rsc):

  • pkg net/http, method (*Transport) Clone() *Transport

For #27011 (post-approval: rsc):

  • pkg net/http, type Transport struct, ForceAttemptHTTP2 bool

For #22618 (post-approval: rsc):

  • pkg net/http, type Transport struct, ReadBufferSize int
  • pkg net/http, type Transport struct, WriteBufferSize int

These netbsd-ard64 are clearly OK (and all the syscall and log/syslog lines I have omitted):

  • pkg path/filepath (netbsd-arm64-cgo), const ListSeparator = 58
  • pkg path/filepath (netbsd-arm64-cgo), const Separator = 47
  • pkg path/filepath (netbsd-arm64), const ListSeparator = 58
  • pkg path/filepath (netbsd-arm64), const Separator = 47
  • pkg runtime (netbsd-arm64-cgo), const GOARCH = "arm64"
  • pkg runtime (netbsd-arm64-cgo), const GOOS = "netbsd"
  • pkg runtime (netbsd-arm64), const GOARCH = "arm64"
  • pkg runtime (netbsd-arm64), const GOOS = "netbsd"
  • pkg os (netbsd-arm64-cgo), const DevNull = "/dev/null"
  • pkg os (netbsd-arm64-cgo), const O_APPEND = 8
  • pkg os (netbsd-arm64-cgo), const O_CREATE = 512
  • pkg os (netbsd-arm64-cgo), const O_EXCL = 2048
  • pkg os (netbsd-arm64-cgo), const O_SYNC = 128
  • pkg os (netbsd-arm64-cgo), const O_TRUNC = 1024
  • pkg os (netbsd-arm64-cgo), const PathListSeparator = 58
  • pkg os (netbsd-arm64-cgo), const PathSeparator = 47
  • pkg os (netbsd-arm64), const DevNull = "/dev/null"
  • pkg os (netbsd-arm64), const O_APPEND = 8
  • pkg os (netbsd-arm64), const O_CREATE = 512
  • pkg os (netbsd-arm64), const O_EXCL = 2048
  • pkg os (netbsd-arm64), const O_SYNC = 128
  • pkg os (netbsd-arm64), const O_TRUNC = 1024
  • pkg os (netbsd-arm64), const PathListSeparator = 58
  • pkg os (netbsd-arm64), const PathSeparator = 47

Approved in #29960:

  • pkg os, func UserConfigDir() (string, error)

Approved in #7501:

  • pkg reflect, method (Value) IsZero() bool

Approved in #26037:

  • pkg testing, method (*B) ReportMetric(float64, string)
  • pkg testing, type BenchmarkResult struct, Extra map[string]float64

Approved in #21051:

  • pkg testing, func Init()

Approved in #28564:

  • pkg time, method (Duration) Microseconds() int64
  • pkg time, method (Duration) Milliseconds() int64
@rsc
Copy link
Contributor Author

rsc commented Jun 27, 2019

Looks like the Unicode update did not make it into the release notes.
(^F for unicode in https://tip.golang.org/doc/go1.13 finds nothing.)

@rsc
Copy link
Contributor Author

rsc commented Jun 27, 2019

These were added for #29601 but I don't see any confirmation that we want to commit to this API:

  • pkg debug/dwarf, method (*UnsupportedType) Common() *CommonType
  • pkg debug/dwarf, method (*UnsupportedType) Size() int64
  • pkg debug/dwarf, method (*UnsupportedType) String() string
  • pkg debug/dwarf, type UnsupportedType struct
  • pkg debug/dwarf, type UnsupportedType struct, embedded CommonType
  • pkg debug/dwarf, type UnsupportedType struct, Tag Tag

/cc @aclements @thanm @dr2chase; still look OK?

@aclements
Copy link
Member

The dwarf API additions still look good to me. And it's been mentioned in the release notes.

@thanm
Copy link
Contributor

thanm commented Jun 27, 2019

Dwarf API changes LGTM also.

@rsc
Copy link
Contributor Author

rsc commented Jun 27, 2019

@griesemer, last call for Go 1.13 API. Still happy with:

go/constant

  • pkg go/constant, func Make(interface{}) Value
  • pkg go/constant, func Val(Value) interface{}

go/types

  • pkg go/types, func CheckExpr(*token.FileSet, *Package, token.Pos, ast.Expr, *Info) error

text/scanner

  • pkg text/scanner, const AllowDigitSeparators = 1024
  • pkg text/scanner, const AllowDigitSeparators ideal-int
  • pkg text/scanner, const GoTokens = 2036

?

@rsc
Copy link
Contributor Author

rsc commented Jun 27, 2019

@alexbrainman, last call for Go 1.13 API. Still feel good about:

Added in CL 174197:

  • pkg syscall (windows-386), type SysProcAttr struct, ProcessAttributes *SecurityAttributes
  • pkg syscall (windows-386), type SysProcAttr struct, ThreadAttributes *SecurityAttributes
  • pkg syscall (windows-amd64), type SysProcAttr struct, ProcessAttributes *SecurityAttributes
  • pkg syscall (windows-amd64), type SysProcAttr struct, ThreadAttributes *SecurityAttributes

?

@griesemer
Copy link
Contributor

@rsc LGTM for #32813 (comment)

@rsc
Copy link
Contributor Author

rsc commented Jun 27, 2019

CL 184080 removes AllowDigitSeparators and documents GoToken a bit more.

@rsc
Copy link
Contributor Author

rsc commented Jun 27, 2019

Update: I dug up proposal approvals for most of these and pinged owners for the few that remain.
Brad is away so I looked at the non-proposal net/http changes and they look OK; approved those.

The only API approvals still needed are for the errors and syscall changes.

The errors changes seem fine but I want to take a close look at them tomorrow and double-check. @mpvl, @jba, @neild are welcome to do the same.

The syscall changes seem fine but would like @alexbrainman's input.

During this I identified a few things missing from the release notes. Those are identified in their own section in the top comment.

@alexbrainman
Copy link
Member

@rsc

windows syscall changes LGTM.

Thank you very much.

Alex

@andybons andybons added the NeedsFix The path to resolution is known, but the work has not been done. label Jun 28, 2019
@rsc
Copy link
Contributor Author

rsc commented Jun 28, 2019

This was added for #28635 in CL 168597 and needs review:

 - pkg net, type DNSError struct, IsNotFound bool

@rsc
Copy link
Contributor Author

rsc commented Jun 28, 2019

@jba, @neild, @mpvl, and I looked at the errors API.
We decided to remove ErrTemporary (#32463) but everything else is good.

@bcmills
Copy link
Contributor

bcmills commented Aug 1, 2019

@FiloSottile filed an issue to recheck a specific addition (os.ErrTimeout) as #33411.

@andybons
Copy link
Member

andybons commented Aug 5, 2019

Created issue to update release notes to include Unicode: #33472

@gopherbot
Copy link
Contributor

Change https://golang.org/cl/189458 mentions this issue: api/go1.13: add debug/elf.Symbol fields added in CL 184099

@FiloSottile
Copy link
Contributor

Added a couple of new symbols that were missing from go1.13.txt

debug/elf

Added in CL 184099:

  • pkg debug/elf, type Symbol struct, Library string
  • pkg debug/elf, type Symbol struct, Version string

gopherbot pushed a commit that referenced this issue Aug 8, 2019
These will need auditing per #32813 like a few others in go1.13.txt, but
in the meantime they break the API check for beta/RC releases.

Updates #32813
Updates #31912

Change-Id: I3b0501b46324ee6fc0985f84971b99b772c7e4a4
Reviewed-on: https://go-review.googlesource.com/c/go/+/189458
Reviewed-by: Dmitri Shuralyov <[email protected]>
@andybons
Copy link
Member

RC1 is out. Can we close this?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done. release-blocker
Projects
None yet
Development

No branches or pull requests

9 participants