chore: import upstream Solana runtime crates - #31
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR imports upstream Solana account, transaction-context, program-runtime, SVM, and transaction-view crates. It adds manifests, runtime structures, VM and transaction-processing logic, zero-copy parsing, tests, fixtures, benchmarks, and SVM documentation. ChangesUpstream Solana execution crates
Estimated code review effort: 5 (Critical) | ~180 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
There was a problem hiding this comment.
Actionable comments posted: 12
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@solana/account/src/state_traits.rs`:
- Line 10: Correct the typo in the documentation comment for the convenience
trait by changing “covert” to “convert”; do not alter the trait or its behavior.
In `@solana/program-runtime/src/cpi.rs`:
- Around line 1226-1229: Correct the duplicated article in the safety
documentation comment near the MemoryMapping usage, changing “The the account
data” to “The account data” without altering the documented safety requirement.
In `@solana/program-runtime/src/loaded_programs.rs`:
- Around line 978-986: Fix the fixture setup used by new_loaded_entry so it can
load noop_aligned.so in a tracked checkout: either add the missing test ELF at
the expected location with the required parent directory, or update the file
path to an existing tracked fixture. Ensure tests invoking
new_test_entry_with_usage no longer panic during fixture initialization.
In `@solana/svm/doc/spec.md`:
- Line 243: Correct the spelling of “interwined” to “intertwined” in the
sentence describing the relationship with the SVMInstruction struct.
- Line 74: Update the context diagram reference in the documentation to use the
repository’s correct relative location, and ensure the referenced rendered
context.svg is added alongside the documentation; otherwise remove the image
reference and retain only valid diagram sources.
In `@solana/svm/src/program_loader.rs`:
- Around line 242-255: Update loader_v4_get_state to avoid the undocumented
slice transmute by using a checked, alignment-safe deserialization approach such
as from_le_bytes or bytemuck. If retaining the transmute, validate pointer
alignment before casting and add a precise // SAFETY: comment documenting the
alignment, size, layout, and lifetime invariants.
In `@solana/svm/src/rent_calculator.rs`:
- Around line 75-79: Update the rustdoc for the free function
get_account_rent_state to describe that it receives a Rent reference directly
and remove the claims about a default implementation and nonexistent get_rent
method. Also revise the corresponding carried-over documentation at the other
noted sections so it accurately reflects the current free-function API.
In `@solana/svm/src/transaction_processor.rs`:
- Around line 377-385: Update the rustdoc for
program_runtime_environment_for_epoch to remove the inaccurate statement that it
returns None on potential deadlock. Keep the description consistent with its
actual ProgramRuntimeEnvironment return value and fallback behavior.
In `@solana/svm/tests/concurrent_tests.rs`:
- Around line 104-107: Update the concurrency test comments near the
probabilistic and exhaustive scheduler descriptions to remove the stale
hardcoded iteration counts and reference MAX_ITERATIONS instead. Keep the
existing preemption and thread-count details accurate, and ensure both comments
match the actual iteration count used by their tests.
In `@solana/svm/tests/integration_test.rs`:
- Around line 1405-1452: Append the constructed batch 3 `test_entry` to
`test_entries` before leaving the surrounding `simd83_intrabatch_account_reuse`
setup, matching the other batches’ `test_entries.push(test_entry)` calls so this
scenario executes.
In `@solana/transaction-context/src/instruction_accounts.rs`:
- Line 90: Correct the spelling in the documentation comment from “Assignes” to
“Assigns,” leaving the surrounding comment and behavior unchanged.
In `@solana/transaction-context/src/instruction.rs`:
- Around line 39-41: Update the comment above instruction_accounts and
instruction_data to describe the actual default pointer value of 0, removing the
incorrect reference to u64::MAX while preserving the existing VmSlice
initialization.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 60b2ebde-c865-4aab-a122-d504aeddfcc9
⛔ Files ignored due to path filters (6)
solana/svm/doc/diagrams/context.svgis excluded by!**/*.svgsolana/svm/tests/example-programs/clock-sysvar/clock_sysvar_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/hello-solana/hello_solana_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/simple-transfer/simple_transfer_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/transfer-from-account/transfer_from_account_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/write-to-account/write_to_account_program.sois excluded by!**/*.so
📒 Files selected for processing (60)
solana/account/Cargo.tomlsolana/account/src/lib.rssolana/account/src/state_traits.rssolana/program-runtime/Cargo.tomlsolana/program-runtime/src/cpi.rssolana/program-runtime/src/deploy.rssolana/program-runtime/src/execution_budget.rssolana/program-runtime/src/invoke_context.rssolana/program-runtime/src/lib.rssolana/program-runtime/src/loaded_programs.rssolana/program-runtime/src/loading_task.rssolana/program-runtime/src/mem_pool.rssolana/program-runtime/src/memory.rssolana/program-runtime/src/memory_context.rssolana/program-runtime/src/program_cache_entry.rssolana/program-runtime/src/program_metrics.rssolana/program-runtime/src/serialization.rssolana/program-runtime/src/stable_log.rssolana/program-runtime/src/sysvar_cache.rssolana/program-runtime/src/vm.rssolana/svm/Cargo.tomlsolana/svm/doc/diagrams/context.texsolana/svm/doc/spec.mdsolana/svm/src/account_loader.rssolana/svm/src/account_overrides.rssolana/svm/src/lib.rssolana/svm/src/message_processor.rssolana/svm/src/nonce_info.rssolana/svm/src/program_loader.rssolana/svm/src/rent_calculator.rssolana/svm/src/rollback_accounts.rssolana/svm/src/transaction_account_state_info.rssolana/svm/src/transaction_balances.rssolana/svm/src/transaction_commit_result.rssolana/svm/src/transaction_error_metrics.rssolana/svm/src/transaction_execution_result.rssolana/svm/src/transaction_processing_callback.rssolana/svm/src/transaction_processing_result.rssolana/svm/src/transaction_processor.rssolana/svm/tests/concurrent_tests.rssolana/svm/tests/example-programs/clock-sysvar/Cargo.tomlsolana/svm/tests/example-programs/clock-sysvar/src/lib.rssolana/svm/tests/example-programs/hello-solana/Cargo.tomlsolana/svm/tests/example-programs/hello-solana/src/lib.rssolana/svm/tests/example-programs/simple-transfer/Cargo.tomlsolana/svm/tests/example-programs/simple-transfer/src/lib.rssolana/svm/tests/example-programs/transfer-from-account/Cargo.tomlsolana/svm/tests/example-programs/transfer-from-account/src/lib.rssolana/svm/tests/example-programs/write-to-account/Cargo.tomlsolana/svm/tests/example-programs/write-to-account/src/lib.rssolana/svm/tests/integration_test.rssolana/svm/tests/mock_bank.rssolana/transaction-context/Cargo.tomlsolana/transaction-context/src/instruction.rssolana/transaction-context/src/instruction_accounts.rssolana/transaction-context/src/lib.rssolana/transaction-context/src/transaction.rssolana/transaction-context/src/transaction_accounts.rssolana/transaction-context/src/vm_addresses.rssolana/transaction-context/src/vm_slice.rs
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
solana/svm/doc/spec.md (1)
249-253: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winInconsistent naming for the
load_transaction_accountsreturn type.Three different names are used for what appears to be the same return value:
LoadedTransaction(line 249), thenTransactionLoadedResultandLoadTransaction(line 253). This is confusing for readers trying to map the spec to actual types. Pick one consistent name (matching the real struct name insolana/svm/src/account_loader.rs) throughout this step. Markdownlint also flags line 253's indentation as inconsistent with its sibling list items — worth aligning while fixing the naming.📝 Proposed fix
- - Returns `TransactionLoadedResult`, containing the `LoadTransaction` we obtained from `loaded_transaction_accounts` + - Returns a `TransactionLoadedResult`, containing the `LoadedTransaction` we obtained from `load_transaction_accounts`🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@solana/svm/doc/spec.md` around lines 249 - 253, Standardize the return-type naming in the load_transaction_accounts specification to the actual struct name defined in account_loader.rs, replacing the inconsistent LoadedTransaction, TransactionLoadedResult, and LoadTransaction references. While updating that step, align the indentation of the Returns list item with its sibling entries.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@solana/program-runtime/src/loaded_programs.rs`:
- Around line 1938-1944: Update the stale effective-slot references in the
loaded-programs test comments for program4 to use slot 18, matching 15 +
DELAY_VISIBILITY_SLOT_OFFSET and the existing slot-18 assertion. Change comments
only; preserve the tombstone assertions and test behavior.
---
Nitpick comments:
In `@solana/svm/doc/spec.md`:
- Around line 249-253: Standardize the return-type naming in the
load_transaction_accounts specification to the actual struct name defined in
account_loader.rs, replacing the inconsistent LoadedTransaction,
TransactionLoadedResult, and LoadTransaction references. While updating that
step, align the indentation of the Returns list item with its sibling entries.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: e28c8379-2749-4b68-8f81-30f52b4fa17b
⛔ Files ignored due to path filters (6)
solana/svm/doc/diagrams/context.svgis excluded by!**/*.svgsolana/svm/tests/example-programs/clock-sysvar/clock_sysvar_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/hello-solana/hello_solana_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/simple-transfer/simple_transfer_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/transfer-from-account/transfer_from_account_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/write-to-account/write_to_account_program.sois excluded by!**/*.so
📒 Files selected for processing (60)
solana/account/Cargo.tomlsolana/account/src/lib.rssolana/account/src/state_traits.rssolana/program-runtime/Cargo.tomlsolana/program-runtime/src/cpi.rssolana/program-runtime/src/deploy.rssolana/program-runtime/src/execution_budget.rssolana/program-runtime/src/invoke_context.rssolana/program-runtime/src/lib.rssolana/program-runtime/src/loaded_programs.rssolana/program-runtime/src/loading_task.rssolana/program-runtime/src/mem_pool.rssolana/program-runtime/src/memory.rssolana/program-runtime/src/memory_context.rssolana/program-runtime/src/program_cache_entry.rssolana/program-runtime/src/program_metrics.rssolana/program-runtime/src/serialization.rssolana/program-runtime/src/stable_log.rssolana/program-runtime/src/sysvar_cache.rssolana/program-runtime/src/vm.rssolana/svm/Cargo.tomlsolana/svm/doc/diagrams/context.texsolana/svm/doc/spec.mdsolana/svm/src/account_loader.rssolana/svm/src/account_overrides.rssolana/svm/src/lib.rssolana/svm/src/message_processor.rssolana/svm/src/nonce_info.rssolana/svm/src/program_loader.rssolana/svm/src/rent_calculator.rssolana/svm/src/rollback_accounts.rssolana/svm/src/transaction_account_state_info.rssolana/svm/src/transaction_balances.rssolana/svm/src/transaction_commit_result.rssolana/svm/src/transaction_error_metrics.rssolana/svm/src/transaction_execution_result.rssolana/svm/src/transaction_processing_callback.rssolana/svm/src/transaction_processing_result.rssolana/svm/src/transaction_processor.rssolana/svm/tests/concurrent_tests.rssolana/svm/tests/example-programs/clock-sysvar/Cargo.tomlsolana/svm/tests/example-programs/clock-sysvar/src/lib.rssolana/svm/tests/example-programs/hello-solana/Cargo.tomlsolana/svm/tests/example-programs/hello-solana/src/lib.rssolana/svm/tests/example-programs/simple-transfer/Cargo.tomlsolana/svm/tests/example-programs/simple-transfer/src/lib.rssolana/svm/tests/example-programs/transfer-from-account/Cargo.tomlsolana/svm/tests/example-programs/transfer-from-account/src/lib.rssolana/svm/tests/example-programs/write-to-account/Cargo.tomlsolana/svm/tests/example-programs/write-to-account/src/lib.rssolana/svm/tests/integration_test.rssolana/svm/tests/mock_bank.rssolana/transaction-context/Cargo.tomlsolana/transaction-context/src/instruction.rssolana/transaction-context/src/instruction_accounts.rssolana/transaction-context/src/lib.rssolana/transaction-context/src/transaction.rssolana/transaction-context/src/transaction_accounts.rssolana/transaction-context/src/vm_addresses.rssolana/transaction-context/src/vm_slice.rs
🚧 Files skipped from review as they are similar to previous changes (57)
- solana/svm/src/transaction_processing_callback.rs
- solana/svm/tests/example-programs/clock-sysvar/Cargo.toml
- solana/svm/tests/example-programs/hello-solana/src/lib.rs
- solana/svm/tests/example-programs/clock-sysvar/src/lib.rs
- solana/svm/tests/example-programs/simple-transfer/Cargo.toml
- solana/svm/tests/example-programs/transfer-from-account/Cargo.toml
- solana/svm/src/lib.rs
- solana/account/Cargo.toml
- solana/svm/tests/example-programs/simple-transfer/src/lib.rs
- solana/svm/tests/example-programs/hello-solana/Cargo.toml
- solana/svm/tests/example-programs/transfer-from-account/src/lib.rs
- solana/transaction-context/src/vm_addresses.rs
- solana/svm/src/transaction_error_metrics.rs
- solana/program-runtime/src/lib.rs
- solana/transaction-context/Cargo.toml
- solana/svm/src/transaction_commit_result.rs
- solana/svm/src/nonce_info.rs
- solana/program-runtime/Cargo.toml
- solana/transaction-context/src/vm_slice.rs
- solana/svm/src/transaction_execution_result.rs
- solana/svm/tests/example-programs/write-to-account/src/lib.rs
- solana/svm/doc/diagrams/context.tex
- solana/svm/src/rent_calculator.rs
- solana/program-runtime/src/loading_task.rs
- solana/svm/tests/example-programs/write-to-account/Cargo.toml
- solana/program-runtime/src/memory_context.rs
- solana/svm/src/account_overrides.rs
- solana/program-runtime/src/program_metrics.rs
- solana/svm/src/rollback_accounts.rs
- solana/transaction-context/src/instruction_accounts.rs
- solana/program-runtime/src/stable_log.rs
- solana/program-runtime/src/deploy.rs
- solana/account/src/state_traits.rs
- solana/svm/src/transaction_account_state_info.rs
- solana/program-runtime/src/memory.rs
- solana/svm/src/message_processor.rs
- solana/program-runtime/src/program_cache_entry.rs
- solana/svm/tests/concurrent_tests.rs
- solana/svm/src/transaction_balances.rs
- solana/program-runtime/src/sysvar_cache.rs
- solana/transaction-context/src/lib.rs
- solana/svm/tests/mock_bank.rs
- solana/program-runtime/src/execution_budget.rs
- solana/svm/src/transaction_processing_result.rs
- solana/program-runtime/src/vm.rs
- solana/svm/src/account_loader.rs
- solana/program-runtime/src/serialization.rs
- solana/svm/src/program_loader.rs
- solana/program-runtime/src/mem_pool.rs
- solana/svm/src/transaction_processor.rs
- solana/transaction-context/src/instruction.rs
- solana/program-runtime/src/cpi.rs
- solana/transaction-context/src/transaction.rs
- solana/program-runtime/src/invoke_context.rs
- solana/svm/tests/integration_test.rs
- solana/transaction-context/src/transaction_accounts.rs
- solana/svm/Cargo.toml
There was a problem hiding this comment.
Actionable comments posted: 11
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@solana/account/src/lib.rs`:
- Around line 639-646: Update the rustdoc for
create_account_shared_data_with_fields to state that it creates an
AccountSharedData from a Sysvar, matching the function’s return type and
preserving the existing implementation.
In `@solana/program-runtime/Cargo.toml`:
- Around line 24-29: Update the frozen-abi feature wiring in the program-runtime
manifest so enabling frozen-abi also activates the optional solana-frozen-abi
dependency required by the cfg-gated AbiExample implementation for SysvarCache.
Preserve the existing feature name and ensure builds with --features frozen-abi
resolve all referenced crates.
In `@solana/program-runtime/src/invoke_context.rs`:
- Around line 350-351: Update the comment above transaction_callee_map to
accurately state that account indices are u16 and describe the capacity using
MAX_ACCOUNTS_PER_TRANSACTION, removing the outdated u8 and 256-account
rationale. Keep the Vec<u16> initialization unchanged.
In `@solana/program-runtime/src/loading_task.rs`:
- Line 17: Correct the spelling of “cooprative” to “cooperative” in the doc
comment describing the loading-task suspension behavior.
In `@solana/program-runtime/src/program_metrics.rs`:
- Line 33: Correct the duplicated “the” in the documentation comment describing
Self::compilation_time_ema, leaving the identifier and surrounding documentation
unchanged.
In `@solana/transaction-context/src/transaction_accounts.rs`:
- Around line 109-110: Remove the explicit pub(crate) visibility from
set_data_from_slice and try_borrow_mut when they are annotated with
cfg_attr(..., qualifiers(pub)), allowing the attribute to provide visibility
without generating duplicate qualifiers.
In `@solana/transaction-context/src/transaction.rs`:
- Around line 259-262: Update the documentation for get_next_instruction_context
to remove the nonexistent prepare_next_instruction and
prepare_next_top_level_instruction references, and instead describe
configuration through configure_instruction_at_index, mentioning the *_for_tests
helpers only if needed.
In `@solana/transaction-view/Cargo.toml`:
- Line 3: Update the package description in Cargo.toml from “Agave
TranactionView” to “Agave TransactionView”, correcting the misspelled
user-facing crate name.
In `@solana/transaction-view/src/bytes.rs`:
- Line 150: Correct the typo in the public rustdoc comment by changing “point t
the byte” to “point to the byte” while leaving the surrounding documentation and
implementation unchanged.
In `@solana/transaction-view/src/sanitize.rs`:
- Around line 25-33: Update the rustdoc above sanitize_transaction_size to
remove the inaccurate “size <= 4096 bytes” constraint and describe the
version-specific limits represented by PACKET_DATA_SIZE for Legacy/V0 and
v1::MAX_TRANSACTION_SIZE for V1.
In `@solana/transaction-view/src/transaction_frame.rs`:
- Around line 44-50: Update TransactionFrame::try_new to reject any input whose
length is not strictly below u16::MAX before calling is_legacy_or_v0 or either
frame parser, returning the existing appropriate error type. Ensure all parsing
and offset casts occur only after this validation; keep the existing legacy/v0
and v1 dispatch unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: e8392034-3a93-4373-a1dc-579eaf9f03c3
⛔ Files ignored due to path filters (6)
solana/svm/doc/diagrams/context.svgis excluded by!**/*.svgsolana/svm/tests/example-programs/clock-sysvar/clock_sysvar_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/hello-solana/hello_solana_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/simple-transfer/simple_transfer_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/transfer-from-account/transfer_from_account_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/write-to-account/write_to_account_program.sois excluded by!**/*.so
📒 Files selected for processing (78)
solana/account/Cargo.tomlsolana/account/src/lib.rssolana/account/src/state_traits.rssolana/program-runtime/Cargo.tomlsolana/program-runtime/src/cpi.rssolana/program-runtime/src/deploy.rssolana/program-runtime/src/execution_budget.rssolana/program-runtime/src/invoke_context.rssolana/program-runtime/src/lib.rssolana/program-runtime/src/loaded_programs.rssolana/program-runtime/src/loading_task.rssolana/program-runtime/src/mem_pool.rssolana/program-runtime/src/memory.rssolana/program-runtime/src/memory_context.rssolana/program-runtime/src/program_cache_entry.rssolana/program-runtime/src/program_metrics.rssolana/program-runtime/src/serialization.rssolana/program-runtime/src/stable_log.rssolana/program-runtime/src/sysvar_cache.rssolana/program-runtime/src/vm.rssolana/svm/Cargo.tomlsolana/svm/doc/diagrams/context.texsolana/svm/doc/spec.mdsolana/svm/src/account_loader.rssolana/svm/src/account_overrides.rssolana/svm/src/lib.rssolana/svm/src/message_processor.rssolana/svm/src/nonce_info.rssolana/svm/src/program_loader.rssolana/svm/src/rent_calculator.rssolana/svm/src/rollback_accounts.rssolana/svm/src/transaction_account_state_info.rssolana/svm/src/transaction_balances.rssolana/svm/src/transaction_commit_result.rssolana/svm/src/transaction_error_metrics.rssolana/svm/src/transaction_execution_result.rssolana/svm/src/transaction_processing_callback.rssolana/svm/src/transaction_processing_result.rssolana/svm/src/transaction_processor.rssolana/svm/tests/concurrent_tests.rssolana/svm/tests/example-programs/clock-sysvar/Cargo.tomlsolana/svm/tests/example-programs/clock-sysvar/src/lib.rssolana/svm/tests/example-programs/hello-solana/Cargo.tomlsolana/svm/tests/example-programs/hello-solana/src/lib.rssolana/svm/tests/example-programs/simple-transfer/Cargo.tomlsolana/svm/tests/example-programs/simple-transfer/src/lib.rssolana/svm/tests/example-programs/transfer-from-account/Cargo.tomlsolana/svm/tests/example-programs/transfer-from-account/src/lib.rssolana/svm/tests/example-programs/write-to-account/Cargo.tomlsolana/svm/tests/example-programs/write-to-account/src/lib.rssolana/svm/tests/integration_test.rssolana/svm/tests/mock_bank.rssolana/transaction-context/Cargo.tomlsolana/transaction-context/src/instruction.rssolana/transaction-context/src/instruction_accounts.rssolana/transaction-context/src/lib.rssolana/transaction-context/src/transaction.rssolana/transaction-context/src/transaction_accounts.rssolana/transaction-context/src/vm_addresses.rssolana/transaction-context/src/vm_slice.rssolana/transaction-view/Cargo.tomlsolana/transaction-view/benches/bytes.rssolana/transaction-view/benches/transaction_view.rssolana/transaction-view/src/address_table_lookup_frame.rssolana/transaction-view/src/bytes.rssolana/transaction-view/src/instructions_frame.rssolana/transaction-view/src/lib.rssolana/transaction-view/src/message_header_frame.rssolana/transaction-view/src/resolved_transaction_view.rssolana/transaction-view/src/result.rssolana/transaction-view/src/sanitize.rssolana/transaction-view/src/signature_frame.rssolana/transaction-view/src/static_account_keys_frame.rssolana/transaction-view/src/transaction_config_frame.rssolana/transaction-view/src/transaction_data.rssolana/transaction-view/src/transaction_frame.rssolana/transaction-view/src/transaction_version.rssolana/transaction-view/src/transaction_view.rs
🚧 Files skipped from review as they are similar to previous changes (4)
- solana/svm/tests/example-programs/simple-transfer/Cargo.toml
- solana/svm/tests/example-programs/clock-sysvar/Cargo.toml
- solana/svm/src/transaction_processing_callback.rs
- solana/svm/tests/example-programs/transfer-from-account/Cargo.toml
There was a problem hiding this comment.
Actionable comments posted: 9
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@solana/svm/doc/spec.md`:
- Around line 160-164: Update the TransactionCheckResult section to describe the
actual CheckedTransactionDetails contents: the optional nonce address and the
compute budget and fee limits. Remove the outdated reference to a nonce value
and lamports per signature.
- Around line 129-135: Update the documented TransactionProcessingCallback trait
to extend InvokeContextCallback and add the required inspect_account method with
the address, AccountState, and writable-status parameters, while preserving the
existing methods.
In `@solana/transaction-view/benches/bytes.rs`:
- Around line 13-15: Update the comment above the values initialization in the
benchmark to describe the packet-sized range produced by the loop, rather than
claiming it contains all valid u16 values; leave the loop and serialization
behavior unchanged.
In `@solana/transaction-view/src/bytes.rs`:
- Around line 264-268: Add solana_packet::PACKET_DATA_SIZE to the use block of
the bytes test module so its existing test references resolve without changing
other imports or behavior.
- Around line 69-85: In read_compressed_u16, replace the undefined index
reference when advancing the offset with the consumed byte position derived from
offset.wrapping_add(i).checked_add(1), preserving the existing parse-error
handling on overflow.
In `@solana/transaction-view/src/sanitize.rs`:
- Around line 94-96: Correct the typo in the documentation comment’s “Sigantures
Constraint” heading to “Signatures Constraint,” without changing the surrounding
signature constraints.
- Around line 138-152: Update the rustdoc for sanitize_instructions to replace
the hard-coded NumInstructions <= 64 statement with the actual version-specific
constants: MAGICBLOCK_INSTRUCTION_TRACE_LENGTH for Magicblock and
solana_transaction_context::MAX_INSTRUCTION_TRACE_LENGTH for Legacy, V0, and V1.
Also update the account-limit documentation to include Magicblock’s 256 limit
while preserving the existing limits for other transaction versions.
In `@solana/transaction-view/src/transaction_config_frame.rs`:
- Around line 64-86: Update TransactionConfigFrame::try_new to replace the
mask_offset > 0 assert with a checked TransactionViewError return when
mask_offset is zero. Preserve normal tx-v1 parsing for positive offsets and keep
the existing mask validation, offset conversion, and array advancement flow
unchanged.
In `@solana/transaction-view/src/transaction_frame.rs`:
- Around line 348-362: Replace the invalid usize::from conversions for the u32
offsets in the static_account_keys path with explicit as usize casts. Update
static_account_keys to construct the Pubkey slice from the existing
start/account_bytes values instead of recomputing a raw pointer from
static_account_keys.offset, and apply the same conversion fix at the other
affected offset usage.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 91d53ae7-b860-4caa-82c5-78aa9ab97f6e
⛔ Files ignored due to path filters (6)
solana/svm/doc/diagrams/context.svgis excluded by!**/*.svgsolana/svm/tests/example-programs/clock-sysvar/clock_sysvar_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/hello-solana/hello_solana_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/simple-transfer/simple_transfer_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/transfer-from-account/transfer_from_account_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/write-to-account/write_to_account_program.sois excluded by!**/*.so
📒 Files selected for processing (78)
solana/account/Cargo.tomlsolana/account/src/lib.rssolana/account/src/state_traits.rssolana/program-runtime/Cargo.tomlsolana/program-runtime/src/cpi.rssolana/program-runtime/src/deploy.rssolana/program-runtime/src/execution_budget.rssolana/program-runtime/src/invoke_context.rssolana/program-runtime/src/lib.rssolana/program-runtime/src/loaded_programs.rssolana/program-runtime/src/loading_task.rssolana/program-runtime/src/mem_pool.rssolana/program-runtime/src/memory.rssolana/program-runtime/src/memory_context.rssolana/program-runtime/src/program_cache_entry.rssolana/program-runtime/src/program_metrics.rssolana/program-runtime/src/serialization.rssolana/program-runtime/src/stable_log.rssolana/program-runtime/src/sysvar_cache.rssolana/program-runtime/src/vm.rssolana/svm/Cargo.tomlsolana/svm/doc/diagrams/context.texsolana/svm/doc/spec.mdsolana/svm/src/account_loader.rssolana/svm/src/account_overrides.rssolana/svm/src/lib.rssolana/svm/src/message_processor.rssolana/svm/src/nonce_info.rssolana/svm/src/program_loader.rssolana/svm/src/rent_calculator.rssolana/svm/src/rollback_accounts.rssolana/svm/src/transaction_account_state_info.rssolana/svm/src/transaction_balances.rssolana/svm/src/transaction_commit_result.rssolana/svm/src/transaction_error_metrics.rssolana/svm/src/transaction_execution_result.rssolana/svm/src/transaction_processing_callback.rssolana/svm/src/transaction_processing_result.rssolana/svm/src/transaction_processor.rssolana/svm/tests/concurrent_tests.rssolana/svm/tests/example-programs/clock-sysvar/Cargo.tomlsolana/svm/tests/example-programs/clock-sysvar/src/lib.rssolana/svm/tests/example-programs/hello-solana/Cargo.tomlsolana/svm/tests/example-programs/hello-solana/src/lib.rssolana/svm/tests/example-programs/simple-transfer/Cargo.tomlsolana/svm/tests/example-programs/simple-transfer/src/lib.rssolana/svm/tests/example-programs/transfer-from-account/Cargo.tomlsolana/svm/tests/example-programs/transfer-from-account/src/lib.rssolana/svm/tests/example-programs/write-to-account/Cargo.tomlsolana/svm/tests/example-programs/write-to-account/src/lib.rssolana/svm/tests/integration_test.rssolana/svm/tests/mock_bank.rssolana/transaction-context/Cargo.tomlsolana/transaction-context/src/instruction.rssolana/transaction-context/src/instruction_accounts.rssolana/transaction-context/src/lib.rssolana/transaction-context/src/transaction.rssolana/transaction-context/src/transaction_accounts.rssolana/transaction-context/src/vm_addresses.rssolana/transaction-context/src/vm_slice.rssolana/transaction-view/Cargo.tomlsolana/transaction-view/benches/bytes.rssolana/transaction-view/benches/transaction_view.rssolana/transaction-view/src/address_table_lookup_frame.rssolana/transaction-view/src/bytes.rssolana/transaction-view/src/instructions_frame.rssolana/transaction-view/src/lib.rssolana/transaction-view/src/message_header_frame.rssolana/transaction-view/src/resolved_transaction_view.rssolana/transaction-view/src/result.rssolana/transaction-view/src/sanitize.rssolana/transaction-view/src/signature_frame.rssolana/transaction-view/src/static_account_keys_frame.rssolana/transaction-view/src/transaction_config_frame.rssolana/transaction-view/src/transaction_data.rssolana/transaction-view/src/transaction_frame.rssolana/transaction-view/src/transaction_version.rssolana/transaction-view/src/transaction_view.rs
🚧 Files skipped from review as they are similar to previous changes (59)
- solana/svm/tests/example-programs/clock-sysvar/Cargo.toml
- solana/svm/tests/example-programs/clock-sysvar/src/lib.rs
- solana/svm/tests/example-programs/transfer-from-account/Cargo.toml
- solana/svm/tests/example-programs/simple-transfer/Cargo.toml
- solana/transaction-view/src/lib.rs
- solana/svm/tests/example-programs/hello-solana/Cargo.toml
- solana/svm/tests/example-programs/hello-solana/src/lib.rs
- solana/transaction-context/Cargo.toml
- solana/svm/src/transaction_error_metrics.rs
- solana/svm/src/lib.rs
- solana/svm/tests/example-programs/write-to-account/Cargo.toml
- solana/svm/tests/example-programs/write-to-account/src/lib.rs
- solana/program-runtime/src/lib.rs
- solana/svm/Cargo.toml
- solana/svm/src/account_overrides.rs
- solana/transaction-view/Cargo.toml
- solana/program-runtime/src/loading_task.rs
- solana/svm/src/transaction_processing_callback.rs
- solana/account/Cargo.toml
- solana/svm/src/transaction_commit_result.rs
- solana/svm/src/transaction_execution_result.rs
- solana/transaction-view/src/transaction_view.rs
- solana/transaction-view/benches/transaction_view.rs
- solana/program-runtime/src/execution_budget.rs
- solana/transaction-context/src/vm_addresses.rs
- solana/svm/src/transaction_account_state_info.rs
- solana/svm/tests/example-programs/simple-transfer/src/lib.rs
- solana/transaction-view/src/transaction_data.rs
- solana/program-runtime/Cargo.toml
- solana/svm/tests/example-programs/transfer-from-account/src/lib.rs
- solana/program-runtime/src/vm.rs
- solana/transaction-view/src/instructions_frame.rs
- solana/svm/tests/concurrent_tests.rs
- solana/program-runtime/src/loaded_programs.rs
- solana/transaction-context/src/instruction.rs
- solana/transaction-context/src/instruction_accounts.rs
- solana/svm/src/program_loader.rs
- solana/program-runtime/src/program_cache_entry.rs
- solana/svm/doc/diagrams/context.tex
- solana/program-runtime/src/cpi.rs
- solana/svm/tests/integration_test.rs
- solana/svm/src/transaction_processing_result.rs
- solana/svm/src/rent_calculator.rs
- solana/svm/src/rollback_accounts.rs
- solana/transaction-context/src/transaction.rs
- solana/transaction-context/src/transaction_accounts.rs
- solana/svm/src/message_processor.rs
- solana/program-runtime/src/invoke_context.rs
- solana/transaction-context/src/vm_slice.rs
- solana/program-runtime/src/serialization.rs
- solana/svm/src/transaction_processor.rs
- solana/program-runtime/src/deploy.rs
- solana/svm/src/transaction_balances.rs
- solana/program-runtime/src/mem_pool.rs
- solana/program-runtime/src/memory.rs
- solana/program-runtime/src/memory_context.rs
- solana/svm/tests/mock_bank.rs
- solana/program-runtime/src/sysvar_cache.rs
- solana/program-runtime/src/program_metrics.rs
0ef28ec to
499658d
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
solana/program-runtime/src/program_metrics.rs (1)
33-33: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winTypo: duplicated "the" is still present.
Line 33 still contains "to the the". Also,
Self::compilation_time_emadoes not resolve in a module-level constant doc, because noSelftype exists there. Use the full pathProgramStatistics::compilation_time_ema.📝 Proposed fix
-/// Number of compilation observations contributing to the the [`Self::compilation_time_ema`]. +/// Number of compilation observations contributing to the +/// [`ProgramStatistics::compilation_time_ema`].As per path instructions, "Typos in identifiers, comments, or user-facing strings."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@solana/program-runtime/src/program_metrics.rs` at line 33, Correct the module-level documentation comment for compilation observations by removing the duplicated “the” and replacing the unresolved `Self::compilation_time_ema` reference with `ProgramStatistics::compilation_time_ema`.Source: Path instructions
🧹 Nitpick comments (2)
solana/transaction-view/src/transaction_frame.rs (1)
110-111: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueTypo in safety comment: "preifx".
Correct the word to "prefix".
✏️ Proposed fix
- // SAFETY: have checked bytes have enough space for preifx all the way up to + // SAFETY: have checked bytes have enough space for prefix all the way up to // NumAddresses.As per path instructions, "Typos in identifiers, comments, or user-facing strings".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@solana/transaction-view/src/transaction_frame.rs` around lines 110 - 111, Correct the spelling of “preifx” to “prefix” in the SAFETY comment near the address-space validation, without changing the surrounding logic or wording.Source: Path instructions
solana/transaction-view/src/instructions_frame.rs (1)
300-300: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueMisspelled
SVMInstructionin two rustdoc headings. Both helper docs transpose the letters of the type name.
solana/transaction-view/src/instructions_frame.rs#L300-L300: change "SNVInstruction" toSVMInstruction.solana/transaction-view/src/instructions_frame.rs#L362-L362: change "SMVInstruction" toSVMInstruction.As per path instructions, "Typos in identifiers, comments, or user-facing strings".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@solana/transaction-view/src/instructions_frame.rs` at line 300, Correct the rustdoc headings in solana/transaction-view/src/instructions_frame.rs at lines 300-300 and 362-362, replacing “SNVInstruction” and “SMVInstruction” with “SVMInstruction”; no other changes are needed.Source: Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@solana/svm/tests/example-programs/transfer-from-account/src/lib.rs`:
- Line 23: Update the amount deserialization in the transfer instruction to
handle data_account values shorter than eight bytes without panicking. Validate
the account data length before slicing and return
ProgramError::InvalidAccountData through ProgramResult when insufficient;
preserve the existing u64 conversion for valid data.
---
Duplicate comments:
In `@solana/program-runtime/src/program_metrics.rs`:
- Line 33: Correct the module-level documentation comment for compilation
observations by removing the duplicated “the” and replacing the unresolved
`Self::compilation_time_ema` reference with
`ProgramStatistics::compilation_time_ema`.
---
Nitpick comments:
In `@solana/transaction-view/src/instructions_frame.rs`:
- Line 300: Correct the rustdoc headings in
solana/transaction-view/src/instructions_frame.rs at lines 300-300 and 362-362,
replacing “SNVInstruction” and “SMVInstruction” with “SVMInstruction”; no other
changes are needed.
In `@solana/transaction-view/src/transaction_frame.rs`:
- Around line 110-111: Correct the spelling of “preifx” to “prefix” in the
SAFETY comment near the address-space validation, without changing the
surrounding logic or wording.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 4d2c6de1-5a52-42ff-b0b5-accac843e008
⛔ Files ignored due to path filters (6)
solana/svm/doc/diagrams/context.svgis excluded by!**/*.svgsolana/svm/tests/example-programs/clock-sysvar/clock_sysvar_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/hello-solana/hello_solana_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/simple-transfer/simple_transfer_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/transfer-from-account/transfer_from_account_program.sois excluded by!**/*.sosolana/svm/tests/example-programs/write-to-account/write_to_account_program.sois excluded by!**/*.so
📒 Files selected for processing (78)
solana/account/Cargo.tomlsolana/account/src/lib.rssolana/account/src/state_traits.rssolana/program-runtime/Cargo.tomlsolana/program-runtime/src/cpi.rssolana/program-runtime/src/deploy.rssolana/program-runtime/src/execution_budget.rssolana/program-runtime/src/invoke_context.rssolana/program-runtime/src/lib.rssolana/program-runtime/src/loaded_programs.rssolana/program-runtime/src/loading_task.rssolana/program-runtime/src/mem_pool.rssolana/program-runtime/src/memory.rssolana/program-runtime/src/memory_context.rssolana/program-runtime/src/program_cache_entry.rssolana/program-runtime/src/program_metrics.rssolana/program-runtime/src/serialization.rssolana/program-runtime/src/stable_log.rssolana/program-runtime/src/sysvar_cache.rssolana/program-runtime/src/vm.rssolana/svm/Cargo.tomlsolana/svm/doc/diagrams/context.texsolana/svm/doc/spec.mdsolana/svm/src/account_loader.rssolana/svm/src/account_overrides.rssolana/svm/src/lib.rssolana/svm/src/message_processor.rssolana/svm/src/nonce_info.rssolana/svm/src/program_loader.rssolana/svm/src/rent_calculator.rssolana/svm/src/rollback_accounts.rssolana/svm/src/transaction_account_state_info.rssolana/svm/src/transaction_balances.rssolana/svm/src/transaction_commit_result.rssolana/svm/src/transaction_error_metrics.rssolana/svm/src/transaction_execution_result.rssolana/svm/src/transaction_processing_callback.rssolana/svm/src/transaction_processing_result.rssolana/svm/src/transaction_processor.rssolana/svm/tests/concurrent_tests.rssolana/svm/tests/example-programs/clock-sysvar/Cargo.tomlsolana/svm/tests/example-programs/clock-sysvar/src/lib.rssolana/svm/tests/example-programs/hello-solana/Cargo.tomlsolana/svm/tests/example-programs/hello-solana/src/lib.rssolana/svm/tests/example-programs/simple-transfer/Cargo.tomlsolana/svm/tests/example-programs/simple-transfer/src/lib.rssolana/svm/tests/example-programs/transfer-from-account/Cargo.tomlsolana/svm/tests/example-programs/transfer-from-account/src/lib.rssolana/svm/tests/example-programs/write-to-account/Cargo.tomlsolana/svm/tests/example-programs/write-to-account/src/lib.rssolana/svm/tests/integration_test.rssolana/svm/tests/mock_bank.rssolana/transaction-context/Cargo.tomlsolana/transaction-context/src/instruction.rssolana/transaction-context/src/instruction_accounts.rssolana/transaction-context/src/lib.rssolana/transaction-context/src/transaction.rssolana/transaction-context/src/transaction_accounts.rssolana/transaction-context/src/vm_addresses.rssolana/transaction-context/src/vm_slice.rssolana/transaction-view/Cargo.tomlsolana/transaction-view/benches/bytes.rssolana/transaction-view/benches/transaction_view.rssolana/transaction-view/src/address_table_lookup_frame.rssolana/transaction-view/src/bytes.rssolana/transaction-view/src/instructions_frame.rssolana/transaction-view/src/lib.rssolana/transaction-view/src/message_header_frame.rssolana/transaction-view/src/resolved_transaction_view.rssolana/transaction-view/src/result.rssolana/transaction-view/src/sanitize.rssolana/transaction-view/src/signature_frame.rssolana/transaction-view/src/static_account_keys_frame.rssolana/transaction-view/src/transaction_config_frame.rssolana/transaction-view/src/transaction_data.rssolana/transaction-view/src/transaction_frame.rssolana/transaction-view/src/transaction_version.rssolana/transaction-view/src/transaction_view.rs
🚧 Files skipped from review as they are similar to previous changes (67)
- solana/svm/tests/example-programs/clock-sysvar/src/lib.rs
- solana/svm/tests/example-programs/simple-transfer/Cargo.toml
- solana/svm/tests/example-programs/clock-sysvar/Cargo.toml
- solana/svm/tests/example-programs/hello-solana/Cargo.toml
- solana/svm/src/transaction_processing_callback.rs
- solana/svm/tests/example-programs/write-to-account/Cargo.toml
- solana/transaction-view/src/lib.rs
- solana/svm/tests/example-programs/transfer-from-account/Cargo.toml
- solana/transaction-view/src/transaction_data.rs
- solana/svm/src/lib.rs
- solana/svm/src/transaction_error_metrics.rs
- solana/svm/tests/example-programs/hello-solana/src/lib.rs
- solana/transaction-context/src/vm_addresses.rs
- solana/svm/tests/example-programs/write-to-account/src/lib.rs
- solana/transaction-view/benches/bytes.rs
- solana/transaction-view/src/result.rs
- solana/transaction-context/Cargo.toml
- solana/account/src/state_traits.rs
- solana/svm/tests/concurrent_tests.rs
- solana/transaction-view/src/message_header_frame.rs
- solana/svm/src/transaction_commit_result.rs
- solana/program-runtime/Cargo.toml
- solana/program-runtime/src/lib.rs
- solana/svm/doc/diagrams/context.tex
- solana/transaction-view/src/address_table_lookup_frame.rs
- solana/transaction-view/src/static_account_keys_frame.rs
- solana/transaction-context/src/lib.rs
- solana/transaction-view/src/signature_frame.rs
- solana/svm/Cargo.toml
- solana/svm/tests/example-programs/simple-transfer/src/lib.rs
- solana/transaction-view/src/transaction_version.rs
- solana/svm/src/transaction_account_state_info.rs
- solana/program-runtime/src/loading_task.rs
- solana/program-runtime/src/stable_log.rs
- solana/svm/src/message_processor.rs
- solana/transaction-view/src/transaction_view.rs
- solana/svm/src/transaction_execution_result.rs
- solana/transaction-context/src/vm_slice.rs
- solana/svm/src/transaction_processing_result.rs
- solana/program-runtime/src/memory.rs
- solana/program-runtime/src/execution_budget.rs
- solana/transaction-context/src/transaction_accounts.rs
- solana/program-runtime/src/loaded_programs.rs
- solana/svm/src/transaction_balances.rs
- solana/transaction-context/src/instruction_accounts.rs
- solana/svm/tests/mock_bank.rs
- solana/program-runtime/src/cpi.rs
- solana/transaction-view/src/transaction_config_frame.rs
- solana/svm/src/nonce_info.rs
- solana/svm/tests/integration_test.rs
- solana/transaction-view/benches/transaction_view.rs
- solana/program-runtime/src/deploy.rs
- solana/transaction-context/src/transaction.rs
- solana/svm/src/rent_calculator.rs
- solana/program-runtime/src/serialization.rs
- solana/svm/src/program_loader.rs
- solana/transaction-context/src/instruction.rs
- solana/transaction-view/src/bytes.rs
- solana/program-runtime/src/memory_context.rs
- solana/svm/src/rollback_accounts.rs
- solana/svm/src/account_loader.rs
- solana/program-runtime/src/program_cache_entry.rs
- solana/svm/src/transaction_processor.rs
- solana/program-runtime/src/invoke_context.rs
- solana/program-runtime/src/mem_pool.rs
- solana/program-runtime/src/sysvar_cache.rs
- solana/svm/src/account_overrides.rs
499658d to
afe3f1c
Compare
afe3f1c to
077348e
Compare

What changed
Imported the upstream Solana account, transaction-context, program-runtime, and
SVM crates, including their tests and SBF fixtures.
Why
The engine-specific runtime fork needs a distinct upstream baseline so each
customization can be reviewed as an immediate-parent diff instead of as part of
one large import.
Closes #32.
Impact
behavior at this stack boundary.
engine-specific storage and execution policy.
Reviewer notes
Treat this as a mechanical baseline import. Engine-specific divergences belong
in the dedicated descendant PRs.
Follow-up
The next four PRs customize account storage, transaction context, program
runtime, and SVM behavior independently.