Skip to content

new ASIO host implementation - #1331

Open
LastExceed wants to merge 20 commits into
RustAudio:masterfrom
LastExceed:azo
Open

LastExceed wants to merge 20 commits into
RustAudio:masterfrom
LastExceed:azo

Conversation

@LastExceed

@LastExceed LastExceed commented Aug 19, 2026 •

Copy link
Copy Markdown
Contributor

Closes #1299
Obsoletes #1083

@edwloef

edwloef commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

The non-azo dependencies seem unnecessary except for maybe oneshot, how much would it hurt to get rid of them?

  • x.unique() -> { let a = x.collect::<Vec<_>>(); let mut b = a.iter().cloned().collect::<HashSet<_>>(); a.into_iter().filter(|x| b.remove(x)) }
  • SmallVec doesn't seem to be on a hot path, or a path that needs to be realtime-safe, so it can just be a normal Vec maybe?
  • x.pipe(y) -> y(x), x.pipe_ref(y) -> y(&x)

@LastExceed
LastExceed force-pushed the azo branch 2 times, most recently from 9c95154 to b6cc570 Compare August 20, 2026 06:24
@LastExceed
LastExceed changed the base branch from develop to master August 20, 2026 06:25
@LastExceed

This comment was marked as resolved.

@edwloef

edwloef commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

except for maybe oneshot

and closure-ffi. That one in particular is absolutely indispensable.

Ah right, I had missed the cfg(windows) dependencies section. oneshot and tap should probable be moved down there as well, if I'm not mistaken?

@LastExceed

This comment was marked as resolved.

@LastExceed

Copy link
Copy Markdown
Contributor Author

I moved them to the platform dependencies for now to be consistent with what we currently have, but it might be worth revisiting this in the future as it could get rid of some duplicates. E.g. jack and audio_thread_priority are both specified for windows and linux with the same version, despite being optional in both cases

@roderickvd roderickvd added host - asio dependencies Pull requests that update a dependency file labels Aug 20, 2026
@LastExceed

This comment was marked as resolved.

@LastExceed
LastExceed force-pushed the azo branch 5 times, most recently from 774c869 to 15346d6 Compare August 26, 2026 14:11
@LastExceed

This comment was marked as outdated.

@Marco-Farruggio

Copy link
Copy Markdown
Contributor

Any issue with channel count not being const fn? And can’t as u64 be used here? (Regarding the two MSRV versions)

@Marco-Farruggio

Copy link
Copy Markdown
Contributor

I agree that there are definitely some places where rustfmt is in my opinion making code less readable, keeping a codebase (like cpal) legible and clear is important, but I think just being logical can exceed rustfmt in terms of neatness

@LastExceed

Copy link
Copy Markdown
Contributor Author

Any issue with channel count not being const fn?

No, but I was hoping that we'd up the MSRV for .cast_unsigned() as mentioned earlier, in which case .channel_count() can stay const

can’t as u64 be used here?

where do you mean exactly?

@LastExceed

This comment was marked as outdated.

@LastExceed
LastExceed force-pushed the azo branch 4 times, most recently from 6c43e14 to 39c88b2 Compare September 6, 2026 12:10
@LastExceed

This comment was marked as outdated.

@LastExceed

This comment was marked as outdated.

@LastExceed
LastExceed marked this pull request as ready for review September 29, 2026 06:27
@LastExceed
LastExceed force-pushed the azo branch 4 times, most recently from ce9faef to decdcf5 Compare September 30, 2026 15:19
@LastExceed

Copy link
Copy Markdown
Contributor Author

The branch is finally fully ready to be reviewed and merged. Implementing this was quite the journey, I kept running into edge cases that required me to change my approach over and over. azo progressed from v0.0.9 all the way to v0.4.0 during all of this, and another project came forward to express satisfaction with the library (LastExceed/azo#6) in the meantime, which is very motivating.

I recognize that big PRs like this can be daunting to review, especially when everything is squashed everything into a single commit as I had initially done, so I spent the last 2 days rewriting the git history in order to make the PR as approachable as I can. Please let me know whether or not this turns out to be helpful.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file host - asio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A new ASIO backend implementation

4 participants