GNU Chess 6.3.0 / Ensemble 1.x

Slim build comparison

Smaller storage, with matching results on the tested chess corpus.

54.3 KiBless fixed-resource + stack reservation
30.3%reduction in that file-declared reservation
48 KiBprocess stack retained unchanged

English baseline 6.3.0.4 against slim English 6.3.0.6. German 6.3.0.7 shares the engine and adds 16 bytes of localized shell.

File-declared reservations

2026-10-22T00:18:23.475657 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ Fixed resources + stack All initialized resources + stack 0 50 100 150 200 250 300 KiB (1 KiB = 1,024 bytes) 179.1 124.8 30.3% less 261.9 208.6 20.3% less Previous English build Slim English build File-declared English resource reservations; runtime heap/kernel/library overhead excluded.
Paragraph-rounded GEOS resource sizes. These totals exclude kernel handles, heap metadata, object relocation slack and UI/library allocations. They are not measured total runtime RAM.
Table units:
ReservationPreviousSlim EnglishSaved
Fixed resources + stack183,392 B127,776 B55,616 B
All initialized resources + stack268,160 B213,632 B54,528 B
Process stack49,152 B49,152 B0 B
File on disk224,622 B169,232 B55,390 B

The all-resources total includes nonfixed resources even when they can be swapped out. Both totals include the unchanged 49,152-byte stack.

Where the savings come from

Representations are narrowed only where every legal value fits. The engine retains 32-bit arithmetic, 64-bit hashes, 256 history entries and the same transposition, pawn and material cache capacities. Search input safely aliases the current game; compact sorter state preserves tested move order.

2026-10-22T00:18:23.634678 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ Main search No-null search Quiescence 0 500 1000 1500 2000 2500 3000 Bytes reserved for local variables 2,810 2,268 2,246 1,704 2,300 1,236 Previous Slim Local variables only. Full process stack remains 49,152 bytes in both builds.
Compiler-reserved local variables per search function. Saved registers, return addresses, arguments and helpers are excluded.
The full stack remains 49,152 bytes. Smaller local frames and observed high-water marks do not certify a smaller complete-process stack.

The initialization arena uses 34,260 bytes of its 34,336-byte limit. Paragraph alignment and an explicit 64-byte guard leave 76 unused bytes. A native-code 80-ply test and repeated resets made no further allocations; arena-tail and stack-gap canaries passed.

Native search BUSY intervals

Three repeats per position and depth, driven through the real Ensemble 1.2 UI in DOSBox Staging 0.83. Points show medians; whiskers show the observed minimum and maximum.

2026-10-22T00:18:23.939616 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 1 2 3 4 Requested depth 1 0 1 1 0 2 1 0 3 Sampled BUSY duration (ms; logarithmic scale) Initial position 1 2 3 4 Requested depth Reply after e2e4 Previous Slim
Sampled BUSY duration on the emulator host clock. It includes initial repaint, native scheduling/yields and paging, but excludes input delays and the full final board repaint. The logarithmic axis makes shorter searches visible.
BuildPositionDepthMedian (ms)Min-max (ms)
PreviousInitial134.532.0-35.0
PreviousInitial268.462.6-68.6
PreviousInitial3139.8131.2-144.0
PreviousInitial4441.5439.5-461.3
PreviousAfter e2e4163.856.2-72.2
PreviousAfter e2e42137.3113.5-214.5
PreviousAfter e2e43196.1191.5-239.1
PreviousAfter e2e44976.5949.9-984.0
SlimInitial130.926.3-35.1
SlimInitial253.253.0-55.7
SlimInitial3141.9137.9-149.2
SlimInitial4395.9387.9-410.7
SlimAfter e2e4160.359.0-63.0
SlimAfter e2e4299.283.6-110.0
SlimAfter e2e43178.5171.3-210.0
SlimAfter e2e44807.6781.5-831.5

Matched normal-core, 80,000-cycle emulator guests; VGA 640 x 480, 16 MiB, 1,500 handles. Read-only sampling at nominal 2 ms intervals observes BUSY transitions. Nominal sampling is not an error bound; observed sampling gaps reached 49.216 ms. Short searches are sensitive to sampling and host/emulator load. These are not physical-PC benchmarks or a universal speed guarantee.

