feat: NCS-31 FastParse FEN #22

Merged
Janis merged 4 commits from feat/NCS-31 into main 2026-04-08 09:32:57 +02:00
Owner

Summary

  • Added fastparse_3:3.0.2 dependency to modules/io
  • Implemented FenParserFastParse as a second alternative FEN parser using FastParse, with the same public API as
    FenParser and FenParserCombinators
  • Parsers are built bottom-up using (using P[Any]) Scala 3 syntax with NoWhitespace.* to prevent implicit whitespace
    skipping; rank sum validation uses Pass/Fail inside .flatMap
  • Added FenParserFastParseTest mirroring FenParserCombinatorsTest to prove behavioural equivalence across all three
    implementations

Test plan

  • All existing tests pass — FenParser, FenParserCombinators, and all other modules untouched
  • FenParserFastParseTest covers all cases: valid FEN, invalid color, invalid castling, invalid board shapes, en
    passant, rank overflow, round-trip via FenExporter
  • All parser logic branches genuinely covered — known scoverage gap documented in docs/unresolved.md (FastParse inline
    macro generates synthetic proxy methods that scoverage instruments but that never execute at runtime)
Summary - Added fastparse_3:3.0.2 dependency to modules/io - Implemented FenParserFastParse as a second alternative FEN parser using FastParse, with the same public API as FenParser and FenParserCombinators - Parsers are built bottom-up using (using P[Any]) Scala 3 syntax with NoWhitespace.* to prevent implicit whitespace skipping; rank sum validation uses Pass/Fail inside .flatMap - Added FenParserFastParseTest mirroring FenParserCombinatorsTest to prove behavioural equivalence across all three implementations Test plan - All existing tests pass — FenParser, FenParserCombinators, and all other modules untouched - FenParserFastParseTest covers all cases: valid FEN, invalid color, invalid castling, invalid board shapes, en passant, rank overflow, round-trip via FenExporter - All parser logic branches genuinely covered — known scoverage gap documented in docs/unresolved.md (FastParse inline macro generates synthetic proxy methods that scoverage instruments but that never execute at runtime)
lq64 added 1 commit 2026-04-07 13:00:36 +02:00
feat(io): FastParse FEN
Build & Test (NowChessSystems) TeamCity build failed
13d4a62a71
Added FastParse FEN and dependencies
lq64 added 1 commit 2026-04-08 08:07:36 +02:00
feat(io): FastParse FEN
Build & Test (NowChessSystems) TeamCity build failed
fec602aca7
Added Shared Parser support
lq64 added 1 commit 2026-04-08 08:40:37 +02:00
feat(io): FastParse FEN
Build & Test (NowChessSystems) TeamCity build finished
50f88ef753
Added Shared Parser support
Janis requested changes 2026-04-08 09:17:57 +02:00
Dismissed
@@ -0,0 +1,9 @@
## [2026-04-06] FenParserFastParse: scoverage cannot reach 100% due to fastparse inline macro incompatibility
Member

No

No
lq64 added 1 commit 2026-04-08 09:29:03 +02:00
feat(io): FastParse FEN
Build & Test (NowChessSystems) TeamCity build finished
b23ec10702
Removed Unresolved doc
Janis approved these changes 2026-04-08 09:32:53 +02:00
Janis merged commit 7a045d31d7 into main 2026-04-08 09:32:57 +02:00
Janis deleted branch feat/NCS-31 2026-04-08 09:32:57 +02:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: NowChess/NowChessSystems#22