Skip to content

Commit 1a11747

Browse files
doublegateclaude
andcommitted
chore(release): bump version to v0.8.0 - Rust 2024 Edition
This release modernizes the RustyNES codebase with Rust 2024 Edition and updates all dependencies to their latest stable versions. ## Version Updates - Workspace version: 0.7.1 -> 0.8.0 - MSRV: 1.85 -> 1.88 (Rust 2024 Edition) ## Dependency Modernization - eframe: 0.29 -> 0.33 - egui: 0.29 -> 0.33 - cpal: 0.15 -> 0.16 - rubato: NEW (0.16) - high-quality audio resampling - ron: 0.8 -> 0.12 - thiserror: 1.0 -> 2.0 - clap: 4.4 -> 4.5 - rfd: 0.14 -> 0.15 - gilrs: 0.10 -> 0.11 ## Documentation Updates - Updated CHANGELOG.md with v0.8.0 release notes - Updated README.md with current project state - Updated ROADMAP.md with M9-S0 completion status - Updated CLAUDE.md with version references - Updated milestone TODOs for post-v0.8.0 planning ## Test Status - 508+ tests passing (0 failures, 0 ignored) - 100% Blargg pass rate (90/90 ROMs) - All clippy lints clean 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 854da6c commit 1a11747

10 files changed

Lines changed: 281 additions & 94 deletions

File tree

CHANGELOG.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,118 @@ No unreleased changes.
1111

1212
---
1313

14+
## [0.8.0] - 2025-12-28 - Rust 2024 Edition & Dependency Modernization
15+
16+
**Status**: Phase 1.5 Stabilization - M9 Sprint 0 Complete (Dependency Upgrade)
17+
18+
This release completes comprehensive dependency modernization for RustyNES, adopting Rust 2024 Edition and upgrading all major dependencies to their latest stable versions for improved performance, maintainability, and long-term support.
19+
20+
### Highlights
21+
22+
- **Rust 2024 Edition:** Adopted latest Rust language features with MSRV 1.88
23+
- **eframe 0.33 + egui 0.33:** Latest immediate mode GUI framework
24+
- **cpal 0.16:** Audio device improvements and better cross-platform support
25+
- **rubato 0.16:** High-quality audio resampling for flexible sample rate support
26+
- **ron 0.12:** Configuration format improvements
27+
- **thiserror 2.0:** Error handling modernization
28+
- **Performance:** Inline hints on critical paths, buffer reuse patterns
29+
- **Test Suite:** 508+ tests passing (0 failures, 0 ignored)
30+
31+
### Added
32+
33+
- **Audio Resampling:** rubato 0.16 integration for high-quality sample rate conversion
34+
- Flexible output sample rate support
35+
- Improved audio quality on non-standard hardware
36+
- Better cross-platform audio compatibility
37+
38+
### Changed
39+
40+
#### Rust 2024 Edition
41+
42+
- Upgraded from Rust 2021 to Rust 2024 Edition across all crates
43+
- MSRV updated from 1.75 to 1.88
44+
- Updated all Cargo.toml files with new edition and rust-version
45+
46+
#### Dependency Upgrades
47+
48+
| Component | Previous | New | Notes |
49+
|-----------|----------|-----|-------|
50+
| eframe | 0.29 | 0.33 | Latest egui integration, improved rendering |
51+
| egui | 0.29 | 0.33 | Better widget system, performance improvements |
52+
| cpal | 0.15 | 0.16 | Audio device improvements |
53+
| ron | 0.8 | 0.12 | Configuration format improvements |
54+
| thiserror | 1.x | 2.0 | Error handling modernization |
55+
| bitflags | 2.4 | 2.10 | Latest bitflags features |
56+
| rubato | - | 0.16 | NEW: High-quality audio resampling |
57+
58+
#### Performance Optimizations
59+
60+
- Added `#[inline]` hints on critical audio and rendering paths
61+
- Implemented buffer reuse patterns for reduced allocations
62+
- PPU edge case handling improvements
63+
- Optimized frame timing accumulator logic
64+
65+
### Technical Specifications
66+
67+
**Build Environment:**
68+
69+
- Rust Edition: 2024
70+
- MSRV: 1.88
71+
- Workspace Crates: 6 (core, cpu, ppu, apu, mappers, desktop)
72+
- Zero unsafe code policy maintained
73+
74+
**Test Results:**
75+
76+
- Total tests: 508+ passing
77+
- Failures: 0
78+
- Ignored: 0
79+
- Blargg pass rate: 100% (90/90 tests)
80+
81+
**Dependencies Updated:**
82+
83+
| Crate | Version | Category |
84+
|-------|---------|----------|
85+
| eframe | 0.33 | GUI Framework |
86+
| egui | 0.33 | Immediate Mode UI |
87+
| cpal | 0.16 | Audio Output |
88+
| rubato | 0.16 | Audio Resampling |
89+
| ron | 0.12 | Configuration |
90+
| thiserror | 2.0 | Error Handling |
91+
| bitflags | 2.10 | Bit Manipulation |
92+
| clap | 4.5 | CLI Parsing |
93+
| directories | 5.0 | Platform Paths |
94+
95+
### Quality Metrics
96+
97+
- cargo clippy: PASSING (zero warnings)
98+
- cargo fmt: PASSING
99+
- cargo test: 508+ tests passing
100+
- cargo build --release: SUCCESS
101+
- Zero unsafe code maintained
102+
103+
### Documentation Updates
104+
105+
- Updated CLAUDE.md with v0.8.0 version references and dependency versions
106+
- Updated README.md with Rust 1.88 MSRV and v0.8.0 release information
107+
- Updated GUI About dialog version string to 0.8.0
108+
- Updated ROADMAP.md with M9-S0 completion status
109+
110+
### Migration Notes
111+
112+
**For Users:**
113+
114+
- No breaking changes to user-facing functionality
115+
- Configuration files remain compatible
116+
- All existing ROMs and save states continue to work
117+
118+
**For Developers:**
119+
120+
- Rust 1.88+ required for building
121+
- Update rustup: `rustup update`
122+
- Clean rebuild recommended: `cargo clean && cargo build --release`
123+
124+
---
125+
14126
## [0.7.1] - 2025-12-27 - Desktop GUI Framework Migration
15127

16128
**Status**: Phase 1.5 Stabilization - GUI Reimplementation Complete

CLAUDE.md

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,28 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
66

77
RustyNES is a next-generation Nintendo Entertainment System (NES) emulator written in Rust. Target: 100% TASVideos accuracy test pass rate, 300+ mappers, RetroAchievements, GGPO netplay, TAS tools, Lua scripting.
88

9-
**Status:** v0.7.1 - Phase 1.5 Stabilization In Progress (M7-M8 Complete). All Phase 1 milestones (M1-M6) done.
9+
**Status:** v0.8.0 - Phase 1.5 Stabilization In Progress (M7-M8 Complete, M9-M10 Planned). All Phase 1 milestones (M1-M6) done.
1010

11-
**Test Status:** 500+ tests passing (0 failures, 0 ignored). 100% Blargg pass rate (90/90 tests)
11+
**Test Status:** 508+ tests passing (0 failures, 0 ignored). 100% Blargg pass rate (90/90 tests)
1212

13-
**Current Version:** v0.7.1 (December 27, 2025)
14-
- Desktop GUI framework migration: Iced+wgpu to eframe+egui
15-
- eframe 0.29 + egui 0.29 immediate mode GUI
13+
**Current Version:** v0.8.0 (December 28, 2025)
14+
- Rust 2024 Edition adoption (MSRV 1.88)
15+
- Comprehensive dependency modernization
16+
- eframe 0.33 + egui 0.33 immediate mode GUI
1617
- OpenGL rendering via glow backend (replacing wgpu shader pipeline)
17-
- cpal 0.15 for low-latency audio with lock-free ring buffer (8192 samples)
18+
- cpal 0.16 for low-latency audio with lock-free ring buffer (8192 samples)
19+
- Audio resampling via rubato 0.16 for flexible sample rate support
1820
- Native file dialogs with rfd 0.15
1921
- Gamepad support with gilrs 0.11 (hotplug detection)
20-
- Configuration persistence with ron 0.8 format
22+
- Configuration persistence with ron 0.12 format
2123
- Debug windows: CPU, PPU, APU, Memory viewers
24+
- Performance optimizations: inline hints, buffer reuse patterns
25+
26+
**Previous Version:** v0.7.1 (December 27, 2025)
27+
- Desktop GUI framework migration: Iced+wgpu to eframe+egui
28+
- eframe 0.29 + egui 0.29 immediate mode GUI
29+
- cpal 0.15 for low-latency audio
30+
- Configuration persistence with ron 0.8 format
2231

