Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

New WASAPI implementation

未关闭
#1,416 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
重构
描述清晰度
基本清楚
活跃度
活跃
技术栈
rust

调研方向

Read the existing WASAPI host and the proposed approach in PR #1413, then compare the migration plan with the feature-gated host addition in issue #1299. The issue proposes using WinRT and the wasapi-rs crate, but leaves design and implementation scope open; done means the new implementation works alongside the current host behind a feature before becoming the default.

由索引模型根据 Issue 内容生成。

描述

code quality dependencies host - wasapi platform - windows

The WASAPI host could really use a makeover. In particular, switching to WinRT APIs would remove the need to deal with COM, which is quite a headache at times (e.g. #1302, #1402). Further more, it probably makes sense to use the wasapi-rs crate instead of reinventing the wheel, as this would significantly reduce cpal's maintenance burden.

To pick up from https://github.com/RustAudio/cpal/pull/1413#issuecomment-6402800112:

I'm always careful to long for greener pastures. Legacy code has typically accumulated so many fixes and edge cases, that sometimes it's easier to refactor in place than to rewrite entirely.

In general I agree with the sentiment, but in this case I just don't see this approach being viable. The proposed changes will inevitably have to change a lot at once anyway, as switching from raw bindings to a dedicated crate can't really be broken up in small steps, and a similar problem arises with WinRT. If we then add the general code quality concerns of the current implementation on top, we end up with a large amount of extra effort just to find a clean migration path from A to B that remains functional at every step of the way, and I'd much rather spend this effort on making the new implementation as good as possible.

We could approach this the in a similar fashion to #1299, where we start with adding the new host alongside the existing one, guarded behind a feature, and eventually make it the new default.

主要语言
Rust
星标
4k
派生
554
平均合并
3 天 3 小时
30 天内合并 PR
4

环境准备

  • 提供 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

RustAudio/cpal 的其他 Issue

查看 RustAudio/cpal 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。