Skip to content

chore(deps): bump logos-cpp-sdk to 9d50829 (deferred generated event subscriptions) - #191

Merged
dlipicar merged 1 commit into
masterfrom
chore/bump-cpp-sdk-9d50829
Aug 10, 2026
Merged

chore(deps): bump logos-cpp-sdk to 9d50829 (deferred generated event subscriptions)#191
dlipicar merged 1 commit into
masterfrom
chore/bump-cpp-sdk-9d50829

Conversation

@dlipicar

Copy link
Copy Markdown
Contributor

Without this, logos-co/logos-cpp-sdk#134 reaches nothing. Every module built through mkLogosModule takes its generated dependency wrappers from this repo's logos-cpp-sdk pin, which was still dfd4628 — predating both #134 and #135.

So real modules kept emitting the old shape:

LogosObject* origin = ensureReplica();   // blocking requestObject
if (!origin) return false;               // PERMANENT, never retried

which asks "is this module reachable right now" at the one moment the answer is no — every C++ consumer subscribes from init(), onContextReady() or a backend constructor, all of which run while the dependency's host has been spawned and has not yet called listen().

Why the current state is the worst of the two orders

That guard was dead code for years, because isConnected() returned an always-true latch and the call fell through to a blocking wait that usually succeeded, slowly. logos-co/logos-protocol#47 made isConnected() truthful — which turns the same code into an instant, permanent, silent failure.

#190 pinned the new protocol here. This PR pins the generator that copes with it. Having the first without the second is strictly worse than having neither, and that is the state this repo has been in since #190 merged.

Already proven green in this exact combination

logos-co/logos-cpp-sdk#134's doc-tests built their modules against module-builder master (protocol 0183e8c) with logos-cpp-sdk overridden to 9d50829 — which is precisely what this lock now produces. The Qt spec passed there:

PASS  The subscription made at init was accepted
PASS  The event crossed the boundary into the Qt-typed subscriber
PASS  Exactly once

flake.lock only; no source change. Resulting pins:

root.logos-cpp-sdk      -> 9d50829
root.logos-protocol     -> 0183e8c
cpp-sdk.logos-protocol  -> 0183e8c   (via follows)

🤖 Generated with Claude Code

…subscriptions)

Without this, logos-cpp-sdk#134 reaches nothing. Every module built through
mkLogosModule gets its generated dependency wrappers from THIS pin, and it was
still dfd4628 -- so real modules kept emitting the old shape:

    LogosObject* origin = ensureReplica();   // blocking requestObject
    if (!origin) return false;               // PERMANENT, never retried

which asks "is this module reachable right now" at the one moment the answer is
no: every C++ consumer subscribes from init(), onContextReady() or a backend
constructor, all of which run while the dependency's host has been spawned and
has not called listen(). That guard was dead code for years because
isConnected() returned an always-true latch; logos-protocol#47 made it truthful,
which turns the same code into an instant, permanent, silent failure. Pinning
the protocol without the generator is therefore the WORST of the two orders, and
that is the state this repo has been in since #190.

Pairs with the protocol already pinned here: 0183e8c has onEventWhenAvailable,
which the new emission calls, and the tryAcquireNow use-after-free fix, which
matters because generated Qt consumers subscribe in exactly the shape that
triggered it -- one on<Event> per declared event, from init().

This exact combination is already green: logos-cpp-sdk#134's doc-tests built
their modules with module-builder master (protocol 0183e8c) and cpp-sdk
overridden to 9d50829, which is what this lock now produces. The Qt spec's
assertions passed there -- subscription accepted at onInit() while the dependency
was unreachable, event delivered decoded, exactly once.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 10, 2026 19:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review any files in this pull request.


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@dlipicar
dlipicar merged commit 7fbb942 into master Aug 10, 2026
3 checks passed
@github-actions

Copy link
Copy Markdown

📊 Doc-test reports

The four ways to wrap a C library plus the two cross-language composition tours — each scaffolded into real modules, built against this commit, loaded in logoscore, and driven — rendered alongside the commands actually run and their output (updated each run, commit c11b07c):

Pages can take a minute to update after the run finishes.

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