distribution/registry/storage
Sebastiaan van Stijn 3b391d3290
replace strings.Split(N) for strings.Cut() or alternatives
Go 1.18 and up now provides a strings.Cut() which is better suited for
splitting key/value pairs (and similar constructs), and performs better:

```go
func BenchmarkSplit(b *testing.B) {
	b.ReportAllocs()
	data := []string{"12hello=world", "12hello=", "12=hello", "12hello"}
	for i := 0; i < b.N; i++ {
		for _, s := range data {
			_ = strings.SplitN(s, "=", 2)[0]
		}
	}
}

func BenchmarkCut(b *testing.B) {
	b.ReportAllocs()
	data := []string{"12hello=world", "12hello=", "12=hello", "12hello"}
	for i := 0; i < b.N; i++ {
		for _, s := range data {
			_, _, _ = strings.Cut(s, "=")
		}
	}
}
```

    BenchmarkSplit
    BenchmarkSplit-10    	 8244206	       128.0 ns/op	     128 B/op	       4 allocs/op
    BenchmarkCut
    BenchmarkCut-10      	54411998	        21.80 ns/op	       0 B/op	       0 allocs/op

While looking at occurrences of `strings.Split()`, I also updated some for alternatives,
or added some constraints;

- for cases where an specific number of items is expected, I used `strings.SplitN()`
  with a suitable limit. This prevents (theoretical) unlimited splits.
- in some cases it we were using `strings.Split()`, but _actually_ were trying to match
  a prefix; for those I replaced the code to just match (and/or strip) the prefix.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-11-10 22:38:12 +01:00
..
cache format code with gofumpt 2022-11-03 22:48:20 +01:00
driver replace strings.Split(N) for strings.Cut() or alternatives 2022-11-10 22:38:12 +01:00
blob_test.go replace deprecated io/ioutil 2022-11-04 23:47:52 +01:00
blobserver.go go.mod: change imports to github.com/distribution/distribution/v3 2021-02-08 18:30:46 +01:00
blobstore.go format code with gofumpt 2022-11-03 22:48:20 +01:00
blobwriter.go format code with gofumpt 2022-11-03 22:48:20 +01:00
blobwriter_nonresumable.go bump up golang v1.17 2021-10-27 15:51:30 +08:00
blobwriter_resumable.go format code with gofumpt 2022-11-03 22:48:20 +01:00
catalog.go go.mod: change imports to github.com/distribution/distribution/v3 2021-02-08 18:30:46 +01:00
catalog_test.go format code with gofumpt 2022-11-03 22:48:20 +01:00
doc.go Move storage package under registry package 2015-02-11 12:43:04 -08:00
error.go Remove old walk function 2018-01-18 13:06:07 -08:00
filereader.go replace deprecated io/ioutil 2022-11-04 23:47:52 +01:00
filereader_test.go format code with gofumpt 2022-11-03 22:48:20 +01:00
garbagecollect.go format code with gofumpt 2022-11-03 22:48:20 +01:00
garbagecollect_test.go format code with gofumpt 2022-11-03 22:48:20 +01:00
io.go replace deprecated io/ioutil 2022-11-04 23:47:52 +01:00
linkedblobstore.go format code with gofumpt 2022-11-03 22:48:20 +01:00
linkedblobstore_test.go Remove uses of deprecated go-digest.NewDigestFromHex, go-digest.Digest.Hex 2022-11-08 13:51:11 +01:00
manifestlisthandler.go go.mod: change imports to github.com/distribution/distribution/v3 2021-02-08 18:30:46 +01:00
manifeststore.go go.mod: change imports to github.com/distribution/distribution/v3 2021-02-08 18:30:46 +01:00
manifeststore_test.go format code with gofumpt 2022-11-03 22:48:20 +01:00
ocimanifesthandler.go format code with gofumpt 2022-11-03 22:48:20 +01:00
ocimanifesthandler_test.go registry: verify digest and check blob presence when put manifest 2021-04-16 16:11:52 +08:00
paths.go Remove uses of deprecated go-digest.NewDigestFromHex, go-digest.Digest.Hex 2022-11-08 13:51:11 +01:00
paths_test.go format code with gofumpt 2022-11-03 22:48:20 +01:00
purgeuploads.go format code with gofumpt 2022-11-03 22:48:20 +01:00
purgeuploads_test.go format code with gofumpt 2022-11-03 22:48:20 +01:00
registry.go Remove workaround from 2.1.1 for faulty 2.1.0 manifest links 2022-04-25 13:01:44 +01:00
schema2manifesthandler.go format code with gofumpt 2022-11-03 22:48:20 +01:00
schema2manifesthandler_test.go registry: verify digest and check blob presence when put manifest 2021-04-16 16:11:52 +08:00
signedmanifesthandler.go go.mod: change imports to github.com/distribution/distribution/v3 2021-02-08 18:30:46 +01:00
tagstore.go format code with gofumpt 2022-11-03 22:48:20 +01:00
tagstore_test.go format code with gofumpt 2022-11-03 22:48:20 +01:00
v1unsupportedhandler.go format code with gofumpt 2022-11-03 22:48:20 +01:00
vacuum.go go.mod: change imports to github.com/distribution/distribution/v3 2021-02-08 18:30:46 +01:00