dokan-dev / dokan-dotnet

Dokan DotNet Wrapper
http://dokan-dev.github.io
MIT License
462 stars 116 forks source link

Feature: Async #354

Open lostmsu opened 8 months ago

lostmsu commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

@LTRData I totally approve what you said https://github.com/dokan-dev/dokan-dotnet/issues/354#issuecomment-2027829167 Feel free to make the change when you feel comfortable. I agree that keeping the compatibility would be nice.