-
Notifications
You must be signed in to change notification settings - Fork 18
✨ Increased max return size #216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feature/bundle
Are you sure you want to change the base?
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughThis PR introduces a major architectural refactor consolidating Bolt's macro infrastructure into a unified attribute crate, restructures component and system handling around bundles and discriminators, removes standalone bolt-component and bolt-system programs, and updates both Rust and client libraries (C#/TypeScript) to support the new ECS abstractions with component/system wrapper types. Changes
Sequence Diagram(s)sequenceDiagram
participant Client as Client<br/>(C#/TS)
participant TxBuilder as Transaction<br/>Builder
participant Discriminator as Discriminator<br/>Compute
participant World as World<br/>Program
participant System as System<br/>Program
Note over Client,System: Bundled Component Lifecycle
Client->>TxBuilder: InitializeComponent(Component)
TxBuilder->>Discriminator: component.getMethodDiscriminator("initialize")
Discriminator-->>TxBuilder: discriminator [8 bytes]
TxBuilder->>World: InitializeComponentWithDiscriminator(discriminator)
World-->>Client: Transaction
Client->>TxBuilder: ApplySystem(systemId, [Component], args)
TxBuilder->>Discriminator: system.getMethodDiscriminator(method)
Discriminator-->>TxBuilder: system_discriminator [8 bytes]
TxBuilder->>World: ApplyWithDiscriminator(system_discriminator)
World->>System: CPI with discriminator-tagged instruction
System->>World: (returns updated component data)
World-->>Client: Updated components
sequenceDiagram
participant MacroUser as Macro<br/>User
participant BundleAttr as bolt-attribute<br/>bundle
participant ComponentProc as component<br/>processor
participant SystemProc as system<br/>processor
Note over MacroUser,SystemProc: Bundle Macro Expansion
MacroUser->>BundleAttr: #[bundle] mod my_bundle { #[component] Position, #[system] Movement }
BundleAttr->>ComponentProc: Process Position component
ComponentProc-->>BundleAttr: Generated: Initialize, Destroy, Update functions
BundleAttr->>SystemProc: Process Movement system via transform_module_for_bundle
SystemProc-->>BundleAttr: Generated: bolt_execute wrapper, VariadicBoltComponents scaffold
BundleAttr->>BundleAttr: Inject program scaffold with owner, delegate items
BundleAttr-->>MacroUser: Expanded bundle program module
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Specific areas requiring careful review:
Possibly related PRs
Pre-merge checks and finishing touches❌ Failed checks (2 warnings, 1 inconclusive)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Problem
We return the components data serialized so we can send it to the component program to update the PDAs data. It's currently limited to 1024 bytes. We want to improve that.
Solution
Summary by CodeRabbit
Release Notes
New Features
Examples
Removed