Avatar for the FuelLabs user
FuelLabs
sway
BlogDocsChangelog

Performance History

Latest Results

Bump quinn-proto from 0.11.14 to 0.11.16 in /test/src/sdk-harness (#7700) Bumps [quinn-proto](https://github.com/quinn-rs/quinn) from 0.11.14 to 0.11.16. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/quinn-rs/quinn/releases">quinn-proto's releases</a>.</em></p> <blockquote> <h2>quinn-proto-0.11.16</h2> <h2>What's Changed</h2> <ul> <li>0.11.x: upgrade dependencies by <a href="https://github.com/djc"><code>@​djc</code></a> in <a href="https://redirect.github.com/quinn-rs/quinn/pull/2707">quinn-rs/quinn#2707</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/quinn-rs/quinn/commit/a96949f6cd257c665f544626af4e8ce668a40b30"><code>a96949f</code></a> Take semver-compatible update for anyhow</li> <li><a href="https://github.com/quinn-rs/quinn/commit/5429f60d0ee9971770e60f0407d992d3b912d274"><code>5429f60</code></a> udp: bump version to 0.5.15</li> <li><a href="https://github.com/quinn-rs/quinn/commit/262a493629acdc979070cd36d801464a2b8dd3e2"><code>262a493</code></a> proto: bump version to 0.11.16</li> <li><a href="https://github.com/quinn-rs/quinn/commit/c19b63a04c6eff60684a845fce29fee6d74b1acd"><code>c19b63a</code></a> Upgrade rustls-platform-verifier to 0.7</li> <li><a href="https://github.com/quinn-rs/quinn/commit/aff3652c43be3491908ef553fac16610c9ad3e6a"><code>aff3652</code></a> Disable default features for fastbloom</li> <li><a href="https://github.com/quinn-rs/quinn/commit/01b2eee2c68b1d73ad09485b440fbfa8f6d3e290"><code>01b2eee</code></a> Upgrade fastbloom to 0.17</li> <li><a href="https://github.com/quinn-rs/quinn/commit/2c82013a8cd502f3dd0bba0a4c38a51e564d29cc"><code>2c82013</code></a> Switch BBR RNG to PCG</li> <li><a href="https://github.com/quinn-rs/quinn/commit/544dd9ebabf18639cb2041f849ea406100dd3d6d"><code>544dd9e</code></a> Upgrade to rand 0.10.1</li> <li><a href="https://github.com/quinn-rs/quinn/commit/a7499b8439e393a6299330111d9c8564cd96c464"><code>a7499b8</code></a> Bump versions for release</li> <li><a href="https://github.com/quinn-rs/quinn/commit/7c1970f19b24280af86b1a0a1c2d06d59fc453f0"><code>7c1970f</code></a> proto: yield error on too many gaps in assembler</li> <li>Additional commits viewable in <a href="https://github.com/quinn-rs/quinn/compare/quinn-proto-0.11.14...quinn-proto-0.11.16">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=quinn-proto&package-manager=cargo&previous-version=0.11.14&new-version=0.11.16)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/FuelLabs/sway/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Igor Rončević <ironcev@hotmail.com>
master
4 hours ago
Refactor `DeclEngine` for robustness and semantic consistency (#7704) ## Description This PR is a prerequisite for an upcoming performance optimization of the `DeclEngine`, aimed at additional removals of copied `TyDecl` entries from the `DeclEngine`. The PR: - properly implements `HasChanges` for `MaterializeConstGenerics::materialize_const_generics`. During compilation of the o2 `order-book` contract, this change removes 104 duplicated function decls and 894 duplicated struct decls. - removes `insert_arc` from the `DeclEngine`. The semantic of this method made no sense for its existing usages. In all usages, we were inserting an existing declaration gotten from the `DeclEngine` and just giving it a different `DeclId`. In other words, calling `DeclEngine::get_...` would for both `DeclId`s return exactly the same declaration. Additionally, all those usages were only in ABI declarations, for ABI's `TyImplItem::Fn/Constant/Type` where none of those can be modified afterwards in any way (e.g., we do not support them being generic in ABIs). As expected, removing `insert_arc` and replacing its returned `DeclRef` with the original didn't change semantic of any calls that were using it. - adds `insert_modified` method to the `DeclEngine` and forces `insert` to provide `ParsedDeclId`. Previous approach in which callers were responsible for either passing the `ParsedDeclId` for the first time or getting it by `get_parsed_decl_id` was both verbose and error-prone. There were cases in code, some even marked with TODO, where the `ParsedDeclId` was not provided when inserting a modified declaration, essentially inserting declarations that were not connected to their parsed equivalents. - adds `insert_dummy_func` method to the `DeclEngine` to clearly distinguish the only case in which a typed declaration does not have the corresponding parsed declaration. - fixes the bug of having two different fields for parsed const generics in the `DeclEngine`: `const_generic_parsed_decl_id_map` and `const_generic**s**_parsed_decl_id_map`. The plural version was used for writing and singular for reading, effectively resulting in const generics never having their corresponding parsed declarations attached. - wires all instances of `ConstGenericParameter` with their corresponding `ParsedDeclId`s. Previously this was done for const generics in functions and impls, but not in structs, enums, and traits. Additionally, the PR: - adds `run-tests.sh` and `just t` recipe for convenient running of the base set of Sway compiler tests. ## Checklist - [ ] I have linked to any relevant issues. - [x] 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. - [x] 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). - [x] I have requested a review from the relevant team or maintainers.
master
8 hours ago
Refactor `DeclEngine` for robustness and semantic consistency
ironcev/decl-engine-refactoring
13 hours ago
Merge branch 'master' into ironcev/rollout-block-is-entry
ironcev/rollout-block-is-entry
15 days ago
Implement `__mem_rep_eq` intrinsic (#7697) ## Description This PR introduces a new `__mem_repr_eq` intrinsic for comparing memory representation of types, and removes the existing `__runtime_mem_id` and `__encoding_mem_id` intrinsics. We decided to introduce `__mem_repr_eq` to mitigate the following issues we had with existing intrinsics: - `mem_id`s were `u64` values computed using `DefaultHasher` whose results are not guaranteed to be stable across different runs of the same Sway compiler or being same on different target architectures. - even if we switched to a stable hasher, hashing to `u64` was not giving a strong no-collision guarantee. A hash collision between different, e.g. runtime and encoding representation, would in case of false positives result in wrong encoding or decoding. The `__mem_repr_eq` is defined as: ```sway __mem_repr_eq<T>(repr_a: str, repr_b: str) -> bool ``` It returns `true` if the memory representation `repr_a` of the type `T` is equal to its memory representation `repr_b`, assuming `T` has both memory representations. If `T` does not have any of the representations `repr_a` or `repr_b`, returns `false`. The valid values for `repr_a` and `repr_b` are `"runtime"`, `"encoding"`, and `"hashing"`: - `"runtime"` is how the type is represented inside the VM's memory. This is the Sway runtime memory representation (e.g., struct fields are aligned to word boundaries, arrays are packed, etc.). This memory representation is defined for every type. - `"encoding"` is the packed memory representation of a type, as defined by the canonical ABI encoding. Not all types have a canonical ABI encoding defined, e.g., dynamic types like `Vec` or `raw_slice`. In that case, `"encoding"` never compares equal to any other memory representation, __including to itself__. - `"hashing"` is the packed memory representation of a type, as defined by the canonical hashing introduced in #7695. Not all types have a canonical hashing defined, e.g., dynamic types like `Vec` or `raw_slice`. In that case, `"hashing"` never compares equal to any other memory representation, __including to itself__. To test if a type `T` has `"encoding"` or `"hashing"` memory representation defined, compare that representation to itself. E.g.: `let has_encoding_repr = __mem_repr_eq<T>("encoding", "encoding");` `repr_a` and `repr_b` must be compile-time constant `str`s, whose values are one of `"runtime"`, `"encoding"`, or `"hashing"`. The constant `str`s never end up in the bytecode. Additionally, the PR moves existing E2E intrinsics tests that were not in the `language/intrinsics` into `language/intrinsics`. ## Breaking Change The old `__runtime_mem_id` and `__encoding_mem_id` intrinsics are removed. The code that is using them must switch to the new `__mem_repr_eq`. ## Checklist - [x] I have linked to any relevant issues. - [x] I have commented my code, particularly in hard-to-understand areas. - [x] 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) - [x] I have added tests that prove my fix is effective or that my feature works. - [x] I have added (or requested a maintainer to add) the necessary `Breaking*` or `New Feature` labels where relevant. - [x] 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). - [x] I have requested a review from the relevant team or maintainers.
master
15 days ago

Latest Branches

CodSpeed Performance Gauge
0%
Refactor `DeclEngine` for robustness and semantic consistency#7704
4 days ago
3de0f01
ironcev/decl-engine-refactoring
CodSpeed Performance Gauge
0%
15 days ago
7ed143f
ironcev/rollout-block-is-entry
CodSpeed Performance Gauge
0%
17 days ago
307ac1e
ironcev/mem-repr-id-intrinsics
© 2026 CodSpeed Technology
Home Terms Privacy Docs