Update vendor 20210707 (#16366)
* update gitea.com/go-chi/binding * update github.com/blevesearch/bleve/v2 * update github.com/caddyserver/certmagic * update github.com/go-git/go-git/v5 * update github.com/lafriks/xormstore * update github.com/yuin/goldmark * Revert "update gitea.com/go-chi/binding" This reverts commit dea2f292b116114f9316fab95c5fd124174da404.release/v1.15
parent
9543e068e9
commit
7613f31c6b
10
go.mod
10
go.mod
|
@ -13,9 +13,9 @@ require (
|
||||||
gitea.com/lunny/levelqueue v0.3.0
|
gitea.com/lunny/levelqueue v0.3.0
|
||||||
github.com/Microsoft/go-winio v0.5.0 // indirect
|
github.com/Microsoft/go-winio v0.5.0 // indirect
|
||||||
github.com/NYTimes/gziphandler v1.1.1
|
github.com/NYTimes/gziphandler v1.1.1
|
||||||
github.com/ProtonMail/go-crypto v0.0.0-20210512092938-c05353c2d58c // indirect
|
github.com/ProtonMail/go-crypto v0.0.0-20210705153151-cc34b1f6908b // indirect
|
||||||
github.com/PuerkitoBio/goquery v1.7.0
|
github.com/PuerkitoBio/goquery v1.7.0
|
||||||
github.com/RoaringBitmap/roaring v0.8.0 // indirect
|
github.com/RoaringBitmap/roaring v0.9.1 // indirect
|
||||||
github.com/alecthomas/chroma v0.9.2
|
github.com/alecthomas/chroma v0.9.2
|
||||||
github.com/andybalholm/brotli v1.0.3 // indirect
|
github.com/andybalholm/brotli v1.0.3 // indirect
|
||||||
github.com/andybalholm/cascadia v1.2.0 // indirect
|
github.com/andybalholm/cascadia v1.2.0 // indirect
|
||||||
|
@ -70,7 +70,7 @@ require (
|
||||||
github.com/kevinburke/ssh_config v1.1.0 // indirect
|
github.com/kevinburke/ssh_config v1.1.0 // indirect
|
||||||
github.com/keybase/go-crypto v0.0.0-20200123153347-de78d2cb44f4
|
github.com/keybase/go-crypto v0.0.0-20200123153347-de78d2cb44f4
|
||||||
github.com/klauspost/compress v1.13.1
|
github.com/klauspost/compress v1.13.1
|
||||||
github.com/klauspost/cpuid/v2 v2.0.7 // indirect
|
github.com/klauspost/cpuid/v2 v2.0.8 // indirect
|
||||||
github.com/klauspost/pgzip v1.2.5 // indirect
|
github.com/klauspost/pgzip v1.2.5 // indirect
|
||||||
github.com/lafriks/xormstore v1.4.0
|
github.com/lafriks/xormstore v1.4.0
|
||||||
github.com/lib/pq v1.10.2
|
github.com/lib/pq v1.10.2
|
||||||
|
@ -115,7 +115,7 @@ require (
|
||||||
github.com/urfave/cli v1.22.5
|
github.com/urfave/cli v1.22.5
|
||||||
github.com/xanzy/go-gitlab v0.50.1
|
github.com/xanzy/go-gitlab v0.50.1
|
||||||
github.com/yohcop/openid-go v1.0.0
|
github.com/yohcop/openid-go v1.0.0
|
||||||
github.com/yuin/goldmark v1.3.9
|
github.com/yuin/goldmark v1.4.0
|
||||||
github.com/yuin/goldmark-highlighting v0.0.0-20210516132338-9216f9c5aa01
|
github.com/yuin/goldmark-highlighting v0.0.0-20210516132338-9216f9c5aa01
|
||||||
github.com/yuin/goldmark-meta v1.0.0
|
github.com/yuin/goldmark-meta v1.0.0
|
||||||
go.etcd.io/bbolt v1.3.6 // indirect
|
go.etcd.io/bbolt v1.3.6 // indirect
|
||||||
|
@ -139,7 +139,7 @@ require (
|
||||||
mvdan.cc/xurls/v2 v2.2.0
|
mvdan.cc/xurls/v2 v2.2.0
|
||||||
strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251
|
strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251
|
||||||
xorm.io/builder v0.3.9
|
xorm.io/builder v0.3.9
|
||||||
xorm.io/xorm v1.1.1
|
xorm.io/xorm v1.1.2
|
||||||
)
|
)
|
||||||
|
|
||||||
replace github.com/hashicorp/go-version => github.com/6543/go-version v1.3.1
|
replace github.com/hashicorp/go-version => github.com/6543/go-version v1.3.1
|
||||||
|
|
22
go.sum
22
go.sum
|
@ -68,8 +68,8 @@ github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cq
|
||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
|
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
|
||||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||||
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
|
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
|
||||||
github.com/ProtonMail/go-crypto v0.0.0-20210512092938-c05353c2d58c h1:bNpaLLv2Y4kslsdkdCwAYu8Bak1aGVtxwi8Z/wy4Yuo=
|
github.com/ProtonMail/go-crypto v0.0.0-20210705153151-cc34b1f6908b h1:BF5p87XWvmgdrTPPzcRMwC0TMQbviwQ+uBKfNfWJy50=
|
||||||
github.com/ProtonMail/go-crypto v0.0.0-20210512092938-c05353c2d58c/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
|
github.com/ProtonMail/go-crypto v0.0.0-20210705153151-cc34b1f6908b/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
|
||||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||||
github.com/PuerkitoBio/goquery v1.7.0 h1:O5SP3b9JWqMSVMG69zMfj577zwkSNpxrFf7ybS74eiw=
|
github.com/PuerkitoBio/goquery v1.7.0 h1:O5SP3b9JWqMSVMG69zMfj577zwkSNpxrFf7ybS74eiw=
|
||||||
github.com/PuerkitoBio/goquery v1.7.0/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
github.com/PuerkitoBio/goquery v1.7.0/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||||
|
@ -78,10 +78,12 @@ github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tN
|
||||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
|
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||||
|
github.com/RoaringBitmap/gocroaring v0.4.0/go.mod h1:NieMwz7ZqwU2DD73/vvYwv7r4eWBKuPVSXZIpsaMwCI=
|
||||||
|
github.com/RoaringBitmap/real-roaring-datasets v0.0.0-20190726190000-eb7c87156f76/go.mod h1:oM0MHmQ3nDsq609SS36p+oYbRi16+oVvU2Bw4Ipv0SE=
|
||||||
github.com/RoaringBitmap/roaring v0.4.23/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo=
|
github.com/RoaringBitmap/roaring v0.4.23/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo=
|
||||||
github.com/RoaringBitmap/roaring v0.7.3/go.mod h1:jdT9ykXwHFNdJbEtxePexlFYH9LXucApeS0/+/g+p1I=
|
github.com/RoaringBitmap/roaring v0.7.3/go.mod h1:jdT9ykXwHFNdJbEtxePexlFYH9LXucApeS0/+/g+p1I=
|
||||||
github.com/RoaringBitmap/roaring v0.8.0 h1:3naGkGvYAANr3ntyV+OpyhH+/rDaE2om9coNpIIdWAA=
|
github.com/RoaringBitmap/roaring v0.9.1 h1:5PRizBmoN/PfV17nPNQou4dHQ7NcJi8FO/bihdYyCEM=
|
||||||
github.com/RoaringBitmap/roaring v0.8.0/go.mod h1:jdT9ykXwHFNdJbEtxePexlFYH9LXucApeS0/+/g+p1I=
|
github.com/RoaringBitmap/roaring v0.9.1/go.mod h1:h1B7iIUOmnAeb5ytYMvnHJwxMc6LUrwBnzXWRuqTQUc=
|
||||||
github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk=
|
github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk=
|
||||||
github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
|
github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
|
||||||
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
|
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
|
||||||
|
@ -712,8 +714,8 @@ github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd
|
||||||
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.7 h1:U89pAFid7wpIWvTFJnMKgU+Sabb7DLEgHI7Xt8apo3Y=
|
github.com/klauspost/cpuid/v2 v2.0.8 h1:bhR2mgIlno/Sfk4oUbH4sPlc83z1yGrN9bvqiq3C33I=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.7/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
github.com/klauspost/cpuid/v2 v2.0.8/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
github.com/klauspost/pgzip v1.2.4/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
github.com/klauspost/pgzip v1.2.4/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||||
github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE=
|
github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE=
|
||||||
github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||||
|
@ -1063,8 +1065,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
|
||||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.3.6/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
github.com/yuin/goldmark v1.3.6/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||||
github.com/yuin/goldmark v1.3.9 h1:XsVHmzm4P6g84IBbAj+WYMF/IEZ3J9+3I1wlqCNa/SQ=
|
github.com/yuin/goldmark v1.4.0 h1:OtISOGfH6sOWa1/qXqqAiOIAO6Z5J3AEAE18WAq6BiQ=
|
||||||
github.com/yuin/goldmark v1.3.9/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||||
github.com/yuin/goldmark-highlighting v0.0.0-20210516132338-9216f9c5aa01 h1:0SJnXjE4jDClMW6grE0xpNhwpqbPwkBTn8zpVw5C0SI=
|
github.com/yuin/goldmark-highlighting v0.0.0-20210516132338-9216f9c5aa01 h1:0SJnXjE4jDClMW6grE0xpNhwpqbPwkBTn8zpVw5C0SI=
|
||||||
github.com/yuin/goldmark-highlighting v0.0.0-20210516132338-9216f9c5aa01/go.mod h1:TwKQPa5XkCCRC2GRZ5wtfNUTQ2+9/i19mGRijFeJ4BE=
|
github.com/yuin/goldmark-highlighting v0.0.0-20210516132338-9216f9c5aa01/go.mod h1:TwKQPa5XkCCRC2GRZ5wtfNUTQ2+9/i19mGRijFeJ4BE=
|
||||||
github.com/yuin/goldmark-meta v1.0.0 h1:ScsatUIT2gFS6azqzLGUjgOnELsBOxMXerM3ogdJhAM=
|
github.com/yuin/goldmark-meta v1.0.0 h1:ScsatUIT2gFS6azqzLGUjgOnELsBOxMXerM3ogdJhAM=
|
||||||
|
@ -1615,5 +1617,5 @@ xorm.io/builder v0.3.8/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE=
|
||||||
xorm.io/builder v0.3.9 h1:Sd65/LdWyO7LR8+Cbd+e7mm3sK/7U9k0jS3999IDHMc=
|
xorm.io/builder v0.3.9 h1:Sd65/LdWyO7LR8+Cbd+e7mm3sK/7U9k0jS3999IDHMc=
|
||||||
xorm.io/builder v0.3.9/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE=
|
xorm.io/builder v0.3.9/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE=
|
||||||
xorm.io/xorm v1.0.6/go.mod h1:uF9EtbhODq5kNWxMbnBEj8hRRZnlcNSz2t2N7HW/+A4=
|
xorm.io/xorm v1.0.6/go.mod h1:uF9EtbhODq5kNWxMbnBEj8hRRZnlcNSz2t2N7HW/+A4=
|
||||||
xorm.io/xorm v1.1.1 h1:cc1yot5rhoBucfk2lgZPZPEuI/9QsVvHuQpjI0wmcf8=
|
xorm.io/xorm v1.1.2 h1:bje+1KZvK3m5AHtZNfUDlKEEyuw/IRHT+an0CLIG5TU=
|
||||||
xorm.io/xorm v1.1.1/go.mod h1:Cb0DKYTHbyECMaSfgRnIZp5aiUgQozxcJJ0vzcLGJSg=
|
xorm.io/xorm v1.1.2/go.mod h1:Cb0DKYTHbyECMaSfgRnIZp5aiUgQozxcJJ0vzcLGJSg=
|
||||||
|
|
|
@ -507,6 +507,9 @@ func serializeSubpackets(to []byte, subpackets []outputSubpacket, hashed bool) {
|
||||||
if subpacket.hashed == hashed {
|
if subpacket.hashed == hashed {
|
||||||
n := serializeSubpacketLength(to, len(subpacket.contents)+1)
|
n := serializeSubpacketLength(to, len(subpacket.contents)+1)
|
||||||
to[n] = byte(subpacket.subpacketType)
|
to[n] = byte(subpacket.subpacketType)
|
||||||
|
if subpacket.isCritical {
|
||||||
|
to[n] |= 0x80
|
||||||
|
}
|
||||||
to = to[1+n:]
|
to = to[1+n:]
|
||||||
n = copy(to, subpacket.contents)
|
n = copy(to, subpacket.contents)
|
||||||
to = to[n:]
|
to = to[n:]
|
||||||
|
|
|
@ -3,18 +3,9 @@ module github.com/RoaringBitmap/roaring
|
||||||
go 1.14
|
go 1.14
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/RoaringBitmap/gocroaring v0.4.0
|
||||||
|
github.com/RoaringBitmap/real-roaring-datasets v0.0.0-20190726190000-eb7c87156f76 // indirect
|
||||||
github.com/bits-and-blooms/bitset v1.2.0
|
github.com/bits-and-blooms/bitset v1.2.0
|
||||||
github.com/dvyukov/go-fuzz v0.0.0-20210429054444-fca39067bc72 // indirect
|
|
||||||
github.com/elazarl/go-bindata-assetfs v1.0.1 // indirect
|
|
||||||
github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2
|
|
||||||
github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 // indirect
|
|
||||||
github.com/golang/snappy v0.0.1 // indirect
|
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 // indirect
|
|
||||||
github.com/jtolds/gls v4.20.0+incompatible // indirect
|
|
||||||
github.com/mschoch/smat v0.2.0
|
github.com/mschoch/smat v0.2.0
|
||||||
github.com/philhofer/fwd v1.0.0 // indirect
|
|
||||||
github.com/stephens2424/writerset v1.0.2 // indirect
|
|
||||||
github.com/stretchr/testify v1.4.0
|
github.com/stretchr/testify v1.4.0
|
||||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
|
|
||||||
golang.org/x/tools v0.0.0-20200928182047-19e03678916f // indirect
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,65 +1,18 @@
|
||||||
github.com/Julusian/godocdown v0.0.0-20170816220326-6d19f8ff2df8/go.mod h1:INZr5t32rG59/5xeltqoCJoNY7e5x/3xoY9WSWVWg74=
|
github.com/RoaringBitmap/gocroaring v0.4.0 h1:5nufXUgWpBEUNEJXw7926YAA58ZAQRpWPrQV1xCoSjc=
|
||||||
|
github.com/RoaringBitmap/gocroaring v0.4.0/go.mod h1:NieMwz7ZqwU2DD73/vvYwv7r4eWBKuPVSXZIpsaMwCI=
|
||||||
|
github.com/RoaringBitmap/real-roaring-datasets v0.0.0-20190726190000-eb7c87156f76 h1:ZYlhPbqQFU+AHfgtCdHGDTtRW1a8geZyiE8c6Q+Sl1s=
|
||||||
|
github.com/RoaringBitmap/real-roaring-datasets v0.0.0-20190726190000-eb7c87156f76/go.mod h1:oM0MHmQ3nDsq609SS36p+oYbRi16+oVvU2Bw4Ipv0SE=
|
||||||
github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA=
|
github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA=
|
||||||
github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
|
github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
|
||||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/dvyukov/go-fuzz v0.0.0-20210429054444-fca39067bc72 h1:XiR1YwcWcRFzxjAhWK29HQL4nocj0QWJjpeRi/YASV0=
|
|
||||||
github.com/dvyukov/go-fuzz v0.0.0-20210429054444-fca39067bc72/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
|
|
||||||
github.com/elazarl/go-bindata-assetfs v1.0.1 h1:m0kkaHRKEu7tUIUFVwhGGGYClXvyl4RE03qmvRTNfbw=
|
|
||||||
github.com/elazarl/go-bindata-assetfs v1.0.1/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
|
|
||||||
github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 h1:Ujru1hufTHVb++eG6OuNDKMxZnGIvF6o/u8q/8h2+I4=
|
|
||||||
github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
|
|
||||||
github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8=
|
|
||||||
github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
|
|
||||||
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
|
|
||||||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 h1:twflg0XRTjwKpxb/jFExr4HGq6on2dEOmnL6FV+fgPw=
|
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
|
||||||
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
|
||||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
|
||||||
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae h1:VeRdUYdCw49yizlSbMEn2SZ+gT+3IUKx8BqxyQdz+BY=
|
|
||||||
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
|
|
||||||
github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM=
|
github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM=
|
||||||
github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw=
|
github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw=
|
||||||
github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ=
|
|
||||||
github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/robertkrimen/godocdown v0.0.0-20130622164427-0bfa04905481/go.mod h1:C9WhFzY47SzYBIvzFqSvHIR6ROgDo4TtdTuRaOMjF/s=
|
|
||||||
github.com/stephens2424/writerset v1.0.2 h1:znRLgU6g8RS5euYRcy004XeE4W+Tu44kALzy7ghPif8=
|
|
||||||
github.com/stephens2424/writerset v1.0.2/go.mod h1:aS2JhsMn6eA7e82oNmW4rfsgAOp9COBTTl8mzkwADnc=
|
|
||||||
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
|
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
|
||||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
|
|
||||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
|
||||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
|
||||||
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
|
|
||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7 h1:EBZoQjiKKPaLbPrbpssUfuHtwM6KV/vb4U85g/cigFY=
|
|
||||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
|
||||||
golang.org/x/tools v0.0.0-20200928182047-19e03678916f h1:VwGa2Wf+rHGIxvsssCkUNIyFv8jQY0VCBCNWtikoWq0=
|
|
||||||
golang.org/x/tools v0.0.0-20200928182047-19e03678916f/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
|
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
|
|
@ -569,7 +569,7 @@ func (ra *roaringArray) readFrom(stream internal.ByteInput, cookieHeader ...byte
|
||||||
var isRunBitmap []byte
|
var isRunBitmap []byte
|
||||||
|
|
||||||
if cookie&0x0000FFFF == serialCookie {
|
if cookie&0x0000FFFF == serialCookie {
|
||||||
size = uint32(uint16(cookie>>16) + 1)
|
size = uint32(cookie>>16 + 1)
|
||||||
// create is-run-container bitmap
|
// create is-run-container bitmap
|
||||||
isRunBitmapSize := (int(size) + 7) / 8
|
isRunBitmapSize := (int(size) + 7) / 8
|
||||||
isRunBitmap, err = stream.Next(isRunBitmapSize)
|
isRunBitmap, err = stream.Next(isRunBitmapSize)
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
package roaring
|
package roaring
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/binary"
|
||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -132,3 +133,284 @@ func byteSliceAsInterval16Slice(slice []byte) (result []interval16) {
|
||||||
// return result
|
// return result
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FromBuffer creates a bitmap from its serialized version stored in buffer.
|
||||||
|
// It uses CRoaring's frozen bitmap format.
|
||||||
|
//
|
||||||
|
// The format specification is available here:
|
||||||
|
// https://github.com/RoaringBitmap/CRoaring/blob/2c867e9f9c9e2a3a7032791f94c4c7ae3013f6e0/src/roaring.c#L2756-L2783
|
||||||
|
//
|
||||||
|
// The provided byte array (buf) is expected to be a constant.
|
||||||
|
// The function makes the best effort attempt not to copy data.
|
||||||
|
// Only little endian is supported. The function will err if it detects a big
|
||||||
|
// endian serialized file.
|
||||||
|
// You should take care not to modify buff as it will likely result in
|
||||||
|
// unexpected program behavior.
|
||||||
|
// If said buffer comes from a memory map, it's advisable to give it read
|
||||||
|
// only permissions, either at creation or by calling Mprotect from the
|
||||||
|
// golang.org/x/sys/unix package.
|
||||||
|
//
|
||||||
|
// Resulting bitmaps are effectively immutable in the following sense:
|
||||||
|
// a copy-on-write marker is used so that when you modify the resulting
|
||||||
|
// bitmap, copies of selected data (containers) are made.
|
||||||
|
// You should *not* change the copy-on-write status of the resulting
|
||||||
|
// bitmaps (SetCopyOnWrite).
|
||||||
|
//
|
||||||
|
// If buf becomes unavailable, then a bitmap created with
|
||||||
|
// FromBuffer would be effectively broken. Furthermore, any
|
||||||
|
// bitmap derived from this bitmap (e.g., via Or, And) might
|
||||||
|
// also be broken. Thus, before making buf unavailable, you should
|
||||||
|
// call CloneCopyOnWriteContainers on all such bitmaps.
|
||||||
|
//
|
||||||
|
func (rb *Bitmap) FrozenView(buf []byte) error {
|
||||||
|
return rb.highlowcontainer.frozenView(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Verbatim specification from CRoaring.
|
||||||
|
*
|
||||||
|
* FROZEN SERIALIZATION FORMAT DESCRIPTION
|
||||||
|
*
|
||||||
|
* -- (beginning must be aligned by 32 bytes) --
|
||||||
|
* <bitset_data> uint64_t[BITSET_CONTAINER_SIZE_IN_WORDS * num_bitset_containers]
|
||||||
|
* <run_data> rle16_t[total number of rle elements in all run containers]
|
||||||
|
* <array_data> uint16_t[total number of array elements in all array containers]
|
||||||
|
* <keys> uint16_t[num_containers]
|
||||||
|
* <counts> uint16_t[num_containers]
|
||||||
|
* <typecodes> uint8_t[num_containers]
|
||||||
|
* <header> uint32_t
|
||||||
|
*
|
||||||
|
* <header> is a 4-byte value which is a bit union of FROZEN_COOKIE (15 bits)
|
||||||
|
* and the number of containers (17 bits).
|
||||||
|
*
|
||||||
|
* <counts> stores number of elements for every container.
|
||||||
|
* Its meaning depends on container type.
|
||||||
|
* For array and bitset containers, this value is the container cardinality minus one.
|
||||||
|
* For run container, it is the number of rle_t elements (n_runs).
|
||||||
|
*
|
||||||
|
* <bitset_data>,<array_data>,<run_data> are flat arrays of elements of
|
||||||
|
* all containers of respective type.
|
||||||
|
*
|
||||||
|
* <*_data> and <keys> are kept close together because they are not accessed
|
||||||
|
* during deserilization. This may reduce IO in case of large mmaped bitmaps.
|
||||||
|
* All members have their native alignments during deserilization except <header>,
|
||||||
|
* which is not guaranteed to be aligned by 4 bytes.
|
||||||
|
*/
|
||||||
|
const FROZEN_COOKIE = 13766
|
||||||
|
|
||||||
|
var (
|
||||||
|
FrozenBitmapInvalidCookie = errors.New("header does not contain the FROZEN_COOKIE")
|
||||||
|
FrozenBitmapBigEndian = errors.New("loading big endian frozen bitmaps is not supported")
|
||||||
|
FrozenBitmapIncomplete = errors.New("input buffer too small to contain a frozen bitmap")
|
||||||
|
FrozenBitmapOverpopulated = errors.New("too many containers")
|
||||||
|
FrozenBitmapUnexpectedData = errors.New("spurious data in input")
|
||||||
|
FrozenBitmapInvalidTypecode = errors.New("unrecognized typecode")
|
||||||
|
FrozenBitmapBufferTooSmall = errors.New("buffer too small")
|
||||||
|
)
|
||||||
|
|
||||||
|
func (ra *roaringArray) frozenView(buf []byte) error {
|
||||||
|
if len(buf) < 4 {
|
||||||
|
return FrozenBitmapIncomplete
|
||||||
|
}
|
||||||
|
|
||||||
|
headerBE := binary.BigEndian.Uint32(buf[len(buf)-4:])
|
||||||
|
if headerBE & 0x7fff == FROZEN_COOKIE {
|
||||||
|
return FrozenBitmapBigEndian
|
||||||
|
}
|
||||||
|
|
||||||
|
header := binary.LittleEndian.Uint32(buf[len(buf)-4:])
|
||||||
|
buf = buf[:len(buf)-4]
|
||||||
|
|
||||||
|
if header & 0x7fff != FROZEN_COOKIE {
|
||||||
|
return FrozenBitmapInvalidCookie
|
||||||
|
}
|
||||||
|
|
||||||
|
nCont := int(header >> 15)
|
||||||
|
if nCont > (1 << 16) {
|
||||||
|
return FrozenBitmapOverpopulated
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1 byte per type, 2 bytes per key, 2 bytes per count.
|
||||||
|
if len(buf) < 5*nCont {
|
||||||
|
return FrozenBitmapIncomplete
|
||||||
|
}
|
||||||
|
|
||||||
|
types := buf[len(buf)-nCont:]
|
||||||
|
buf = buf[:len(buf)-nCont]
|
||||||
|
|
||||||
|
counts := byteSliceAsUint16Slice(buf[len(buf)-2*nCont:])
|
||||||
|
buf = buf[:len(buf)-2*nCont]
|
||||||
|
|
||||||
|
keys := byteSliceAsUint16Slice(buf[len(buf)-2*nCont:])
|
||||||
|
buf = buf[:len(buf)-2*nCont]
|
||||||
|
|
||||||
|
nBitmap, nArray, nRun := uint64(0), uint64(0), uint64(0)
|
||||||
|
nArrayEl, nRunEl := uint64(0), uint64(0)
|
||||||
|
for i, t := range types {
|
||||||
|
switch (t) {
|
||||||
|
case 1:
|
||||||
|
nBitmap++
|
||||||
|
case 2:
|
||||||
|
nArray++
|
||||||
|
nArrayEl += uint64(counts[i])+1
|
||||||
|
case 3:
|
||||||
|
nRun++
|
||||||
|
nRunEl += uint64(counts[i])
|
||||||
|
default:
|
||||||
|
return FrozenBitmapInvalidTypecode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if uint64(len(buf)) < (1 << 13)*nBitmap + 4*nRunEl + 2*nArrayEl {
|
||||||
|
return FrozenBitmapIncomplete
|
||||||
|
}
|
||||||
|
|
||||||
|
bitsetsArena := byteSliceAsUint64Slice(buf[:(1 << 13)*nBitmap])
|
||||||
|
buf = buf[(1 << 13)*nBitmap:]
|
||||||
|
|
||||||
|
runsArena := byteSliceAsInterval16Slice(buf[:4*nRunEl])
|
||||||
|
buf = buf[4*nRunEl:]
|
||||||
|
|
||||||
|
arraysArena := byteSliceAsUint16Slice(buf[:2*nArrayEl])
|
||||||
|
buf = buf[2*nArrayEl:]
|
||||||
|
|
||||||
|
if len(buf) != 0 {
|
||||||
|
return FrozenBitmapUnexpectedData
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: maybe arena_alloc all this.
|
||||||
|
containers := make([]container, nCont)
|
||||||
|
bitsets := make([]bitmapContainer, nBitmap)
|
||||||
|
arrays := make([]arrayContainer, nArray)
|
||||||
|
runs := make([]runContainer16, nRun)
|
||||||
|
needCOW := make([]bool, nCont)
|
||||||
|
|
||||||
|
iBitset, iArray, iRun := uint64(0), uint64(0), uint64(0)
|
||||||
|
for i, t := range types {
|
||||||
|
needCOW[i] = true
|
||||||
|
|
||||||
|
switch (t) {
|
||||||
|
case 1:
|
||||||
|
containers[i] = &bitsets[iBitset]
|
||||||
|
bitsets[iBitset].cardinality = int(counts[i])+1
|
||||||
|
bitsets[iBitset].bitmap = bitsetsArena[:1024]
|
||||||
|
bitsetsArena = bitsetsArena[1024:]
|
||||||
|
iBitset++
|
||||||
|
case 2:
|
||||||
|
containers[i] = &arrays[iArray]
|
||||||
|
arrays[iArray].content = arraysArena[:counts[i]+1]
|
||||||
|
arraysArena = arraysArena[counts[i]+1:]
|
||||||
|
iArray++
|
||||||
|
case 3:
|
||||||
|
containers[i] = &runs[iRun]
|
||||||
|
runs[iRun].iv = runsArena[:counts[i]]
|
||||||
|
runsArena = runsArena[counts[i]:]
|
||||||
|
iRun++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not consuming the full input is a bug.
|
||||||
|
if iBitset != nBitmap || len(bitsetsArena) != 0 ||
|
||||||
|
iArray != nArray || len(arraysArena) != 0 ||
|
||||||
|
iRun != nRun || len(runsArena) != 0 {
|
||||||
|
panic("we missed something")
|
||||||
|
}
|
||||||
|
|
||||||
|
ra.keys = keys
|
||||||
|
ra.containers = containers
|
||||||
|
ra.needCopyOnWrite = needCOW
|
||||||
|
ra.copyOnWrite = true
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bm *Bitmap) GetFrozenSizeInBytes() uint64 {
|
||||||
|
nBits, nArrayEl, nRunEl := uint64(0), uint64(0), uint64(0)
|
||||||
|
for _, c := range bm.highlowcontainer.containers {
|
||||||
|
switch v := c.(type) {
|
||||||
|
case *bitmapContainer:
|
||||||
|
nBits++
|
||||||
|
case *arrayContainer:
|
||||||
|
nArrayEl += uint64(len(v.content))
|
||||||
|
case *runContainer16:
|
||||||
|
nRunEl += uint64(len(v.iv))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 4 + 5*uint64(len(bm.highlowcontainer.containers)) +
|
||||||
|
(nBits << 13) + 2*nArrayEl + 4*nRunEl
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bm *Bitmap) Freeze() ([]byte, error) {
|
||||||
|
sz := bm.GetFrozenSizeInBytes()
|
||||||
|
buf := make([]byte, sz)
|
||||||
|
_, err := bm.FreezeTo(buf)
|
||||||
|
return buf, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bm *Bitmap) FreezeTo(buf []byte) (int, error) {
|
||||||
|
containers := bm.highlowcontainer.containers
|
||||||
|
nCont := len(containers)
|
||||||
|
|
||||||
|
nBits, nArrayEl, nRunEl := 0, 0, 0
|
||||||
|
for _, c := range containers {
|
||||||
|
switch v := c.(type) {
|
||||||
|
case *bitmapContainer:
|
||||||
|
nBits++
|
||||||
|
case *arrayContainer:
|
||||||
|
nArrayEl += len(v.content)
|
||||||
|
case *runContainer16:
|
||||||
|
nRunEl += len(v.iv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
serialSize := 4 + 5*nCont + (1 << 13)*nBits + 4*nRunEl + 2*nArrayEl
|
||||||
|
if len(buf) < serialSize {
|
||||||
|
return 0, FrozenBitmapBufferTooSmall
|
||||||
|
}
|
||||||
|
|
||||||
|
bitsArena := byteSliceAsUint64Slice(buf[:(1 << 13)*nBits])
|
||||||
|
buf = buf[(1 << 13)*nBits:]
|
||||||
|
|
||||||
|
runsArena := byteSliceAsInterval16Slice(buf[:4*nRunEl])
|
||||||
|
buf = buf[4*nRunEl:]
|
||||||
|
|
||||||
|
arraysArena := byteSliceAsUint16Slice(buf[:2*nArrayEl])
|
||||||
|
buf = buf[2*nArrayEl:]
|
||||||
|
|
||||||
|
keys := byteSliceAsUint16Slice(buf[:2*nCont])
|
||||||
|
buf = buf[2*nCont:]
|
||||||
|
|
||||||
|
counts := byteSliceAsUint16Slice(buf[:2*nCont])
|
||||||
|
buf = buf[2*nCont:]
|
||||||
|
|
||||||
|
types := buf[:nCont]
|
||||||
|
buf = buf[nCont:]
|
||||||
|
|
||||||
|
header := uint32(FROZEN_COOKIE|(nCont << 15))
|
||||||
|
binary.LittleEndian.PutUint32(buf[:4], header)
|
||||||
|
|
||||||
|
copy(keys, bm.highlowcontainer.keys[:])
|
||||||
|
|
||||||
|
for i, c := range containers {
|
||||||
|
switch v := c.(type) {
|
||||||
|
case *bitmapContainer:
|
||||||
|
copy(bitsArena, v.bitmap)
|
||||||
|
bitsArena = bitsArena[1024:]
|
||||||
|
counts[i] = uint16(v.cardinality-1)
|
||||||
|
types[i] = 1
|
||||||
|
case *arrayContainer:
|
||||||
|
copy(arraysArena, v.content)
|
||||||
|
arraysArena = arraysArena[len(v.content):]
|
||||||
|
elems := len(v.content)
|
||||||
|
counts[i] = uint16(elems)-1
|
||||||
|
types[i] = 2
|
||||||
|
case *runContainer16:
|
||||||
|
copy(runsArena, v.iv)
|
||||||
|
runs := len(v.iv)
|
||||||
|
runsArena = runsArena[runs:]
|
||||||
|
counts[i] = uint16(runs)
|
||||||
|
types[i] = 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return serialSize, nil
|
||||||
|
}
|
||||||
|
|
|
@ -384,7 +384,6 @@ func (c *CPUInfo) frequencies() {
|
||||||
eax, ebx, ecx, _ := cpuid(0x15)
|
eax, ebx, ecx, _ := cpuid(0x15)
|
||||||
if eax != 0 && ebx != 0 && ecx != 0 {
|
if eax != 0 && ebx != 0 && ecx != 0 {
|
||||||
c.Hz = (int64(ecx) * int64(ebx)) / int64(eax)
|
c.Hz = (int64(ecx) * int64(ebx)) / int64(eax)
|
||||||
fmt.Println("frequencies(): ", ecx, ebx, eax, "->", c.Hz)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if mfi >= 0x16 {
|
if mfi >= 0x16 {
|
||||||
|
|
|
@ -8,7 +8,7 @@ goldmark
|
||||||
|
|
||||||
> A Markdown parser written in Go. Easy to extend, standards-compliant, well-structured.
|
> A Markdown parser written in Go. Easy to extend, standards-compliant, well-structured.
|
||||||
|
|
||||||
goldmark is compliant with CommonMark 0.29.
|
goldmark is compliant with CommonMark 0.30.
|
||||||
|
|
||||||
Motivation
|
Motivation
|
||||||
----------------------
|
----------------------
|
||||||
|
|
|
@ -332,7 +332,7 @@ type List struct {
|
||||||
Marker byte
|
Marker byte
|
||||||
|
|
||||||
// IsTight is a true if this list is a 'tight' list.
|
// IsTight is a true if this list is a 'tight' list.
|
||||||
// See https://spec.commonmark.org/0.29/#loose for details.
|
// See https://spec.commonmark.org/0.30/#loose for details.
|
||||||
IsTight bool
|
IsTight bool
|
||||||
|
|
||||||
// Start is an initial number of this ordered list.
|
// Start is an initial number of this ordered list.
|
||||||
|
@ -414,7 +414,7 @@ func NewListItem(offset int) *ListItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTMLBlockType represents kinds of an html blocks.
|
// HTMLBlockType represents kinds of an html blocks.
|
||||||
// See https://spec.commonmark.org/0.29/#html-blocks
|
// See https://spec.commonmark.org/0.30/#html-blocks
|
||||||
type HTMLBlockType int
|
type HTMLBlockType int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -111,7 +111,7 @@ func (n *Text) SetRaw(v bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// HardLineBreak returns true if this node ends with a hard line break.
|
// HardLineBreak returns true if this node ends with a hard line break.
|
||||||
// See https://spec.commonmark.org/0.29/#hard-line-breaks for details.
|
// See https://spec.commonmark.org/0.30/#hard-line-breaks for details.
|
||||||
func (n *Text) HardLineBreak() bool {
|
func (n *Text) HardLineBreak() bool {
|
||||||
return n.flags&textHardLineBreak != 0
|
return n.flags&textHardLineBreak != 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,11 +30,11 @@ type Delimiter struct {
|
||||||
Segment text.Segment
|
Segment text.Segment
|
||||||
|
|
||||||
// CanOpen is set true if this delimiter can open a span for a new node.
|
// CanOpen is set true if this delimiter can open a span for a new node.
|
||||||
// See https://spec.commonmark.org/0.29/#can-open-emphasis for details.
|
// See https://spec.commonmark.org/0.30/#can-open-emphasis for details.
|
||||||
CanOpen bool
|
CanOpen bool
|
||||||
|
|
||||||
// CanClose is set true if this delimiter can close a span for a new node.
|
// CanClose is set true if this delimiter can close a span for a new node.
|
||||||
// See https://spec.commonmark.org/0.29/#can-open-emphasis for details.
|
// See https://spec.commonmark.org/0.30/#can-open-emphasis for details.
|
||||||
CanClose bool
|
CanClose bool
|
||||||
|
|
||||||
// Length is a remaining length of this delimiter.
|
// Length is a remaining length of this delimiter.
|
||||||
|
|
|
@ -76,8 +76,8 @@ var allowedBlockTags = map[string]bool{
|
||||||
"ul": true,
|
"ul": true,
|
||||||
}
|
}
|
||||||
|
|
||||||
var htmlBlockType1OpenRegexp = regexp.MustCompile(`(?i)^[ ]{0,3}<(script|pre|style)(?:\s.*|>.*|/>.*|)\n?$`)
|
var htmlBlockType1OpenRegexp = regexp.MustCompile(`(?i)^[ ]{0,3}<(script|pre|style|textarea)(?:\s.*|>.*|/>.*|)\n?$`)
|
||||||
var htmlBlockType1CloseRegexp = regexp.MustCompile(`(?i)^.*</(?:script|pre|style)>.*`)
|
var htmlBlockType1CloseRegexp = regexp.MustCompile(`(?i)^.*</(?:script|pre|style|textarea)>.*`)
|
||||||
|
|
||||||
var htmlBlockType2OpenRegexp = regexp.MustCompile(`^[ ]{0,3}<!\-\-`)
|
var htmlBlockType2OpenRegexp = regexp.MustCompile(`^[ ]{0,3}<!\-\-`)
|
||||||
var htmlBlockType2Close = []byte{'-', '-', '>'}
|
var htmlBlockType2Close = []byte{'-', '-', '>'}
|
||||||
|
|
|
@ -1148,7 +1148,7 @@ func (p *parser) parseBlock(block text.BlockReader, parent ast.Node, pc Context)
|
||||||
} else if hasNewLine {
|
} else if hasNewLine {
|
||||||
// If the line ends with a newline character, but it is not a hardlineBreak, then it is a softLinebreak
|
// If the line ends with a newline character, but it is not a hardlineBreak, then it is a softLinebreak
|
||||||
// If the line ends with a hardlineBreak, then it cannot end with a softLinebreak
|
// If the line ends with a hardlineBreak, then it cannot end with a softLinebreak
|
||||||
// See https://spec.commonmark.org/0.29/#soft-line-breaks
|
// See https://spec.commonmark.org/0.30/#soft-line-breaks
|
||||||
softLinebreak = true
|
softLinebreak = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ github.com/Microsoft/go-winio/pkg/guid
|
||||||
# github.com/NYTimes/gziphandler v1.1.1
|
# github.com/NYTimes/gziphandler v1.1.1
|
||||||
## explicit
|
## explicit
|
||||||
github.com/NYTimes/gziphandler
|
github.com/NYTimes/gziphandler
|
||||||
# github.com/ProtonMail/go-crypto v0.0.0-20210512092938-c05353c2d58c
|
# github.com/ProtonMail/go-crypto v0.0.0-20210705153151-cc34b1f6908b
|
||||||
## explicit
|
## explicit
|
||||||
github.com/ProtonMail/go-crypto/bitcurves
|
github.com/ProtonMail/go-crypto/bitcurves
|
||||||
github.com/ProtonMail/go-crypto/brainpool
|
github.com/ProtonMail/go-crypto/brainpool
|
||||||
|
@ -62,7 +62,7 @@ github.com/PuerkitoBio/goquery
|
||||||
github.com/PuerkitoBio/purell
|
github.com/PuerkitoBio/purell
|
||||||
# github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
|
# github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
|
||||||
github.com/PuerkitoBio/urlesc
|
github.com/PuerkitoBio/urlesc
|
||||||
# github.com/RoaringBitmap/roaring v0.8.0
|
# github.com/RoaringBitmap/roaring v0.9.1
|
||||||
## explicit
|
## explicit
|
||||||
github.com/RoaringBitmap/roaring
|
github.com/RoaringBitmap/roaring
|
||||||
github.com/RoaringBitmap/roaring/internal
|
github.com/RoaringBitmap/roaring/internal
|
||||||
|
@ -539,7 +539,7 @@ github.com/klauspost/compress/gzip
|
||||||
github.com/klauspost/compress/huff0
|
github.com/klauspost/compress/huff0
|
||||||
github.com/klauspost/compress/zstd
|
github.com/klauspost/compress/zstd
|
||||||
github.com/klauspost/compress/zstd/internal/xxhash
|
github.com/klauspost/compress/zstd/internal/xxhash
|
||||||
# github.com/klauspost/cpuid/v2 v2.0.7
|
# github.com/klauspost/cpuid/v2 v2.0.8
|
||||||
## explicit
|
## explicit
|
||||||
github.com/klauspost/cpuid/v2
|
github.com/klauspost/cpuid/v2
|
||||||
# github.com/klauspost/pgzip v1.2.5
|
# github.com/klauspost/pgzip v1.2.5
|
||||||
|
@ -797,7 +797,7 @@ github.com/xi2/xz
|
||||||
# github.com/yohcop/openid-go v1.0.0
|
# github.com/yohcop/openid-go v1.0.0
|
||||||
## explicit
|
## explicit
|
||||||
github.com/yohcop/openid-go
|
github.com/yohcop/openid-go
|
||||||
# github.com/yuin/goldmark v1.3.9
|
# github.com/yuin/goldmark v1.4.0
|
||||||
## explicit
|
## explicit
|
||||||
github.com/yuin/goldmark
|
github.com/yuin/goldmark
|
||||||
github.com/yuin/goldmark/ast
|
github.com/yuin/goldmark/ast
|
||||||
|
@ -1037,7 +1037,7 @@ strk.kbt.io/projects/go/libravatar
|
||||||
# xorm.io/builder v0.3.9
|
# xorm.io/builder v0.3.9
|
||||||
## explicit
|
## explicit
|
||||||
xorm.io/builder
|
xorm.io/builder
|
||||||
# xorm.io/xorm v1.1.1
|
# xorm.io/xorm v1.1.2
|
||||||
## explicit
|
## explicit
|
||||||
xorm.io/xorm
|
xorm.io/xorm
|
||||||
xorm.io/xorm/caches
|
xorm.io/xorm/caches
|
||||||
|
|
|
@ -347,3 +347,19 @@ steps:
|
||||||
image: golang:1.15
|
image: golang:1.15
|
||||||
commands:
|
commands:
|
||||||
- make coverage
|
- make coverage
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
name: release-tag
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
- tag
|
||||||
|
steps:
|
||||||
|
- name: release-tag-gitea
|
||||||
|
pull: always
|
||||||
|
image: plugins/gitea-release:latest
|
||||||
|
settings:
|
||||||
|
base_url: https://gitea.com
|
||||||
|
title: '${DRONE_TAG} is released'
|
||||||
|
api_key:
|
||||||
|
from_secret: gitea_token
|
|
@ -3,6 +3,11 @@
|
||||||
This changelog goes through all the changes that have been made in each release
|
This changelog goes through all the changes that have been made in each release
|
||||||
without substantial changes to our git log.
|
without substantial changes to our git log.
|
||||||
|
|
||||||
|
## [1.1.2](https://gitea.com/xorm/xorm/releases/tag/1.1.2) - 2021-07-04
|
||||||
|
|
||||||
|
* BUILD
|
||||||
|
* Add release tag (#1966)
|
||||||
|
|
||||||
## [1.1.1](https://gitea.com/xorm/xorm/releases/tag/1.1.1) - 2021-07-03
|
## [1.1.1](https://gitea.com/xorm/xorm/releases/tag/1.1.1) - 2021-07-03
|
||||||
|
|
||||||
* BUGFIXES
|
* BUGFIXES
|
||||||
|
|
Loading…
Reference in New Issue