No description
- PureBasic 96.1%
- Shell 3.9%
lhs_lib -> 902770e (lhs_arena Poison-Guard + Concurrency-Sentinel).
- tests/smoke/lhs_arena_guard_smoke.pb (14 Asserts):
[1] Normalbetrieb -> keine False-Positives (Poison/Concurrency/Callback alle 0)
[2] Use-after-Destroy + Map-Read-after-Destroy + Double-Destroy -> sichere
Defaults (0/#False) statt SIGSEGV/SIGABRT; PoisonHits + Callback (Alloc/
MapRead/Destroy via DiagOpName) bestaetigt
[3] Concurrency-Sentinel: Holder (Reset-Loop, haelt in_mut waehrend Chunk-Walk)
vs reiner Reader (MapExists, schreibt in_mut nie -> speichersicher) ->
ConcurrencyHits > 0 zuverlaessig (842k Hits in Runde 1)
- build.sh: per-File-Extra-Flags; lhs_arena_guard_smoke baut mit
-co LHS_ARENA_DEBUG=1 (PB-Module kapseln Konstanten -> Quelltext-`#`-Define
erreicht das Module nicht; CLI-Injektion quert die Grenze).
- CLAUDE.md: Smoke-Liste um lhs_arena_guard (14) ergaenzt.
Voller build.sh-Lauf gruen; arena/arena_stress/arena_atomic_stress/gc_*-Suiten
+ json (102) unveraendert rc=0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| bench_results | ||
| idee_docs | ||
| lhs_lib@902770e0eb | ||
| tests | ||
| .gitignore | ||
| .gitmodules | ||
| CLAUDE.md | ||
| README.md | ||
lhs_lib_full
Wrapper-Repository für lhs_lib (eingebunden als Git-Submodule) plus Tests, Benchmarks und Bench-Ergebnisse.
Analog zum NET_Framework-Layout (net_lib als Submodule + Drumherum).
Verzeichnis-Layout
lhs_lib_full/
├── lhs_lib/ ← Submodule: gitea.lihaso.com:3001/PB_Includes/lhs_lib.git
│ ├── SYS/ (Module: lhs_arena, lhs_atomic, lhs_lockfree_queue,
│ │ lhs_disk_vfs, lhs_log, lhs_log_ext, lhs_uuid,
│ │ lhs_sys_debug_wrapper)
│ ├── GUI/ (lhs_dialog)
│ └── README.md
├── tests/
│ ├── lhs_arena_bench.pb Performance-Benchmark gegen PB-Native
│ ├── lhs_arena_memprof.pb Memory-Footprint-Profiler (Peak-RSS, Page-Faults)
│ └── build_csv.sh Vergleichstabellen-Generator
└── bench_results/
├── comparison.csv Modern vs alte CPU
├── ryzen_results.txt Ryzen AI 9 HX 370 (24c, Zen 5)
├── x5650_results.txt Xeon X5650 (4c VM, Westmere)
├── memprof_local.txt Memory-Profile Ryzen
└── memprof_x5650.txt Memory-Profile X5650
Clone mit Submodule
git clone --recurse-submodules ssh://git@gitea.lihaso.com:3001/PB_Includes/lhs_lib_full.git
# oder nachträglich:
git clone ssh://git@gitea.lihaso.com:3001/PB_Includes/lhs_lib_full.git
cd lhs_lib_full
git submodule update --init --recursive
Tests bauen + laufen
cd tests
pbcompilerc lhs_arena_bench.pb --thread --optimizer --executable arena_bench
pbcompilerc lhs_arena_memprof.pb --executable arena_memprof
./arena_bench > ../bench_results/$(hostname)_bench.txt
./arena_memprof pb 100000 > ../bench_results/$(hostname)_memprof_pb.txt
./arena_memprof arena 100000 > ../bench_results/$(hostname)_memprof_arena.txt
./arena_memprof ppql_pb 50000 > ../bench_results/$(hostname)_memprof_ppql_pb.txt
./arena_memprof ppql_arena 50000 > ../bench_results/$(hostname)_memprof_ppql_arena.txt
Bench-Highlights
Ryzen AI 9 HX 370 (24 Cores, Zen 5) gegen PB-Native bei 100 000 Map-Einträgen:
| Test | PB-Native | lhs_arena | Speedup |
|---|---|---|---|
| Map-Lifecycle (Insert + Lookup + Cleanup) | 269 ms | 27.6 ms | 9.7× |
| Concurrent (1000 Threads × 5k ops, 90% read) | 4.62 s | 102 ms | 45× |
| PPQL Result-Set 50k Rows × 10 Cols | 9.89 s | 69 ms | 143× |
| HTTP Header-Match (500 known, Bytes-API) | 1.4 µs/op | 43 ns/op | 32× |
Xeon X5650 (4c VM, Westmere) — vor allem im Tail-Latency-Verhalten und unter Heap-Druck zeigt sich der Gewinn ähnlich oder deutlicher.
Volle Auswertung: bench_results/comparison.csv
Lizenz
SPDX-License-Identifier: LGPL-2.1-or-later OR Commercial
Siehe lhs_lib/README.md für Details und info@lihaso.ch für kommerzielle Lizenzierung.