armanbilge / fs2-io_uring

they see me ringin'
Apache License 2.0
53 stars 7 forks source link

Add `UringFiles` #30

Open armanbilge opened 2 years ago

armanbilge commented 2 years ago

As an implementation of FS2's Files typeclass. io_uring is virtually the only way to do async, non-blocking file I/O, so this is potentially a very interesting offering.

armanbilge commented 1 year ago

io_uring asynchronous File I/O for Scala Native

Title io_uring asynchronous File I/O for Scala Native
Link to Project https://github.com/armanbilge/fs2-io_uring
Brief Description io_uring is a Linux API for making efficient I/O system calls, and notably enables to do non-blocking, asynchronous file I/O. This is especially interesting for single-threaded runtimes, such as Scala Native.

FS2 is a purely functional, streaming I/O library built on Cats Effect. fs2-io_uring is an implementation of FS2 for Scala Native, based on io_uring. It currently provides APIs for network I/O but does not yet support file I/O.

The goal of this project is to implement the FS2 Files API for Scala Native by using io_uring, and contribute it to the fs2-io_uring project.
Expected Outcome An io_uring Files implementation for FS2 on Scala Native
Prerequisites Scala, ability to read C
Ideal Prerequisites Experience with C, functional programming, Typelevel libraries
Expected Difficulty Medium – doable with high chance of success given creativity and problem-solving skills from the one doing it
Expected Time Commitment Long project – 350 hours
Mentor Arman Bilge (GitHub: @armanbilge, Email: armanbilge@gmail.com)