* Persist EpochRewards sysvar between reward intervals
* Adjust initial EpochRewards balance to ensure it is not debited out of existence
* Set EpochRewards::active = false at end of distribution
* Fix tests
* Extend test to 2 epochs, assert sysvar still exists
* Stop adjusting EpochRewards balance based on rewards
* Fix tests
* Review suggestions
* Only the verifier can cause FailedVerification, everything else is Closed
* Removes the environments parameter from load_program_accounts().
* cargo fmt
* Simplify invocation of deployed program
* Attempt to invoke a program before it is deployed
* Attempt to invoke a buffer before it is used in a deployment
* Escalates Option return value of load_program_accounts() to load_program_with_pubkey().
* Review feedback
* Introduce SchedulingStateMachine
* Apply all typo fixes from code review
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
* Update word wrapping
* Clarify Token::assume_exclusive_mutating_thread()
* Use slice instead of &Vec<_>
* Improve non-const explanation
* Document consecutive readonly rescheduling opt.
* Make test_gradual_locking terminate for miri
* Avoid unnecessary Task::clone()
* Rename: lock_{status,result} and no attempt_...()
* Add safety comment for get_account_locks_unchecked
* Reduce and comment about Page::blocked_tasks cap.
* Document SchedulingStateMachine::schedule_task()
* Add justification of closure in create_task
* Use the From trait for PageUsage
* Replace unneeded if-let with .expect()
* Add helpful comments for peculiar crossbeam usage
* Fix typo
* Make bug-bounty-exempt statement more clear
* Add test_enfoced_get_account_locks_verification
* Fix typos...
* Big rename: Page => UsageQueue
* Document UsageQueueLoader
* Various minor cleanings for beautifier diff
* Ensure reinitialize() is maintained for new fields
* Remove uneeded impl Send for TokenCell & doc upd.
* Apply typo fixes from code review
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
* Merge similar tests into one
* Remove test_debug
* Remove assertions of task_index()
* Fix UB in TokenCell
* Make schedule_task doc comment simpler
* Document deschedule_task
* Simplify unlock_usage_queue() args
* Add comment for try_unblock() -> None
* Switch to Option<Usage> for fewer assert!s
* Add assert_matches!() to UsageQueue methods
* Add panicking test case for ::reinitialize()
* Use UsageFromTask
* Rename: LockAttempt => LockContext
* Move locking and unlocking methods to usage queue
* Remove outdated comment...
* Remove redundant fn: pop_unblocked_usage_from_task
* Document the index of task
* Clarifty comment a bit
* Update .current_usage inside try_lock()
* Use inspect_err to simplify code
* fix ci...
* Use ()...
* Rename: schedule{,_next}_unblocked_task()
* Rename: {try_lock,unlock}_{for_task,usage_queues}
* Test solana-unified-scheduler-logic under miri
* Test UB to illustrate limitation of TokenCell
* Test UB of using multiple tokens at the same time
---------
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
std::num::Saturating allows us to create integers that will override
the standard arithmetic operators to use saturating math. This removes
the need for a custom macro as well as reduces mental load as someone
only needs to remember that they want saturating math once.
This PR introduces std::num::Saturating integers to replace all
use of saturating_add_assign!() in the accounts-db crate
* Move epoch_rewards_hasher into submodule
* Move unit test into epoch_rewards_hasher sub-submodule
* Move integration-like tests into submodule
* Move compare functionality into sub-submodule
* RPC sendTransaction: if skip_preflight, use processed-commitment Bank for last_valid_block_height and sanitization
* Use nonce retry logic for skip_preflight transactions if blockhash was not found
* add scan_index for improving index generation
* pr feedback
* rework some stuff from pr feedback
* get rid of redundant if
* deal with rent correctly
* alt_bn128: simplify errors in sycalls (alt_bn128, compress, poseidon)
* add TODO for feature gate. remove validate from compress
* add feature gate
* fix one more error case
* all changes under feature gate
* revert removing from()
* return unexpected errors in lib
* add comment to remove error types, once the feature gate is activated
* remove unnecessary/impossible error
* fix mispelled comments