Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "ecdysis"
description = "A library for graceful restarts in Rust."
version = "1.0.0-final-internal"
version = "1.0.0"
authors = ["Argo Smart Routing & Orpheus Team at Cloudflare, Inc."]
edition = "2021"
license = "Apache-2.0"
Expand All @@ -10,10 +10,11 @@ exclude = ["integration_tests"]
readme = "README.md"

[package.metadata.release]
# Settings for cargo release
pre-release-commit-message = "Release {{version}}"
tag-prefix = ""
publish = false
pre-release-hook = ["git-cliff", "-o", "RELEASE_NOTES", "--tag", "{{version}}"]
publish = false # don't publish automatically
push = false # don't push to the repo automatically

[features]
default = ["tokio_ecdysis"]
Expand All @@ -25,27 +26,31 @@ tokio_ecdysis = ["dep:futures", "dep:tokio", "dep:tokio-stream"]
[dependencies]
bincode = "1.3.3"
bytes = "1.6.0"
derive_more = { version = "1.0.0", features = ["from", "display"] }
futures = { version = "0.3", optional = true, features = ["alloc"] }
derive_more = { version = "1.0.0", features = ["display", "from"] }
futures = { version = "0.3", features = ["alloc"], optional = true }
log = "0.4"
nix = "0.26"
os_pipe = "1.1.5"
parking_lot = "0.12"
serde = { version = "1", features = ["derive"] }
socket2 = "0.5"
tempfile = "3.10.1"
tokio = { version = "1.37.0", optional = true, features = ["signal", "macros", "net", "fs"] }
tokio-stream = { version = "0.1", optional = true, features = ["net", "signal", "sync"] }
tokio-util = { version = "0.7", features = ["net", "codec"] }
tokio = { version = "1.37.0", features = ["fs", "macros", "net", "signal"], optional = true }
tokio-stream = { version = "0.1", features = ["net", "signal", "sync"], optional = true }
tokio-util = { version = "0.7", features = ["codec", "net"] }

[target.'cfg(target_os = "linux")'.dependencies]
tokio-seqpacket = "0.7"

[dev-dependencies]
env_logger = "0.11"
tokio = { version = "1.37.0", features = ["macros", "rt-multi-thread", "io-util"] }
tokio = { version = "1.37.0", features = [
"io-util",
"macros",
"rt-multi-thread"
] }
waitgroup = "0.1"

[[example]]
name = "tokio_echo"
required-features = ["tokio_ecdysis", "systemd_sockets"]
required-features = ["systemd_sockets", "tokio_ecdysis"]
15 changes: 15 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,18 @@ audit:
install-release-reqs:
$(CARGO) install cargo-release git-cliff

# To create a release, use release-<version type> (patch, minor, or major; e.g make release-patch for a
# patch release). By default this only performs a dry run; to actually create a release specify EXECUTE
# = true: make EXECUTE=true release. Once the release has been created, it can be pushed to crates.io
# with push-release: make push-release (also a dry run by default).
#
# NOTE for Cloudflare employees: Warp causes issues when creating a release for crates.io, so make sure
# to disable it temporarily when doing this.
.PHONY: release-% push-release
release-%: EXECUTE ?= false
release-%: install-release-reqs
$(CARGO) release $(if $(filter true,$(EXECUTE)),-x) --no-push $*

push-release: EXECUTE ?= false
push-release:
$(CARGO) release push $(if $(filter true,$(EXECUTE)),-x)
11 changes: 11 additions & 0 deletions RELEASE_NOTES
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

1.0.0
- 2026-01-12 chore(style): cargo fmt
- 2026-01-12 chore(clippy): fix clippy lints
- 2026-01-10 chore: prepare for v1.0.0
- 2025-06-05 feat: don't run duplicate jobs on PRs
- 2025-06-05 feat: Github CI pipeline to build and test ecdysis
- 2025-06-05 fix: cargo-sort lint
- 2025-06-05 feat: initial public ecdysis commit
Comment on lines +2 to +9
Copy link

@celeste-sinead celeste-sinead Jan 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adopting https://keepachangelog.com/en/1.1.0/ (which I found it by reference from https://doc.rust-lang.org/cargo/reference/publishing.html ) instead of just listing commits.

There probably isn't a whole lot to be said for 1.0.0, because there isn't a real diff baseline 🙃 - so the file would be something like

# Changelog

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2026-01-20

The first public release of this crate.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good call-out and I agree. However, we currently have some hooks in place to generate the RELEASE NOTES from commit messages, and getting rid of that would require some minor code changes. I will file an issue in the repo and do it after the initial release :)



10 changes: 4 additions & 6 deletions src/tokio_ecdysis/trigger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,12 @@ impl Stream for Trigger {
Some(()) => Poll::Ready(Some(Ok(TriggerReason::Signal(*kind)))),
},
Self::Uds(path, listener_stream) => match ready!(listener_stream.poll_next_unpin(cx)) {
None => Poll::Ready(Some(Err(io::Error::new(
io::ErrorKind::Other,
None => Poll::Ready(Some(Err(io::Error::other(
"Socket shut down unexpectedly.",
)))),
Some(Err(e)) => Poll::Ready(Some(Err(io::Error::new(
io::ErrorKind::Other,
format!("Unexpected error accepting connection on socket: {e}"),
)))),
Some(Err(e)) => Poll::Ready(Some(Err(io::Error::other(format!(
"Unexpected error accepting connection on socket: {e}"
))))),
Some(Ok(stream)) => {
Poll::Ready(Some(Ok(TriggerReason::UnixStream(path.clone(), stream))))
}
Expand Down