Skip to content

Refactor shuttle into shuttle-core, shuttle-schedulers, shuttle-sync sub-crates#286

Open
jorajeev wants to merge 1 commit into
awslabs:mainfrom
jorajeev:module-reorg-pr1
Open

Refactor shuttle into shuttle-core, shuttle-schedulers, shuttle-sync sub-crates#286
jorajeev wants to merge 1 commit into
awslabs:mainfrom
jorajeev:module-reorg-pr1

Conversation

@jorajeev
Copy link
Copy Markdown
Member

@jorajeev jorajeev commented May 7, 2026

Extract the monolithic shuttle crate into a workspace of focused sub-crates:

  • shuttle-core: runtime, scheduler traits, execution engine, annotations, config, thread-local key, batch semaphore, and curated internal API surface
  • shuttle-schedulers: all scheduler implementations (random, PCT, DFS, round-robin, replay, annotation, URW, uncontrolled nondeterminism)
  • shuttle-sync: sync primitives (mutex, rwlock, condvar, barrier, once, atomics, mpsc), thread, rand, lazy_static, and future spawn/JoinHandle

Also adds shuttle-tests skeleton crate for future test migration and renames the wrappers/shuttle_sync package to shuttle-sync-wrapper to avoid name collision with the new shuttle-sync crate.

This PR only adds (well copies) code from existing crates, but doesn't wire in anything yet, so there should be no upstream impact. A follow-up PR will remove the code from the shuttle crate and switch over to using the new crates.

First step towards addressing #249


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Extract the monolithic shuttle crate into a workspace of focused sub-crates:

- shuttle-core: runtime, scheduler traits, execution engine, annotations,
  config, thread-local key, batch semaphore, and curated internal API surface
- shuttle-schedulers: all scheduler implementations (random, PCT, DFS,
  round-robin, replay, annotation, URW, uncontrolled nondeterminism)
- shuttle-sync: sync primitives (mutex, rwlock, condvar, barrier, once,
  atomics, mpsc), thread, rand, lazy_static, and future spawn/JoinHandle

Also adds shuttle-tests skeleton crate for future test migration and
renames the wrappers/shuttle_sync package to shuttle-sync-wrapper to
avoid name collision with the new shuttle-sync crate.

This PR only adds (well copies) code from existing crates, but doesn't wire in
anything yet, so there should be no upstream impact.  A follow-up PR will
remove the code from the shuttle/ crate and switch over to using the new crates.
@jorajeev jorajeev changed the title Add shuttle-core, shuttle-schedulers, shuttle-sync sub-crates Refactor shuttle into shuttle-core, shuttle-schedulers, shuttle-sync sub-crates May 7, 2026
@jorajeev jorajeev requested a review from sarsko May 7, 2026 17:58
@@ -1,5 +1,5 @@
[package]
name = "shuttle-sync"
name = "shuttle-sync-wrapper"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why is this renamed?

@sarsko
Copy link
Copy Markdown
Contributor

sarsko commented May 14, 2026

I am fine with this way of doing it, we should make it not fail checks

@sarsko
Copy link
Copy Markdown
Contributor

sarsko commented May 15, 2026

Actually strike that, this way of doing it sounds like a great way to not keep stuff up to date and to make a headache, why are we not moving stuff out and reexporting? We don't have to move everything all at once

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants