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

Open
rsc opened this issue Jun 27, 2019 · 12 comments

Comments

Projects
None yet
6 participants
@rsc
Copy link
Contributor

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

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

This comment has been minimized.

Copy link
Contributor Author

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

This comment has been minimized.

Copy link
Contributor Author

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

This comment has been minimized.

Copy link
Member

commented Jun 27, 2019

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

@thanm

This comment has been minimized.

Copy link
Member

commented Jun 27, 2019

Dwarf API changes LGTM also.

@rsc

This comment has been minimized.

Copy link
Contributor Author

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

This comment has been minimized.

Copy link
Contributor Author

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

This comment has been minimized.

Copy link
Contributor

commented Jun 27, 2019

@rsc

This comment has been minimized.

Copy link
Contributor Author

commented Jun 27, 2019

CL 184080 removes AllowDigitSeparators and documents GoToken a bit more.

@rsc

This comment has been minimized.

Copy link
Contributor Author

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

This comment has been minimized.

Copy link
Member

commented Jun 27, 2019

@rsc

windows syscall changes LGTM.

Thank you very much.

Alex

@andybons andybons added the NeedsFix label Jun 28, 2019

@rsc

This comment has been minimized.

Copy link
Contributor Author

commented Jun 28, 2019

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

 - pkg net, type DNSError struct, IsNotFound bool
@rsc

This comment has been minimized.

Copy link
Contributor Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.