Hi all, I've just tagged v2.0.0 of Chal.
This is a full rewrite from the 0x88 codebase. Chal now uses magic bitboards and a simple NNUE (768->32->1) with 256-bit SIMD accumulation, trained on v1.4.1 self-play data. SPRT vs v1.4.1 came out at +368 Elo, and NPS jumped roughly 5x (800k -> ~4M) with the bitboard move generation. Estimated strength is ~3100 Elo. The whole thing is 934 lines — 65 fewer than the old 0x88 version, despite adding the full NNUE.
It took about 5 months. After v1.4.1 I genuinely considered stopping since cutting lines just to make room for new strength code started to feel like it was working against what the project was supposed to be, and I wasn't sure I could push it further without losing that. Stepping away for a while turned out to be the right call.
[GitHub][https://github.com/namanthanki/chal/releases/tag/2.0.0]
Thank you all for the support.
~Naman.
Chal 2.0.0 - Complete rewrite, 934 lines of C, ~3100 Elo
Moderator: Ras
-
namanthanki
- Posts: 11
- Joined: Wed Mar 04, 2026 12:39 pm
- Full name: Naman Thanki
-
kiroje
- Posts: 80
- Joined: Wed Jul 25, 2012 10:12 am
- Location: Copenhagen, Denmark
- Full name: Kim Jensen
Re: Chal 2.0.0 - Complete rewrite, 934 lines of C, ~3100 Elo
Hi Naman
That is very impressive !
That is very impressive !
“Modern chess is too much concerned with things like pawn structure. Forget it, checkmate ends the game.” – Nigel Short
-
Max
- Posts: 259
- Joined: Tue Apr 13, 2010 10:41 am
Re: Chal 2.0.0 - Complete rewrite, 934 lines of C, ~3100 Elo
Thank you for sharing your very instructive engine!
Chal 2 showed an unique behavior in this game.
At move 63 chal found a mate in 10. From there on it moved instant and missed several shorter mates on its way.
[pgn]
[Event "Chal"]
[Site "Earth"]
[Date "2026.09.09"]
[Round "2"]
[White "Chal 2.0.0"]
[Black "Chal 1.4.1"]
[Result "1-0"]
[TimeControl "60+1"]
[Time "11:41:47"]
[ECO "A09"]
[Opening "Réti Opening: Advance Variation"]
[GameDuration "00:03:32"]
[PlyCount "145"]
[Termination "white wins by checkmate"]
1. Nf3 {book} d5 {book} 2. c4 {book} d4 {book} 3. g3 {book} Nc6 {book} 4. Bg2 {book}
e5 {book} 5. d3 {book} Nf6 {book} 6. O-O {book} Nd7 {book} 7. Na3 {book} Be7 {book}
8. Nc2 {book} O-O {book} 9. e3 {0.32/26 2.25s} dxe3 {-0.20/20 3.66s} 10. Nxe3 {0.27/27
4.04s} Nf6 {-0.01/21 1.96s} 11. b3 {0.00/26 3.32s} Re8 {-0.02/22 1.97s} 12. Bb2 {0.26/27
2.32s} Bc5 {-0.04/23 3.07s} 13. Qd2 {0.30/28 4.75s} Bb4 {-0.04/23 2.33s} 14. Qc2 {0.03/26
1.70s} Bc5 {-0.04/25 2.21s} 15. Qd2 {0.00/31 1.75s} Bb4 {-0.04/25 3.34s} 16. Qc1 {0.28/31
3.85s} Bc5 {0.00/23 2.32s} 17. Nd5 {0.47/28 2.02s} Bg4 {-0.05/19 1.71s} 18. Qg5 {0.19/29
1.73s} Nxd5 {0.00/23 1.71s} 19. Qxg4 {0.47/29 2.55s} Nf6 {-0.09/22 2.21s} 20. Qf5 {0.64/30
1.78s} Qc8 {-0.13/23 1.81s} 21. Qxc8 {0.95/29 1.51s} Raxc8 {-0.14/21 1.74s} 22. Rad1 {0.78/29
1.85s} e4 {-0.18/24 2.95s} 23. dxe4 {0.94/32 1.79s} Nxe4 {-0.31/25 2.19s} 24. Nd4 {0.87/32
1.93s} Nxd4 {-0.32/26 2.63s} 25. Bxd4 {0.79/32 1.92s} Rcd8 {-0.32/24 2.71s} 26. Bxe4 {0.57/29
1.40s} Bxd4 {-0.66/24 1.62s} 27. Bxb7 {0.87/32 2.51s} Re2 {-0.62/24 2.18s} 28. Bd5 {0.64/30
1.62s} c5 {-0.55/23 2.54s} 29. b4 {0.72/30 1.85s} Rd6 {-0.36/23 2.26s} 30. bxc5 {0.67/30
1.79s} Bxc5 {-0.29/24 1.52s} 31. Rb1 {0.44/31 2.05s} Rb6 {-0.21/23 2.37s} 32. Rb5 {0.59/30
1.66s} Bd4 {-0.35/23 2.00s} 33. a4 {0.85/28 2.29s} g6 {-0.34/24 1.83s} 34. Kh1 {0.81/29
1.37s} Bxf2 {-0.42/23 1.32s} 35. Kg2 {0.74/32 2.75s} Bd4+ {-0.37/24 1.66s} 36. Kh3 {0.73/34
2.11s} Re7 {-0.40/26 1.61s} 37. a5 {0.78/30 1.94s} Rxb5 {-0.40/25 2.13s} 38. cxb5 {1.18/31
2.81s} Kg7 {-0.37/24 1.79s} 39. Rb1 {1.47/31 1.42s} Re5 {-0.45/21 1.18s} 40. Bf3 {1.26/32
1.19s} Re3 {-0.56/23 1.04s} 41. Bh1 {1.75/28 1.25s} Re6 {-0.93/22 1.79s} 42. Rd1 {2.32/33
2.95s} Bc5 {-0.93/25 1.08s} 43. Rd7 {2.67/29 1.46s} Rd6 {-0.95/25 1.29s} 44. Rc7 {2.52/35
1.48s} Bg1 {-1.42/22 1.28s} 45. b6 {2.62/33 1.37s} Rd2 {-1.76/23 1.02s} 46. b7 {3.68/29
1.35s} Rxh2+ {-1.04/21 1.10s} 47. Kg4 {4.22/31 2.74s} h5+ {-0.85/23 1.48s} 48. Kf4 {4.78/31
1.96s} Rh4+ {-0.77/24 1.25s} 49. gxh4 {5.53/37 1.30s} Bh2+ {0.00/27 1.25s} 50. Ke4 {6.97/35
1.38s} Bxc7 {0.00/31 1.73s} 51. Kd5 {7.51/36 1.50s} Kh6 {-0.16/22 1.86s} 52. Kc6 {10.90/34
1.70s} Bg3 {-2.43/22 1.13s} 53. a6 {11.78/35 2.38s} g5 {-4.15/23 1.64s} 54. Kd7 {12.34/33
1.40s} Bh2 {-6.57/19 1.03s} 55. Kc8 {12.90/33 1.32s} f5 {-12.66/24 1.78s} 56. b8=Q {13.68/32
1.51s} Bxb8 {-13.93/23 0.87s} 57. Kxb8 {13.88/32 1.09s} f4 {-14.45/23 1.74s} 58. Kxa7 {13.97/30
1.14s} g4 {-16.13/21 0.89s} 59. Kb7 {18.47/29 1.82s} f3 {-17.46/22 1.03s} 60. a7 {18.77/27
1.00s} Kg6 {-17.60/21 0.87s} 61. a8=Q {+M14/26 0.25s} Kf5 {-18.02/20 1.72s} 62. Qa4 {+M11/24
0.11s} Ke5 {-18.32/20 1.13s} 63. Kc6 {+M10/19 0.02s} Kf5 {-M12/19 0.84s} 64. Qd4 {+M9/15
0.00s} Ke6 {-M9/19 1.68s} 65. Qf4 {+M7/19 0.01s} Ke7 {-M8/19 1.65s} 66. Qf5 {+M10/15
0.00s} g3 {-M4/19 1.37s} 67. Bxf3 {+M6/12 0.00s} g2 {-M3/19 0.91s} 68. Bxg2 {+M5/13
0.00s} Ke8 {-M2/19 1.39s} 69. Qe6+ {+M6/12 0.00s} Kf8 {-M4/21 0.98s} 70. Bd5 {+M4/10
0.00s} Kg7 {-M3/20 1.58s} 71. Qg8+ {+M3/3 0.00s} Kh6 {-M2/21 0.81s} 72. Qf8+ {+M2/2
0.00s} Kh7 {-M1/22 1.56s} 73. Be4# {+M1/1 0.00s} {white wins by checkmate} 1-0
[/pgn]
Chal 2 showed an unique behavior in this game.
At move 63 chal found a mate in 10. From there on it moved instant and missed several shorter mates on its way.
[pgn]
[Event "Chal"]
[Site "Earth"]
[Date "2026.09.09"]
[Round "2"]
[White "Chal 2.0.0"]
[Black "Chal 1.4.1"]
[Result "1-0"]
[TimeControl "60+1"]
[Time "11:41:47"]
[ECO "A09"]
[Opening "Réti Opening: Advance Variation"]
[GameDuration "00:03:32"]
[PlyCount "145"]
[Termination "white wins by checkmate"]
1. Nf3 {book} d5 {book} 2. c4 {book} d4 {book} 3. g3 {book} Nc6 {book} 4. Bg2 {book}
e5 {book} 5. d3 {book} Nf6 {book} 6. O-O {book} Nd7 {book} 7. Na3 {book} Be7 {book}
8. Nc2 {book} O-O {book} 9. e3 {0.32/26 2.25s} dxe3 {-0.20/20 3.66s} 10. Nxe3 {0.27/27
4.04s} Nf6 {-0.01/21 1.96s} 11. b3 {0.00/26 3.32s} Re8 {-0.02/22 1.97s} 12. Bb2 {0.26/27
2.32s} Bc5 {-0.04/23 3.07s} 13. Qd2 {0.30/28 4.75s} Bb4 {-0.04/23 2.33s} 14. Qc2 {0.03/26
1.70s} Bc5 {-0.04/25 2.21s} 15. Qd2 {0.00/31 1.75s} Bb4 {-0.04/25 3.34s} 16. Qc1 {0.28/31
3.85s} Bc5 {0.00/23 2.32s} 17. Nd5 {0.47/28 2.02s} Bg4 {-0.05/19 1.71s} 18. Qg5 {0.19/29
1.73s} Nxd5 {0.00/23 1.71s} 19. Qxg4 {0.47/29 2.55s} Nf6 {-0.09/22 2.21s} 20. Qf5 {0.64/30
1.78s} Qc8 {-0.13/23 1.81s} 21. Qxc8 {0.95/29 1.51s} Raxc8 {-0.14/21 1.74s} 22. Rad1 {0.78/29
1.85s} e4 {-0.18/24 2.95s} 23. dxe4 {0.94/32 1.79s} Nxe4 {-0.31/25 2.19s} 24. Nd4 {0.87/32
1.93s} Nxd4 {-0.32/26 2.63s} 25. Bxd4 {0.79/32 1.92s} Rcd8 {-0.32/24 2.71s} 26. Bxe4 {0.57/29
1.40s} Bxd4 {-0.66/24 1.62s} 27. Bxb7 {0.87/32 2.51s} Re2 {-0.62/24 2.18s} 28. Bd5 {0.64/30
1.62s} c5 {-0.55/23 2.54s} 29. b4 {0.72/30 1.85s} Rd6 {-0.36/23 2.26s} 30. bxc5 {0.67/30
1.79s} Bxc5 {-0.29/24 1.52s} 31. Rb1 {0.44/31 2.05s} Rb6 {-0.21/23 2.37s} 32. Rb5 {0.59/30
1.66s} Bd4 {-0.35/23 2.00s} 33. a4 {0.85/28 2.29s} g6 {-0.34/24 1.83s} 34. Kh1 {0.81/29
1.37s} Bxf2 {-0.42/23 1.32s} 35. Kg2 {0.74/32 2.75s} Bd4+ {-0.37/24 1.66s} 36. Kh3 {0.73/34
2.11s} Re7 {-0.40/26 1.61s} 37. a5 {0.78/30 1.94s} Rxb5 {-0.40/25 2.13s} 38. cxb5 {1.18/31
2.81s} Kg7 {-0.37/24 1.79s} 39. Rb1 {1.47/31 1.42s} Re5 {-0.45/21 1.18s} 40. Bf3 {1.26/32
1.19s} Re3 {-0.56/23 1.04s} 41. Bh1 {1.75/28 1.25s} Re6 {-0.93/22 1.79s} 42. Rd1 {2.32/33
2.95s} Bc5 {-0.93/25 1.08s} 43. Rd7 {2.67/29 1.46s} Rd6 {-0.95/25 1.29s} 44. Rc7 {2.52/35
1.48s} Bg1 {-1.42/22 1.28s} 45. b6 {2.62/33 1.37s} Rd2 {-1.76/23 1.02s} 46. b7 {3.68/29
1.35s} Rxh2+ {-1.04/21 1.10s} 47. Kg4 {4.22/31 2.74s} h5+ {-0.85/23 1.48s} 48. Kf4 {4.78/31
1.96s} Rh4+ {-0.77/24 1.25s} 49. gxh4 {5.53/37 1.30s} Bh2+ {0.00/27 1.25s} 50. Ke4 {6.97/35
1.38s} Bxc7 {0.00/31 1.73s} 51. Kd5 {7.51/36 1.50s} Kh6 {-0.16/22 1.86s} 52. Kc6 {10.90/34
1.70s} Bg3 {-2.43/22 1.13s} 53. a6 {11.78/35 2.38s} g5 {-4.15/23 1.64s} 54. Kd7 {12.34/33
1.40s} Bh2 {-6.57/19 1.03s} 55. Kc8 {12.90/33 1.32s} f5 {-12.66/24 1.78s} 56. b8=Q {13.68/32
1.51s} Bxb8 {-13.93/23 0.87s} 57. Kxb8 {13.88/32 1.09s} f4 {-14.45/23 1.74s} 58. Kxa7 {13.97/30
1.14s} g4 {-16.13/21 0.89s} 59. Kb7 {18.47/29 1.82s} f3 {-17.46/22 1.03s} 60. a7 {18.77/27
1.00s} Kg6 {-17.60/21 0.87s} 61. a8=Q {+M14/26 0.25s} Kf5 {-18.02/20 1.72s} 62. Qa4 {+M11/24
0.11s} Ke5 {-18.32/20 1.13s} 63. Kc6 {+M10/19 0.02s} Kf5 {-M12/19 0.84s} 64. Qd4 {+M9/15
0.00s} Ke6 {-M9/19 1.68s} 65. Qf4 {+M7/19 0.01s} Ke7 {-M8/19 1.65s} 66. Qf5 {+M10/15
0.00s} g3 {-M4/19 1.37s} 67. Bxf3 {+M6/12 0.00s} g2 {-M3/19 0.91s} 68. Bxg2 {+M5/13
0.00s} Ke8 {-M2/19 1.39s} 69. Qe6+ {+M6/12 0.00s} Kf8 {-M4/21 0.98s} 70. Bd5 {+M4/10
0.00s} Kg7 {-M3/20 1.58s} 71. Qg8+ {+M3/3 0.00s} Kh6 {-M2/21 0.81s} 72. Qf8+ {+M2/2
0.00s} Kh7 {-M1/22 1.56s} 73. Be4# {+M1/1 0.00s} {white wins by checkmate} 1-0
[/pgn]