Repository navigation
Conversation
📊 cpp-sdk doc-test reportThe real accounts module, run through a logoscore daemon with the whole stack built against this commit of the C++ SDK — rendered alongside the commands actually run and their output (updated each run, commit Pages can take a minute to update after the run finishes. |
This was referenced Sep 26, 2026
dlipicar
force-pushed
the
feat/standalone-apps
branch
from
September 27, 2026 11:19
290c3ff to
9546fd1
Compare
dlipicar
added a commit
to logos-co/logos-module-builder
that referenced
this pull request
Sep 27, 2026
logos-co/logos-nix#16, logos-co/logos-protocol#100, logos-co/logos-cpp-sdk#173 and logos-co/logos-plugin-qt#51 carry what an aarch64-android module build needs; revert each once it merges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`--lidl X.lidl --api-style lp` emits the lp wrapper alone, <module>_api.{h,cpp}:
exactly what the umbrella emits for `--dep <module>=X.lidl`, with no umbrella,
so a program that is not a module builds it with its own origin. `--lidl`
without --api-style (or with qt) still emits the Qt client stubs.
`--typed-collections`, in that mode only, types [T] (other than [tstr]),
{tstr: T} and positional ?T instead of collapsing them to LogosList / LogosMap.
lidl_to_json gives each such slot its lidlTypeToStdCdylib spelling, records
qualified; the lp emitter types the slot and moves it through logos-protocol's
logos::toJson / fromJson, with a codec specialization per record over the
existing conversions. Decode stays lenient: a wrong shape yields T{}. The flag
is refused in every other mode, and without it no emitter's output changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shellName() returns Config::shellName, kept for both runtime placements, and client<T>() builds a generated lp client with it as the origin, in place, since a client owns its lp_client and cannot move. Its calls use the shell credential start() adopts into the plain protocol image, so the host links that image from liblogos' lib output. The C mirror gains logos_consumer_call_async and logos_consumer_result_cb, which liblogos exports; the test stubs it with liblogos' exact signature, so the mirror cannot drift unnoticed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
logos_generate_clients(TARGET t LIDL a.lidl... [TYPED_COLLECTIONS]
[OUTPUT_DIR d]) ships in the SDK's CMake package: it runs the client mode at
build time (the generator from LOGOS_CPP_GENERATOR, beside the package, or on
PATH) and adds each <module>_api.cpp and its directory to the target. The nix
twin, lib.mkClients { system; lidls; typedCollections ? false; }, takes a .lidl
or a module's packages.<sys>.lidl directory per module name.
tests/clients builds the generator from this checkout, generates a fixture's
client through the function, with and without typed collections, and runs it
over stubbed lp_* calls that echo their argument: a record of records, a uint
above 2^32, high-byte bstr, [int], {tstr: Rec}, ?tstr, nested records, events,
and lenient decode. Neither target sees Qt. checks.clients-cmake does the same
from the installed package against the real plain protocol image, and
checks.mk-clients covers the nix helper.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
packages.aarch64-android carries what a plain module reads from LOGOS_CPP_SDK_ROOT: the headers, in both include roots, and the logos-cpp-sdk CMake package. No generator: it runs on the build platform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
logos-co/logos-nix#16 and logos-co/logos-protocol#100; revert both once they merge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dlipicar
force-pushed
the
feat/standalone-apps
branch
from
October 3, 2026 14:32
9546fd1 to
c236837
Compare
dlipicar
added a commit
to logos-co/logos-module-builder
that referenced
this pull request
Oct 3, 2026
logos-co/logos-nix#16, logos-co/logos-protocol#100, logos-co/logos-cpp-sdk#173 and logos-co/logos-plugin-qt#51 carry what an aarch64-android module build needs; revert each once it merges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on the peering branch (#172). A standalone C++ app (not a module) can generate typed clients for any module from its
.lidl. The clients call through the app's own runtime, whether the module runs locally or is imported from a peered runtime. Module builds are byte-identical.--lidl X.lidl --api-style lp [--output-dir D]writes only<module>_api.{h,cpp}: no umbrella, no Qt. It is byte-for-byte the--depwrapper modules already get.--typed-collectionstypes[T],{tstr: T}and positional?TthroughlidlTypeToStdCdyliband the protocol's codecs. Without it, nothing changes.LogosCore:shellName()andclient<T>(), which builds a generated client that calls as the shell; its calls use the credentialstart()adopted into the plain protocol image. The header's C mirror gainslogos_consumer_call_async.logos_generate_clients(TARGET t LIDL a.lidl… [TYPED_COLLECTIONS]), shipped in the package config and running the generator at build time; nixlib.mkClients { system; lidls; typedCollections; }.Verified (macOS):
checks.aarch64-darwin.tests432/432.generator-cli(5 new assertions),module-impl-abi,mk-clients, andclients-cmake. The last builds from the installed package, links the real plain protocol, and runs.uint> 2^32, a high-bytebstr, typed maps and lists, and both states of?T. Mutations of the lenient decode, the record codec and the record qualification each fail these tests..lidlfiles, in every mode, give 0 differences across 4,005 files.bc-watch, a C++ client in logos-core-demo (local for now), runs a runtime of its own throughLogosCore. It buildspeering_module's andblockchain_module's clients withlogos_generate_clients, links alogoscoredaemon through its local invite, and imports its devnet node. It read height 8,519 and received livenewBlockevents.Pre-existing emitter bugs found by compiling every contract's client, not fixed here because fixing them changes module output: a parameter named
timeout_msredefines the wrapper's own, C++-keyword names, and recursive records.Android.
packages.aarch64-androidis the Qt-free SDK (nix/default.nix { qt = false; }): the headers and the CMake package a plain module or an app builds against on Android. It ships no generator, since generators run on the build machine. The last commit pins logos-co/logos-nix#16 and logos-co/logos-protocol#100 until they merge.Stacked on #172. The CI on this repo runs for PRs into master, so read the checks above.
🤖 Generated with Claude Code