Comments (5)
Yes it's planned. I'm just trying to understand if I can do it avoiding to use liburing
as I would like to keep the library free of dependencies.
from sanecpplibraries.
The kernel interface seems fairly straightforward if you’ve worked on completion queue related settings like Infiniband (libibverbs
) and other userspace networking settings. (NB: In Windows, IOCP is the closest equivalent, and in BSD, it’s kqueue.)
However, assuming you already link against a libc
, I don’t see why you couldn’t optionally link against liburing
and even libfabric
(statically or otherwise), if the user wishes to use those backends. For most users, epoll
is probably good enough, but the two approaches (completion queues vs epoll) are leaky enough abstractions that they affect how one writes their event loops in not so subtle ways.
from sanecpplibraries.
I know about IOCP
or kqueue
(that's how Async
library is implemented on Windows / macOS).
I have no idea however about what libfabric
is.
Regarding not wanting to link liburing
discussion I think it's a matter of definition.
In this project a dependency is anything that is not included with a standard C++ compiler / SDK / sysroot installation.
A dependency is a library that must be pre-installed by a developer or compiled from its sources.
This project links libc
(and pthread
) but libc
comes with the compiler, so it's not considered dependency (it's always available).
liburing
instead must be installed through a package manager or compiled from source, and so by this definition it's a dependency.
I should admit however, that this is a very clear definition on macOS or Windows, that come with properly defined SDKs.
On Linux doing the same is immediately more difficult once we need anything out of the libc
because outside of the libc
/ pthread
and a few more libs you need to use some package manager to install "dev" packages (even just X11 or OpenGL / Vulkan for example) or clone and compile things with your own "build system" that I would like to avoid imposing to users.
from sanecpplibraries.
Hi @ido ,
I have been starting the io_uring
backend.
There is a first video I've been publishing on bootstrapping it
https://www.youtube.com/watch?v=YR935rorb3E
I will publish an additional one during this week getting the backend to fully pass the small test suite.
I will probably cleanup the code a little bit and push it to main branch the same day when next video will be pushed out.
from sanecpplibraries.
Second video https://www.youtube.com/watch?v=CgYE0YrpHt0!
And the io_uring
backend has been pushed at dc01aad 😄
from sanecpplibraries.
Related Issues (13)
- Create GitHub pipelines to run tests HOT 1
- Create GitHub pipeline to reject code not formatted with clang-format HOT 1
- Code coverage computation HOT 1
- Support more advanced UDP specific features in Sockets library HOT 2
- Add Semaphore to Threading library
- Support more primitive types in Threading library on Atomic<T>
- Add a few more useful algorithms to Algorithms library
- Support building and testing the unit test project from VSCode on Windows HOT 1
- Enable executing file read and write operations on background threads HOT 1
- Add a database access module. HOT 3
- Access violation on windows HOT 4
- Unable to build on Linux: different exception specifier HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sanecpplibraries.