# Description of Changes  If these symbols aren't in the stack, it does no processing # Expected complexity level and risk 1 - it's pretty self-contained, and backwards-compatible with the existing logs data format --------- Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
⚠️ Internal Project ⚠️
This project is intended for internal use only. It is not stable and may change without notice.
See the C# module library reference for stable, user-facing documentation.
Internal documentation
This project contains Roslyn incremental source generators that augment tables and reducers with static methods for self-describing and registration.
SpacetimeDB modules are compiled to WebAssembly modules that expose a specific interface; see the module ABI reference. This interface is implemented in the generated FFI class; see ../Codegen.Tests/fixtures/server/snapshots/Module#FFI.verified.cs for an example of what this generated code looks like.
The source generators are implemented via several attributes usable in module code:
-
[SpacetimeDB.Table]- generates code to register this table in theFFIupon startup so that they can be enumerated by the__describe_module__FFI API. It implies[SpacetimeDB.Type], so you must not specify both attributes on the same struct. -
[SpacetimeDB.Reducer]- generates code to register a static function as a SpacetimeDB reducer in theFFIupon startup and creates a wrapper that will parse SATS binary blob into individual arguments and invoke the underlying function for the__call_reducer__FFI API.