73 Commits
Author SHA1 Message Date
latentprionandCursor e6d9bfe30c SharedResourceGroup: add move constructor for initial resource.
Allows move-only ResourceType values (e.g. containers of unique_ptr) to initialize rsrc without copying.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 19:14:46 -04:00
latentprionandCursor fd2440e4ee EnvKvStore: find/get split, typed int accessors, nest DotenvParser.
Rename optional lookup to find(), add throwing get(), and provide
getInt/getPositiveInt/getPositiveNonZeroInt with optional defaults so
callers own missing-key policy without baking domain period semantics
into spinscale.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 19:26:14 -04:00
latentprionandCursor 21fa125d52 Summarize and merge MultiOperationResultSetWithException from settled Groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 05:06:18 -04:00
latentprionandCursor 3156652257 Document closeAdmission-before-cancel nursery stop ordering.
Explain the admit-after-cancel race and that daemons should disconnect at
the protocol layer before sealing admission (or handle closed-admission on enqueue).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-13 19:02:52 -04:00
latentprion 88d6367491 probe: barrier TLS init until make_shared arms shared_from_this.
PuppeteerThread starts its OS thread in the constructor, so initializeTls()
could race and throw bad_weak_ptr; wait for the harness barrier first.
2026-07-12 06:10:41 -04:00
latentprionandCursor 5e6108d396 Migrate test timer awaiters from deadline_timer to steady_timer.
Boost 1.90 marks deadline_timer deprecated; keep historical type aliases so existing spinscale tests need no renames.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 05:22:11 -04:00
latentprionandCursor 3d23ed21be cmake: omit Boost::system on Boost 1.89+ where the compiled stub is gone.
Keep linking Boost::log, and only require Boost::system on older package sets that still ship libboost_system.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-11 22:27:55 -04:00
latentprionandCursor 15ebf375ef spinscale: split probe harness from test support.
Move ProbeComponentThreadHarness into spinscale_probe_support (sscl::probe) so tools can link it without gtest; keep a sscl::tests compatibility shim.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-11 22:03:19 -04:00
latentprionandCursor 7c9bec7b9c spinscale: document slot-cancel-before-internal-op-cancel ordering.
Shutdown call sites must set slot cancelers before cancelling timers, I/O,
or hardware capture so callees observe stop intent when unblocked.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-11 18:26:54 -04:00
hayodeaandCursor 01efbd8c94 Add sscl::co::syncAwaitNonViralCoro for blocking non-viral coroutine launch.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 00:21:45 -04:00
hayodea 3d81ee92aa New test support harness primitives for testing stimbuffapis 2026-06-13 18:47:44 -04:00
hayodea 2f31e9a034 Adversarial review on test porting plan 2026-06-13 17:59:06 -04:00
hayodea a29c779f6e Tests: Add all tests from the coro creation repo
We went back and brought along all the tests we implemented while
we were building the new coro framework.
2026-06-13 17:17:57 -04:00
hayodea 1763685c0e Tests: Move qutex and nursery tests into Libspinscale repo 2026-06-13 16:17:40 -04:00
hayodea 016b2d26de SharedRsrcGrp: Allow construction of rsrc by copy 2026-06-13 11:46:16 -04:00
hayodea ffe86369e2 Add EnvKvStore for envvar parsing and interleaving 2026-06-11 19:16:46 -04:00
hayodea 00be517f30 Printing: print fewer blank newlines 2026-06-11 11:16:37 -04:00
hayodea ebf0fa2921 Nursery: Document intended usage form 2026-06-09 21:25:25 -04:00
hayodea d33e70f14a Nursery: document syncAwaitAll's caller io_context requirement for LLMs 2026-06-09 16:48:58 -04:00
hayodea 656aae37c8 Nursery: Capture onSettledCb before fillSlot in launch() 2026-06-09 10:55:33 -04:00
hayodea 5689ac3914 Nursery: Don't pass exceptions to main loop 2026-06-09 10:43:20 -04:00
hayodea 565e339a8b Nursery: Update examples to use slot and not lease in onSettled 2026-06-09 08:07:44 -04:00
hayodea b04b0db155 Add a Nursery class for dynamically managing nonviral coros 2026-06-09 05:46:51 -04:00
hayodea 44894299b4 Group: Enable aggregate exception to be passed as ptr 2026-06-07 19:33:42 -04:00
hayodea edde8f4a64 Don't auto-throw non-viral callee exceptions before callerLambda 2026-06-06 04:47:59 -04:00
hayodea 8a7d4272bd Add readme file 2026-06-01 09:40:03 -04:00
hayodea c60854845d New DynamicViralPostingInvoker: takes runtime post-to target 2026-05-31 07:13:10 -04:00
hayodea a53e0ca325 PostingPromise: reorder post-to target to be 1st arg 2026-05-30 21:45:51 -04:00
hayodea 42076d6c78 PostingPromise: Add dynamic post-to io_context targeting
This allows us to dynamically choose the target that a PostingPromise
coro will be posted to at runtime rather than only posting to the
statically configured ThreadTag::io_context() target. Big usability
improvement.
2026-05-30 20:44:53 -04:00
hayodea 2749d77d65 Remove boostAsioLinkageFix from headers 2026-05-30 12:10:38 -04:00
hayodea 3ea1475757 Boost.ASIO: potential fix for top_E shlib segfaults 2026-05-30 12:00:30 -04:00
hayodea 6df9407e65 Boost.ASIO: update io_service=>io_context 2026-05-30 11:57:57 -04:00
hayodea 0afa3e16b8 SyncCanceler: Fix visibility; reuse helper method 2026-05-29 12:05:36 -04:00
hayodea 4dbc066aac New class: SyncCancelerForAsyncWork
This class abstracts the pattern of running an async callee which
needs to be able to be canceled from a synchronous code path.

