-
Notifications
You must be signed in to change notification settings - Fork 30
Open
Description
hints for developers still using llfuse
i had a look at pyfuse3 and these are the results:
- the API you have to use is quite similar, so a lot of code can be reused (note that pyfuse3 started as a fork of llfuse)
- the main difference is that
Operationsmethods are expected to beasync defnow - there is also a minor difference in
readdirmethod: notyielding results, but calling a pyfuse3 function with a token
availability and issues of llfuse and pyfuse3
- pyfuse3 has issues on freebsd and does not yet work on macOS.
- pyfuse3 is also not available on older dists that do not have fuse3 yet.
- pyfuse3 is not developed any more, but gets maintenance.
- llfuse is widely available, but not developed any more, but gets maintenance. but it works on linux, freebsd, macOS.
- due to these circumstances and as the api of both libraries is similar, one wants to support both with the least effort possible for now. later, when everybody has pyfuse3, llfuse can be dropped.
coexistence of usage of llfuse and pyfuse3 api in same codebase
- import either
pyfuse3orllfuseasfuse_impl(use an env var to enable the user to choose) - have a decorator that cares for
async def(or not), depending on which fuse_impl is used - have 2 readdir method implementations depending on fuse_impl
- have a slightly different mount code (the new async way for pyfuse3 will use
trioto run the code) - most of your code can be shared between both!
Example of a port, with coexistence of llfuse and pyfuse3: borgbackup/borg#5430
Note: In that port, I used llfuse (not fuse_impl) as the name to represent either the pyfuse3 or the llfuse module.
mxmlnkn
Metadata
Metadata
Assignees
Labels
No labels