Skip to content

Commit e0208c3

Browse files
mivertowskiclaude
andcommitted
Update dependencies to latest versions (wgpu 27, tokio 1.48, axum 0.8)
Major dependency updates: - wgpu: 0.19 → 27.0 (Arc-based resources, new API patterns) - tokio: 1.35 → 1.48 (improved scheduling) - thiserror: 1.0 → 2.0 (derive macro updates) - axum: 0.7 → 0.8 (improved routing) - tower: 0.4 → 0.5 (service updates) - tonic/prost: 0.11/0.12 → 0.14 (gRPC updates) - winit: 0.29 → 0.30 (new window API) - egui: 0.27 → 0.31 (wgpu 27 compatibility) - glam: 0.27 → 0.29 - metal: 0.27 → 0.31 - rayon: 1.10 → 1.11 - arrow: 52 → 54 - polars: 0.39 → 0.46 wgpu 27.0 migration changes: - Instance::new() now takes reference - request_adapter() returns Result not Option - DeviceDescriptor uses ..Default::default() for new fields - Pipeline entry_point is now Option<&str> - Added compilation_options and cache to pipelines - ImageCopyTexture → TexelCopyTextureInfo - ImageDataLayout → TexelCopyBufferLayout - Maintain::Wait → PollType::wait_indefinitely() Deferred updates (breaking changes): - iced: 0.13 (0.14 requires major API rewrite) - rkyv: 0.7 (0.8 has incompatible data format) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 759c8a0 commit e0208c3

14 files changed

Lines changed: 1284 additions & 929 deletions

File tree

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3535
- Added `CooperativeKernel` wrapper in `ringkernel-cuda::cooperative` module
3636
- Added cooperative kernel infrastructure to wavesim3d benchmark
3737

38+
#### Dependency Updates
39+
- **tokio**: 1.35 → 1.48 (improved task scheduling, better cancellation handling)
40+
- **thiserror**: 1.0 → 2.0 (updated derive macros)
41+
- **wgpu**: 0.19 → 27.0 (Arc-based resource tracking, 40%+ performance improvement)
42+
- Migrated to new Instance/Adapter/Device creation API
43+
- Updated pipeline descriptors with `entry_point: Option<&str>`, `compilation_options`, `cache`
44+
- Renamed `ImageCopyTexture``TexelCopyTextureInfo`, `ImageDataLayout``TexelCopyBufferLayout`
45+
- Updated `device.poll()` to use `PollType::wait_indefinitely()`
46+
- **winit**: 0.29 → 0.30 (new window creation API)
47+
- **egui/egui-wgpu/egui-winit**: 0.27 → 0.31 (updated for wgpu 27 compatibility)
48+
- **glam**: 0.27 → 0.29 (linear algebra updates)
49+
- **metal**: 0.27 → 0.31 (Apple GPU backend updates)
50+
- **axum**: 0.7 → 0.8 (improved routing, better error handling)
51+
- **tower**: 0.4 → 0.5 (service abstraction updates)
52+
- **tonic**: 0.11 → 0.14 (better gRPC streaming, improved health checking)
53+
- **prost**: 0.12 → 0.14 (protobuf updates to match tonic)
54+
- **actix-rt**: 2.9 → 2.10
55+
- **rayon**: 1.10 → 1.11 (requires MSRV 1.80)
56+
- **arrow**: 52 → 54 (columnar data updates)
57+
- **polars**: 0.39 → 0.46 (DataFrame updates)
58+
59+
#### Deferred Updates
60+
- **iced**: Kept at 0.13 (0.14 requires major application API rewrite)
61+
- **rkyv**: Kept at 0.7 (0.8 has incompatible data format, requires significant migration)
62+
3863
## [0.1.2] - 2025-12-11
3964

4065
### Added

CLAUDE.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,3 +565,83 @@ async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
565565
// ...
566566
}
567567
```
568+
569+
**wgpu 27.0 API (Updated):**
570+
571+
The WebGPU backend uses wgpu 27.0 with Arc-based resource tracking:
572+
573+
```rust
574+
// Instance creation (takes reference now)
575+
let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor {
576+
backends: wgpu::Backends::all(),
577+
..Default::default()
578+
});
579+
580+
// Adapter request (returns Result, not Option)
581+
let adapter = instance
582+
.request_adapter(&wgpu::RequestAdapterOptions { ... })
583+
.await
584+
.map_err(|e| format!("No adapter: {}", e))?;
585+
586+
// Device request (use ..Default::default() for new fields)
587+
let (device, queue) = adapter
588+
.request_device(&wgpu::DeviceDescriptor {
589+
label: Some("device"),
590+
required_features: wgpu::Features::empty(),
591+
required_limits: wgpu::Limits::default(),
592+
..Default::default() // memory_hints, etc.
593+
})
594+
.await?;
595+
596+
// Pipeline creation (entry_point is now Option, add compilation_options and cache)
597+
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
598+
vertex: wgpu::VertexState {
599+
module: &shader,
600+
entry_point: Some("vs_main"), // Option<&str> now
601+
compilation_options: Default::default(),
602+
buffers: &[...],
603+
},
604+
fragment: Some(wgpu::FragmentState {
605+
entry_point: Some("fs_main"),
606+
compilation_options: Default::default(),
607+
...
608+
}),
609+
cache: None, // New required field
610+
...
611+
});
612+
613+
// Texture copy (renamed types)
614+
queue.write_texture(
615+
wgpu::TexelCopyTextureInfo { ... }, // was ImageCopyTexture
616+
&data,
617+
wgpu::TexelCopyBufferLayout { ... }, // was ImageDataLayout
618+
size,
619+
);
620+
621+
// Device polling (returns Result now)
622+
let _ = device.poll(wgpu::PollType::wait_indefinitely());
623+
```
624+
625+
## Dependency Versions
626+
627+
Key workspace dependencies (as of v0.1.3):
628+
629+
| Category | Package | Version | Notes |
630+
|----------|---------|---------|-------|
631+
| **Runtime** | tokio | 1.48 | Full async runtime |
632+
| **Runtime** | rayon | 1.11 | Parallel iterators |
633+
| **Error** | thiserror | 2.0 | Derive macros |
634+
| **GPU** | cudarc | 0.18.2 | CUDA bindings |
635+
| **GPU** | wgpu | 27.0 | WebGPU (Arc-based) |
636+
| **GPU** | metal | 0.31 | Apple Metal |
637+
| **Web** | axum | 0.8 | HTTP framework |
638+
| **Web** | tower | 0.5 | Service abstractions |
639+
| **gRPC** | tonic | 0.14 | gRPC framework |
640+
| **gRPC** | prost | 0.14 | Protobuf |
641+
| **Serialize** | rkyv | 0.7 | Zero-copy |
642+
| **GUI** | iced | 0.13 | Elm-style GUI |
643+
| **GUI** | egui | 0.31 | Immediate mode GUI |
644+
| **GUI** | winit | 0.30 | Window management |
645+
| **Math** | glam | 0.29 | Linear algebra |
646+
| **Data** | arrow | 54 | Columnar data |
647+
| **Data** | polars | 0.46 | DataFrames |

0 commit comments

Comments
 (0)