Code Monkey home page Code Monkey logo

Comments (8)

freeekanayaka avatar freeekanayaka commented on May 24, 2024 1

FYI I'm planning to modify C-raft to add support for the new io_uring asynchronous file I/O API that was recently added to the Linux kernel. That will likely force me to generalize the code in uv_file.c a little bit and at that point adding a third system specific backend (e.g. Window or macOS) might be easier. I'm not sure what the timeline of this will be as it's not a priority at the moment, so YMMV.

from dqlite.

freeekanayaka avatar freeekanayaka commented on May 24, 2024

libco should already be multiplatform, at least to a certain extent: although I never tested it I see that it has some support for Windows.

For libraft the only bit that is Linux-specific is the asynchronous file I/O used here. I'm currently not planning to add support for other platform, but it shouldn't be too difficult to do so, since the code involved is pretty limited. I'm happy to accept patches in that regard, or you could contact Canonical if you wish to have that done for you.

from dqlite.

zbalkan avatar zbalkan commented on May 24, 2024

It seems like I didn't do my homework well enough. I'll have a look at it. I'll try my best if I can. Thank you for your time and quick reply.

from dqlite.

freeekanayaka avatar freeekanayaka commented on May 24, 2024

Happy to help if you need guidance.

from dqlite.

zbalkan avatar zbalkan commented on May 24, 2024

Since io_uring is Linux-dependent, wouldn't that make things harder for multi-platform support? I mean you are already doing a great job with libuv in that context. Do you plan to move away from libuv or just to enhance the I/O features?

from dqlite.

freeekanayaka avatar freeekanayaka commented on May 24, 2024

@zbalkan the idea is to decouple the implementation of uv_file.c from the specific APIs that the underlying OS offers for performing asynchronous file I/O. So the logic in uv_file.c would only use libuv APIs (which are cross platform) plus some new raft-internal abstraction that would wrap the underlying OS APIs and whose implementation would be changed at compile time according to the environment that configure detects. That way if you want to add support for a new OS there would be no need to modify uv_file.c at all, but just to implement the internal raft wrappers (which would live in something like uv_os_unix.c, ov_os_windows.c, etc).

Hope that's clear.

from dqlite.

zbalkan avatar zbalkan commented on May 24, 2024

That's clear indeed. Thanks.

from dqlite.

stgraber avatar stgraber commented on May 24, 2024

We've been merging some support for other platforms (BSD/MacOS) and will be happy to keep doing so.
For the client, we've got an issue at #291 now which should similarly not be platform-specific.

from dqlite.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.