Inspect all 48 timing runs
BuildPositionDepthRepeatElapsed msMove
Previousinitial1134.997b1c3
Previousinitial1231.950b1c3
Previousinitial1334.521b1c3
Previousafter_e2e41156.216b8c6
Previousafter_e2e41263.766b8c6
Previousafter_e2e41372.226b8c6
Previousinitial2168.365b1c3
Previousinitial2268.623b1c3
Previousinitial2362.555b1c3
Previousafter_e2e421137.261b8c6
Previousafter_e2e422113.540b8c6
Previousafter_e2e423214.511b8c6
Previousinitial31144.011b1c3
Previousinitial32139.767b1c3
Previousinitial33131.240b1c3
Previousafter_e2e431239.136b8c6
Previousafter_e2e432196.150b8c6
Previousafter_e2e433191.521b8c6
Previousinitial41439.543b1c3
Previousinitial42461.279b1c3
Previousinitial43441.501b1c3
Previousafter_e2e441949.865g8f6
Previousafter_e2e442984.011g8f6
Previousafter_e2e443976.495g8f6
Sliminitial1126.250b1c3
Sliminitial1230.887b1c3
Sliminitial1335.104b1c3
Slimafter_e2e41159.002b8c6
Slimafter_e2e41262.996b8c6
Slimafter_e2e41360.305b8c6
Sliminitial2152.962b1c3
Sliminitial2253.220b1c3
Sliminitial2355.736b1c3
Slimafter_e2e42199.160b8c6
Slimafter_e2e422109.990b8c6
Slimafter_e2e42383.558b8c6
Sliminitial31137.901b1c3
Sliminitial32149.240b1c3
Sliminitial33141.931b1c3
Slimafter_e2e431171.297b8c6
Slimafter_e2e432210.023b8c6
Slimafter_e2e433178.531b8c6
Sliminitial41395.917b1c3
Sliminitial42410.687b1c3
Sliminitial43387.934b1c3
Slimafter_e2e441831.455g8f6
Slimafter_e2e442781.510g8f6
Slimafter_e2e443807.570g8f6

Native system memory observations

2026-10-22T00:18:24.726181 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ Heap fixed increase on launch App-owned allocation at idle 0 50 100 150 200 250 300 KiB 179.7 265.4 125.4 212.2 Previous Slim
Actual matched 16 MiB native guests. The fixed-byte measure is the observed system heap increase on launch; app-owned allocation includes all heap blocks attributed to the application, resident or swapped.
Native observation (16 MiB guest)Previous EnglishSlim English
Heap fixed before launch120,736 B120,736 B
Heap fixed with Chess idle304,720 B249,120 B
Heap fixed increase on launch183,984 B128,384 B

Actual unmodified Ensemble 1.2 Perf heap fixed-byte counters. The program's displayed absolute Fixed value additionally includes a constant kernel-size contribution; these raw heap counters are not that displayed total. After searches, the global Perf Memory meter showed 837.3 KiB (previous) and 845.7 KiB (slim). It counts allocated memory including swapped blocks, not physical resident RAM. Matched configuration does not mean identical background/cache allocation state. No whole-system Memory reduction is claimed. These observations are separate from resource reservations and do not establish minimum RAM.

Tests that matched

113 host positions, 452 searches and 3,385 identical result records with 19,081,983 repeated checks; paired ASan and UBSan runs pass. Representation testing compares 9,989 values exhaustively; sorter testing compares 12,303 cases and exact move order.

The actual 16-bit geodes are also compared on eight FENs at depths 1-4, plus special moves, terminal states, repetition, self-play, saved/restored state and moved artwork. The finite suite checks native code, segmented pointers and lock thunks; it is not an exhaustive proof for every chess position.

2026-10-22T00:18:24.228853 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ Depth 1 Depth 2 Depth 3 Depth 4 0 20 40 60 80 Guest instruction dispatches (millions) 2.5 7.0 25.0 79.6 2.4 6.6 23.6 75.3 Previous Slim
Sum of the same eight native-code searches per depth. Counted units are Unicorn 16-bit guest instruction dispatches, including REP iterations/final tests as reported by Unicorn, not ISA-retired instructions or CPU cycles. Production application/runtime/thunks and synthetic RETF kernel stubs are included; real GEOS kernel, paging and graphics work are excluded. Host hooks insert no guest instructions.
2026-10-22T00:18:24.365199 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ Previous Slim 0 10 20 30 40 50 KiB 38,920 B 23,380 B 49,152 B reserved in both Observed stack peak in the finite native-code suite Observed peaks are not complete stack bounds. Real GEOS scheduling/kernel calls are outside this model.
Highest observed stack use in the 65-record finite native-code suite: 38,920 to 23,380 bytes. These are observations, not full-process bounds. The 49,152-byte reservation stays unchanged.

The 32 paired searches total 114,177,759 to 107,883,512 guest dispatches (5.51% fewer), under the stated boundary model. This is controlled guest work, not measured hardware speed.

