From e911d7ea3ba589e54a3e0e1c24523982e9cb55cb Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Wed, 21 May 2025 14:18:23 -0400 Subject: [PATCH 1/3] expvar: add `Delete` function Adds a `Delete` function to the expvar package to remove a named exported variable. Calls `Map.Delete`. Fixes #73814 --- src/cmd/api/testdata/src/pkg/p1/golden.txt | 12 ++++++------ src/cmd/api/testdata/src/pkg/p2/golden.txt | 5 ++--- src/cmd/api/testdata/src/pkg/p4/golden.txt | 6 +++--- src/expvar/expvar.go | 5 +++++ 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/cmd/api/testdata/src/pkg/p1/golden.txt b/src/cmd/api/testdata/src/pkg/p1/golden.txt index 65c4f35d2ca69d..cf089f6858ea18 100644 --- a/src/cmd/api/testdata/src/pkg/p1/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p1/golden.txt @@ -1,6 +1,6 @@ +pkg p1, const A //deprecated pkg p1, const A = 1 pkg p1, const A ideal-int -pkg p1, const A //deprecated pkg p1, const A64 = 1 pkg p1, const A64 int64 pkg p1, const AIsLowerA = 11 @@ -25,8 +25,8 @@ pkg p1, func TakesFunc(func(int) int) pkg p1, method (*B) JustOnB() pkg p1, method (*B) OnBothTandBPtr() pkg p1, method (*Embedded) OnEmbedded() -pkg p1, method (*S2) SMethod(int8, int16, int64) pkg p1, method (*S2) SMethod //deprecated +pkg p1, method (*S2) SMethod(int8, int16, int64) pkg p1, method (*T) JustOnT() pkg p1, method (*T) OnBothTandBPtr() pkg p1, method (B) OnBothTandBVal() @@ -53,8 +53,8 @@ pkg p1, type Error interface { Error, Temporary } pkg p1, type Error interface, Error() string pkg p1, type Error interface, Temporary() bool pkg p1, type FuncType func(int, int, string) (*B, error) -pkg p1, type I interface, Get(string) int64 pkg p1, type I interface, Get //deprecated +pkg p1, type I interface, Get(string) int64 pkg p1, type I interface, GetNamed(string) int64 pkg p1, type I interface, Name() string pkg p1, type I interface, PackageTwoMeth() @@ -63,9 +63,9 @@ pkg p1, type I interface, unexported methods pkg p1, type MyInt int pkg p1, type Namer interface { Name } pkg p1, type Namer interface, Name() string +pkg p1, type Private //deprecated pkg p1, type Private interface, X() pkg p1, type Private interface, unexported methods -pkg p1, type Private //deprecated pkg p1, type Public interface { X, Y } pkg p1, type Public interface, X() pkg p1, type Public interface, Y() @@ -84,8 +84,8 @@ pkg p1, type TPtrExported struct pkg p1, type TPtrExported struct, embedded *Embedded pkg p1, type TPtrUnexported struct pkg p1, type Time struct -pkg p1, type URL struct pkg p1, type URL //deprecated +pkg p1, type URL struct pkg p1, var Byte uint8 pkg p1, var ByteConv []uint8 pkg p1, var ByteFunc func(uint8) int32 @@ -97,8 +97,8 @@ pkg p1, var StrConv string pkg p1, var V string pkg p1, var V1 uint64 pkg p1, var V2 p2.Twoer -pkg p1, var VError Error pkg p1, var VError //deprecated +pkg p1, var VError Error pkg p1, var X I pkg p1, var X0 int64 pkg p1, var Y int diff --git a/src/cmd/api/testdata/src/pkg/p2/golden.txt b/src/cmd/api/testdata/src/pkg/p2/golden.txt index 735d6681666910..0f7de5047e9d11 100644 --- a/src/cmd/api/testdata/src/pkg/p2/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p2/golden.txt @@ -1,8 +1,7 @@ -pkg p2, func F() string pkg p2, func F //deprecated +pkg p2, func F() string pkg p2, func G() Twoer pkg p2, func NewError(string) error pkg p2, type Twoer interface { PackageTwoMeth } -pkg p2, type Twoer interface, PackageTwoMeth() pkg p2, type Twoer interface, PackageTwoMeth //deprecated - +pkg p2, type Twoer interface, PackageTwoMeth() diff --git a/src/cmd/api/testdata/src/pkg/p4/golden.txt b/src/cmd/api/testdata/src/pkg/p4/golden.txt index 1ceae17386339b..3195f4228d6e2f 100644 --- a/src/cmd/api/testdata/src/pkg/p4/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p4/golden.txt @@ -1,6 +1,6 @@ +pkg p4, func Clone //deprecated +pkg p4, func Clone[$0 interface{ ~[]$1 }, $1 interface{}]($0) $0 pkg p4, func NewPair[$0 interface{ M }, $1 interface{ ~int }]($0, $1) Pair[$0, $1] -pkg p4, method (Pair[$0, $1]) Second() $1 pkg p4, method (Pair[$0, $1]) First() $0 +pkg p4, method (Pair[$0, $1]) Second() $1 pkg p4, type Pair[$0 interface{ M }, $1 interface{ ~int }] struct -pkg p4, func Clone[$0 interface{ ~[]$1 }, $1 interface{}]($0) $0 -pkg p4, func Clone //deprecated diff --git a/src/expvar/expvar.go b/src/expvar/expvar.go index 4f66848f1fe4cf..3f1b080b57ca10 100644 --- a/src/expvar/expvar.go +++ b/src/expvar/expvar.go @@ -316,6 +316,11 @@ func Publish(name string, v Var) { slices.Sort(vars.keys) } +// Delete removes a named exported variable. +func Delete(name string) { + vars.Delete(name) +} + // Get retrieves a named exported variable. It returns nil if the name has // not been registered. func Get(name string) Var { From 7e9703c4bd571e6263327e185a370f99b207ff41 Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Wed, 21 May 2025 18:38:18 -0400 Subject: [PATCH 2/3] update api and release notes --- api/next/73814.txt | 1 + doc/next/6-stdlib/99-minor/expvar/73814.md | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 api/next/73814.txt create mode 100644 doc/next/6-stdlib/99-minor/expvar/73814.md diff --git a/api/next/73814.txt b/api/next/73814.txt new file mode 100644 index 00000000000000..4219f091f19b56 --- /dev/null +++ b/api/next/73814.txt @@ -0,0 +1 @@ +pkg expvar, func Delete(string) #73814 diff --git a/doc/next/6-stdlib/99-minor/expvar/73814.md b/doc/next/6-stdlib/99-minor/expvar/73814.md new file mode 100644 index 00000000000000..4f62f61a10406c --- /dev/null +++ b/doc/next/6-stdlib/99-minor/expvar/73814.md @@ -0,0 +1,2 @@ + +[Delete] has been added to remove named exported variables added by [Publish]. From e025f1c3fd8c886bf9e10249416a89e8269e92db Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Wed, 21 May 2025 18:40:00 -0400 Subject: [PATCH 3/3] remove unrelated changes --- src/cmd/api/testdata/src/pkg/p1/golden.txt | 12 ++++++------ src/cmd/api/testdata/src/pkg/p2/golden.txt | 5 +++-- src/cmd/api/testdata/src/pkg/p4/golden.txt | 6 +++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/cmd/api/testdata/src/pkg/p1/golden.txt b/src/cmd/api/testdata/src/pkg/p1/golden.txt index cf089f6858ea18..65c4f35d2ca69d 100644 --- a/src/cmd/api/testdata/src/pkg/p1/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p1/golden.txt @@ -1,6 +1,6 @@ -pkg p1, const A //deprecated pkg p1, const A = 1 pkg p1, const A ideal-int +pkg p1, const A //deprecated pkg p1, const A64 = 1 pkg p1, const A64 int64 pkg p1, const AIsLowerA = 11 @@ -25,8 +25,8 @@ pkg p1, func TakesFunc(func(int) int) pkg p1, method (*B) JustOnB() pkg p1, method (*B) OnBothTandBPtr() pkg p1, method (*Embedded) OnEmbedded() -pkg p1, method (*S2) SMethod //deprecated pkg p1, method (*S2) SMethod(int8, int16, int64) +pkg p1, method (*S2) SMethod //deprecated pkg p1, method (*T) JustOnT() pkg p1, method (*T) OnBothTandBPtr() pkg p1, method (B) OnBothTandBVal() @@ -53,8 +53,8 @@ pkg p1, type Error interface { Error, Temporary } pkg p1, type Error interface, Error() string pkg p1, type Error interface, Temporary() bool pkg p1, type FuncType func(int, int, string) (*B, error) -pkg p1, type I interface, Get //deprecated pkg p1, type I interface, Get(string) int64 +pkg p1, type I interface, Get //deprecated pkg p1, type I interface, GetNamed(string) int64 pkg p1, type I interface, Name() string pkg p1, type I interface, PackageTwoMeth() @@ -63,9 +63,9 @@ pkg p1, type I interface, unexported methods pkg p1, type MyInt int pkg p1, type Namer interface { Name } pkg p1, type Namer interface, Name() string -pkg p1, type Private //deprecated pkg p1, type Private interface, X() pkg p1, type Private interface, unexported methods +pkg p1, type Private //deprecated pkg p1, type Public interface { X, Y } pkg p1, type Public interface, X() pkg p1, type Public interface, Y() @@ -84,8 +84,8 @@ pkg p1, type TPtrExported struct pkg p1, type TPtrExported struct, embedded *Embedded pkg p1, type TPtrUnexported struct pkg p1, type Time struct -pkg p1, type URL //deprecated pkg p1, type URL struct +pkg p1, type URL //deprecated pkg p1, var Byte uint8 pkg p1, var ByteConv []uint8 pkg p1, var ByteFunc func(uint8) int32 @@ -97,8 +97,8 @@ pkg p1, var StrConv string pkg p1, var V string pkg p1, var V1 uint64 pkg p1, var V2 p2.Twoer -pkg p1, var VError //deprecated pkg p1, var VError Error +pkg p1, var VError //deprecated pkg p1, var X I pkg p1, var X0 int64 pkg p1, var Y int diff --git a/src/cmd/api/testdata/src/pkg/p2/golden.txt b/src/cmd/api/testdata/src/pkg/p2/golden.txt index 0f7de5047e9d11..735d6681666910 100644 --- a/src/cmd/api/testdata/src/pkg/p2/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p2/golden.txt @@ -1,7 +1,8 @@ -pkg p2, func F //deprecated pkg p2, func F() string +pkg p2, func F //deprecated pkg p2, func G() Twoer pkg p2, func NewError(string) error pkg p2, type Twoer interface { PackageTwoMeth } -pkg p2, type Twoer interface, PackageTwoMeth //deprecated pkg p2, type Twoer interface, PackageTwoMeth() +pkg p2, type Twoer interface, PackageTwoMeth //deprecated + diff --git a/src/cmd/api/testdata/src/pkg/p4/golden.txt b/src/cmd/api/testdata/src/pkg/p4/golden.txt index 3195f4228d6e2f..1ceae17386339b 100644 --- a/src/cmd/api/testdata/src/pkg/p4/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p4/golden.txt @@ -1,6 +1,6 @@ -pkg p4, func Clone //deprecated -pkg p4, func Clone[$0 interface{ ~[]$1 }, $1 interface{}]($0) $0 pkg p4, func NewPair[$0 interface{ M }, $1 interface{ ~int }]($0, $1) Pair[$0, $1] -pkg p4, method (Pair[$0, $1]) First() $0 pkg p4, method (Pair[$0, $1]) Second() $1 +pkg p4, method (Pair[$0, $1]) First() $0 pkg p4, type Pair[$0 interface{ M }, $1 interface{ ~int }] struct +pkg p4, func Clone[$0 interface{ ~[]$1 }, $1 interface{}]($0) $0 +pkg p4, func Clone //deprecated