Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Async #354

Open
lostmsu opened this issue Mar 29, 2024 · 5 comments
Open

Feature: Async #354

lostmsu opened this issue Mar 29, 2024 · 5 comments

Comments

@lostmsu
Copy link
Contributor

lostmsu commented Mar 29, 2024

As in the title - it would be nice to modernize the interface to be asynchronous, and perhaps also switch to Memory<byte> or Span<byte> for buffers.

A few other performance improvements like iterative file search as mentioned by @LTRData would be welcome too.

@LTRData
Copy link
Contributor

LTRData commented Mar 29, 2024

I am working on that in a fork here:
https://github.com/LTRData/dokan-dotnet/

The goal is to eventually merge it here as a pull request/branch in one way or another too. But there are lots of breaking changes and changes to implementation interfaces, so it requires some work to migrate existing implementations to it. The performance improvements are so big, I really think it is worth the breaking changes though. We could probably provide some kind of compatibility layer to make migration easier too.

@LTRData
Copy link
Contributor

LTRData commented Mar 29, 2024

But there is really not anything that needs to be changed to support async as I see it. There should be no issues with calling async code from file system implementation routines. I have done that in lots of implementations without any issues.

@Liryna
Copy link
Member

Liryna commented Mar 30, 2024

@LTRData I totally approve what you said #354 (comment) Feel free to make the change when you feel comfortable. I agree that keeping the compatibility would be nice.

@d2dyno1
Copy link

d2dyno1 commented Jan 20, 2025

The performance improvements are so big, I really think it is worth the breaking changes though.

@LTRData Do you have any performance benchmarks for the changes? 🙂

@LTRData
Copy link
Contributor

LTRData commented Jan 20, 2025

The benchmarks were a bit complicated to make, because they needed two applications. One that made file requests and one Dokan implementation that was monitored by the benchmark. I am thinking of recreating it in a way that I could share more easily.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants