Add portable local service transport and Godot lifecycle signals - #1147
Open
linuxificator wants to merge 5 commits into
Open
Add portable local service transport and Godot lifecycle signals#1147linuxificator wants to merge 5 commits into
linuxificator wants to merge 5 commits into
Conversation
Add a fixed-size AF_UNIX/SOCK_SEQPACKET transport for local AMY wire messages, including peer credential checks, bounded queueing, cleanup safeguards, standalone regression tests, and focused CI.
This was referenced Aug 30, 2026
Author
|
Maybe add the omnichord as an example of a multi-platform amy synth project to the list in README.md? |
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.
Summary
This is the reduced, portable replacement requested in the review of #1136. It supersedes #1136 and #1138 without bringing their Android projects into AMY.
AF_UNIX/SOCK_SEQPACKETtransport that only moves complete wire messages through a bounded SPSC queue; it never calls AMY from its receiver threadbackend_readyandbackend_error(message)signals in the existing Godot wrapperV2.0versusV10.0master-volume scaleFull reference implementations:
Deliberately excluded
No Android Gradle project, Oboe service, app example, Godot Android project, or emulator workflow is included. Those remain external references, as requested.
The Windows named-pipe transport also stays external because its native service uses AMY's existing public embedding calls without modifying AMY core. The porting guide links its exact service, launcher, Qt client, build target, regression, and release workflow revision.
Validation
bash tests/run_amy_unix_socket_test.sh(ASan + UBSan)make ctestAMY_TEST_THRESHOLD_DB=-70.0 make test PYTHON=/tmp/amy-test-venv/bin/python(133 tests, matching upstream CI threshold)python3 tests/test_godot_backend_signals.pygdparse godot/amy.gdmake godot-apimake check-c-apigit diff --check upstream/main...HEADThe socket regression covers packet boundaries and maximum size, oversize drops, non-consuming
EMSGSIZE, bounded-queue ordering and overrun accounting, permissions, client rejection and reconnect, live/stale path handling, and safe pathname cleanup.