-
Notifications
You must be signed in to change notification settings - Fork 61
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
Signed Integers TwosComplement
fix to WrappingNeg
#263
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bitzoic
added
Bug
Something isn't working
Lib: Math
Label used to filter for the library issue
Breaking
This will break user's code
labels
Jul 8, 2024
bitzoic
changed the title
Signed Integers
Signed Integers Jul 8, 2024
TwosComplement
fixTwosComplement
fix to WrappingNeg
SwayStar123
reviewed
Jul 8, 2024
SwayStar123
previously approved these changes
Jul 12, 2024
K1-R1
previously approved these changes
Jul 12, 2024
bitzoic
force-pushed
the
bitzoic-fix-twos-complement
branch
from
July 22, 2024 05:50
ac9f360
to
a713235
Compare
SwayStar123
approved these changes
Jul 24, 2024
K1-R1
approved these changes
Jul 24, 2024
Merged
K1-R1
added a commit
that referenced
this pull request
Aug 1, 2024
## [v0.23.0] ### Added - [#259](#259) Adds a new upgradability library, including associated tests and documentation. - [#265](#265) Adds the `SetMetadataEvent` and emits `SetMetadataEvent` when the `_set_metadata()` function is called. - [#270](#270) Adds `OrdEq` functionality to Signed Integers. - [#272](#272) Adds the `TryFrom` implementation from signed integers to unsigned integers. ### Changed - [#265](#265) Enables the metadata events now that the Rust SDK supports wrapped heap types. - [#269](#269) Hashes the string "admin" and with the bits of an Identity when creating a storage slot to storage an admin in the Admin Library. - [#276](#276) Prepares for v0.23.0 release. - [#278](#278) Deprecates the Fixed Point number library. ### Fixed - [#258](#258) Fixes incorrect instructions on how to run tests in README and docs hub. - [#262](#262) Fixes incorrect ordering comparison for IFP64, IFP128 and IFP256. - [#263](#263) Fixes `I256`'s returned bits. - [#263](#263) Fixes `I128` and `I256`'s zero or "indent" value. - [#268](#268) Fixes subtraction involving negative numbers for `I8`, `I16`, `I32`, `I64`, `I128`, and `I256`. - [#272](#272) Fixes `From` implementations for Signed Integers with `TryFrom`. - [#273](#273) Fixes negative from implementations for Signed Integers. - [#274](#274) Fixes the `swap_configurables()` function to correctly handle the case where the bytecode is too large to fit in the buffer. - [#275](#275) Fixes an infinite loop in the Bytecode root library's `_compute_bytecode_root()` function. #### Breaking - [#263](#263) Removes the `TwosComplement` trait in favor of `WrappingNeg`. The following demonstrates the breaking change. While this example code uses the `I8` type, the same logic may be applied to the `I16`, `I32`, `I64`, `I128`, and `I256` types. Before: ```sway let my_i8 = i8::zero(); let twos_complement = my_i8.twos_complement(); ``` After: ```sway let my_i8 = i8::zero(); let wrapping_neg = my_i8.wrapping_neg(); ``` - [#272](#272) The `From` implementation for all signed integers to their respective unsigned integer has been removed. The `TryFrom` implementation has been added in its place. Before: ```sway let my_i8: I8 = I8::from(1u8); ``` After: ```sway let my_i8: I8 = I8::try_from(1u8).unwrap(); ``` - [#273](#273) The `neg_from` implementation for all signed integers has been removed. The `neg_try_from()` implementation has been added in its place. The following demonstrates the breaking change. While this example code uses the `I8` type, the same logic may be applied to the `I16`, `I32`, `I64`, `I128`, and `I256` types. Before: ```sway let my_negative_i8: I8 = I8::neg_from(1u8); ``` After: ```sway let my_negative_i8: I8 = I8::neg_try_from(1u8).unwrap(); ``` - [#278](#278) Deprecates the Fixed Point number library. The Fixed Point number library is no longer available. --------- Co-authored-by: K1-R1 <[email protected]> Co-authored-by: SwayStar123 <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Type of change
Changes
The following changes have been made:
TwosComplement
trait was not correctly implemented. To stay in line with Rust's practices, theWrappingNeg
trait now replaces it with the original desired functionality of theTwosComplement
trait.I128
andI256
are now correctI128
andI256
are now correctNotes
iX_twos_complement_test
toiX_wrapping_neg_test
.Breaking Changes
The following demonstrates the breaking change. While this example code uses the
I8
type, the same logic may be applied to theI16
,I32
,I64
,I128
, andI256
types.Before:
After:
Checklist
Breaking*
orNew Feature
labels where relevant.