tokio-rs / tokio

A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
https://tokio.rs
MIT License
26.43k stars 2.43k forks source link

Improving platform support for illumos (CI, etc) #6763

Open hawkw opened 1 month ago

hawkw commented 1 month ago

Is your feature request related to a problem? Please describe.

At @oxidecomputer, we rely on Tokio in many critical components of our product. This software primarily runs on Helios, our illumos-based host operating system. Because Tokio is such a critical dependency for our product, ensuring it works correctly on illumos is very important to us. We know illumos is not as widely used as other operating systems, such as macOS, Linux, or Windows, so we're very willing to take on responsibility for ensuring our critical dependencies work reliably on illumos.

As a motivating example, we recently encountered a major regression in Tokio v1.39.x resulting in missed wakeups on illumos, https://github.com/oxidecomputer/helios/issues/169. This appears to have been caused by illumos-specific changes in mio v1.x which, as far as we know, were never actually tested on illumos --- which isn't particularly surprising, as none of the CI systems currently used by Tokio and mio provide builds for illumos or other Solaris-derived operating systems, and there don't appear to be many other easily available options for illumos CI.

Describe the solution you'd like

We'd really like to provide an illumos CI build for Tokio, and potentially other tokio-rs projects. We've written our own CI system, oxidecomputer/buildomat, which can run illumos builds. We've previously contributed buildomat CI jobs for other external dependencies (see https://github.com/arekinath/pivy/tree/dc503bdfb08aad3c37144fc03f1cd37df0eb204d/.github/buildomat), which run on hardware owned by Oxide.

Ideally, we could provide illumos CI jobs for both the tokio and mio repositories, but we're happy to start with Tokio, as any mio bugs would be caught by Tokio's CI, just with a somewhat longer time to detection.

Additionally, we'd like to take on more responsibility for reviewing and maintaining illumos-specific code in any tokio-rs projects that have illumos-specific code. The tokio-rs/illumos GitHub team already includes two of the illumos maintainers working at Oxide (@pfmooney and @jclulow), and it could be worth considering adding adding CODEOWNERS files to automatically tag them as reviewers to files that contain illumos-specific code. If more maintainers would be helpful, there are other illumos maintainers who could also join that team. We'd also be happy to be tagged in any time an illumos-specific build failure occurs.

Additional context

Tokio already has CI jobs for platforms not supported by GitHub Actions, such as FreeBSD builds using Cirrus CI and Linux ARM builds using CircleCI.

Darksonn commented 1 month ago

I would be happy to see CI running for Illumos. Since this will end up using a new service for running the CI jobs, please include a readme with information about who to contact in case of problems.

hawkw commented 1 month ago

I would be happy to see CI running for Illumos. Since this will end up using a new service for running the CI jobs, please include a readme with information about who to contact in case of problems.

We can definitely do that!