[chore] update dependencies (#4601)

- codeberg.org/gruf/go-mempool: v0.0.0-20251108154517-8ed128fbca8e -> v0.0.0-20251203105841-4b67fa2f3984
- codeberg.org/gruf/go-structr: v0.9.13 -> v0.9.14
- github.com/ncruces/go-sqlite3: v0.30.2 -> v0.30.3

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4601
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
This commit is contained in:
kim
2025-12-03 13:33:33 +01:00
committed by kim
parent 4780662511
commit 826f69e815
8 changed files with 129 additions and 39 deletions
+3 -3
View File
@@ -22,14 +22,14 @@ require (
codeberg.org/gruf/go-iotools v0.0.0-20240710125620-934ae9c654cf
codeberg.org/gruf/go-kv/v2 v2.0.7
codeberg.org/gruf/go-list v0.0.0-20240425093752-494db03d641f
codeberg.org/gruf/go-mempool v0.0.0-20251108154517-8ed128fbca8e
codeberg.org/gruf/go-mempool v0.0.0-20251203105841-4b67fa2f3984
codeberg.org/gruf/go-mmap v0.0.0-20251111184116-345a42dab154
codeberg.org/gruf/go-mutexes v1.5.8
codeberg.org/gruf/go-runners v1.7.0
codeberg.org/gruf/go-sched v1.3.0
codeberg.org/gruf/go-split v1.2.0
codeberg.org/gruf/go-storage v0.5.0
codeberg.org/gruf/go-structr v0.9.13
codeberg.org/gruf/go-structr v0.9.14
github.com/DmitriyVTitov/size v1.5.0
github.com/KimMachineGun/automemlimit v0.7.5
github.com/SherClockHolmes/webpush-go v1.4.0
@@ -51,7 +51,7 @@ require (
github.com/miekg/dns v1.1.68
github.com/minio/minio-go/v7 v7.0.97
github.com/mitchellh/mapstructure v1.5.0
github.com/ncruces/go-sqlite3 v0.30.2
github.com/ncruces/go-sqlite3 v0.30.3
github.com/oklog/ulid v1.3.1
github.com/pquerna/otp v1.5.0
github.com/rivo/uniseg v0.4.7
Generated
+6 -6
View File
@@ -42,8 +42,8 @@ codeberg.org/gruf/go-mangler/v2 v2.0.6 h1:c3cwnI6Mi17EAwGSYGNMN6+9PMzaIj2GLAKx9D
codeberg.org/gruf/go-mangler/v2 v2.0.6/go.mod h1:CXIm7zAWPdNmZVAGM1NRiF/ekJTPE7YTb8kiRxiEFaQ=
codeberg.org/gruf/go-maps v1.0.4 h1:K+Ww4vvR3TZqm5jqrKVirmguZwa3v1VUvmig2SE8uxY=
codeberg.org/gruf/go-maps v1.0.4/go.mod h1:ASX7osM7kFwt5O8GfGflcFjrwYGD8eIuRLl/oMjhEi8=
codeberg.org/gruf/go-mempool v0.0.0-20251108154517-8ed128fbca8e h1:FeUR1iVQotYO7Lq3T8LZ4bTwammXWgrNOdq+hMezETs=
codeberg.org/gruf/go-mempool v0.0.0-20251108154517-8ed128fbca8e/go.mod h1:761koiXmqfgzvu5mez2Rk7YlwWilpqJ/zv5hIA6NoNI=
codeberg.org/gruf/go-mempool v0.0.0-20251203105841-4b67fa2f3984 h1:pKfbh2e4iVMo53ixWfL5Ep3M4G7zTSVCTlRuq8lY4v8=
codeberg.org/gruf/go-mempool v0.0.0-20251203105841-4b67fa2f3984/go.mod h1:761koiXmqfgzvu5mez2Rk7YlwWilpqJ/zv5hIA6NoNI=
codeberg.org/gruf/go-mmap v0.0.0-20251111184116-345a42dab154 h1:2SSyx/7XgOOC9nKdlrgpxenz7oZlvUeLR+YEfjM6iS8=
codeberg.org/gruf/go-mmap v0.0.0-20251111184116-345a42dab154/go.mod h1:kaHx5xHuLNf13iALbHiFpXmLeO33Ll/aW3mGkW8sI40=
codeberg.org/gruf/go-mutexes v1.5.8 h1:HRGnvT4COb3jX9xdeoSUUbjPgmk5kXPuDfld9ksUJKA=
@@ -56,8 +56,8 @@ codeberg.org/gruf/go-split v1.2.0 h1:PmzL23nVEVHm8VxjsJmv4m4wGQz2bGgQw52dgSSj65c
codeberg.org/gruf/go-split v1.2.0/go.mod h1:0rejWJpqvOoFAd7nwm5tIXYKaAqjtFGOXmTqQV+VO38=
codeberg.org/gruf/go-storage v0.5.0 h1:c4rT1yOEVvBuPclWhppxmLYy+SN1qdgwFdZG7Icyn3s=
codeberg.org/gruf/go-storage v0.5.0/go.mod h1:Zk/kpUMCikXQNJBHSjxygKwv7N/t8mJvg17sMjl29Xw=
codeberg.org/gruf/go-structr v0.9.13 h1:tTAR30OnSKrcvBomlGZdwE2nE+cfWhkX8UhX0GTAbMo=
codeberg.org/gruf/go-structr v0.9.13/go.mod h1:sP2ZSjM5X5XKlxuhAbTKuVQm9DWbHsrQRuTl3MUwbHw=
codeberg.org/gruf/go-structr v0.9.14 h1:mUxxyg2isIkJI+fOZM8CLMq/JwaDteYyP3GmTem62tk=
codeberg.org/gruf/go-structr v0.9.14/go.mod h1:xd0c09WwcwXwzBGMnsyVsbgtOvbvcckPWyguS8XhVtE=
codeberg.org/gruf/go-xunsafe v0.0.0-20250809104800-512a9df57d73 h1:pRaOwIOS1WSZoPCAvE0H1zpv+D4gF37OVppybffqdI8=
codeberg.org/gruf/go-xunsafe v0.0.0-20250809104800-512a9df57d73/go.mod h1:9wkq+dmHjUhB/0ZxDUWAwsWuXwwGyx5N1dDCB9hpWs8=
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
@@ -333,8 +333,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/ncruces/go-sqlite3 v0.30.2 h1:1GVbHAkKAOwjJd3JYl8ldrYROudfZUOah7oXPD7VZbQ=
github.com/ncruces/go-sqlite3 v0.30.2/go.mod h1:AxKu9sRxkludimFocbktlY6LiYSkxiI5gTA8r+os/Nw=
github.com/ncruces/go-sqlite3 v0.30.3 h1:X/CgWW9GzmIAkEPrifhKqf0cC15DuOVxAJaHFTTAURQ=
github.com/ncruces/go-sqlite3 v0.30.3/go.mod h1:AxKu9sRxkludimFocbktlY6LiYSkxiI5gTA8r+os/Nw=
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M=
+114 -25
View File
@@ -1,6 +1,7 @@
package mempool
import (
"runtime"
"sync"
"sync/atomic"
"unsafe"
@@ -70,18 +71,15 @@ const (
)
type internal struct {
// fast-access ring-buffer of
// pointers accessible by index.
//
// if Go ever exposes goroutine IDs
// to us we can make this a lot faster.
ring [20]unsafe.Pointer
index atomic.Uint32
// underlying pool and
// slow mutex protection.
pool UnsafeSimplePool
mutex sync.Mutex
// fast-access ring-buffer of
// pointers accessible by PID
// (running goroutine index).
ring atomic_pointer
}
func (p *internal) Check(fn func(current, victim int) bool) func(current, victim int) bool {
@@ -100,40 +98,131 @@ func (p *internal) Check(fn func(current, victim int) bool) func(current, victim
}
func (p *internal) Get() unsafe.Pointer {
const cap = uint32(cap(p.ring))
idx := p.index.Load() % cap
if ptr := atomic.SwapPointer(&p.ring[idx], nil); ptr != nil {
p.index.Add(^uint32(0)) // i.e. -1
pid := procPin()
ptr := p.local(pid).Swap(nil)
procUnpin()
if ptr != nil {
return ptr
}
p.mutex.Lock()
ptr := p.pool.Get()
ptr = p.pool.Get()
p.mutex.Unlock()
return ptr
}
func (p *internal) Put(ptr unsafe.Pointer) {
const cap = uint32(cap(p.ring))
idx := p.index.Add(1) % cap
if ptr := atomic.SwapPointer(&p.ring[idx], ptr); ptr != nil {
p.mutex.Lock()
p.pool.Put(ptr)
p.mutex.Unlock()
pid := procPin()
ptr = p.local(pid).Swap(ptr)
procUnpin()
if ptr == nil {
return
}
p.mutex.Lock()
p.pool.Put(ptr)
p.mutex.Unlock()
}
func (p *internal) GC() {
for i := range p.ring {
atomic.StorePointer(&p.ring[i], nil)
}
p.ring.Store(nil)
p.mutex.Lock()
p.pool.GC()
p.mutex.Unlock()
}
func (p *internal) Size() int {
func (p *internal) Size() (sz int) {
if ptr := p.ring.Load(); ptr != nil {
sz += len(*(*[]pointer_elem)(ptr))
}
p.mutex.Lock()
sz := p.pool.Size()
sz += p.pool.Size()
p.mutex.Unlock()
return sz
return
}
// local returns an atomic_pointer from the fast-access
// ring buffer for the given goroutine PID index.
func (p *internal) local(pid uint) *pointer_elem {
for {
// Load current ring.
ptr := p.ring.Load()
if ptr != nil {
// Check if pid within ring length.
ring := *(*[]pointer_elem)(ptr)
if pid < uint(len(ring)) {
return &ring[pid]
}
}
// Unpin before calling GOMAXPROCS,
// which acquires a blocking mutex
// lock on scheduler and may cause
// goroutine to be rescheduled.
procUnpin()
// Allocate new ring buffer capable
// of accomodating an index of 'pid'.
ring := make([]pointer_elem, maxprocs())
// Repin and get a (potentially)
// different goroutine PID index.
pid = procPin()
// Attempt to replace
// ring ptr with new.
if pid < uint(len(ring)) &&
p.ring.CAS(ptr, unsafe.Pointer(&ring)) {
return &ring[pid]
}
}
}
// atomic_pointer wraps an unsafe.Pointer with
// receiver methods for their atomic counterparts.
type atomic_pointer struct{ p unsafe.Pointer }
func (p *atomic_pointer) Load() unsafe.Pointer {
return atomic.LoadPointer(&p.p)
}
func (p *atomic_pointer) Store(ptr unsafe.Pointer) {
atomic.StorePointer(&p.p, ptr)
}
func (p *atomic_pointer) CAS(old, new unsafe.Pointer) bool {
return atomic.CompareAndSwapPointer(&p.p, old, new)
}
// pointer_elem wraps an unsafe.Pointer to make
// swapping of a slice element nicer on the eyes.
//
// THIS IS THE TRUE VIBE CODING, NONE OF THAT LLM
// DOG-ARSE BULLSHIT. WRITE CODE WITH *NICE VIBES*.
type pointer_elem struct{ p unsafe.Pointer }
func (p *pointer_elem) Swap(new unsafe.Pointer) unsafe.Pointer {
old := p.p
p.p = new
return old
}
// maxprocs prevents runtime.GOMAXPROCS() from
// being inlined, making it more likely for its
// caller to be capable of being inlined.
//
//go:noinline
func maxprocs() int {
return runtime.GOMAXPROCS(0)
}
// note is int in runtime, but should never be negative.
//
//go:linkname procPin runtime.procPin
func procPin() uint
//go:linkname procUnpin runtime.procUnpin
func procUnpin()
+1 -1
View File
@@ -1,6 +1,6 @@
# Embeddable Wasm build of SQLite
This folder includes an embeddable Wasm build of SQLite 3.50.4 for use with
This folder includes an embeddable Wasm build of SQLite 3.51.1 for use with
[`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3).
The following optional features are compiled in:
+1
View File
@@ -23,6 +23,7 @@ trap 'rm -f sqlite3.tmp' EXIT
-Wl,--import-undefined \
-Wl,--initial-memory=327680 \
-D_HAVE_SQLITE_CONFIG_H \
-DSQLITE_EXPERIMENTAL_PRAGMA_20251114 \
-DSQLITE_CUSTOM_INCLUDE=sqlite_opt.h \
$(awk '{print "-Wl,--export="$0}' exports.txt)
Binary file not shown.
+1 -1
View File
@@ -223,7 +223,7 @@ func (m *memFile) Lock(lock vfs.LockLevel) error {
m.reserved = true
case vfs.LOCK_EXCLUSIVE:
if m.lock < vfs.LOCK_PENDING {
if m.lock == vfs.LOCK_RESERVED {
m.lock = vfs.LOCK_PENDING
m.pending = true
}
+3 -3
View File
@@ -271,7 +271,7 @@ codeberg.org/gruf/go-mangler/v2
# codeberg.org/gruf/go-maps v1.0.4
## explicit; go 1.20
codeberg.org/gruf/go-maps
# codeberg.org/gruf/go-mempool v0.0.0-20251108154517-8ed128fbca8e
# codeberg.org/gruf/go-mempool v0.0.0-20251203105841-4b67fa2f3984
## explicit; go 1.24.0
codeberg.org/gruf/go-mempool
# codeberg.org/gruf/go-mmap v0.0.0-20251111184116-345a42dab154
@@ -297,7 +297,7 @@ codeberg.org/gruf/go-storage/internal
codeberg.org/gruf/go-storage/memory
codeberg.org/gruf/go-storage/s3
codeberg.org/gruf/go-storage/s3/cache
# codeberg.org/gruf/go-structr v0.9.13
# codeberg.org/gruf/go-structr v0.9.14
## explicit; go 1.24.5
codeberg.org/gruf/go-structr
# codeberg.org/gruf/go-xunsafe v0.0.0-20250809104800-512a9df57d73
@@ -739,7 +739,7 @@ github.com/modern-go/reflect2
# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
## explicit
github.com/munnerz/goautoneg
# github.com/ncruces/go-sqlite3 v0.30.2
# github.com/ncruces/go-sqlite3 v0.30.3
## explicit; go 1.24.0
github.com/ncruces/go-sqlite3
github.com/ncruces/go-sqlite3/driver