Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Discussion of chess software programming and technical issues.

Moderator: Ras

EmreKalkan
Posts: 7
Joined: Wed Sep 10, 2025 8:28 pm
Full name: M. Emre Kalkan

Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by EmreKalkan »

Hello,

I am a software developer and I have recently created a new chess engine called RuthChess. This engine incorporates some futuristic ideas, inspired by approaches like AlphaZero. It is written entirely in Rust. I will add a innovative evaluation system like NNUE. This engine forms the basis of the project.

I have tested the engine using CuteChess, and I estimate its average ELO to be around 2480–2520.

If you are interested in testing RuthChess and providing feedback, you can reach me at: emre11klk@gmail.com

GitHub repository (includes .exe for testing):
https://github.com/themreKalkan/RuthChess

Here is a sample PGN from a match against Stockfish 17.1:
[Event "?"]
[Site "?"]
[Date "2025.09.10"]
[Round "?"]
[White "RuthChess7.0.4"]
[Black "Stockfish 17.1"]
[Result "0-1"]
[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]
[GameDuration "00:30:52"]
[GameEndTime "2025-09-10T20:53:59.440 Türkiye Standart Saati"]
[GameStartTime "2025-09-10T20:23:07.425 Türkiye Standart Saati"]
[PlyCount "86"]
[SetUp "1"]
[Termination "abandoned"]
[TimeControl "40/900"]

1. d4 {book} Nf6 {book} 2. Nf3 {book} d5 {book} 3. c4 {book} e6 {book}
4. Nc3 {book} c6 {book} 5. Bg5 {book} Be7 {book} 6. e3 {book} h6 {book}
7. Bxf6 {book} Bxf6 {book} 8. Be2 {book} O-O {book} 9. O-O {book} b6 {book}
10. cxd5 {book} exd5 {book} 11. Nd2 {+0.57/15 29s} Re8 {+0.02/39 90s}
12. Kh1 {+0.52/16 30s} Nd7 {+0.31/30 18s} 13. Bd3 {+0.52/15 31s}
Bb7 {+0.44/28 20s} 14. Qa4 {+0.62/15 29s} c5 {+0.61/31 18s}
15. Bb5 {+0.73/14 28s} Re7 {+0.73/30 18s} 16. Bd3 {+0.11/14 28s}
a6 {+1.30/29 12s} 17. Nf3 {+0.05/13 29s} b5 {+1.35/27 19s}
18. Qc2 {+0.23/14 29s} b4 {+1.42/26 23s} 19. Na4 {+0.23/15 28s}
c4 {+1.55/28 14s} 20. Bf5 {+0.33/14 28s} Bc6 {+1.61/31 23s}
21. Bh3 {+0.48/14 28s} a5 {+1.84/27 15s} 22. b3 {+0.50/13 29s}
Bxa4 {+2.69/27 16s} 23. bxa4 {+1.21/15 28s} g6 {+2.76/26 20s}
24. Bg4 {+1.47/15 29s} Re4 {+2.70/30 45s} 25. Bxd7 {+1.34/16 29s}
Qxd7 {+2.68/28 39s} 26. Ng1 {+1.25/16 28s} h5 {+2.72/28 24s}
27. Nf3 {+1.31/17 28s} Ree8 {+2.62/30 59s} 28. Rfe1 {+1.31/16 29s}
Rab8 {+2.62/38 48s} 29. Rec1 {+0.96/16 28s} Qe6 {+2.64/31 25s}
30. Kg1 {+1.06/15 28s} g5 {+2.72/28 35s} 31. Rf1 {+1.01/17 28s}
g4 {+2.81/30 25s} 32. Nd2 {+0.76/19 28s} Rb6 {+2.92/31 26s}
33. Rfe1 {+0.84/18 28s} h4 {+3.11/32 69s} 34. Rab1 {+0.72/15 27s}
Bg5 {+3.39/30 45s} 35. Kh1 {+0.79/15 28s} c3 {+3.61/30 37s}
36. Nb3 {+1.72/16 27s} g3 {+3.73/26 8.9s} 37. Nc5 {+1.04/15 27s}
Qg6 {+4.34/28 19s} 38. Qxg6+ {+0.62/17 27s} Rxg6 {+4.30/27 18s}
39. f4 {+0.60/21 27s} Bh6 {+4.47/27 22s} 40. Ra1 {+0.18/17 27s}
Bg7 {+4.69/29 17s} 41. Nd3 {+0.56/19 23s} Rge6 {+5.01/28 14s}
42. Ne5 {+0.67/17 23s} f6 {+5.07/29 13s} 43. Ng4 {0.00/21 23s}
Re4 {+5.68/28 17s, White disconnects} 0-1
ZirconiumX
Posts: 1359
Joined: Sun Jul 17, 2011 11:14 am
Full name: Hannah Ravensloft

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by ZirconiumX »

Re4 {+5.68/28 17s, White disconnects} 0-1
Your engine crashed in this game. That's something you should probably fix.
tu ne cede malis, sed contra audentior ito
Ciekce
Posts: 195
Joined: Sun Oct 30, 2022 5:26 pm
Full name: Conor Anstey

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by Ciekce »

the sample PGN shows your engine crashing? ("White disconnects")

edit: too slow
ZirconiumX
Posts: 1359
Joined: Sun Jul 17, 2011 11:14 am
Full name: Hannah Ravensloft

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by ZirconiumX »

