RFC: Loader V3: Fix or Replace #423
Replies: 11 comments 8 replies
-
Breakpoint DiscussionsDecember 12, 2025 The RFC has been updated after discussions at Breakpoint. A potential roadmap that can be further discussed here was also laid out. Additions to the RFC
Proposed RoadmapThe roadmap proposed at Breakpoint consists of three phases: Phase 1: Loader V3 Repairs and Runtime Feature GatesDesign and implement runtime feature gates to address the two runtime constraints In parallel, ship sequential feature gates to Loader V3 to address the All changes in this phase will go through R&D and the SIMD process. Phase 2: Loader V3 Account Layout MigrationIntroduce a new account layout for Loader V3 to address the issues described in All details regarding the new layout, migration mechanics, permissioned vs Phase 3: On-Chain LoadersOnce the runtime changes from Phase 1 are complete and activated, remove the AttendeesContributors in attendance at the Breakpoint meeting: |
Beta Was this translation helpful? Give feedback.
-
|
Thank you to @buffalojoec for collating all of our concerns and feedback. With the timeline of direct mapping currently uncertain and pre-DM account layout changes resulting in a sizable CU penalty in CPI, I agree that we should first focus on shipping features/bugfixes that are immediately and urgently addressable without adding additional instructions or modifying account layouts. I vote that we should initially prioritize:
After delivering on these 4 features, I think we can give more consideration to some of the more invasive ideas, such as migrating the ELF from the program data account to the program account, or considering what, if anything, to do about existing tombstoned programs. |
Beta Was this translation helpful? Give feedback.
-
|
All sounds great! I agree with @deanmlittle's ordering of the changes. |
Beta Was this translation helpful? Give feedback.
-
|
Awesome. This lines up with what we all chatted about at breakpoint. Let's get these into SIMDs and start the discussions there. |
Beta Was this translation helpful? Give feedback.
-
|
I'm in agreement with most of what was proposed. However, I am against the account layout changes being a part of loader v3 - you end up with an extensive mess of edge cases and complexity, where some accounts have the v3 v1 format and others using v3 v2. It just doesn't seem right to me. |
Beta Was this translation helpful? Give feedback.
-
One side note, I agree with the direction suggested here, however we end up getting there. The program cache should not be part of consensus - the loader programs, which need to execute exactly the same across all clients, should not reference it at all. It should be a validator client implementation detail. If we need to store metadata about the state of programs, that should be stored on-chain, not in the cache. |
Beta Was this translation helpful? Give feedback.
-
Big fan of this, as per my earlier comment. The program cache should not be part of consensus. 💪
|
Beta Was this translation helpful? Give feedback.
-
What is the urgency of migrating these accounts/solving problems 1)2)3)? Could we just do this as part of loader v4? Bundling more features into the roadmap means it's less likely to make progress... |
Beta Was this translation helpful? Give feedback.
-
|
With #178 removing relocations coming in SBPFv3, do we need the program cache at all for new SBPFv3 programs? So loader v4 could only support SBPFv3 programs, and not need to use the cache at all... is there a good reason why we can't remove the program cache for loader v4 altogether? (I'm asking, there might be) We would enforce that loader v4 can only deploy/execute SBPFv3+ programs. |
Beta Was this translation helpful? Give feedback.
-
|
To answer the original question of the RFC, I would vote for putting our energy behind making loader v4 what we want it to be, rather than spending time trying to fix loader v3. Migrations are always messy and time consuming and prone to bugs. I think it will be much faster and simpler to make minimal changes to loader v3 (such as those suggested by @deanmlittle) and focus on shipping loader v4. |
Beta Was this translation helpful? Give feedback.
-
|
Thank you to everyone who weighed in on the discussion - both IRL at Breakpoint To make things easier to follow and be as conclusive as possible, I'll rewrite Note the last two phases are entirely different. Phase 1: Loader V3 Repairs and Runtime Feature GatesThis phase maintains its original form. SummaryDesign and implement runtime feature gates to address the two runtime constraints In parallel, ship sequential feature gates to Loader V3 to address the DevelopmentWe've kicked off development on four Loader V3 feature gates:
@Lichtso has begun work on a new program cache index structure, which will All of the above work will ship and will conclude Phase 1. Phase 2: Loader V4This phase has changed from migrating the account layout under Loader V3 to SummaryIntroduce a new loader - Loader V4 - which will primarily solve the account We will revisit the design for Loader V4, as many folks have thoughts on it, Loader V4 will be an on-chain program from its inception. It will not As part of the Loader V4 rollout, we will include a DevelopmentWe will be following up on Loader V4 design, either continuing SIMD-0167 or Since we are committed to releasing Loader V4 as an on-chain program, not a Phase 3: Assess Further MigrationThe original Phase 3 was baked into the above revised Phase 2. An entirely SummaryIn Phase 3, we will have shipped the following in previous phases:
At this time, we will take a detailed, research-based approach to We will consider datapoints such as:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Loader V3: Fix or Replace
The Upgradeable Loader (Loader V3) has many known issues impacting validator
performance, runtime complexity, and developer experience. The purpose of this
RFC is to clearly define these problems and collect feedback to determine
whether Loader V3 should be repaired or replaced with a new design.
Two SIMDs authored by @Lichtso propose the replacement path. SIMD-0167 (Loader
V4) has accumulated substantial discussion, and SIMD-0315 (Loader V3 -> V4
Migration) remains contentious [1, 2]. Other contributors like @deanmlittle
have proposed the repair path instead [3].
This RFC aims to establish a final decision framework for addressing the Loader
V3 problem set. To that end, it includes a formal call for review with feedback
requested by a specified deadline.
This RFC does not prescribe the exact form of any fix. Instead, reviewers are
asked to assess whether a repair strategy is viable or whether a full
replacement is more appropriate. Specific technical proposals can be developed
in follow-up discussions.
Issues with Loader V3
This RFC describes six problem areas in the current Loader V3:
1. Account Indirection
Loader V3 programs use two accounts (
ProgramandProgramData), requiring anextra lookup and validation step on every invocation.
Why this is bad:
the
Programaccount, deserializing its state to extract the program dataaddress, then loading the
ProgramDataaccount separately.deduplicate
ProgramDataaccounts to avoid double-counting toward transactionsize limits, requiring a separate memory and branching logic.
instructions (upgrade, extend, etc.) must validate that the
Programaccount's program data address matches the provided
ProgramDataaccount.executableboolean flag on accountswill soon be removed [4, 5].
Additional Details
You can see here during program loading within the transaction processing
pipeline, Loader V3 programs require two account loads.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/svm/src/program_loader.rs#L83-L107
You can also see Loader V3 programs require the most special-casing during the
program loading stage, including determining which account to obtain the ELF
from as well as which offset to begin loading the ELF at.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/svm/src/program_loader.rs#L165-L185
Replenishing the program cache also requires two account loads for Loader V3
programs, since the "last modified slot" value is stored on the
ProgramDataaccount.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/svm/src/program_loader.rs#L218-L253
Account loading and applying cost modeling for data loads has also been made
extremely non-trivial due to the account indirection.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/svm/src/account_loader.rs#L505-L540
Same with snapshot minimization.
https://github.com/anza-xyz/agave/blob/462e586a88c285cfcf1bfc1c4d0fbb2dc6c102f0/runtime/src/snapshot_minimizer.rs#L172-L195
The codepath for migrating builtin programs to Core BPF (Loader V3) programs,
as well as upgrading those Core BPF programs once they exist on-chain, must
navigate the account indirection as well.
https://github.com/anza-xyz/agave/blob/462e586a88c285cfcf1bfc1c4d0fbb2dc6c102f0/runtime/src/bank/builtins/core_bpf_migration/target_core_bpf.rs
Furthermore, the Loader V3 program itself must also perform validation between
the two accounts for multiple instructions.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L686-L697
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1021-L1027
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1154-L1157
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1292-L1308
2. Metadata and ELF Coupling
Loader V3 stores both program metadata and the ELF in the same
ProgramDataaccount, causing inefficient metadata updates and preventing clean evolution of
the metadata format.
Why this is bad:
upgrade authority (33 bytes) requires borrowing and mutating an account that
could contain megabytes of ELF data.
accessing ELF bytes must skip over the metadata, and those that access the
metadata must truncate before the ELF.
but backed up against the ELF in the account data. This makes introducing new
fields or versions cumbersome.
same disk storage location and thus are lugged around with each other.
Additional Details
Everywhere Loader V3 programs are loaded, the code has to manage slicing the
account data to obtain the ELF.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/svm/src/program_loader.rs#L165-L185
This includes the added complexity for the loader program itself in managing
program accounts.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L549
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L731
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1114-L1120
The entire
ProgramDataaccount - which can be substantially large - isrequired to change only the 33-byte upgrade authority. Even though the
deserialization is managed efficiently in the
SetAuthorityoperation, theaccount is still required to be loaded during transaction processing.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L838
3. ELF Misalignment
The metadata stored at the start of the
ProgramDataaccount is not 16-bytealigned, which means the ELF that follows is also misaligned. This forces the
ELF parser to make at least one copy of the entire ELF to an aligned buffer
before verification.
Why this is bad:
always copies the ELF for ownership and relocations, and may clone it again
if the input pointer is misaligned.
Additional Details
Both the lenient (current) and the strict (future) parsers clone the ELF bytes
when they're passed into
AlignedMemory::from_slice.https://github.com/anza-xyz/sbpf/blob/3bcd21dc63dd15f6eae49b31fa18a2bc25431bd0/src/aligned_memory.rs#L43-L54
The lenient parser could actually end up copying twice.
https://github.com/anza-xyz/sbpf/blob/3bcd21dc63dd15f6eae49b31fa18a2bc25431bd0/src/elf.rs#L584-L592
4. Program Behavior Constraints
Loader V3 imposes several behavioral constraints that make program deployments
and upgrades less flexible than they need to be [3]. These limitations include:
authority, an unnecessarily strict requirement that complicates upgrade
workflows.
ProgramDataaccount cannot be downsized after creation; it may only beextended, even when the ELF shrinks.
ProgramDataaccount is permissionless, allowing any caller toincrease the account's size and rent requirements.
Upgradeinstruction does not resize theProgramDataaccount to fit thenew ELF. Resizing must be done separately via
ExtendProgram, even though theloader could determine the required size directly from the ELF and resize
automatically, as long as the account has been prefunded.
instructions (
DeployWithMaxDataLen,Write,InitializeBuffer) areexplicitly blocked, preventing programs from deploying or managing other
programs on behalf of users.
never be reused, and any accounts still owned by the closed program become
permanently inaccessible.
Why this is bad:
program" cannot be deployed to known addresses and reused by programs as
shared infrastructure [7].
that leverage buffers for something like release snapshots, changing the
program's upgrade authority means updating all buffer accounts as well.
ProgramDataaccounts greedily lock up lamports. When a program's ELFshrinks, the Upgrade instruction zeroes out unused space rather than
reclaiming it, and
ExtendProgramonly adds bytes.ExtendPrograminstruction can be griefed to cause rent exemption errors forlegitimate operations. If
Upgraderesized atomically, a permissionlessExtendProgramwould be unnecessary and this attack vector would not exist.Foundation cannot build programs that deploy on behalf of users, since
DeployWithMaxDataLenmust be a top-level instruction. This preventssubsidized onboarding flows and limits ecosystem tooling.
program can never be reassigned or drained, since the program can never
execute again. This makes program closure extremely dangerous and irreversible.
Additional Details
You can see the Loader V3 program disallows arbitrary buffer accounts to be
used for program upgrades. This may have originally been intended to prevent
footguns, but use cases have popped up where such a feature would actually be
useful [7].
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L476-L480
Loader V3 does not support shrinking the size of a program account nor retrieval
of unused rent lamports. When the newly deployed program is smaller than the
previous version, the remaining data is zeroed out, then only ever used again to
grow the ELF if need be.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L817-L821
Because the
ExtendPrograminstruction accepts anadditional_bytesparameter(rather than something like
target_size), an attacker could front-run aprepared multisig extension, for example, by first extending the program by
only a few bytes. This could cause the legitimate instruction to fail later,
when the combined size exceeds the rent-exempt balance.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1061
The runtime explicitly blocks CPI to most Loader V3 instructions via
check_authorized_program(). Only a small allowlist of instructions can beinvoked via CPI:
Upgrade,SetAuthority,SetAuthorityChecked,ExtendProgramChecked, andClose. Deployment instructions likeDeployWithMaxDataLen,Write, andInitializeBufferreturnProgramNotSupportedwhen called via CPI.https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/program-runtime/src/cpi.rs#L192-L222
When a program is closed, the
Closeinstruction tombstones it by setting theprogram account data to the special "closed" marker. Once tombstoned, the
program can never be redeployed to that address, and any accounts it owned
become permanently inaccessible since the program cannot execute to release them.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1029-L1034
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1445-L1448
5. Lack of Proper Specification
Loader V3 was never formally specified, leading to undocumented behavior,
developer confusion, and technical debt that has accumulated over time.
Why this is bad:
expected loader behavior.
defined in a specification.
maintain, audit, and reason about.
obscure and blurs the relationship between the builtin and the runtime.
Additional Details
Making a program immutable requires setting the upgrade authority to
NoneviaSetAuthority, but this isn't obvious from the instruction set or documentedclearly - hence questions about this appearing on developer forums [8].
Furthermore, the act of omitting the new authority key is actually done by
omitting the account from the instruction, which is brittle and goes against
known conventions for updating authority addresses.
https://github.com/anza-xyz/solana-sdk/blob/a07c25923f6e44a136058e7b0646b3000ac3ee70/loader-v3-interface/src/instruction.rs#L125-L127
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L842
Closing a program is irreversible and can permanently brick accounts owned by
that program, locking up liquidity forever. Developers find this extremely
surprising and dangerous - hence the opening of a discussion forum to discuss
the issue [9].
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1029-L1034
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1445-L1448
The program ID keypair is only used during initial deployment. After that, the
upgrade authority (stored in
ProgramData) controls the program entirely.Developers frequently ask whether the program ID private key can be made public
after deployment, not realizing it's already irrelevant [10].
6. Technical Debt
Loader V3 has accumulated quite a bit of technical debt, both as a result of
its design limitations as well as patching security issues.
Why this is bad:
Additional Details
Loader V3 has a few small acknowledged bugs or workarounds in the codebase,
which are highlighted by comments.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L603-L609
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L479
The program's design also employs workaround tactics for runtime quirks, such
as stuffing an extra account into CPI to avoid an
UnbalancedInstructionerror.https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L595-L598
The program is also not consistent with how it manages index accessors for
provided accounts in its instructions. In some places, hard-coded indices are
used, but elsewhere uses constants.
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L505-L510
https://github.com/anza-xyz/agave/blob/e4a04896f2824e0ebc27d67f8ef319a6b3e7d19e/programs/bpf_loader/src/lib.rs#L1257-L1261
In general, the program could use some refactoring for smaller things as well.
On-Chain Loader Prerequisites
Both Loader V3 and the proposed Loader V4 are currently implemented as validator
builtin programs. Moving either loader on-chain as a deployed BPF program would
require eliminating areas where the loader calls back into the runtime to
perform privileged operations. Both loaders are equally susceptible to these
issues. Two specific runtime dependencies must be addressed.
ELF Verification
During program deployment and upgrades, the loader invokes a runtime routine to
verify the ELF before writing it to an account. An on-chain program cannot call
back into the runtime to perform this verification.
One possible approach is to defer ELF verification to invocation time. For
example, validators could allow any ELF to be deployed, but verification
violations would be caught when the program is first invoked. Invalid programs
would fail at runtime rather than at deployment.
Another approach is a privileged syscall for ELF verification that only loaders
could call. This would mean even more special-casing in the runtime for loader
programs.
Program Cache Updates
After a program is deployed or upgraded, the loader notifies the program cache
directly that the entry for the program ID has changed in the current slot. An
on-chain program cannot update the global program cache.
One possible approach is to redesign the cache to observe account state changes.
For example, a cache structure that listens for "account modified" events from
the accounts database would not require any callbacks from the loader.
Relevance to Both Paths
These runtime dependencies are not specific to Loader V3. Any loader - repaired
or replaced - would face the same constraints when moving on-chain. Addressing
these issues would generally enable either Loader V3 or Loader V4 to be deployed
as an on-chain BPF program.
Repairing Loader V3
This section evaluates the feasibility of fixing each Loader V3 issue in-place,
without replacing the loader entirely. For each proposed fix, we consider the
scope of the changes required and the risk to validator implementations.
As stated in the introduction, this section will not detail the specific nature
of any particular fix. Instead, we will simply analyze its feasibility in order
to make a directional decision.
Four categories of potential fixes are considered:
Migrate to a New Account Layout
A new account layout for Loader V3 could address issue numbers 1, 2, and 3 in
unison. For example:
Programaccount (under theprogram ID) would eliminate the extra lookup in the runtime, since the
program ID itself would contain the executable bytes.
separate account entirely - would allow independent updates without requiring
the ELF.
size (e.g., 48 bytes) would ensure the ELF starts at an aligned offset. The
metadata section could also be changed to a footer or removed entirely.
Regardless of the new layout itself, this change would be highly disruptive.
New state layouts under the owner
BPFLoaderUpgradeab1e11111111111111111111111means on-chain programs, off-chain infrastructure, and applications would
require updates.
Furthermore, the network itself would not realize much benefit from this change
without migrating all existing
Program-ProgramDataaccount pairs to thenew layout, further exacerbating the disruption.
If any logic does not validate the serialized enum variant discriminator in
addition to the owner ID for
ProgramorProgramDataaccounts, they couldend up consuming unexpected data. Additionally, the new discriminators would
need to be added to said logic in order to parse the new program account
layout for their intended target.
Feature-Gated Instruction Changes
Issue number 4 would require individual feature gates to target each constraint
listed as problematic. We can assume at least four feature gates would likely
be required, and each one would require a dedicated SIMD proposal.
ProgramDatacannot shrinkShrinkPrograminstruction or modifyUpgradeProgramDatalocks up lamportsWithdrawExcessLamportsinstruction or modifyUpgradeFormal Specification
This is primarily a documentation and process issue, not a code issue. This
document should:
conditions, and invariants.
ProgramandProgramDataaccounts.None).Code Refactoring
Some technical debt can be addressed without changing behavior. Magic account
indices can be replaced with consistent use of named constants or vice versa,
duplicated logic can be factored into helpers, and inconsistent error codes can
possibly be rectified.
However, some issues like CPI workarounds and security patches cannot be
removed, but instead can be better integrated into the program's implementation
so that maintainers can better service the code.
Loader V4
This section evaluates the alternative path: replacing Loader V3 with a new
Loader V4, as proposed in SIMD-0167 [1]. We consider the tradeoffs relative to
repairing Loader V3 in place.
Account Layout Migration
Similar to migrating layouts under Loader V3, a migration from Loader V3 to
Loader V4 layouts would also be incredibly disruptive. Programs and apps will
require updating to support the new V4 owner ID and state layouts, and existing
programs could unexpectedly appear under the new configuration.
Both paths require an account layout migration to address issues 1, 2, and 3.
The key difference is whether the migration occurs under the existing owner ID
(
BPFLoaderUpgradeab1e11111111111111111111111) or a new one.Migrating under a new owner ID (Loader V4):
alone, without parsing account data.
separate deployment processes.
new loader.
Migrating under an existing owner ID (repaired V3):
after the migration.
Behavior Constraints
A new loader could incorporate all constraint fixes natively in its design,
rather than accumulating feature-gated patches. A well-designed Loader V4
should address:
These behaviors would be built into the loader from the start, avoiding the
patchwork of feature gates that would accumulate in a repaired V3.
Specification and Code Hygiene
The new loader's SIMD would serve as a formal specification from day one. Future
changes would go through the SIMD process, ensuring that behavior is documented
and reviewed before implementation.
In contrast, a formal specification for Loader V3 would be a retroactive
effort - documenting existing behavior rather than defining intended behavior.
A new loader would also start with a clean implementation, free of the
workarounds and compatibility constraints that have accumulated in Loader V3.
However, this benefit will diminish over time as Loader V4 accumulates its own
history.
Call to Action
This RFC requests explicit review from the following core contributors:
Any additional community members are welcome to provide feedback and their input
will be equally considered. The above merely lists contributors already involved
in this debate or with relevant domain expertise.
What We're Asking
Reviewers should consider the following questions:
they introduce unacceptable risk or complexity?
minimizes disruption to the ecosystem?
implementation over the next 3+ years?
Please provide feedback by commenting on this GitHub discussion. Feedback
should focus on the directional decision (repair vs. replace), not on specific
implementation details of either path, unless directly relevant to your review.
Deadline
Feedback is requested by January 8th, 2026. After this date, community input
will be distilled into a final decision on whether to repair Loader V3 or
replace it with Loader V4. This decision will be binding and development will
proceed accordingly.
Sources
is_executableFlag Entirely #319ExtendProgramCheckedloader-v3 instruction #164Beta Was this translation helpful? Give feedback.
All reactions