It really just lifts the logic that's regularly used in the
StimulusProducer path into a reusable abstraction.
2026-05-29 06:22:02 -04:00
hayodea ca2cccaa9c New multi-op result set class 2026-05-24 16:23:07 -04:00
hayodea a14d622eaf PuppetApp: Lifetime mgmt ops are now Viral
They no longer accept an exc_ptr and lambda for cb.
2026-05-24 16:11:08 -04:00
hayodea 16e0350245 CoQutex: Add instance name for debugging 2026-05-24 16:10:30 -04:00
hayodea 5f265567d1 Explain why CoQutex is superior to LockSet 2026-05-24 13:05:09 -04:00
hayodea e7707dacdf Unify [Non]PostingInvoker into Invoker 2026-05-24 04:32:44 -04:00
hayodea 5d139abff2 Split classes into neater header units 2026-05-24 04:28:30 -04:00
hayodea e29bee52cf Group now supports heterogeneous invokers for fanout 2026-05-24 04:01:34 -04:00
hayodea daad2a8c95 Impl ViralNonPostingInv; fix member coro thisptr; 2026-05-24 02:25:04 -04:00
hayodea abdb857e55 PuppetApp: Now use coros instead of CPS 2026-05-19 10:46:52 -04:00
hayodea 525530b567 Compilation fixups 2026-05-19 10:06:23 -04:00
hayodea 3f91cbf104 CompThr: make new changes compile 2026-05-19 10:01:15 -04:00
hayodea 6396cce7e0 Impl NonViralNonPostingInvoker; rename other invokers around posting behaviour 2026-05-19 09:57:24 -04:00
hayodea 15295ac05e Update reutrn type 2026-05-19 06:45:59 -04:00
hayodea dc58e5d521 CompThr: wrap lifetime mgmt ops in awaitable adapters 2026-05-19 06:18:23 -04:00
hayodea 1db3494d26 Remove superfluous file 2026-05-18 05:59:52 -04:00
hayodea e94aaf9323 Update include paths and namespacing 2026-05-17 17:26:21 -04:00