The OpenD Programming Language

odc

The OpenD Collection aims to provide a stable entry point to common functionality as part of a standard library of code.

Modules

serialization
module odc.serialization

This is a serialization module for OpenD programming language! It contains an API for making serializers and includes JSON serializator.

Detailed Description

Using it

import the modules you need as you need them. import odc; may bring in some functionality, but it will not be comprehensive.

Developer Notes

odc modules should focus primarily on providing stable interfaces. The implementation can (and likely should) be delegated to other modules. These modules can come from throughout the ecosystem; the OpenD distribution can include them as needed.

odc modules can import one another, but try to be mindful of what is actually necessary. Avoid doing ctfe in commonly imported modules to keep compile time low.

Relationship to core, std and arsd

OpenD comes with three other key packages: core, which is druntime's namespace, std, which is the inherited standard library from upstream D, and arsd, which is the extended utility package contributed by OpenD's main corporate sponsor.

odc can use code from any of these packages, but odc should aim to provide its own stabilized interface to them, ideally (but not necessarily), one that can also be used with other implementation.

core is not necessarily stable. You are free to use it directly and it tends not to change often, but it is nevertheless tied to compiler internals and thus may change across updates. If their is equivalent functionality in core and odc, the odc version should have more compatibility guarantees across updates. Note that core modules are not allowed to import odc modules under current policies.

std tries to maintain compatibility with upstream D, for ease of porting existing codebases. In practice, it has barely changed for years, and I don't expect much will, so it should be safe to use directly and we will likely make incremental improvements on it, but odc versions of std's functionality is likely to have more improved interfaces.

arsdis fully available directly from any OpenD application at any time, and has a generally stable interface while still being actively developed, but its implementations are not necessarily swappable and interfaces not necessarily compatible with other third party packages the way odc is.

All other packages provided with the OpenD distribution are hopefully useful, but have no guarantee of long term support and compatibility with anything else.

Meta