Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
set new encoding as true by default and allow it to be disabled (#5915)
## Description This PR sets the "new encoding" (from now on will be called "encoding v1") as the default. We can still disable it using `no_encoding_v1`, which switches back to "encoding v0". Actions that needs to be done after this being merged will exist in #5727 New features - ABI Super traits; - AbiEncode buffer dynamic sizing; Bugs Fixed - `ContractCall` intrinsic interaction effect was not set correctly; Fixing warnings and error messages - Better error message when core-lib is not available for scripts/contracts/predicates; - Better error message when main inputs/outputs are unknown or error types; - Better error message when main inputs/outputs do not implement AbiEncode/AbiDecode; - Don't warn impurity attributes on the "__entry" fn; - Don't warn CEI on the "__entry" fn. Our CEI analysis, currently, does not recognize `Never`. This means it does not realize it is impossible to call two contract functions; Test Disabled (needs to be enabled again in the future) - should_pass/language/name_resolution_after_monomorphization - should_pass/language/shadowing/shadowed_glob_imports - should_pass/language/name_resolution_inside_intrinsics - sdk-harness/external_proxy test is not working. I am assuming it is the LDC bug that is already fixed on version 0.25. What is happening is that the literal "double_value" has the correct length, but some random data. Which makes the method selector fails. Only after we call LDC. The proxy contract is working. Test generating more warnings than before - should_pass/dca/contract/superabi_contract_calls What happens here is that when we implement a trait for `Contract`, we actually generate two functions: one prefixed `__contract_entry` that is called by the method selector; and another one normal, that can be called freely. So, if the trait method is never called manually, it is marked as dead. - should_pass/dca/contract/abi_fn_params I actually think the new warning is correct and nothing here needs to be done. Test with fewer warnings than before - should_pass/dca/unused_fields auto-impl is making all fields being used. so no dead code warnings are being generated. We need to fix this. Changes to std-lib - Functions that return data about call context changed the semantic. `first_param` and `second_param` return the value as the VM sees them. We now have `called_method` and `called_args`. This means that we can change the protocol later and still keep these four functions always working and with meaningful names. - - predicate_data also was updated to use encoding v1 protocol. ICE - increase_buffer_if_needed implementation is a little bit strange because does not work as a method inside `Buffer`. For some reason, it is generating an ICE. I need to create an issue so we can fix, and improve the implementation here. - `Buffer` used by AbiEncode needs a `push_bytes` so we can be more efficient when encoding Bytes and others. ## Checklist - [ ] I have linked to any relevant issues. - [ ] I have commented my code, particularly in hard-to-understand areas. - [ ] I have updated the documentation where relevant (API docs, the reference, and the Sway book). - [ ] If my change requires substantial documentation changes, I have [requested support from the DevRel team](https://github.com/FuelLabs/devrel-requests/issues/new/choose) - [ ] I have added tests that prove my fix is effective or that my feature works. - [ ] I have added (or requested a maintainer to add) the necessary `Breaking*` or `New Feature` labels where relevant. - [ ] I have done my best to ensure that my PR adheres to [the Fuel Labs Code Review Standards](https://github.com/FuelLabs/rfcs/blob/master/text/code-standards/external-contributors.md). - [ ] I have requested a review from the relevant team or maintainers.
- Loading branch information