What's Changed
- ane_calib: scale the default sweep to the model FFN width by @chainhelen in #1200
- sdk: add Python C ABI bindings with explicit request lifetimes by @chainhelen in #1154
- engine: note that defaults_ is written only in the constructor (the SDK's concurrent request_create relies on it) by @alish-nace-23 in #1212
- SDK: add Rust C ABI bindings with checked ownership and cancellation by @chainhelen in #1166
- engine page test: stopping a signalled stand-in returns (#1213) by @alish-nace-23 in #1214
- docs: a test fix is proved by running the test's own file (#1215) by @alish-nace-23 in #1216
- Report failed stand-in startup in the engine page test summary by @chainhelen in #1217
- Combined KQuant repo ids (nace-ai/-MLX-KQuant, Q4/ and Q5/) take the catalog variant with its drafter and MTP head (task #500; not verified on a GPU) by @alish-nace-23 in #1218
- Benchmark: Mac mini (2026) · M5 Pro · 64 GB · Qwen3.6 35B-A3B 4-bit by @carven-ji in #1202
- Benchmark: Mac mini (2026) · M5 Pro · 64 GB · Recursive Flint 40B-A2.5B 4-bit by @carven-ji in #1203
- Benchmark: Mac mini (2026) · M5 Pro · 64 GB · Qwen3.6 35B-A3B 5-bit by @carven-ji in #1220
- Q2_0 converter: reject ambiguous split GGUF folders (CPU only, not verified on a GPU) by @chainhelen in #1219
- README: the 4B KQuant writes about as fast as lmstudio-community's on 0.2.35 (223 against 218 tok/s); 35B-A3B speed claim withdrawn until re-measured with bench's own server by @alish-nace-23 in #1224
- Benchmark: Mac mini (2026) · M5 Pro · 64 GB · Qwen3.6 35B-A3B KQuant Q5 by @carven-ji in #1221
- Benchmark: Mac mini (2026) · M5 Pro · 64 GB · Qwen3.6 35B-A3B 6-bit by @carven-ji in #1222
- README: shorter KQuant section covering 4B, 9B, 27B and 35B-A3B by @alish-nace-23 in #1230
- Benchmark: MacBook Pro (16-inch, 2023) · M2 Max · 32 GB · Qwen3.8 27B 4-bit by @mrtolkien in #1223
- Q2_0 converter: complete interrupted sparse rows on retry (not verified on a GPU) by @chainhelen in #1226
- bench: count a KAPITSA_BENCH_SERVER server as bench's own GPU load, not foreign contention by @alish-nace-23 in #1225
- docs/benchmarks.md: the KQuant 35B-A3B writes about 8-10% faster than MTPLX's on 0.2.35 (235 against 213 tok/s, same drafter and MTP head) by @alish-nace-23 in #1227
- CLI: launch GitHub Copilot against the local server by @chainhelen in #1233
- catalog: Ornith-1.5-35B-A3B, with jzinno's DFlash2 drafter for it by @alish-nace-23 in #1201
- Catalog:
27bgets the KQuant pack, closer to the original (KL 0.035 against 0.054) and no slower on an M5 Pro and an M4 Pro by @alish-nace-23 in #1228 - AGENTS.md, BUGBOT.md: a default that only switches the published pack gates on KL to BF16 and a task score, not logit_compare by @alish-nace-23 in #1235
- Server: include resolved thinking level in server logs and status UI by @gnanasreekar in #1088
- catalog: the KQuant Q4 and Flash-Next ids name the repos the Hub redirects them to, every id 200 with no redirect (#513) by @alish-nace-23 in #1236
- bench/results: KQuant against lmstudio-community 4-bit on 0.2.35, M5 Pro: 35B-A3B +6.7% pooled; 9B within 5% pooled (-6.3% at T 0.6, +8.2% at T 0) by @alish-nace-23 in #1238
- tests: test_server.py --cli takes the GPU lock itself and waits for it by @alish-nace-23 in #1229
- docs/benchmarks.md: the KQuant 35B-A3B writes about 7-10% faster than lmstudio-community's weights across two 0.2.35 records (+10.1% and +6.7% pooled) by @alish-nace-23 in #1239
- tests: --lock-only shows the markers its children inherit; vk cpu-tests fails at once on a held GPU lock (follow-up to #1229) by @alish-nace-23 in #1240
- Benchmark: MacBook Pro (16-inch, 2023) · M2 Max · 32 GB · Qwen3.8 27B kquant by @mrtolkien in #1241
- Reject non-finite logits before writing a noise floor by @chainhelen in #1242
- test_engine_page: name the wait and the stand-in's stage when its start fails (#1244) by @alish-nace-23 in #1245
- Flash-Next: account for fixed activation buffers in the memory plan by @chainhelen in #1246
- Metal: set AGX_RELAX_CDM_CTXSTORE_TIMEOUT=1 at load so macOS stops killing cold 128K prompts on the M2 Pro (#1194) by @alish-nace-23 in #1243
- stage: reject malformed layer ranges before model lookup (Not verified on a GPU) by @chainhelen in #1248
- Point the catalog at the renamed Nace MLX repos by @alish-nace-23 in #1247
- logit_compare: prevent large row offsets from hiding KL and NLL failures by @chainhelen in #1249
- serve: reject memory budgets that cannot be represented in bytes by @chainhelen in #1250
- M1 and M2: Neural Engine prefill share on by default, 27B 16K prompt 61 -> 48 s on an M1 Ultra, 204 -> 104 s on an M2 Pro by @alish-nace-23 in #1237
- stage: reject invalid memory budgets before model lookup (Not verified on a GPU) by @chainhelen in #1251
- SSD cache: preserve checkpoints when a piece cannot be opened (Not verified on a GPU) by @chainhelen in #1255
- CI: run the offline stage CLI flag checks (Not verified on a GPU) by @chainhelen in #1253
- KFlash: discard unreadable budget caches as a whole (Not verified on a GPU) by @chainhelen in #1256
- Benchmark: MacBook Pro (16-inch, 2024) · M4 Max · 36 GB · Recursive Flint 40B-A2.5B 4-bit by @ramonvanraaij in #1258
- bench/community: one command writes RESULTS.md and the leaderboard data; both named in AGENTS.md and CONTRIBUTING by @alish-nace-23 in #1260
- M6 and later: Neural Engine prefill share by default, 27B 4K prompt 16.1 -> 9.3 s on a Mac mini M6 by @supervised-nl in #1259
- SSD cache: require a lock before evicting another model’s namespace (Not verified on a GPU) by @chainhelen in #1261
- test_engine_page: the stand-in binds without getfqdn, which stalled 15 s in CI (#1244) by @alish-nace-23 in #1266
- KFlash: prevent out-of-bounds writes when formatting budget summaries (Not verified on a GPU) by @chainhelen in #1263
- Honour
thinking.budget_tokensin Kapitsa's own engine: reasoning_tokens = cap on plain, MTP, KFlash/DFlash2, batched and Dory; no-budget logits bitwise; MTP 6% slower after a reached cap by @richardberman in #950 - Leaderboard: identify the decoding method on 41 historical benchmark rows by @chainhelen in #1265
- CI: the community-table failure text names both generated files and the one command by @alish-nace-23 in #1264
- SSD cache: discard damaged pinned entries after restore (Not verified on a GPU) by @chainhelen in #1267
- Benchmark: Mac mini (2026) · M6 · 32 GB · Qwen3.8 27B kquant by @supervised-nl in #1252
- Matrix class: 16-row drafting block on multi-slot servers too, 27B agent session 153.0 -> 140.1 s on a Mac mini M6 by @supervised-nl in #1262
- Slot choice: keep the shared prefix checkpoint when a new conversation does not fit beside a cache (compacted 27B prompt 71.9 -> 42.4 s) by @supervised-nl in #1269
- 27B: tensor-tile GEMMs from 17 rows on the matrix class except the M5 Pro (45-row cached turn 544 -> 231 ms on a Mac mini M6) by @supervised-nl in #1270
- packaging/homebrew: homebrew-core formula at v0.2.35, sha256 of the release archive (CON-291) by @alish-nace-23 in #1272
- Kapitsa 0.2.36: sets the version in CMakeLists.txt, the KAPITSA_VERSION fallbacks in src/, install.sh's example and packaging/homebrew/kapitsa.rb, as #1211 did for 0.2.35. The tag v0.2.36 goes on the merge commit by @alish-nace-23 in #1273
New Contributors
- @carven-ji made their first contribution in #1202
- @mrtolkien made their first contribution in #1223
- @ramonvanraaij made their first contribution in #1258
- @supervised-nl made their first contribution in #1259
- @richardberman made their first contribution in #950
Full Changelog: v0.2.35...v0.2.36