diff --git a/Cargo.lock b/Cargo.lock index 076b4ef..f0ed11b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -894,14 +894,14 @@ dependencies = [ [[package]] name = "socketry" -version = "0.1.0" +version = "0.1.1" dependencies = [ "socketry-executor", ] [[package]] name = "socketry-executor" -version = "0.1.0" +version = "0.1.1" dependencies = [ "async-io", "async-task", diff --git a/Cargo.toml b/Cargo.toml index 729ef00..6ab5e42 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ manifest = "bake/Cargo.toml" reviewers = ["socketry/managers"] [workspace.package] -version = "0.1.0" +version = "0.1.1" edition = "2024" license = "MIT" repository = "https://github.com/socketry/socketry-rust" @@ -25,7 +25,7 @@ readme = "readme.md" include = ["Cargo.toml", "readme.md", "license.md", "releases.md", "context/**", "src/**"] [dependencies] -socketry-executor = { version = "0.1.0", path = "crates/executor", default-features = false } +socketry-executor = { version = "0.1.1", path = "crates/executor", default-features = false } [features] default = ["native"] diff --git a/bake/src/main.rs b/bake/src/main.rs index 064acc8..e04613b 100644 --- a/bake/src/main.rs +++ b/bake/src/main.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + use bake::{Context, Registry, Result}; use bake_agent_context as _; use bake_cargo as _; diff --git a/crates/executor/examples/portable_io.rs b/crates/executor/examples/portable_io.rs index 15cb764..d48aa0e 100644 --- a/crates/executor/examples/portable_io.rs +++ b/crates/executor/examples/portable_io.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! The same TCP exchange, compiled against Socketry or Tokio. #[cfg(any(feature = "native", feature = "tokio"))] use socketry_executor::{Network, Spawn}; diff --git a/crates/executor/examples/work_stealing.rs b/crates/executor/examples/work_stealing.rs index bb61d5c..69a6f0b 100644 --- a/crates/executor/examples/work_stealing.rs +++ b/crates/executor/examples/work_stealing.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + use socketry_executor::{Scheduler, Task, yield_now}; fn main() -> Result<(), Box> { diff --git a/crates/executor/src/barrier.rs b/crates/executor/src/barrier.rs index cc630e2..8828302 100644 --- a/crates/executor/src/barrier.rs +++ b/crates/executor/src/barrier.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + use crate::owner::Owner; use crate::{SchedulerHandle, Spawn, SpawnError, Task, TaskHandle}; use std::future::Future; diff --git a/crates/executor/src/lib.rs b/crates/executor/src/lib.rs index b10226b..3efe239 100644 --- a/crates/executor/src/lib.rs +++ b/crates/executor/src/lib.rs @@ -1,9 +1,11 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Owned tasks and cooperative future polling on work-stealing workers. //! //! Tasks require `Send + 'static` and use the ordinary worker thread stack. //! The scheduler owns spawned tasks even when their join handles are dropped. //! Use a [`Barrier`] to explicitly own a group of child tasks. - #![doc = include_str!("../readme.md")] mod barrier; diff --git a/crates/executor/src/owner.rs b/crates/executor/src/owner.rs index b985f8b..100fc8d 100644 --- a/crates/executor/src/owner.rs +++ b/crates/executor/src/owner.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + use crate::TaskError; use event_listener::Event; use std::fmt; diff --git a/crates/executor/src/scheduler/file.rs b/crates/executor/src/scheduler/file.rs index c0ac549..8b49385 100644 --- a/crates/executor/src/scheduler/file.rs +++ b/crates/executor/src/scheduler/file.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Blocking positioned file operations shared by selector adapters. use std::fs::File; use std::io; diff --git a/crates/executor/src/scheduler/mod.rs b/crates/executor/src/scheduler/mod.rs index 10e0db0..7dd58b7 100644 --- a/crates/executor/src/scheduler/mod.rs +++ b/crates/executor/src/scheduler/mod.rs @@ -1,5 +1,7 @@ -//! Scheduler implementations and their I/O selectors. +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. +//! Scheduler implementations and their I/O selectors. use std::fs::File; use std::future::Future; use std::io; diff --git a/crates/executor/src/scheduler/selector/epoll.rs b/crates/executor/src/scheduler/selector/epoll.rs index d4503c1..6295251 100644 --- a/crates/executor/src/scheduler/selector/epoll.rs +++ b/crates/executor/src/scheduler/selector/epoll.rs @@ -1,4 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Linux/Android readiness selector. `async-io` uses `polling`'s epoll backend. //! Reads and writes share the nonblocking readiness fallback. - pub use super::readiness::{Listener, Selector, Socket}; diff --git a/crates/executor/src/scheduler/selector/io_uring.rs b/crates/executor/src/scheduler/selector/io_uring.rs index ea5a02a..9244ac1 100644 --- a/crates/executor/src/scheduler/selector/io_uring.rs +++ b/crates/executor/src/scheduler/selector/io_uring.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Linux completion reads/writes using a ring owned by a dedicated selector //! thread. Tasks communicate through owned requests and standard wakers, so //! operation futures remain Send and can migrate between executor workers. @@ -11,7 +14,6 @@ //! This initial implementation uses one channel request and one completion //! channel per operation. It does not yet pool operation records or register //! buffers with the kernel. - use super::readiness::{self, Listener, Socket}; use crate::scheduler::{BufferResult, Clock, FileIo, Interest, Network}; use event_listener::{Event as CompletionEvent, Listener as _}; diff --git a/crates/executor/src/scheduler/selector/iocp.rs b/crates/executor/src/scheduler/selector/iocp.rs index e9fc152..46bdc7e 100644 --- a/crates/executor/src/scheduler/selector/iocp.rs +++ b/crates/executor/src/scheduler/selector/iocp.rs @@ -1,5 +1,7 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Windows socket readiness selector, using `polling`'s IOCP/AFD backend through //! `async-io`. File operations use the blocking pool. This does not yet submit //! native overlapped file reads or writes. - pub use super::readiness::{Listener, Selector, Socket}; diff --git a/crates/executor/src/scheduler/selector/kqueue.rs b/crates/executor/src/scheduler/selector/kqueue.rs index 59a0a63..05a474e 100644 --- a/crates/executor/src/scheduler/selector/kqueue.rs +++ b/crates/executor/src/scheduler/selector/kqueue.rs @@ -1,4 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Apple/BSD readiness selector. `async-io` uses `polling`'s kqueue backend. //! Registrations are reused across operations and task migration. - pub use super::readiness::{Listener, Selector, Socket}; diff --git a/crates/executor/src/scheduler/selector/mod.rs b/crates/executor/src/scheduler/selector/mod.rs index 580195e..e56baf7 100644 --- a/crates/executor/src/scheduler/selector/mod.rs +++ b/crates/executor/src/scheduler/selector/mod.rs @@ -1,6 +1,8 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Native I/O selectors. Platform modules select the OS mechanism at compile //! time; Tokio supplies a separate runtime adapter in `scheduler::tokio`. - #[cfg(feature = "native")] pub mod readiness; diff --git a/crates/executor/src/scheduler/selector/readiness.rs b/crates/executor/src/scheduler/selector/readiness.rs index 00624ab..07c017b 100644 --- a/crates/executor/src/scheduler/selector/readiness.rs +++ b/crates/executor/src/scheduler/selector/readiness.rs @@ -1,10 +1,12 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Shared readiness operations backed by `async-io`'s persistent registrations. //! //! Its process-wide reactor drives OS events independently of our executor. //! It remains available while registered resources are alive; Socketry task //! shutdown does not shut down that shared reactor. Futures contain no private //! coroutine stacks and may be polled on different workers. - use crate::scheduler::file::{read_at, write_at}; use crate::scheduler::{BufferResult, Clock, FileIo, Interest, Network}; use async_io::Async; diff --git a/crates/executor/src/scheduler/socketry.rs b/crates/executor/src/scheduler/socketry.rs index c0e9116..1cea23d 100644 --- a/crates/executor/src/scheduler/socketry.rs +++ b/crates/executor/src/scheduler/socketry.rs @@ -1,5 +1,7 @@ -//! Socketry's work-stealing executor and scheduler context. +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. +//! Socketry's work-stealing executor and scheduler context. #[cfg(feature = "native")] mod operations; diff --git a/crates/executor/src/scheduler/socketry/operations.rs b/crates/executor/src/scheduler/socketry/operations.rs index 46ea99f..e8771f7 100644 --- a/crates/executor/src/scheduler/socketry/operations.rs +++ b/crates/executor/src/scheduler/socketry/operations.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Native selector operations exposed by Socketry schedulers and handles. use super::{Scheduler, SchedulerHandle}; use crate::scheduler::selector::DefaultSelector; diff --git a/crates/executor/src/scheduler/tokio.rs b/crates/executor/src/scheduler/tokio.rs index 0375eaf..797b0d5 100644 --- a/crates/executor/src/scheduler/tokio.rs +++ b/crates/executor/src/scheduler/tokio.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + //! Adapter for an existing, running Tokio runtime with I/O and time enabled. //! //! This adapter owns the tasks it spawns, but does not own or drive the Tokio diff --git a/crates/executor/src/task.rs b/crates/executor/src/task.rs index e0e1c5a..d606cf6 100644 --- a/crates/executor/src/task.rs +++ b/crates/executor/src/task.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + use crate::owner::Owner; use crate::scheduler::{SchedulerHandle, Shared}; use pin_project_lite::pin_project; diff --git a/crates/executor/src/worker.rs b/crates/executor/src/worker.rs index 7de8dab..8b1c99c 100644 --- a/crates/executor/src/worker.rs +++ b/crates/executor/src/worker.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + use crate::scheduler::{self, Shared}; use crate::task::{Runnable, Task, UNASSIGNED_WORKER}; use crossbeam_deque::{Injector, Steal, Stealer, Worker}; diff --git a/crates/executor/tests/io.rs b/crates/executor/tests/io.rs index da8d134..7a5e4b1 100644 --- a/crates/executor/tests/io.rs +++ b/crates/executor/tests/io.rs @@ -1,4 +1,8 @@ #![cfg(any(feature = "native", feature = "tokio"))] + +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + mod support; use socketry_executor::{Clock, FileIo, Interest, Network, Spawn}; diff --git a/crates/executor/tests/ownership.rs b/crates/executor/tests/ownership.rs index e0041c9..35e3e38 100644 --- a/crates/executor/tests/ownership.rs +++ b/crates/executor/tests/ownership.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + mod support; use socketry_executor::{Scheduler, Spawn, SpawnError, TaskError, yield_now}; diff --git a/crates/executor/tests/parking.rs b/crates/executor/tests/parking.rs index eac5775..1f94d5a 100644 --- a/crates/executor/tests/parking.rs +++ b/crates/executor/tests/parking.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + use loom::sync::Arc; use loom::sync::atomic::{AtomicBool, AtomicUsize, Ordering, fence}; use loom::thread; diff --git a/crates/executor/tests/scheduler.rs b/crates/executor/tests/scheduler.rs index 033b516..c12d8e2 100644 --- a/crates/executor/tests/scheduler.rs +++ b/crates/executor/tests/scheduler.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + mod support; use socketry_executor::{Scheduler, SchedulerHandle, Task, TaskError, TaskHandle, yield_now}; diff --git a/crates/executor/tests/support/mod.rs b/crates/executor/tests/support/mod.rs index 98835b8..bf2fe13 100644 --- a/crates/executor/tests/support/mod.rs +++ b/crates/executor/tests/support/mod.rs @@ -1,5 +1,8 @@ #![allow(dead_code)] +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + use std::sync::Arc; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::mpsc::Receiver; diff --git a/crates/executor/tests/work_stealing.rs b/crates/executor/tests/work_stealing.rs index 95a9673..3d14f47 100644 --- a/crates/executor/tests/work_stealing.rs +++ b/crates/executor/tests/work_stealing.rs @@ -1,3 +1,6 @@ +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. + mod support; use socketry_executor::Scheduler; diff --git a/license.md b/license.md index 4d53fdc..e589fcc 100644 --- a/license.md +++ b/license.md @@ -1,6 +1,6 @@ # MIT License -Copyright (c) 2026 Samuel Williams +Copyright, 2026, by Samuel Williams. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/readme.md b/readme.md index 8d78aee..f57e3cd 100644 --- a/readme.md +++ b/readme.md @@ -113,6 +113,22 @@ pull request. After review and merge, GitHub Actions publishes the release when the configured `crates-io` environment approves it. See the [Cargo publishing guide](https://github.com/socketry/bake-cargo-rust/blob/main/context/publishing.md). +## Releases + + +See [releases.md](releases.md) for the full release history. + +### v0.1.1 + +- Create or update GitHub Releases after successful crates.io publication. +- Move implementation and design guidance into the package's public context. +- Add Bake Agent Context tasks to the repository's development workspace. + + +## See Also + +- [socketry](https://github.com/socketry/socketry-rust) — Foundational concurrency APIs for Socketry + ## Contributing Please open an issue or pull request on [GitHub](https://github.com/socketry/socketry-rust). diff --git a/releases.md b/releases.md index 2595b68..4d2f6d6 100644 --- a/releases.md +++ b/releases.md @@ -1,6 +1,7 @@ # Releases -## Unreleased +## v0.1.1 +- Create or update GitHub Releases after successful crates.io publication. - Move implementation and design guidance into the package's public context. - Add Bake Agent Context tasks to the repository's development workspace. diff --git a/src/lib.rs b/src/lib.rs index 6b3999f..2963d6e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,7 @@ -//! Foundational concurrency APIs for Socketry. +// Released under the MIT License. +// Copyright, 2026, by Samuel Williams. +//! Foundational concurrency APIs for Socketry. #![doc = include_str!("../readme.md")] pub use socketry_executor as executor;