2332
**Previous Version:** v0.6.0 (December 20, 2025)
2433
- M7: Accuracy Improvements complete (all 4 sprints)
@@ -194,12 +203,13 @@ Cloned emulators for study and pattern reference:
194203

195204
## Key Dependencies
196205

197-
- **Graphics**: `eframe` 0.29 (egui + window + OpenGL via glow)
198-
- **GUI**: `egui` 0.29 (immediate mode GUI)
199-
- **Audio**: `cpal` 0.15 (cross-platform audio I/O with lock-free ring buffer)
206+
- **Graphics**: `eframe` 0.33 (egui + window + OpenGL via glow)
207+
- **GUI**: `egui` 0.33 (immediate mode GUI)
208+
- **Audio**: `cpal` 0.16 (cross-platform audio I/O with lock-free ring buffer)
209+
- **Resampling**: `rubato` 0.16 (high-quality audio resampling)
200210
- **Input**: `gilrs` 0.11 (gamepad support with hotplug detection)
201211
- **File Dialogs**: `rfd` 0.15 (native cross-platform file dialogs)
202-
- **Configuration**: `ron` 0.8 (Rust Object Notation), `directories` 5.0 (platform paths)
212+
- **Configuration**: `ron` 0.12 (Rust Object Notation), `directories` 5.0 (platform paths)
203213
- **CLI**: `clap` 4.5 (argument parsing)
204214
- **Netplay**: `backroll` (GGPO rollback) - planned for Phase 2
205215
- **Scripting**: `mlua` (Lua 5.4) - planned for Phase 2
@@ -209,8 +219,9 @@ Cloned emulators for study and pattern reference:
209219

210220
## Architectural Decisions
211221

212-
### GUI Framework: eframe + egui (v0.7.1+)
222+
### GUI Framework: eframe + egui (v0.7.1+, upgraded v0.8.0)
213223
- **Changed from**: Iced+wgpu (v0.5.0-v0.6.0)
224+
- **Current**: eframe 0.33 + egui 0.33 (as of v0.8.0)
214225
- **Rationale**: Immediate mode GUI ideal for debug windows, simpler event loop, better game loop integration, integrated window management
215226
- **Implementation**: eframe provides window + egui + OpenGL rendering; egui for menus/debug windows
216227

@@ -222,10 +233,11 @@ Cloned emulators for study and pattern reference:
222233
- **Rationale**: Direct integration with egui, efficient texture updates via OpenGL
223234
- **Implementation**: 256x240 RGBA buffer with nearest-neighbor scaling via egui::Image
224235

225-
### Audio Backend: cpal 0.15
236+
### Audio Backend: cpal 0.16 (upgraded v0.8.0)
226237
- **Chosen over**: SDL2, rodio
227238
- **Rationale**: Cross-platform, low-latency, direct device access, no runtime dependencies
228239
- **Implementation**: Lock-free ring buffer (8192 samples) with atomic operations
240+
- **Resampling**: rubato 0.16 for high-quality sample rate conversion
229241

