- 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