2.1. Implicit Storage

💡 MS-VBAL explicitly presumes of an implementation-dependent storage mechanism outside the scope of its own specification. RD-VBAL explicitly specifies these mechanisms, decoupling the language semantics from implementation-dependent storage.


2.1.1 Application Settings

MS-VBAL addresses legitimate application configuration concerns through a get-only API exposed in the standard library:

RD-VBA keeps backward compatibility by keeping an implementation backed by the Windows Registry, but isn't inherently constrained to it - hence these additions managing workspace application settings using a similar API:

Whether any standard library calls implicate actual or simulated Windows Registry reads is entirely implementation-dependent and may behave differently on different platforms. This remains entirely compliant with the relevant MS-VBAL sections as specified.

Important

The host environment may expose configuration settings that can set the implicit storage of GetAllSettings and GetSetting to workspace application settings, making these functions work exactly as if they were invoking GetAllJsonSettings and GetJsonSetting, respectively.

2.1.1.1 Workspace Application Settings

The MS-VBAL specified GetSettings API would work perfectly fine as-is for this purpose, however distinctly separate functions were introduced in RD-VBAL to maintain backward compatibility without modifying any existing signatures.

As a result, the legacy GetSettings API maintains its MS-VBA behavior, and RD-VBA applications can now leverage a new GetJsonSettings API that brings application configuration on par with any other managed (.net) configuration scheme.

  • A workspace may include one or more appsettings.json file(s) at its root, or under any of its subfolders;
  • A configuration file may be named differently: "appsettings.json" is just a (configurable) language platform default;

The application host (rdc.exe) is responsible for binding the configuration as the application is composed, before it starts executing.

Note

This feature has the full power and flexibility of a .NET managed IConfigurationBuilder underneath: future extensions could harmonize configuration settings and environment variables, fully deprecating the corresponding legacy APIs as obsolete (semantic flags can then be issued at usage sites, with code actions to update the workspace source code).


⏮️ RD-VBAL §2.0 Computational Environment | ⏭️ RD-VBAL §2.2 RDPROJ Structure