230242
### Configuration: RON Format
231243
- **Chosen over**: TOML, JSON
@@ -262,16 +274,43 @@ Cloned emulators for study and pattern reference:
262274
| **M7: Accuracy** | ✅ v0.6.0 | CPU/PPU/APU timing, OAM DMA precision, hardware mixer |
263275
| **M8: Test ROMs** | ✅ v0.7.0 | 100% Blargg pass rate (90/90 tests) |
264276
| **GUI Migration** | ✅ v0.7.1 | eframe + egui desktop reimplementation |
277+
| **Dependency Upgrade** | ✅ v0.8.0 | Rust 2024, eframe 0.33, egui 0.33, cpal 0.16, ron 0.12 |
265278
| **M9-10: Phase 1.5** | 🔄 PLANNED | Known issues resolution, polish, documentation |
266279
| **Phase 2+** | 📋 TBD | Advanced features |
267280

268-
## Recent Accomplishments (v0.7.1 - Dec 27, 2025)
281+
## Recent Accomplishments (v0.8.0 - Dec 28, 2025)
282+
283+
### Comprehensive Dependency Modernization
284+
285+
Complete modernization of the technology stack for long-term maintainability:
286+
287+
#### Rust 2024 Edition & MSRV 1.88
288+
- Adopted Rust 2024 Edition with latest language features
289+
- MSRV set to Rust 1.88 for latest stable compiler support
290+
- Updated all workspace and crate configurations
291+
292+
#### Dependency Upgrades
293+
- **eframe** 0.33 (from 0.29): Latest egui integration
294+
- **egui** 0.33 (from 0.29): Improved widget system
295+
- **cpal** 0.16 (from 0.15): Audio device improvements
296+
- **rubato** 0.16: High-quality audio resampling
297+
- **ron** 0.12 (from 0.8): Configuration format improvements
298+
- **thiserror** 2.0: Error handling modernization
299+
300+
#### Performance Optimizations
301+
- Added `#[inline]` hints on critical audio/rendering paths
302+
- Buffer reuse patterns for reduced allocations
303+
- PPU edge case handling improvements
304+
305+
---
306+
307+
## Previous Accomplishments (v0.7.1 - Dec 27, 2025)
269308

270309
### Desktop GUI Framework Migration
271310

272311
Complete rewrite of the desktop frontend from Iced+wgpu to eframe+egui:
273312