Ciekce and I decided to do some code auditing; I'll let him post his findings.

Here's one case I spotted immediately: you're using the PSTs from the Simplified Evaluation Function, which are listed in rank 8..1 order (as if from White's point of view on a chessboard), however you are using A1=0 indexing, so you are indexing the PSTs upside down.

I also could not find a perft function in your code, only a single test bench asserting that there are 20 generated moves in the start position. From that it's not obvious to me that your move generator is correct.
tu ne cede malis, sed contra audentior ito
EmreKalkan
Posts: 7
Joined: Wed Sep 10, 2025 8:28 pm
Full name: M. Emre Kalkan

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by EmreKalkan »

ZirconiumX wrote: Thu Sep 11, 2025 12:47 pm
Re4 {+5.68/28 17s, White disconnects} 0-1
Your engine crashed in this game. That's something you should probably fix.
I dont know why but at that position If I use Chessbase or direct terminal UCI commands it works. But It happens sometime in CuteChess. Maybe its not a crash symbol. Maybe kind of resign.
EmreKalkan
Posts: 7
Joined: Wed Sep 10, 2025 8:28 pm
Full name: M. Emre Kalkan

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by EmreKalkan »

Ciekce wrote: Thu Sep 11, 2025 12:48 pm the sample PGN shows your engine crashing? ("White disconnects")

edit: too slow
Yes I agree, too slow. I think "White Disconnects" not about the engine Its could be about my computer because I test it out with many different ways like UCI commands or ChessBase. Everything works great at that position. About slowness I am working on pruning codes. At the same node count Stockfish has two times more researched depth than me. I will fix it.
EmreKalkan
Posts: 7
Joined: Wed Sep 10, 2025 8:28 pm
Full name: M. Emre Kalkan

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by EmreKalkan »

ZirconiumX wrote: Thu Sep 11, 2025 12:59 pm Ciekce and I decided to do some code auditing; I'll let him post his findings.

Here's one case I spotted immediately: you're using the PSTs from the Simplified Evaluation Function, which are listed in rank 8..1 order (as if from White's point of view on a chessboard), however you are using A1=0 indexing, so you are indexing the PSTs upside down.

I also could not find a perft function in your code, only a single test bench asserting that there are 20 generated moves in the start position. From that it's not obvious to me that your move generator is correct.
You re right about perfts. I dont have a test but I tested it manually many many times 6 months ago. I am still using same codes. I will add perfts too. I am alone at this project, Its awful. But I didnt understand very well PST problem. I checked my code everything looks fine. Can you explain more detaily.
Ciekce
Posts: 195
Joined: Sun Oct 30, 2022 5:26 pm
Full name: Conor Anstey

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by Ciekce »

EmreKalkan wrote: Thu Sep 11, 2025 6:55 pm Yes I agree, too slow. I think "White Disconnects" not about the engine Its could be about my computer because I test it out with many different ways like UCI commands or ChessBase. Everything works great at that position. About slowness I am working on pruning codes. At the same node count Stockfish has two times more researched depth than me. I will fix it.
I meant I was too slow with replying, because I was sniped by one minute.

Time to depth is pretty irrelevant. A stronger engine will tend to have faster time to depth, but time to depth does not directly lead to greater strength, and you cannot compare depths across engines.

As a side note, "speed" with engines refers to nodes per second (nps), not time to depth.
EmreKalkan wrote: Thu Sep 11, 2025 6:51 pm Maybe its not a crash symbol. Maybe kind of resign.
No, disconnections in cutechess are your engine crashing.
EmreKalkan
Posts: 7
Joined: Wed Sep 10, 2025 8:28 pm
Full name: M. Emre Kalkan

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by EmreKalkan »

Ciekce wrote: Thu Sep 11, 2025 7:11 pm
EmreKalkan wrote: Thu Sep 11, 2025 6:55 pm Yes I agree, too slow. I think "White Disconnects" not about the engine Its could be about my computer because I test it out with many different ways like UCI commands or ChessBase. Everything works great at that position. About slowness I am working on pruning codes. At the same node count Stockfish has two times more researched depth than me. I will fix it.
I meant I was too slow with replying, because I was sniped by one minute.

Time to depth is pretty irrelevant. A stronger engine will tend to have faster time to depth, but time to depth does not directly lead to greater strength, and you cannot compare depths across engines.

As a side note, "speed" with engines refers to nodes per second (nps), not time to depth.
Ahh sorry my bad. I understand it different. You re right. But in many complex positions depth is stucks on 9 or 10. Maybe I need optimiziation. Thanks for replie. I had a big problem about NNUE now. Can you give some advice? Am I need to train my own NNUE model, I wrote a code for NNUE I am trying with stockfish NNUE's but I cant even get an evaluation. All the time its gives -394039... something like that.
Edit: One more question. While I am testing my engine in cutechess sometimes my engine gives opposite color move. If I try that position with FEN on UCI or Chessbase it works great. Why is this happening?
User avatar
Sylwy
Posts: 4856
Joined: Fri Apr 21, 2006 4:19 pm
Location: IAȘI - the historical capital of MOLDOVA
Full name: Silvian Rucsandescu

Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas

Post by Sylwy »

EmreKalkan wrote: Wed Sep 10, 2025 10:10 pm I have tested the engine using CuteChess, and I estimate its average ELO to be around 2480–2520.
The engine is innovative, but very weak. Under 2000 Elo points in blitz 4'+2".