{"id":15400580,"url":"https://github.com/armanbilge/fs2-io_uring","last_synced_at":"2025-04-10T00:19:16.622Z","repository":{"id":60016911,"uuid":"536632342","full_name":"armanbilge/fs2-io_uring","owner":"armanbilge","description":"they see me ringin'","archived":false,"fork":false,"pushed_at":"2025-03-31T09:24:18.000Z","size":280,"stargazers_count":61,"open_issues_count":19,"forks_count":8,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-02T22:06:34.813Z","etag":null,"topics":["fs2","io-uring","networking","scala-native"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/armanbilge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-14T15:01:42.000Z","updated_at":"2025-03-25T11:37:59.000Z","dependencies_parsed_at":"2023-02-13T04:35:38.627Z","dependency_job_id":"5a0390d5-7b43-4db2-a2ab-ed4d22ed4fe0","html_url":"https://github.com/armanbilge/fs2-io_uring","commit_stats":{"total_commits":227,"total_committers":5,"mean_commits":45.4,"dds":0.5022026431718062,"last_synced_commit":"14fc26ddf8d229d0fab2302bec8538479a906caf"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armanbilge%2Ffs2-io_uring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armanbilge%2Ffs2-io_uring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armanbilge%2Ffs2-io_uring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armanbilge%2Ffs2-io_uring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/armanbilge","download_url":"https://codeload.github.com/armanbilge/fs2-io_uring/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248131476,"owners_count":21052854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fs2","io-uring","networking","scala-native"],"created_at":"2024-10-01T15:54:17.109Z","updated_at":"2025-04-10T00:19:16.600Z","avatar_url":"https://github.com/armanbilge.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fs2-io_uring\n\nA library implementing [FS2 I/O APIs](https://fs2.io/#/io) for [Scala Native](https://scala-native.org/) via the [io_uring](https://en.wikipedia.org/wiki/Io_uring) Linux kernel system call interface. The provided implementations are drop-in replacements that can be used to power [http4s Ember](https://http4s.org/v0.23/docs/integrations.html#ember), [Skunk](https://github.com/tpolecat/skunk), and [Rediculous](https://github.com/davenverse/rediculous).\n\nAt its heart fs2-io_uring is an [I/O-integrated runtime](https://github.com/typelevel/cats-effect/discussions/3070) for [Cats Effect](https://typelevel.org/cats-effect/). The library is unique in how close to the bare-metal it is and thus how deeply it integrates with kernel I/O APIs. The implementation is literally Cats Effect sharing memory with and talking directly to the kernel: no JDK, no JNI, no overhead. Nearly all system calls are asynchronous, cancelable, and efficiently submitted in batches via the io_uring API. Even cancelation is async and fully-backpressured.\n\n## Usage\n\n```scala\nlibraryDependencies += \"com.armanbilge\" %%% \"fs2-io_uring\" % \"0.2.0\"\n```\n\nYou must also install [liburing](https://github.com/axboe/liburing). For performance, I strongly recommend using static linking, for example:\n\n```scala\nnativeConfig ~= { c =\u003e\n  c.withCompileOptions(c.compileOptions :+ \"-I/home/linuxbrew/.linuxbrew/include\")\n    .withLinkingOptions(c.linkingOptions :+ \"/home/linuxbrew/.linuxbrew/lib/liburing.a\")\n}\n```\n\nTo use fs2-io_uring in an application, you should replace `IOApp` with `UringApp`. For tests, you should override the runtime:\n\n```scala\noverride def munitIORuntime = UringRuntime.global\n```\n\nFinally, you can import from `fs2.io.uring.implicits._` to get an implicit io_uring-backed `Network` into scope. You may also directly construct instances of:\n\n- `UringNetwork`\n- `UringSocketGroup`\n- `UringUnixSockets`\n\nFuture releases will add support for datagram sockets and file I/O.\n\n## Versioning and compatibility\n\nBecause this library implements FS2 sealed interfaces, but is released and versioned independently, it is not covered by FS2's usual guarantee of backwards-binary-compatibility. Specifically, updating your FS2 version may cause fs2-io_uring to break.\n\nTherefore, you should not add it as a dependency in libraries. Instead, make sure to expose the `Network` and `UnixSockets` constraints of your library, so that users can substitute the fs2-io_uring implementations of these APIs in their applications.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmanbilge%2Ffs2-io_uring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmanbilge%2Ffs2-io_uring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmanbilge%2Ffs2-io_uring/lists"}