[chore] update dependencies (#4468)

- github.com/ncruces/go-sqlite3
- codeberg.org/gruf/go-mempool
- codeberg.org/gruf/go-structr (changes related on the above) *
- codeberg.org/gruf/go-mutexes (changes related on the above) *

* this is largely just fiddling around with package internals in structr and mutexes to rely on changes in mempool, which added a new concurrency-safe pool

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4468
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
This commit is contained in:
kim 2025-10-03 15:29:41 +02:00 committed by kim
commit ff950e94bb
32 changed files with 706 additions and 317 deletions

View file

@ -4,10 +4,10 @@ import (
"os"
"reflect"
"strings"
"sync"
"unsafe"
"codeberg.org/gruf/go-byteutil"
"codeberg.org/gruf/go-mempool"
"codeberg.org/gruf/go-xunsafe"
)
@ -371,17 +371,15 @@ type index_entry struct {
key string
}
var index_entry_pool sync.Pool
var index_entry_pool mempool.UnsafePool
// new_index_entry returns a new prepared index_entry.
func new_index_entry() *index_entry {
v := index_entry_pool.Get()
if v == nil {
e := new(index_entry)
e.elem.data = unsafe.Pointer(e)
v = e
if ptr := index_entry_pool.Get(); ptr != nil {
return (*index_entry)(ptr)
}
entry := v.(*index_entry)
entry := new(index_entry)
entry.elem.data = unsafe.Pointer(entry)
return entry
}
@ -396,7 +394,8 @@ func free_index_entry(entry *index_entry) {
entry.key = ""
entry.index = nil
entry.item = nil
index_entry_pool.Put(entry)
ptr := unsafe.Pointer(entry)
index_entry_pool.Put(ptr)
}
func is_unique(f uint8) bool {

View file

@ -2,8 +2,9 @@ package structr
import (
"os"
"sync"
"unsafe"
"codeberg.org/gruf/go-mempool"
)
type indexed_item struct {
@ -19,17 +20,15 @@ type indexed_item struct {
indexed []*index_entry
}
var indexed_item_pool sync.Pool
var indexed_item_pool mempool.UnsafePool
// new_indexed_item returns a new prepared indexed_item.
func new_indexed_item() *indexed_item {
v := indexed_item_pool.Get()
if v == nil {
i := new(indexed_item)
i.elem.data = unsafe.Pointer(i)
v = i
if ptr := indexed_item_pool.Get(); ptr != nil {
return (*indexed_item)(ptr)
}
item := v.(*indexed_item)
item := new(indexed_item)
item.elem.data = unsafe.Pointer(item)
return item
}
@ -43,7 +42,8 @@ func free_indexed_item(item *indexed_item) {
return
}
item.data = nil
indexed_item_pool.Put(item)
ptr := unsafe.Pointer(item)
indexed_item_pool.Put(ptr)
}
// drop_index will drop the given index entry from item's indexed.

View file

@ -2,8 +2,9 @@ package structr
import (
"os"
"sync"
"unsafe"
"codeberg.org/gruf/go-mempool"
)
// elem represents an elem
@ -27,16 +28,14 @@ type list struct {
len int
}
var list_pool sync.Pool
var list_pool mempool.UnsafePool
// new_list returns a new prepared list.
func new_list() *list {
v := list_pool.Get()
if v == nil {
v = new(list)
if ptr := list_pool.Get(); ptr != nil {
return (*list)(ptr)
}
list := v.(*list)
return list
return new(list)
}
// free_list releases the list.
@ -48,11 +47,13 @@ func free_list(list *list) {
os.Stderr.WriteString(msg + "\n")
return
}
list_pool.Put(list)
ptr := unsafe.Pointer(list)
list_pool.Put(ptr)
}
// push_front will push the given elem to front (head) of list.
func (l *list) push_front(elem *list_elem) {
// Set new head.
oldHead := l.head
l.head = elem
@ -66,12 +67,14 @@ func (l *list) push_front(elem *list_elem) {
l.tail = elem
}
// Incr count
// Incr
// count
l.len++
}
// push_back will push the given elem to back (tail) of list.
func (l *list) push_back(elem *list_elem) {
// Set new tail.
oldTail := l.tail
l.tail = elem
@ -85,7 +88,8 @@ func (l *list) push_back(elem *list_elem) {
l.head = elem
}
// Incr count
// Incr
// count
l.len++
}
@ -131,7 +135,8 @@ func (l *list) insert(elem *list_elem, at *list_elem) {
elem.next = oldNext
}
// Incr count
// Incr
// count
l.len++
}
@ -174,6 +179,7 @@ func (l *list) remove(elem *list_elem) {
prev.next = next
}
// Decr count
// Decr
// count
l.len--
}

View file

@ -146,7 +146,7 @@ func find_field(t xunsafe.TypeIter, names []string) (sfield struct_field, ftype
sfield.mangle = mangler.Get(t)
// Calculate zero value string.
zptr := zero_value_field(o, sfield.offsets)
zptr := zero_value_ptr(o, sfield.offsets)
zstr := string(sfield.mangle(nil, zptr))
sfield.zerostr = zstr
sfield.zero = zptr
@ -154,7 +154,9 @@ func find_field(t xunsafe.TypeIter, names []string) (sfield struct_field, ftype
return
}
// zero_value ...
// zero_value iterates the type contained in TypeIter{} along the given
// next_offset{} values, creating new ptrs where necessary, returning the
// zero reflect.Value{} after fully iterating the next_offset{} slice.
func zero_value(t xunsafe.TypeIter, offsets []next_offset) reflect.Value {
v := reflect.New(t.Type).Elem()
for _, offset := range offsets {
@ -175,8 +177,8 @@ func zero_value(t xunsafe.TypeIter, offsets []next_offset) reflect.Value {
return v
}
// zero_value_field ...
func zero_value_field(t xunsafe.TypeIter, offsets []next_offset) unsafe.Pointer {
// zero_value_ptr returns the unsafe pointer address of the result of zero_value().
func zero_value_ptr(t xunsafe.TypeIter, offsets []next_offset) unsafe.Pointer {
return zero_value(t, offsets).Addr().UnsafePointer()
}

View file

@ -8,6 +8,8 @@ import (
"strings"
"sync"
"unsafe"
"codeberg.org/gruf/go-mempool"
)
// Direction defines a direction
@ -1133,18 +1135,16 @@ func to_timeline_item(item *indexed_item) *timeline_item {
return to
}
var timeline_item_pool sync.Pool
var timeline_item_pool mempool.UnsafePool
// new_timeline_item returns a new prepared timeline_item.
func new_timeline_item() *timeline_item {
v := timeline_item_pool.Get()
if v == nil {
i := new(timeline_item)
i.elem.data = unsafe.Pointer(i)
i.ck = ^uint(0)
v = i
if ptr := timeline_item_pool.Get(); ptr != nil {
return (*timeline_item)(ptr)
}
item := v.(*timeline_item)
item := new(timeline_item)
item.elem.data = unsafe.Pointer(item)
item.ck = ^uint(0)
return item
}
@ -1159,5 +1159,6 @@ func free_timeline_item(item *timeline_item) {
}
item.data = nil
item.pk = nil
timeline_item_pool.Put(item)
ptr := unsafe.Pointer(item)
timeline_item_pool.Put(ptr)
}