Getting started
Bindings pipelines that scale
Codegen pipeline, reflection, and binding generators used across the platform.
Published guide: https://novolis-platform.github.io/.github/novolis-codegen/
Prerequisites
- .NET 10 SDK
- GitHub Packages auth for
Novolis.*(see nuget-only-policy)
Configure GPR once from a sibling novolis-governance checkout:
pwsh -File d:\novolis\novolis-governance\scripts\configure-gpr-user-nuget.ps1Install
dotnet add package Novolis.CodeGen.BindingsLocal multi-repo iteration uses ProjectReference mode via d:\novolis\Novolis.Platform.slnx — never a local NuGet folder feed.
C-ABI binding emitters
Novolis.CodeGen.Bindings emits C ABI interop and thin C# façades. It supports native C libraries and C++ libraries behind an extern "C" shim; it does not bind C++ classes directly.
Describe exported functions with typed signatures, including the generated parameter names:
var imports = new InteropExportsFragment(
Id: "example",
SchemaVersion: 1,
Header: null,
Description: "Example C ABI.",
DllName: "example",
Policy: new InteropPolicySpec([], [], "AggressiveInlining", UseDisableRuntimeMarshalling: true),
Structs: [],
Imports:
[
new InteropImportSpec(
"example_open",
NativeSignature.Create(
NativeType.NativeInt,
new NativeParameter("path", NativeType.Utf8String))),
]);Register jobs with the factories (BindingEmitJob.LibraryImport, DynamicExports, FacadeForward), then call BindingCodegen.Generate from Novolis.CodeGen.Bindings.Roslyn. Use the generic BindingCodegenHost<TPhase, TContext> only when you need Roslyn hooks.
Complete tiny consumer: d:\novolis\novolis-lab\labs\codegen\TinyExprBindings\. Keep generated source in a T1 structural-equivalence test when replacing an existing emitter.
Next
- design.md — layer placement and non-goals
- release.md — publish cadence
- Org docs catalog