Skip to content

Add portable local service transport and Godot lifecycle signals - #1147

Open
linuxificator wants to merge 5 commits into
shorepine:mainfrom
linuxificator:upstream/amy_socket_api_xtra
Open

Add portable local service transport and Godot lifecycle signals#1147
linuxificator wants to merge 5 commits into
shorepine:mainfrom
linuxificator:upstream/amy_socket_api_xtra

Conversation

@linuxificator

Copy link
Copy Markdown

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.

  • add a Linux/Android AF_UNIX / SOCK_SEQPACKET transport that only moves complete wire messages through a bounded SPSC queue; it never calls AMY from its receiver thread
  • expose platform-independent backend_ready and backend_error(message) signals in the existing Godot wrapper
  • document the verified Android NDK build flags, declaration-only allocator header, and V2.0 versus V10.0 master-volume scale
  • document service-host integration on Linux/Android and the external Windows named-pipe implementation
  • link the complete Android Oboe and Godot Android implementations in the fork instead of adding framework-specific build trees here

Full 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 ctest
  • AMY_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.py
  • gdparse godot/amy.gd
  • make godot-api
  • make check-c-api
  • git diff --check upstream/main...HEAD

The 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.

linuxificator and others added 4 commits August 30, 2026 11:04
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.
@linuxificator

Copy link
Copy Markdown
Author

Maybe add the omnichord as an example of a multi-platform amy synth project to the list in README.md?
https://github.com/linuxificator/LB_Omnichord

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.

1 participant