[ANN] ipDSA 1.2.0 — same-host Annex E (DSA) runtime over shared memory — now on Windows and FreeBSD

ipDSA is a free (GPLv3 + GCC Runtime Library Exception) Partition
Communication Subsystem for Ada’s Distributed Systems Annex (Annex E),
for same-host deployments: the partitions of a distributed program
run as separate OS processes on one machine and talk over shared
memory. There is no network stack involved at all — endpoints are just
names, nothing listens on a port, and the security boundary is ordinary
file permissions.

It is the sibling of aDSA (the ZeroMQ-backed PCS announced separately)
with the transport swapped for interprocess streams built on Dmitry
Kazakov’s Simple Components — a vendored subset ships in the repo
(GM-GPL) and is spliced into the runtime, so partitions link against no
external transport library. Everything above the transport is shared
with aDSA: the same .cfg configuration language, the same
gnatdist-style build tool (pcs_gnatdist), full Annex E coverage — RCI,
RACW/RAS with callbacks, Shared_Passive (file / store-server /
shared-memory backends), asynchronous calls, termination policies,
restart recovery, the RM E.3 version check — validated against the
original PolyORB examples/dsa corpus. Fixes flow between the two
projects, in both directions.

New in 1.2.0 — the platform release:

  • Windows 11: full bring-up with the Alire toolchain (gnat_native
    15.2.1 + gprbuild 26.0.1, Alire’s bundled MSYS2 bash), via an
    os-windows variant of the interprocess layer. The verification corpus
    passes 6/6 on both build paths — the same scoreboard as Linux.
  • FreeBSD 15.1: an os-pthreads variant; corpus and feature demos
    green, with a scoreboard identical to Linux.
  • A new demo: Shared_Passive over shared memory between overlapping
    partitions.
  • pcs_gnatdist now lints RCI specs against the RM E.2.3 legality
    rules up front, instead of letting violations surface as puzzling
    linker errors.
  • Assorted fixes — details in the changelog.

Repo

Release
User’s Guide

The same FSF GNAT limitation noted in the aDSA announcement applies
here too (it is compiler-side, independent of the transport):
dispatching to an RACW of a Remote_Types interface can pick the wrong
slot when the concrete type declares its own primitives before its
overrides (PR ada/126014); the workaround is a concrete RCI.

On Arch Linux both projects install from their PKGBUILDs and co-install
cleanly (ipdsa-gnatdist / adsa-gnatdist), so you can develop against
one and switch transports by rebuilding your configuration with the
other tool — the application code and .cfg are identical.

Feedback, bug reports, and testing on other platforms are very welcome.

3 Likes