aDSA v1.5.2 — Ada’s Distributed Systems Annex over ZeroMQ: dynamic networks, IPv6, and a new home
aDSA is a Partition Communication Subsystem (PCS) for Ada’s Distributed
Systems Annex (Annex E), replacing the discontinued PolyORB/GLADE runtime.
The compiler side of the Annex lives on in FSF GNAT; aDSA supplies the
runtime the generated stubs call into (System.RPC,
System.Partition_Interface, System.Shared_Storage) plus pcs_gnatdist,
a gnatdist replacement that builds a distributed application from its
.cfg. Same-host deployments have a shared-memory sibling,
ipDSA.
New home
The project has moved to GitHub - charlie5/aDSA: ZeroMQ-backed Partition Communication Subsystem for Ada's Distributed Systems Annex (Annex E) — a runtime replacement for the deprecated PolyORB · GitHub (the old
Codeberg pages carry a moved notice). The Alire crate moved with it — the
published versions were re-verified byte-identical, and this release is the
first to use a plain git-tag origin.
What’s new in v1.5.2
Most of this release traces back to feedback from the project’s first
outside user — someone building test-equipment control over DHCP-discovered
instruments — so the theme is networks where addresses aren’t known in
advance:
DSA_HOST=auto— a serving partition can derive the address it
advertises from the machine’s route to the name server (a UDP-connect
probe; no packet sent, works with the name server down). One unmodified
launch script then works on any host. Opt-in; explicitDSA_HOSTalways
wins; NAT/container topologies still want an explicit address.- IPv6 —
DSA_IPV6=1enables dual-stack sockets on every channel.
Bracket literal v6 addresses in endpoints
(DSA_NAME_SERVER=tcp://[fd00::7]:5700); set it on every process of a
deployment. - The classic cross-host mistake now diagnoses itself. Forgetting
DSA_HOSTon a serving partition used to mean a silent hang on the first
remote call. The name server now prints a WARNING at registration time,
naming the fix. DSA_HOSTdocumentation rewritten — what the variable actually is
(“the address at which I can be reached”), a per-process table of who
needs it (the name server doesn’t), and troubleshooting entries keyed to
the observable log signatures.- Examples reorganized — all 40 examples in category sub-folders
(corpus, basics, racw-ras, shared-passive, robustness, concurrency,
building, cross-host, gnat-bug), indexed byexamples/README.md.
The new features are verified on Linux, FreeBSD and Windows, including true
two-machine deployments over both IPv4 and IPv6; the release gate (the
unmodified PolyORB examples/dsa corpus, both build paths) is green on
Linux x86_64, Windows 11, FreeBSD 15.1 and 32-bit ARM. The Alire index CI
additionally built this release on macOS (ARM and Intel).
Getting it
alr install adsa # tools onto your PATH (v1.5.2, from the community index)
alr get adsa # or: a local workspace to poke around in
git clone --branch v1.5.2 https://github.com/charlie5/aDSA # or: plain git
Start with docs/users-guide.md; examples/ holds runnable demos of every
feature. Feedback very welcome — both waves of it so far have directly
shaped releases.