Skip to content

Releases: PassiveLogic/nio-async-runtime

1.0.0

16 Dec 00:47
1ad5efd

Choose a tag to compare

nio-async-runtime 1.0.0 🚀

Overview 🌟

  • First semver-stable 1.0.0 public release of a Swift Concurrency powered runtime that mirrors the MultiThreadedEventLoopGroup and NIOThreadPool APIs from NIOPosix while avoiding low-level OS C APIs, making the package portable to WebAssembly 🕸️.

Highlights ✨

  • Added AsyncEventLoopExecutor foundation plus AsyncEventLoop and MultiThreadedEventLoopGroup implementations with drop-in API parity for existing NIO users 🧩.
  • Introduced a concurrency-backed NIOThreadPool, including async shutdownGracefully that aligns with NIOPosix semantics 🔧.
  • Provided usage docs and examples for both the event loop group and thread pool to simplify adoption 📘.
  • Established SwiftPM package metadata, CI setup, and swift-format configuration for consistent builds 🛠️.

Quality & Coverage ✅

  • Ported extensive parity tests from NIOPosix for AsyncEventLoop, MultiThreadedEventLoopGroup, NIOThreadPool, and EventLoopFuture usages to validate behavior against the reference implementation 🧪.
  • Brought over benchmark suites to measure gaps between NIOAsyncRuntime and NIOPosix under various scheduling and throughput scenarios 📊.

Performance Notes ⚡

  • Benchmarks show NIOPosix remains significantly faster for heavy-load event enqueueing and scheduling paths; see README benchmarks for detailed ratios.

Compatibility 🌐

  • Targets Swift 6.0+ with minimum platforms macOS 13, iOS 16, watchOS 9, tvOS 16, and WASI 0.1 🧭.
  • Designed for side-by-side use with NIOPosix via conditional imports so only unsupported platforms (e.g., WASI) rely on NIOAsyncRuntime 🔀.
  • Public-facing API is not expected to change, as it matches the current NIOPosix public API. Any future breaking changes that can't be avoided will be done using traditional semver rules that require a bump in the major version number for breaking changes.

0.0.2 - Updated backwards compatibility for Swift packages using Swift 5.10

12 Dec 00:15
1ad5efd

Choose a tag to compare

This is a very small change from 0.0.1 that improves limited backwards compatibility for pulling this dependency from older toolchains where trailing comma's in the manifest cause issues like the following:

Computing version for https://github.com/PassiveLogic/nio-async-runtime.git
error: Invalid manifest (compiled with: ["/usr/bin/swiftc", "-vfsoverlay", "/tmp/TemporaryDirectory.J2NMYd/vfs.yaml", "-L", "/usr/lib/swift/pm/ManifestAPI", "-lPackageDescription", "-Xlinker", "-rpath", "-Xlinker", "/usr/lib/swift/pm/ManifestAPI", "-swift-version", "6", "-I", "/usr/lib/swift/pm/ManifestAPI", "-package-description-version", "6.0.0", "/Package.swift", "-o", "/tmp/TemporaryDirectory.5V5ZR5/nio-async-runtime-manifest"])
/Package.swift:40:9: error: unexpected ',' separator
38 |                 .product(name: "NIOCore", package: "swift-nio"),
39 |             ],
40 |         ),
   |         `- error: unexpected ',' separator
41 |         .executableTarget(
42 |             name: "ExampleMTELG",

0.0.1 - Initial Release

10 Dec 16:30
0bfc7b0

Choose a tag to compare

nio-async-runtime 0.0.1 🚀

Overview 🌟

  • First public release of a Swift Concurrency powered runtime that mirrors the MultiThreadedEventLoopGroup and NIOThreadPool APIs from NIOPosix while avoiding low-level OS C APIs, making the package portable to WebAssembly 🕸️.

Highlights ✨

  • Added AsyncEventLoopExecutor foundation plus AsyncEventLoop and MultiThreadedEventLoopGroup implementations with drop-in API parity for existing NIO users 🧩.
  • Introduced a concurrency-backed NIOThreadPool, including async shutdownGracefully that aligns with NIOPosix semantics 🔧.
  • Provided usage docs and examples for both the event loop group and thread pool to simplify adoption 📘.
  • Established SwiftPM package metadata, CI setup, and swift-format configuration for consistent builds 🛠️.

Quality & Coverage ✅

  • Ported extensive parity tests from NIOPosix for AsyncEventLoop, MultiThreadedEventLoopGroup, NIOThreadPool, and EventLoopFuture usages to validate behavior against the reference implementation 🧪.
  • Brought over benchmark suites to measure gaps between NIOAsyncRuntime and NIOPosix under various scheduling and throughput scenarios 📊.

Performance Notes ⚡

  • Benchmarks show NIOPosix remains significantly faster for heavy-load event enqueueing and scheduling paths; see README benchmarks for detailed ratios.

Compatibility 🌐

  • Targets Swift 6.0+ with minimum platforms macOS 13, iOS 16, watchOS 9, tvOS 16, and WASI 0.1 🧭.
  • Designed for side-by-side use with NIOPosix via conditional imports so only unsupported platforms (e.g., WASI) rely on NIOAsyncRuntime 🔀.