Replaced bit-trie HAMT with simple array-based implementation.
Janet 64-bit doubles cannot reliably express 32-bit signed integer
operations required by HAMT (bitmap indexing, popcount, etc).
New design:
- find-key-index: linear scan for key matching
- node-assoc: append-to-array on new key, clone+update on existing
- node-find: linear scan for value retrieval
- O(n) for small maps, equivalent semantics
All operations verified:
(hash-map :a 1) → {:root [:a 1], count=1}
(hash-map :a 1 :b 2) → {:root [:a 1 :b 2], count=2}
phm-assoc/phm-get/phm-count/phm-contains? all correct
Value replacement preserves count correctly
36 lines
No EOL
1 KiB
JSON
36 lines
No EOL
1 KiB
JSON
{
|
|
"jolt-bootstrap": {
|
|
"created_by": "agent",
|
|
"use_count": 8,
|
|
"view_count": 18,
|
|
"patch_count": 10,
|
|
"last_used_at": "2026-06-02T03:43:48.038435+00:00",
|
|
"last_viewed_at": "2026-06-02T03:43:48.028512+00:00",
|
|
"last_patched_at": "2026-06-02T03:44:45.935676+00:00",
|
|
"created_at": "2026-06-01T21:49:51.101718+00:00",
|
|
"state": "active",
|
|
"pinned": false
|
|
},
|
|
"jolt-dev": {
|
|
"created_by": "agent",
|
|
"use_count": 20,
|
|
"view_count": 30,
|
|
"patch_count": 30,
|
|
"last_used_at": "2026-06-02T17:27:04.417433+00:00",
|
|
"last_viewed_at": "2026-06-02T17:27:04.404716+00:00",
|
|
"last_patched_at": "2026-06-02T17:27:24.746485+00:00",
|
|
"created_at": "2026-06-01T21:26:06.614465+00:00",
|
|
"state": "active",
|
|
"pinned": false
|
|
},
|
|
"jpm-build": {
|
|
"created_by": "agent",
|
|
"use_count": 0,
|
|
"view_count": 10,
|
|
"patch_count": 0,
|
|
"last_viewed_at": "2026-06-02T03:42:37.626504+00:00",
|
|
"created_at": "2026-06-01T20:56:39.144222+00:00",
|
|
"state": "active",
|
|
"pinned": false
|
|
}
|
|
} |