Solidean exposes a language-agnostic abstract API.
This defines what Solidean can do and how bindings for different languages are generated.
Internally, the core is implemented in C++ and exported via a C-style .dll/.so.
Bindings are then auto-generated to provide idiomatic APIs for each target language.
Abstract API vs. Target API
-
Abstract API:
Canonical description of features, data types, and operations.
Documented in this reference (enums, handles, builders, etc.). -
Target bindings:
Generated APIs in each language, designed to feel natural.
Some naming and style conventions differ to match language norms.
Conventions by language
-
C++ (default modern API):
- Classes:
UpperCamelCase - Methods/functions:
lowerCamelCase - POD types:
lower_camel_case - Enums and values:
UpperCamelCase - Uses RAII, smart pointers, lambdas.
- Exceptions are used to signal non-
OkResultandExecuteResult.
- Classes:
-
C (low-level, internal export):
- Pure function calls, flat namespace with
Solidean_prefix. - No exceptions; return codes only.
- Not the primary user-facing API, but the basis for bindings.
- Pure function calls, flat namespace with
-
Python:
- Follows
lower_snake_case. - Exceptions signal errors (mapped from
Result/ExecuteResult). - Mirrors the abstract API but adapted to Python norms.
- Follows
Why this matters
Sometimes you will notice differences between names in this documentation (abstract API) and the symbols in your target language.
This is intentional:
we prefer a "when in Rome, do as the Romans do" approach, so the API feels natural in your daily coding environment.
We continuously improve the docs to minimize friction and help map between the abstract API and language-specific bindings.
Exception-free workflows
If you need an exception-free workflow (e.g. embedded systems, special safety constraints):
- Use the low-level C API (no exceptions, only return codes).
- Or contact us, we may be able to generate bindings or provide an alternative API target.