fork of https://github.com/sourcegraph/zoekt
0

Configure Feed

Select the types of activity you want to include in your feed.

all: use stdlib slices package (#735)

Noticed we weren't using this yet and that the API signatures had
changed.

Test Plan: go test

+40 -40
+11
bits.go
··· 15 15 package zoekt 16 16 17 17 import ( 18 + "cmp" 18 19 "encoding/binary" 19 20 "math" 20 21 "sort" ··· 110 111 ngram ngram 111 112 // index is the original index inside of the returned array of splitNGrams 112 113 index uint32 114 + } 115 + 116 + func (a runeNgramOff) Compare(b runeNgramOff) int { 117 + if a.ngram == b.ngram { 118 + return cmp.Compare(a.index, b.index) 119 + } else if a.ngram < b.ngram { 120 + return -1 121 + } else { 122 + return 1 123 + } 113 124 } 114 125 115 126 func splitNGrams(str []byte) []runeNgramOff {
+1 -2
build/ctags.go
··· 18 18 "bytes" 19 19 "fmt" 20 20 "log" 21 + "slices" 21 22 "strings" 22 23 "sync" 23 24 "time" 24 - 25 - "golang.org/x/exp/slices" 26 25 27 26 "github.com/sourcegraph/zoekt" 28 27 "github.com/sourcegraph/zoekt/ctags"
+1 -1
contentprovider.go
··· 19 19 "fmt" 20 20 "log" 21 21 "path" 22 + "slices" 22 23 "sort" 23 24 "strings" 24 25 "unicode" 25 26 "unicode/utf8" 26 27 27 28 "github.com/sourcegraph/zoekt/ctags" 28 - "golang.org/x/exp/slices" 29 29 ) 30 30 31 31 var _ = log.Println
+6 -7
go.mod
··· 49 49 go.opentelemetry.io/otel/trace v1.16.0 50 50 go.uber.org/atomic v1.11.0 51 51 go.uber.org/automaxprocs v1.5.2 52 - golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 53 - golang.org/x/net v0.19.0 52 + golang.org/x/net v0.20.0 54 53 golang.org/x/oauth2 v0.9.0 55 - golang.org/x/sync v0.3.0 56 - golang.org/x/sys v0.15.0 54 + golang.org/x/sync v0.6.0 55 + golang.org/x/sys v0.16.0 57 56 google.golang.org/grpc v1.56.1 58 57 google.golang.org/protobuf v1.31.0 59 58 ) ··· 126 125 go.opentelemetry.io/proto/otlp v0.20.0 // indirect 127 126 go.uber.org/multierr v1.11.0 // indirect 128 127 go.uber.org/zap v1.24.0 // indirect 129 - golang.org/x/crypto v0.16.0 // indirect 130 - golang.org/x/mod v0.12.0 // indirect 128 + golang.org/x/crypto v0.18.0 // indirect 129 + golang.org/x/mod v0.14.0 // indirect 131 130 golang.org/x/text v0.14.0 // indirect 132 131 golang.org/x/time v0.3.0 // indirect 133 - golang.org/x/tools v0.13.0 // indirect 132 + golang.org/x/tools v0.17.0 // indirect 134 133 google.golang.org/api v0.129.0 // indirect 135 134 google.golang.org/appengine v1.6.7 // indirect 136 135 google.golang.org/genproto v0.0.0-20230628200519-e449d1ea0e82 // indirect
+14 -16
go.sum
··· 380 380 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 381 381 golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= 382 382 golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= 383 - golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= 384 - golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= 383 + golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= 384 + golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= 385 385 golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 386 386 golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 387 387 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 388 388 golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 389 389 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 390 390 golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= 391 - golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 h1:MGwJjxBy0HJshjDNfLsYO8xppfqWlA5ZT9OhtUUhTNw= 392 - golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= 393 391 golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= 394 392 golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= 395 393 golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= ··· 402 400 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 403 401 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 404 402 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 405 - golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= 406 - golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 403 + golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= 404 + golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 407 405 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 408 406 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 409 407 golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ··· 423 421 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 424 422 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 425 423 golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= 426 - golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= 427 - golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= 424 + golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= 425 + golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= 428 426 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= 429 427 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= 430 428 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= ··· 439 437 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 440 438 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 441 439 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 442 - golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= 443 - golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= 440 + golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= 441 + golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 444 442 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 445 443 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 446 444 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ··· 467 465 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 468 466 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 469 467 golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 470 - golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= 471 - golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 468 + golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= 469 + golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 472 470 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 473 471 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 474 472 golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= 475 473 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 476 474 golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= 477 - golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= 478 - golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= 475 + golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= 476 + golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= 479 477 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 480 478 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 481 479 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= ··· 502 500 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= 503 501 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 504 502 golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 505 - golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= 506 - golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= 503 + golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= 504 + golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= 507 505 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 508 506 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 509 507 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+2 -4
indexdata.go
··· 21 21 "hash/crc64" 22 22 "log" 23 23 "math/bits" 24 + "slices" 24 25 "unicode/utf8" 25 26 26 27 "github.com/sourcegraph/zoekt/query" 27 - "golang.org/x/exp/slices" 28 28 ) 29 29 30 30 // indexData holds the pattern-independent data that we have to have ··· 410 410 411 411 // PERF: Sort to increase the chances adjacent checks are in the same btree 412 412 // bucket (which can cause disk IO). 413 - slices.SortFunc(ngramOffs, func(a, b runeNgramOff) bool { 414 - return a.ngram < b.ngram 415 - }) 413 + slices.SortFunc(ngramOffs, runeNgramOff.Compare) 416 414 frequencies := make([]uint32, 0, len(ngramOffs)) 417 415 ngramLookups := 0 418 416 ngrams := d.ngrams(query.FileName)
+5 -10
indexdata_test.go
··· 3 3 import ( 4 4 "math/rand" 5 5 "reflect" 6 + "slices" 6 7 "testing" 7 8 "testing/quick" 8 - 9 - "golang.org/x/exp/slices" 10 9 ) 11 10 12 11 const exampleQuery = "const data: Event = { ...JSON.parse(message.data), type: message.event }" ··· 27 26 28 27 func BenchmarkMinFrequencyNgramOffsets(b *testing.B) { 29 28 ngramOffs := splitNGrams([]byte(exampleQuery)) 30 - slices.SortFunc(ngramOffs, func(a, b runeNgramOff) bool { 31 - return a.ngram < b.ngram 32 - }) 29 + slices.SortFunc(ngramOffs, runeNgramOff.Compare) 33 30 frequencies := genFrequencies(ngramOffs, 100) 34 31 for i := 0; i < b.N; i++ { 35 32 x0, x1 := minFrequencyNgramOffsets(ngramOffs, frequencies) ··· 50 47 return true 51 48 } 52 49 53 - slices.SortFunc(ngramOffs, func(a, b runeNgramOff) bool { 54 - return a.ngram < b.ngram 55 - }) 50 + slices.SortFunc(ngramOffs, runeNgramOff.Compare) 56 51 frequencies := genFrequencies(ngramOffs, int(maxFreq)) 57 52 x0, x1 := minFrequencyNgramOffsets(ngramOffs, frequencies) 58 53 ··· 67 62 68 63 // Now we just assert that we found two items with the smallest 69 64 // frequencies. 70 - idx0 := slices.Index[runeNgramOff](ngramOffs, x0) 71 - idx1 := slices.Index[runeNgramOff](ngramOffs, x1) 65 + idx0 := slices.IndexFunc(ngramOffs, func(a runeNgramOff) bool { return a == x0 }) 66 + idx1 := slices.IndexFunc(ngramOffs, func(a runeNgramOff) bool { return a == x1 }) 72 67 start := []uint32{frequencies[idx0], frequencies[idx1]} 73 68 slices.Sort(start) 74 69 slices.Sort(frequencies)