Native runtime test details
[
  {
    "case": "baseline4",
    "variant": "baseline",
    "sha256": "796ba70122e22276bbeac16ef55fa9bed87d525419072446df3afff6137d5c62",
    "ram_mib": 4,
    "searches": 8,
    "repeats_per_depth_position": 1,
    "purpose": "Finite launch/search/lifecycle smoke; not the repeated comparative timing dataset.",
    "passed": true,
    "memory": {
      "resource_fixed_bytes": 183984.0,
      "app_owned_allocated_bytes": 271808.0,
      "app_owned_resident_bytes": 271808.0,
      "code_lock_count": 0.0,
      "art_lock_count": 0.0
    },
    "lifecycle": {
      "sha256": "796ba70122e22276bbeac16ef55fa9bed87d525419072446df3afff6137d5c62",
      "closed_valid": 0,
      "reopened_ready": 1,
      "reopened_depth": 2,
      "reopened_owned_allocated_bytes": 271808,
      "reopened_code_locks": 0,
      "reopened_art_locks": 0,
      "result": "PASS"
    }
  },
  {
    "case": "slim4",
    "variant": "slim",
    "sha256": "58a4cc7c8a293913ce8069d6888cd1793aec8a05f2341a0b7276e20d27084941",
    "ram_mib": 4,
    "searches": 8,
    "repeats_per_depth_position": 1,
    "purpose": "Finite launch/search/lifecycle smoke; not the repeated comparative timing dataset.",
    "passed": true,
    "memory": {
      "resource_fixed_bytes": 128384.0,
      "app_owned_allocated_bytes": 217296.0,
      "app_owned_resident_bytes": 217296.0,
      "code_lock_count": 0.0,
      "art_lock_count": 0.0
    },
    "lifecycle": {
      "sha256": "58a4cc7c8a293913ce8069d6888cd1793aec8a05f2341a0b7276e20d27084941",
      "closed_valid": 0,
      "reopened_ready": 1,
      "reopened_depth": 2,
      "reopened_owned_allocated_bytes": 217888,
      "reopened_code_locks": 0,
      "reopened_art_locks": 0,
      "result": "PASS"
    }
  },
  {
    "case": "german4",
    "variant": "slim_german",
    "ram_mib": 4,
    "sha256": "eb65acf09895f2684a10899ba104d4166217942e0d47a5144a1cfb0bf96719c4",
    "passed": true,
    "smoke": {
      "result": "PASS",
      "sha256": "eb65acf09895f2684a10899ba104d4166217942e0d47a5144a1cfb0bf96719c4",
      "keyboard": "Illegal e2e5 rejected; Backspace+4 corrected to e2e4 and b8c6 engine reply",
      "mouse": "g1f3 accepted; g8f6 engine reply",
      "controls": [
        "No-undo message",
        "Undo restores previous human-and-engine turn",
        "New game",
        "Depth4 Computerzug produces b1c3"
      ],
      "limits": "Supplied English GeoWorks Pro1.2 runtime; German system runtime unavailable."
    },
    "lifecycle": {
      "sha256": "eb65acf09895f2684a10899ba104d4166217942e0d47a5144a1cfb0bf96719c4",
      "closed_valid": 0,
      "reopened_ready": 1,
      "reopened_depth": 2,
      "reopened_owned_allocated_bytes": 217904,
      "reopened_code_locks": 0,
      "reopened_art_locks": 0,
      "result": "PASS"
    }
  },
  {
    "case": "slim-pressure2",
    "variant": "slim",
    "ram_mib": 2,
    "sha256": "58a4cc7c8a293913ce8069d6888cd1793aec8a05f2341a0b7276e20d27084941",
    "passed": true,
    "scope": "Finite native test on this supplied English1.2 runtime with DOSBox memsize2MiB, normal core80000cycles, VGA640x480/16 and1500handles. Not a physical minimum-RAM guarantee, leak proof for all lifecycles, or proof of simultaneous completed app-load/search. Baseline2MiB five-app pressure result is historical, not rerun in this comparison. Native matched performance/footprint comparison is separate.",
    "report": "pressure2/pressure2-report.json"
  }
]

Release identity and limits

Previous English 6.3.0.4
796ba70122e22276bbeac16ef55fa9bed87d525419072446df3afff6137d5c62
Slim English 6.3.0.6
58a4cc7c8a293913ce8069d6888cd1793aec8a05f2341a0b7276e20d27084941
Slim German 6.3.0.7
eb65acf09895f2684a10899ba104d4166217942e0d47a5144a1cfb0bf96719c4

Tests use the supplied English Ensemble 1.2 installation under emulation. The German build targets that runtime too; no German system runtime was supplied. Native case statuses are retained in the accompanying report data. Physical hardware and other 1.x releases remain untested. Search is synchronous and remains bounded to requested depths 1-4; unrestricted desktop GNU Chess strength is not claimed.

The package contains source, rebuild instructions, exact-binary quick-rebuild checks, PNG/SVG exports and per-case raw CSV/JSON/JSONL evidence. This HTML works offline and loads no external resources.

Download JSON