Hello everyone,
I am thrilled to have been accepted into this community! I would like to take this opportunity to introduce my chess engine, Luna.
I have been developing Luna from scratch using Rust, focusing on creating a robust and efficient architecture. One of the core components I am particularly proud of is the NNUE evaluation; I have trained the network personally using a custom pipeline written in Python.
The engine currently supports the standard UCI protocol, and I have implemented features like a bitwise-masked transposition table to enhance search performance. As I am still actively working on optimizations and refining the search algorithms, I would truly appreciate any feedback, constructive criticism, or advice from the experienced developers here.
You can find the source code and the current status of the project on my GitHub repository:
https://github.com/Spunc595/Luna-Chess-Engine
I look forward to learning from this community and contributing where I can. Thank you all for your time!
Best regards,
Daniele
Introducing Luna: My Rust-based NNUE Chess Engine
Moderator: Ras
-
Spunc595
- Posts: 5
- Joined: Mon Jul 06, 2026 12:15 am
- Full name: Daniele Marpino
-
Sylwy
- Posts: 5296
- Joined: Fri Apr 21, 2006 4:19 pm
- Location: IAȘI - the historical capital of MOLDOVA
- Full name: Silvian Rucsandescu
Re: Introducing Luna: My Rust-based NNUE Chess Engine
viewtopic.php?start=820&t=81223&sid=40b ... 715beeaf45Spunc595 wrote: ↑Wed Jul 08, 2026 3:03 pm Hello everyone,
I am thrilled to have been accepted into this community! I would like to take this opportunity to introduce my chess engine, Luna.
I have been developing Luna from scratch using Rust, focusing on creating a robust and efficient architecture. One of the core components I am particularly proud of is the NNUE evaluation; I have trained the network personally using a custom pipeline written in Python.
The engine currently supports the standard UCI protocol, and I have implemented features like a bitwise-masked transposition table to enhance search performance. As I am still actively working on optimizations and refining the search algorithms, I would truly appreciate any feedback, constructive criticism, or advice from the experienced developers here.
You can find the source code and the current status of the project on my GitHub repository:
https://github.com/Spunc595/Luna-Chess-Engine
I look forward to learning from this community and contributing where I can. Thank you all for your time!
Best regards,
Daniele
1.- let static_eval = crate::evaluation::evaluate(board); ...or,
let static_eval = if let Some(n) = nnue {
n.evaluate(board)
} else {
crate::evaluation::evaluate(board)
};
2.- let stand_pat = crate::evaluation::evaluate(board); ...or,
let stand_pat = if let Some(n) = nnue {
n.evaluate(board)
} else {
crate::evaluation::evaluate(board)
};
???
-
Spunc595
- Posts: 5
- Joined: Mon Jul 06, 2026 12:15 am
- Full name: Daniele Marpino
Re: Introducing Luna: My Rust-based NNUE Chess Engine
Hi.
I am actually using the second approach. Since the NNUE is passed as an Option, I implemented a fallback to the classical evaluation function in both the main search (for static_eval) and the quiescence search (for stand_pat) in case the network file is missing or fails to load.
This allows me to test and compare the search behavior with and without the neural network weights.
I am actually using the second approach. Since the NNUE is passed as an Option, I implemented a fallback to the classical evaluation function in both the main search (for static_eval) and the quiescence search (for stand_pat) in case the network file is missing or fails to load.
This allows me to test and compare the search behavior with and without the neural network weights.