* Speedups: remove dependency on c++
* Speedups: intset: handle malloc failing
* Speedups: intset: fix corner case for int64 on 32bit systems
original idea was to only use bucket->val if int<pointer,
but we always have a union now anyway
* Speedups: add size comment to player_set bucket configuration
* test: more tests for LocationStore.find_item
* test: require _speedups in CI
This kind of tests that the build succeeds.
* test: even more tests for LocationStore.find_item
* Speedups: intset uniform comment style
* Speedups: intset: avoid memory leak when realloc fails
* Speedups: intset: make `gcc -pedantic -std=c99 -fanalyzer` without warnings
Unnamed unions are not in C99, this got fixed.
The overhead of setting count=0 is minimal or optimized-out and silences -fanalizer (see comment).
* Speedups: don't leak memory in case of exception
* Speedups: intset: validate alloc and free
This won't happen in our cython, but it's still a good addition.
* CI: add test framework for C/C++ code
* CI: ctest: fix cwd
* Speedups: intset: ignore msvc warning
* Tests: intset: revert attempt at no-asan
We solve this with env vars in ctest now, and this fails for msvc.
* Test: cpp: docs: fix typo
* Test: cpp: docs: fix another typo
* Test: intset: proper bucket count for Negative test
INTxx_MIN % 1 would not produce a negative number, so the test was flawed.
* MultiServer: speed up location commands
Adds optimized pure python wrapper around locations dict
Adds optimized cython implementation of the wrapper, saving cpu time and 80% memory use
* Speedups: auto-build on import and build during setup
* Speedups: add requirements
* CI: don't break with build_ext
* Speedups: use C++ compiler for pyximport
* Speedups: cleanup and more validation
* Speedups: add tests for LocationStore
* Setup: delete temp in-place build modules
* Speedups: more tests and safer indices
The change has no security implications, but ensures that entries[IndexEntry.start] is always valid.
* Speedups: add cython3 compatibility
* Speedups: remove unused import
* Speedups: reformat
* Speedup: fix empty set in test
* Speedups: use regular dict in Locations.get_for_player
* CI: run unittests with beta cython
now with 2x nicer names