Dyalog APL – .NET bridge: overload resolution and runtime targeting with ⎕USING and ⎕NEW
0 reputation · 25 Dec 2023, 07:16 UTC
The goal is to use Dyalog APL to load and instantiate .NET assemblies via ⎕USING and ⎕NEW, with predictable interoperability across the interpreter-CLR boundary.
The integration surface involves type marshaling between APL arrays, scalars and nested arrays and .NET types, and the lifetime of .NET objects held in an APL workspace is managed by the CLR garbage collector. Behavior is version-sensitive because the bridge depends on the .NET runtime targeted by the installed Dyalog release, and assembly compatibility can vary between classic .NET Framework and newer .NET.
An unresolved interoperability concern is overload and type resolution when a .NET method has multiple signatures. The bridge must infer the intended signature from APL arguments, which can be ambiguous. A related design decision is whether to pin the integration to a specific .NET runtime version or allow side-by-side runtimes, which affects deployment and long-term maintenance.
Which .NET runtime versions are supported for ⎕USING and ⎕NEW in a given Dyalog release? How does the bridge select among overloaded .NET methods when APL argument types map to multiple signatures? Should the integration be pinned to a single runtime version for deployment stability?