274-
#### New Architecture
313+
#### Architecture
275314
- **eframe** 0.29 for window management + OpenGL rendering via glow
276315
- **egui** 0.29 immediate mode GUI for menus and debug windows
277316
- **cpal** 0.15 for low-latency audio with lock-free ring buffer
@@ -405,8 +444,8 @@ pub trait Mapper: Send {
405444

406445
### Rust Conventions
407446

408-
- **Edition**: Rust 2021
409-
- **MSRV**: 1.75+ (for async traits in std)
447+
- **Edition**: Rust 2024
448+
- **MSRV**: 1.88 (for Rust 2024 Edition support)
410449
- **Format**: `rustfmt` with default settings
411450
- **Lints**: `clippy::pedantic` + `-D warnings`
412451
- **Unsafe**: Only permitted in FFI (rcheevos) and platform-specific audio; must be documented

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ members = [
1515
]
1616

1717
[workspace.package]
18-
version = "0.7.1"
18+
version = "0.8.0"
1919
edition = "2024"
2020
rust-version = "1.88"
2121
authors = ["doublegate"]

README.md

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
99
[![Build Status](https://github.com/doublegate/RustyNES/workflows/CI/badge.svg)](https://github.com/doublegate/RustyNES/actions)
1010
[![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](LICENSE-MIT)
11-
[![Rust](https://img.shields.io/badge/rust-1.75%2B-orange.svg)](https://www.rust-lang.org/)
11+
[![Rust](https://img.shields.io/badge/rust-1.88%2B-orange.svg)](https://www.rust-lang.org/)
1212
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)](#platform-support)
1313
[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://doublegate.github.io/RustyNES/)
1414
[![codecov](https://codecov.io/gh/doublegate/RustyNES/branch/main/graph/badge.svg)](https://codecov.io/gh/doublegate/RustyNES)
@@ -28,7 +28,7 @@ A next-generation NES emulator written in pure Rust — targeting 100% accuracy,
2828

2929
---
3030

31-
> **Status:** v0.7.1 Released - Desktop GUI Framework Migration Complete
31+
> **Status:** v0.8.0 Released - Rust 2024 Edition & Dependency Modernization Complete
3232
>
3333
> **Milestones Completed:**
3434
>
@@ -40,12 +40,13 @@ A next-generation NES emulator written in pure Rust — targeting 100% accuracy,
4040
> -**M6: Desktop GUI** - Cross-platform eframe/egui application with ROM loading, audio playback, and full input support
4141
> -**M7: Accuracy** - CPU/PPU/APU timing refinements, OAM DMA 513/514 cycle precision, hardware-accurate mixer
4242
> -**M8: Test ROMs** - 100% Pass Rate on all integrated test suites (CPU, PPU, APU, Mappers)
43+
> -**M9-S0: Dependencies** - Rust 2024 Edition, eframe 0.33, egui 0.33, cpal 0.16, ron 0.12
4344
>
44-
> **Test Suite:** 500+ tests passing (0 failures, 0 ignored)
45+
> **Test Suite:** 508+ tests passing (0 failures, 0 ignored)
4546
>
46-
> **Current:** Phase 2 (Features) - Beginning development of RetroAchievements, Netplay, and TAS Tools
47+
> **Current:** Phase 1.5 (Stabilization) - M9-M10: Known Issues & Final Polish
4748
>
48-
> **Next:** M11: RetroAchievements
49+
> **Next:** M9-S1: UI/UX Improvements, M9-S2: Documentation Updates
4950
>
5051
> See [ROADMAP.md](ROADMAP.md) and [to-dos/](to-dos/) for development timeline.
5152
@@ -87,24 +88,24 @@ RustyNES combines **accuracy-first emulation** with **modern features** and the
8788

8889
## Quick Start
8990

90-
### Recent Release: v0.7.1 (December 27, 2025)
91+
### Recent Release: v0.8.0 (December 28, 2025)
9192

92-
RustyNES v0.7.1 completes the desktop GUI framework migration from Iced+wgpu to eframe+egui:
93+
RustyNES v0.8.0 completes comprehensive dependency modernization and adopts Rust 2024 Edition:
9394

94-
**What's New in v0.7.1:**
95+
**What's New in v0.8.0:**
9596

96-
- **GUI Framework Migration:** Complete rewrite from Iced 0.13 to eframe 0.29/egui 0.29
97-
- **Immediate Mode GUI:** egui provides simpler, more maintainable UI code
98-
- **Debug Windows:** CPU, PPU, APU, and Memory viewer windows using egui
99-
- **Simplified Audio:** Lock-free ring buffer (8192 samples) with cpal
100-
- **Gamepad Support:** gilrs integration with hotplug detection
101-
- **Configuration:** RON format with platform-specific paths
102-
- **Native Dialogs:** rfd for cross-platform file dialogs
97+
- **Rust 2024 Edition:** Latest Rust language features and improvements (MSRV 1.88)
98+
- **eframe 0.33 + egui 0.33:** Latest immediate mode GUI with improved widget system
99+
- **cpal 0.16:** Audio device improvements and better cross-platform support
100+
- **rubato 0.16:** High-quality audio resampling for flexible sample rate support
101+
- **ron 0.12:** Configuration format improvements
102+
- **thiserror 2.0:** Error handling modernization
103+
- **Performance:** Inline hints on critical paths, buffer reuse patterns
103104

104105
**Previous Releases:**
105106

107+
- **v0.7.1** - GUI Framework Migration: eframe 0.29/egui 0.29, immediate mode GUI, debug windows
106108
- **v0.7.0** - Milestone 8: 100% Blargg test pass rate, cycle-accurate CPU tick(), PPU open bus, CHR-RAM routing
107-
108109
- **v0.6.0** - Milestone 7: APU frame counter precision, hardware-accurate mixer, OAM DMA 513/514 cycles
109110
- **v0.5.0** - Phase 1 MVP: Desktop GUI (Iced + wgpu), audio playback, ROM loading
110111
- **v0.4.0** - Complete rustynes-core integration layer (Bus, Console, Input, Save States)
@@ -122,7 +123,7 @@ Pre-built binaries are available on the [Releases page](https://github.com/doubl
122123

123124
**Prerequisites:**
124125

125-
- **Rust 1.75 or newer** — Install via [rustup.rs](https://rustup.rs)
126+
- **Rust 1.88 or newer** — Install via [rustup.rs](https://rustup.rs)
126127
- **SDL2 development libraries** — Platform-specific installation below
127128
- **Git**
128129

@@ -143,7 +144,7 @@ cargo build --workspace --release
143144

144145
cargo test --workspace
145146

146-
# Results: 500 tests passing, 0 failures, 0 ignored
147+
# Results: 508+ tests passing, 0 failures, 0 ignored
147148

148149
# Run the desktop GUI (requires ROM file)
149150
cargo run -p rustynes-desktop --release -- path/to/game.nes
@@ -187,7 +188,7 @@ RustyNES demonstrates world-class emulation accuracy:
187188

188189
cargo test --workspace
189190

190-
# Total: 500 tests passing, 0 ignored - 267 CPU + 90 PPU + 150 APU + 167 Mappers + 23 Core + Blargg integration tests
191+
# Total: 508+ tests passing, 0 ignored - 267 CPU + 90 PPU + 150 APU + 167 Mappers + 23 Core + Blargg integration tests
191192

192193
# Run specific crate tests
193194

@@ -301,7 +302,7 @@ Controls will be fully configurable through the configuration system.
301302

302303
## Features
303304

304-
### Current Status (v0.7.1 - December 2025)
305+
### Current Status (v0.8.0 - December 2025)
305306

306307
- [x] **Architecture Design** - Complete modular crate structure with 10 component crates
307308
- [x] **Documentation** - 40+ comprehensive specification and implementation guides covering CPU, PPU, APU, mappers, testing, and development
@@ -419,7 +420,7 @@ Frame Timing:
419420

420421
**Current Progress:** 100% Phase 1 MVP Complete (M1-M6)
421422

422-
**Test Results (v0.6.0):**
423+
**Test Results (v0.8.0):**
423424

424425
- **CPU**: All 256 opcodes verified with ±1 cycle accuracy
425426
- nestest.nes golden log match (5003+ instructions verified)
@@ -852,9 +853,9 @@ If you use RustyNES in academic research, please cite:
852853
author = {RustyNES Contributors},
853854
title = {RustyNES: A Next-Generation NES Emulator in Rust},
854855
year = {2025},
855-
version = {0.7.1},
856+
version = {0.8.0},
856857
url = {https://github.com/doublegate/RustyNES},
857-
note = {Cycle-accurate NES emulator with 100\% Blargg test pass rate, eframe/egui desktop GUI, and hardware-accurate emulation}
858+
note = {Cycle-accurate NES emulator with 100\% Blargg test pass rate, Rust 2024 Edition, eframe/egui desktop GUI, and hardware-accurate emulation}
858859
}
859860
```
860861

0 commit comments

Comments
 (0)