Das das BNDDIR keine Signatur hat, ist mir auch klar.
Beim Erstellen eines Serviceprogrammes mit Bindarylanguage zwingt mich niemand eine neue Signatur zu vergeben.
Bei vernünftiger Anwendung werden neue Prozeduren immer am Ende hinzugefügt.
Alte Programmaufrufe bleiben erhalten und erzwingen eben keinen Rebind.
Natürlich darf ich die Parameter einer Prozedur nie ändern, aber das galt ja schon immer für OPM-Schnittstellen, ist also überhaupt nichts neues.
Wenn ich mich daran halte, benötige ich nie eine neue Signatur. Auch der Schwachsinn mit *PRV gehört eigentlich verboten.
Die Beibehaltung der Reihenfolge ist zwingend erforderlich, da zur Laufzeit nicht mehr per Name sondern per relativer Nr. in der Liste aufgerufen wird. Eine Parameterprüfung erfolgt nicht!
Erweiterungen kann ich mit *OMMITED-Parametern (am Ende) ggf. durchführen was ich aber besser unterlasse. In .NET/Java/C++ definiere ich überladene Prozeduren mit diversen Parametern, ähnlich wie es ja SQL nun auch kann.
Dies kann ich dann sogar verwenden um eine bestehende Prozedur mit den alten Aufrufen zu belassen und im Inhalt nun die neue Prozedur mit dem/den zusätzlichen Parametern und den Defaults aufzurufen.
Bei der OPM-Programmierung hat man ja eigentlich das selbe getan, warum also nicht auch bei Serviceprogrammen?
Was anderes mache ich mit Überladungen ja nun in anderen Sprachen auch nicht.

Bei .NET wird natürlich ein Projekt kompiliert, aber ein Projekt besteht aus einer Anwendung oder einer DLL.
Zur Laufzeit wird die Version der DLL gebunden, was ich aber durch Manifeste vereinfachen kann.
So kann ich die DLL's separat entwickeln und testen, Versions-Nr'n hochzählen usw.
Allerdings führt .NET und Java eben zur Laufzeit Prüfungen über Aufrufschnittstellen (Namen und Parametertypisierungen) durch um Fehler zu minimieren.

Schlechtes Design gibt es eben überall, so dass es auch dabei knallen kann.