v1.0.0
We are excited to announce the release of Cadence v1.0! π
Starting with this release, there will be no more planned breaking changes going forward! π
Reflecting two years of work since the last major milestone in 2022, v0.24 (Secure Cadence), and the culmination of five years of work since the inception of Cadence in 2019, Cadence 1.0 is a milestone marking several significant enhancements. This release introduces full forward compatibility, enhanced composability through Attachments, and significant performance improvements.
We would like to thank all contributors and community members for their great feedback and amazing contributions β this would have not been possible without you! π
To learn more, visit https://flow.com/upgrade/crescendo/cadence-1.
π« New features
Attachments
Attachments allow developers to extend a struct or resource type (even one that they did not declare) with new functionality and data, without requiring the original author of the type to plan or account for it.
This feature allows developers to easily build on and extend any existing application, significantly improving the composability story of Cadence.
Entitlements and Safe Downcasting
In Cadence 1.0, access control has improved significantly.
Previously, Cadenceβs main access-control mechanism, restricted reference types, has been a source of confusion and mistakes for contract developers. Additionally, references could not be downcast, leading to ergonomic issues.
Access control is now handled using a new feature called Entitlements. A reference can now be βentitledβ to certain facets of an object.
References can now always be down-casted, the standalone auth
modifier is not necessary anymore, and got removed.
Entitled Account Access
Previously, access to accounts was granted wholesale: Users would sign a transaction, authorizing the code of the transaction to perform any kind of operation, for example, write to storage, but also add keys or contracts.
Users had to trust that a transaction would only perform supposed access, e.g. storage access to withdraw tokens, but still had to grant full access, which would allow the transaction to perform other operations.
Dapp developers who require users to sign transactions are now able to request the minimum amount of access to perform the intended operation, i.e. developers are able to follow the principle of least privilege (PoLA).
With the introduction of entitlements, this access is now expressed using entitlements and references.
Access to administrative account operations, such as writing to storage, adding keys, or adding contracts, is now gated by both coarse grained entitlements (e.g. Storage
, which grants access to all storage related functions, and Keys
, which grants access to all key management functions), as well as fine-grained entitlements (e.g. SaveValue
to save a value to storage, or AddKey
to add a new key to the account).
Transactions can now request the particular entitlements necessary to perform the operations in the transaction.
View Functions
View functions allow developers to improve the reliability and safety of their programs, and helps them to reason about the effects of their and the programs of others.
Developers can mark their functions as view
, which disallows the function from performing state changes. That also makes the intent of functions clear to other programmers, as it allows them to distinguish between functions that change state and ones that do not.
Interface Inheritance
Previously, interfaces could not inherit from other interfaces, which required developers to repeat code. Interface inheritance allows code abstraction and code reuse.
Interfaces can now inherit from other interfaces of the same kind. This makes it easier for developers to structure their conformances and reduces a lot of redundant code.
Capability Controllers
Cadence encourages a capability-based security model. Capabilities are themselves a new concept that most Cadence programmers need to understand.
The existing linking-based capability API has been replaced by a more powerful and easier to use API based on the notion of Capability Controllers. The new API makes the creation of new and the revocation of existing capabilities simpler.
External Mutation Safety
External Mutation Safety prevents a common safety foot-gun, unintentionally granting mutable access to nested data.
The mutability of containers (updating a field of a composite value, key of a map, or index of an array) through references has changed: When a field/element is accessed through a reference, a reference to the accessed inner object is returned, instead of the actual object. These returned references are unauthorized by default, and the author of the object (struct/resource/etc.) can control what operations are permitted on these returned references by using entitlements and entitlement mappings.
Event Definition And Emission In Interfaces
Contract interfaces may now define event types, and these events can be emitted from function conditions and default implementations in those contract interfaces.
Force Destruction of Resources
All resources are now guaranteed to be destroyable.
It was previously possible to panic in the body of a resource or attachmentβs destroy
method, effectively preventing the destruction or removal of that resource from an account. This could be used as an attack vector by handing people undesirable resources or hydrating resources to make them extremely large or otherwise contain undesirable content.
Contracts may no longer define destroy
functions on their resources, and are no longer required to explicitly handle the destruction of resource fields. These will instead be implicitly
destroyed whenever a resource is destroyed.
Additionally, developers may define a ResourceDestroyed
event which will be emitted whenever a resource of that type is destroyed.
Inlined and Deduplicated Storage
Cadence uses the Atree library for storing objects. Cadence 1.0 integrates Atree v0.8.0, which inlines and deduplicates stored data, which significantly reduces the amount of data stored and memory need. On Flow Testnet, this reduced memory usage by ~1/2 without sacrificing speed.
For more information, visit the release page https://github.com/onflow/atree/releases/tag/v0.8.0
β‘ Breaking Improvements
Many of the improvements of Cadence 1.0 fundamentally change how Cadence works and how it is used. That also means it was necessary to break existing code to release this version, which guarantees stability (no more planned breaking changes) going forward.
As breaking changes are simply no longer acceptable after Cadence 1.0, we used this last chance to fix and improve Cadence, ensuring it delivers on its promise of being a language that provides security and safety, while also enabling composability and simplicity.
We appreciate that updating existing code can be challenging for developers. However, we believe these improvements are worthwhile, as they make Cadence development significantly more powerful and efficient, enabling developers to write and deploy immutable contracts.
The improvements were intentionally bundled into one release to avoid breaking Cadence programs multiple times.
References to Resource-Kinded Values Get Invalidated When the Referenced Values Are Moved
References are now invalidated if the referenced resource is moved after the reference was taken. The reference is invalidated upon the first move, regardless of the origin and the destination.
Previously, when a reference is taken to a resource, that reference remains valid even if the resource was moved, for example when created and moved into an account, or moved from one account into another.
In other words, references to resources stayed alive forever. This could be a potential safety foot-gun, where one could gain/give/retain unintended access to resources through references.
Conditions No Longer Allow State Changes
In the current version of Cadence, pre-conditions and post-conditions may perform state changes, e.g. by calling a function that performs a mutation. This may result in unexpected behavior, which might lead to bugs.
To make conditions predictable, they are no longer allowed to perform state changes.
Pre-conditions and post-conditions are now considered view
contexts, meaning that any operations that would be prevented inside of a view
function are also not permitted in a pre-condition or post-condition.
This is to prevent underhanded code wherein a user modifies global or contract state inside of a condition, where they are meant to simply be asserting properties of that state.
Semantics for Variables in For-Loop Statements Got Improved
The behavior of for-in
loops improved, so that a new iteration variable is introduced for each iteration.
Previously, the iteration variable of for-in
loops was re-assigned on each iteration.
Even though this is a common behavior in many programming languages, it is surprising behavior and a source of bugs.
The behavior was improved to the often assumed/expected behavior of a new iteration variable being introduced for each iteration, which reduces the likelihood for a bug.
Restricted Types Got Replaced with Intersection Types
With the improvements to access control enabled by entitlements and safe down-casting, the restricted type feature is redundant.
Restricted types have been removed. All types, including references, can now be down-casted, restricted types are no longer used for access control. At the same time intersection types got introduced.
Definite Return Analysis Got Improved
The definite return analysis got significantly improved.
Definite return analysis determines if a function always exits, in all possible execution paths, e.g. through a return
statement, or by calling a function that never returns, like panic
.
This analysis was incomplete and required developers to add workarounds to their code.
Syntax for Function Types Improved
Previously, function types were expressed using a different syntax from function declarations or expressions. The previous syntax was unintuitive for developers, making it hard to write and read code that used function types.
Function types are now expressed using the fun
keyword, just like expressions and declarations. This improves readability and makes function types more obvious.
pub
and priv
Access Modifiers Got Removed
The pub
, priv
and pub(set)
access modifiers got removed from the language, in favor of their more explicit access(all)
and access(self)
equivalents (for pub
and priv
, respectively).
This makes access modifiers more uniform and better match the new entitlements syntax.
Naming Rules Got Tightened
Previously, Cadence allowed language keywords (e.g. continue
, for
, etc.) to be used as names. This had the potential to confuse developers or readers of programs, and could potentially lead to bugs.
Most language keywords are no longer allowed to be used as names. Some keywords are still allowed to be used as names, as they have limited significance within the language.
Nested Type Requirements Got Removed
Nested Type Requirements were a fairly advanced concept of the language. The feature was uncommon in other programming languages and hard to understand.
Just like an interface could require a conforming type to provide a certain field or function, it could also have required the conforming type to provide a nested type.
Deprecated Key Management API Got Removed
Cadence provided two key management APIs:
- The original, low-level API, which worked with RLP-encoded keys
- The improved, high-level API, which works with convenient data types like
PublicKey
,HashAlgorithm
, andSignatureAlgorithm
The original account key management API, got removed. The improved API was introduced, as the original API was difficult to use and error-prone. The original API was deprecated in early 2022.
Result of toBigEndianBytes()
for U?Int(128|256)
Fixed
Previously, the implementation of .toBigEndianBytes()
was incorrect for the large integer types Int128
, Int256
, UInt128
, and UInt256
. This had the potential to confuse developers or readers of programs, and could potentially lead to bugs.
The result for toBigEndianBytes()
on ****Int128
and UInt128
is now always an array of 16 bytes, and for Int256
and UInt256
32 bytes.
π Bugfixes
Resource Tracking for Optional Bindings Improved
Resource tracking for optional bindings (βif-let statementsβ) was fixed.
Previously, resource tracking for optional bindings was implemented incorrectly, leading to errors for valid code. This required developers to add workarounds to their code.
Missing or Incorrect Argument Labels Get Reported
Function calls with missing argument labels and function calls with incorrect argument labels are now reported properly.
Previously, missing or incorrect argument labels of function calls were not reported.
This had the potential to confuse developers or readers of programs, and could potentially lead to bugs.
Incorrect Operators in Reference Expressions Get Reported
Previously, incorrect operators in reference expressions were not reported.
This had the potential to confuse developers or readers of programs, and could potentially lead to bugs.
All changes
π₯ Language Breaking Changes
- Remove deprecated key management API by @turbolent in #1842
- Fix ToBigEndianBytes implementations for U?Int(128|256) by @dreamsmasher in #1917
- Prevent keywords from being used as identifiers (redux) by @dreamsmasher in #1937
- Add machinery for parsing and checking
view
functions by @dsainati1 in #1818 - View Enforcement by @dsainati1 in #1870
- Enforce
view
in function conditions by @dsainati1 in #1871 - Improve reference expressions by @turbolent in #2010
- Take argument labels into account when declaring members for nested declarations by @turbolent in #2013
- Improve resource tracking for optional binding by @turbolent in #2044
- Detect invalidated references statically by @SupunS in #2037
- Invalidate resource references when the referenced resource is moved by @SupunS in #1999
- Improve the definite return analysis by @turbolent in #2090
- Change for-loop variables from per-loop to per-iteration by @turbolent in #2024
- Implement FLIP #43 (fn type syntax change) by @dreamsmasher in #2140
- Report preceding identifier in member declaration by @turbolent in #2231
- Reject cyclic imports during contract deployment by @SupunS in #2308
- Type checking for entitlement and entitlement mapping declarations by @dsainati1 in #2404
- Parsing for Entitlements by @dsainati1 in #2363
- Type checking for entitlement and entitlement mapping declarations by @dsainati1 in #2441
- Type checking for authorized references by @dsainati1 in #2405
- Runtime behavior for entitlements by @dsainati1 in #2421
- Remove
pub
,priv
andpub(set)
access modifiers by @dsainati1 in #2540 - Change member access semantics by @SupunS in #2573
- Add builtin entitlements to array/dictionary functions by @SupunS in #2598
- Allow external mutation for owned values by @SupunS in #2599
- rename restricted type to intersection type by @dsainati1 in #2581
- Remove Restricted Type from Cadence by @dsainati1 in #2596
- Make indexing assignment entitled by @SupunS in #2664
- Allow default functions to co-exist with conditions in interface conformance by @SupunS in #2697
- Remove linking based capability API and associated code by @turbolent in #2595
- Add external mutability improvements by @SupunS in #2718
- Remove type requirements by @dsainati1 in #2670
- sort entitlement sets alphabetically when generating strings by @dsainati1 in #2754
- Account type by @turbolent in #2648
- Improve and fix static types and their ID and string functions by @turbolent in #2756
- Add view annotations to newly added array functions by @dsainati1 in #2771
- Eagerly normalize String and Character values at construction time by @turbolent in #2781
- Add required
mapping
keyword to entitlement mapping usages by @dsainati1 in #2883 - Restrict
capabilities.publish
to account's own capabilities by @turbolent in #2782 - Remove support for custom destructors by @dsainati1 in #2789
- Support for parsing default destroy events by @dsainati1 in #2799
- Type checking for default events by @dsainati1 in #2812
- Merge destructor removal into stable cadence by @dsainati1 in #2928
- throw error on the creation of a nested reference by @dsainati1 in #2965
- New Behavior for Attachments and Entitlements by @dsainati1 in #2921
- Merge Stable Cadence branch into master by @dsainati1 in #2971
- Update interface of
revertibleRandom
by @darkdrag00nv2 in #2976 - Static check to prevent nested references by @dsainati1 in #2970
- Remove deprecated domain separation tag from Crypto contract by @turbolent in #2984
- Implement modulo argument of
revertibleRandom
by @tarakby in #2986 - Reserve more keywords for future proofing by @turbolent in #3019
- Require explicit type annotation for arguments passed to authorized reference parameters by @turbolent in #3023
- Unify the requirement for all interface types to have to occur in intersection types by @turbolent in #3090
- Prevent container mutation while iterating by @SupunS in #3126
- Allow creating references to nested optionals by @SupunS in #3132
- remove ability to dereference arrays or dicts of structs by @dsainati1 in #3221
- Implement FLIP 242 by @dsainati1 in #3252
- Implement FLIP 262 by @turbolent in #3247
- Fix optional type ID ambiguity and migrate types by @dsainati1 in #3272
- Improve supported entitlements and entitlements inferrence in migration by @turbolent in #3266
- Produce a validator error when contracts would produce unrepresentable entitlements sets in the migration by @dsainati1 in #3304
- Use parent to determine whether an expression is target of an invocation by @SupunS in #3340
- Improve static validation of contract/transaction moves by @SupunS in #3341
- Return a copy for enum-typed members, during member-access via references by @SupunS in #3357
- Import contracts as references by @SupunS in #3417
π₯ Go API Breaking Chance
- Update randomness runtime interface method by @tarakby in #2706
- Add the
NewEmulatorBackend
method onTestFramework
interface by @m-Peter in #2744 - Add support for injecting types into the environment by @turbolent in #2811
- Allow different base activations per location in checker and interpreter by @turbolent in #2887
- Expose checker in analysis by @turbolent in #3042
- Unexport fields to prevent access by index by @turbolent in #3290
- Remove Value.ToGoValue and NewValue by @turbolent in #3291
- Remove access to field slices from composite and interface types by @turbolent in #3432
β Features
- Add interface inheritance by @SupunS in #2112
- Attachment Iteration by @dsainati1 in #2440
- Merge
stable-cadence
intofeature/entitlements
by @dsainati1 in #2563 - Convert generic container types on upcast by @dsainati1 in #2567
- Add utility function
ccf.HasMsgPrefix
by @fxamacker in #2609 - Introduce Character.utf8 by @darkdrag00nv2 in #2617
- Introduce built-in mutability entitlements by @SupunS in #2586
- Allow entitlement mappings to be used in container-typed composite-fields by @SupunS in #2587
- Add identity entitlement mapping by @SupunS in #2588
- Allow emit statements in conditions by @turbolent in #2589
- Provide suggested fixes for argument label errors by @turbolent in #2619
- Suggest optional chaining by @turbolent in #2625
- Return a reference with all entitlements, when access through owned values by @SupunS in #2637
- Introduce
reverse
in Fixed/Variable sized Array type by @darkdrag00nv2 in #2654 - Introduce
filter
in Fixed/Variable sized Array types by @darkdrag00nv2 in #2678 - Allow declaration of events in interfaces by @dsainati1 in #2662
- Add a utility method to the
Test.Blockchain
struct for moving the blockchain time by @m-Peter in #2729 - Add capability field to capabilitity controllers by @turbolent in #2724
- Introduce
map
in Fixed/Variable sized Array types by @darkdrag00nv2 in #2737 - Composition of entitlement mappings by @dsainati1 in #2743
- Allow use of type code generator in any package, refactor RLP and BLS contracts by @turbolent in #2753
- Add functions on testing framework's blockchain to create/load snapshots by @m-Peter in #2763
- Add
tryUpdate
method toAccount.Contracts
by @SupunS in #2769 - Add an exists function, allows checking if capability exists/is published by @turbolent in #2778
- Introduce
String.join
function by @darkdrag00nv2 in #2762 - Introduce
String.split
function by @darkdrag00nv2 in #2791 - Check native function declarations by @turbolent in #2821
- Allow native functions to have type parameters by @turbolent in #2850
- Introduce
String.replaceAll
instance function by @darkdrag00nv2 in #2814 - Introduce
InclusiveRange<T: Integer>
type by @darkdrag00nv2 in #2523 - Allow specifying a mapping with source paths for locations in coverage reports by @m-Peter in #2859
- Add support iterating references to iterables by @SupunS in #2876
- Allow injection of functions into composite values, refactor PublicKey based on it by @turbolent in #2878
- add new
revertibleRandom
function by @tarakby in #2896 - Introduce
HashableStruct
type to represent Dictionary keys by @darkdrag00nv2 in #2872 - Allow
InclusiveRange<T>
in a for-in loop by @darkdrag00nv2 in #2892 - Add account type migration by @SupunS in #2923
- Add String normalizing migration by @SupunS in #2937
- Concretize the definition of Primitive type by @darkdrag00nv2 in #2975
- Capability controllers migration by @turbolent in #2912
- Add state migration for removing all values from private domain by @turbolent in #2974
- State migration for type values with two or more interfaces by @turbolent in #2981
- Add getter for field count to composite value by @turbolent in #3002
- Introduce dereference operator for references by @darkdrag00nv2 in #2982
- Add support for dereferencing optional references by @turbolent in #3008
- Merge range type feature by @turbolent in #3009
- Introduce
toVariableSized
to ConstantSizedArray type by @darkdrag00nv2 in #3016 - Allow issuing capability controllers using type values by @turbolent in #3018
- Entitlements Migration by @dsainati1 in #2951
- Introduce
toConstantSized
toVariableSizedArray
type by @darkdrag00nv2 in #3028 - Add v0.42 parser package under old_parser by @dsainati1 in #3039
- Use old parser for contract upgrades when legacy upgrade config option is set by @dsainati1 in #3043
- Allow reding from CSV and querying AST using (Go) JQ by @turbolent in #3051
- Contract Update Validator by @dsainati1 in #3069
- Add support for
FunctionType.Purity
in CCF codec by @fxamacker in #3107 - Add support for Attachment and AttachmentType in CCF codec by @fxamacker in #3131
- Add more support for entitlements (
ReferenceType.Authorization
) to CCF codec by @fxamacker in #3139 - Storage Explorer by @turbolent in #3147
- add backwards compatibility to old JSON decodings by @ianthpun in #3276
- Add a command to generate a mermaid diagram by @turbolent in #3307
- Add Storage.NondeterministicCommit for faster migrations by @fxamacker in #3348
- Allow types to be removed in contract updates by @dsainati1 in #3376
- Add command to dump all hard keywords by @turbolent in #3431
- Add a String.contains function by @turbolent in #3455
- Add String.index and String.count, fix grapheme boundary functions by @turbolent in #3456
- Emit events when capability controllers are issued by @turbolent in #3460
- Emit events for more Capability Controller and capability operations by @turbolent in #3464
- Add an empty implementation of
runtime.Interface
by @turbolent in #3485 - Add stack traces back to unexpected errors by @turbolent in #3492
- Handle broken contracts by @turbolent in #3482
- Merge atree register inlining v1.0 by @turbolent in #3502
- Add
Type.isRecovered
field by @turbolent in #3505 - Add sema.Access.QualifiedKeyword by @turbolent in #3552
- Allow validation of
Account.capabilities.get/borrow/publish
by @turbolent in #3590
π Improvements
- Prevent keywords from being used as names in function declarations by @dreamsmasher in #2067
- Add invalidation info to the invalid reference usage error by @SupunS in #2096
- Improve view modifier parsing and printing by @turbolent in #2117
- Make view a soft keyword by @dreamsmasher in #2121
- Add more purity annotations to built-in and standard library function types by @turbolent in #2125
- Export all keywords by @turbolent in #2131
- Add mapping function for types by @dsainati1 in #2425
- Improve formatting of access modifiers by @turbolent in #2597
- Improve update tool config by @turbolent in #2601
- Update integration tests for built-in
Crypto
contract by @m-Peter in #2615 - Use atree orderd map's Has function to test for existence by @turbolent in #2618
- Improve cyclic import handling by @SupunS in #2632
- Delegate Cadence composite
Storable()
to Atree by @fxamacker in #2621 - Delegate storage address to Atree by @fxamacker in #2622
- Temporarily remove deprecations for existing capability API by @m-Peter in #2673
- Cleanup by @turbolent in #2692
- Improve view annotations for account type functions by @turbolent in #2699
- Cadence testing framework improvements by @m-Peter in #2696
- Clean up capability value by @turbolent in #2727
- Add purity/view annotations by @turbolent in #2728
- Entitlements error improvements by @dsainati1 in #2730
- Allow
moveTime
function to accept negative time deltas for going backwards in time by @m-Peter in #2734 - Give
CompositeTypeHandler
higher precedence overgetUserCompositeType
by @m-Peter in #2717 - Improve REPL by @turbolent in #2731
- add suggestions for missing entitlements in access errors by @dsainati1 in #2736
- Improve error message for overloaded declaration by @PratikDhanave in #2738
- Improve composite and interface static types by @turbolent in #2751
- Avoid unnecessary static to sema type conversions for
Type
by @turbolent in #2750 - Make CodesAndPrograms public by @janezpodhostnik in #2746
- update account type mappings to include identity by @dsainati1 in #2761
- Add entitlement CopyValue and require it for Account.Storage.copyValue by @turbolent in #2765
- Better error messages for use of old restricted types by @dsainati1 in #2764
- Suggested fixes for
pub
andpriv
parser errors by @dsainati1 in #2767 - Improve capability API by @turbolent in #2772
- Replace
simpleTypeIDByType
with a bimap by @dsainati1 in #2775 - Use bimaps in the elaboration by @dsainati1 in #2779
- Refactor runtime test helpers into separate, reusable package by @turbolent in #2800
- Add helpers to get constructor and initializer function type for composite type by @turbolent in #2805
- Replace panic with nil return in
newInjectedCompositeFieldsHandler
by @m-Peter in #2808 - Extend type code generator by @turbolent in #2806
- Refine API of the testing framework by @m-Peter in #2783
- mjs build for cadence-parser by @nialexsan in #2851
- Improve test runtime interface by @turbolent in #2894
- Allow default functions to co-exist with empty function declarations by @SupunS in #2725
- Refactor resource-reference tracking by @SupunS in #2916
- Add types to parsed array and dictionary literals by @bluesign in #2924
- AST improvements by @turbolent in #2949
- Disallow InclusiveRange if T is a non-leaf integer by @darkdrag00nv2 in #2959
- Improve resource-reference tracking by @SupunS in #2958
- Generalize the migrations and make common codes re-usable by @SupunS in #2942
- Improve Account type migration by @SupunS in #2973
- Make entitlement set access incomparable by @turbolent in #2972
- Use IsPrimitiveType to check default destructor params by @dsainati1 in #2980
- Various improvements by @turbolent in #2979
- Report bespoke error for restricted types parsed as type arguments by @dsainati1 in #2985
- Use old hash/ID generation to remove keys by @SupunS in #2987
- Extend pragma expressions by @turbolent in #2993
- Improve error handling in migrations by @SupunS in #3001
- Improve type inference by @turbolent in #3004
- Add type assertion on values passed to
Test.assertEqual
by @m-Peter in #3014 - Improve code related to new InclusiveRange type by @turbolent in #3017
- Defensively check the dereferenced value is not a resource by @turbolent in #3010
- Improve parsing for backward compatibility rules by @turbolent in #3021
- Fix the entitlements migration by @turbolent in #3026
- Use legacy hashing function for key removal by @SupunS in #3013
- Allow dereferencing references to containers of non-resources by @turbolent in #3034
- Generalize static type migrations by @SupunS in #3033
- Add Unwrap method for ParentErrors by @peterargue in #3052
- Don't skip invalid entitlements when creating errors by @dsainati1 in #3056
- Gracefully handle runtime panics in migration by @SupunS in #3066
- Improve migrations by @turbolent in #3072
- Improve update script by @turbolent in #3070
- Add support for migrating path capability values in entitlements and static type migrations by @turbolent in #3073
- Replace existing tool to fetch network contracts with Flowdiver-based one by @turbolent in #3058
- Improve member resolvers by @turbolent in #3092
- Add more information to analysis.Diagnostic by @jribbink in #3082
- Report a proper error for swapping a resource to itself by @SupunS in #3101
- Bring back support for decoding published path capabilities by @turbolent in #3103
- Allow analysis.Load to continue with parsing/checking errors by @jribbink in #3083
- Improve migration by @turbolent in #3110
- Improve update tool: Allow releasing a particular branch by @turbolent in #3124
- Improve Cadence-1.0 contract update checker by @SupunS in #3111
- Fix location collection in contract update validator by @SupunS in #3117
- Convert untyped path capability values to ID capability values by @turbolent in #3125
- Allow registering custom type updating rules in contract update validator by @SupunS in #3120
- Rewrite owned intersection types in migration by @turbolent in #3118
- Improve update tool: Fix config, improve documentation by @turbolent in #3130
- Require added entitlements to be equal to migrated entitlements rather than supertypes by @dsainati1 in #3134
- Fix migrating values with empty intersection type by @turbolent in #3138
- Improve migrations by @turbolent in #3144
- Improve errors in state migration by @turbolent in #3154
- Improve type inference for authorized references by @dsainati1 in #3156
- Improve static type and entitlements migrations: Update array/dictionary type directly by @turbolent in #3158
- Optimize storage migration: Allow skipping of values by @turbolent in #3157
- Handle legacy type getting converted to intersection type by @turbolent in #3164
- Improve update tool by @turbolent in #3163
- Improve migration by @turbolent in #3169
- Meter computation for standard-library functions by @SupunS in #3172
- Optimize string migration: only return new value if needed by @turbolent in #3173
- Improve update tool by @turbolent in #3175
- Relax interface conformance changes in contract update validator by @SupunS in #3184
- Make the use of custom contract update rules mandatory, if exists by @SupunS in #3193
- Allow removal of enum declarations from contract interfaces for C1.0 upgrade by @dsainati1 in #3197
- Name storage migration, include in error by @turbolent in #3198
- Simplify AuthorizationMismatchError by @SupunS in #3201
- Improve Cadence 1.0 state migration by @turbolent in #3211
- Use atree readonly iterators when mutation of values is not needed by @fxamacker in #3170
- Check resource loss in
CompositeValue.RemoveField
by @turbolent in #3224 - Atree register inlining for v1.0 by @turbolent in #3048
- Check resource loss in all variable assignments by @turbolent in #3226
- Introduce a dedicated error for unreferenced slabs and expose the IDs by @turbolent in #3231
- Improve atree register inlining v1.0 by @turbolent in #3230
- Move conflicting dictionary key to new dictionary in unique storage path by @turbolent in #3227
- Improve dictionary key conflict handling by @turbolent in #3240
- Improve supported entitlements by @turbolent in #3251
- Fix staged contracts report printer - update JSON field names by @j1010001 in #3262
- Improve conformance mismatch error by @turbolent in #3274
- Further improve conformance error by including location by @turbolent in #3277
- Remove unused parameter by @turbolent in #3278
- Cache results of entitlement type conversion by @dsainati1 in #3232
- Add additional fields to account key added event by @rrrkren in #3204
- Add runtime check for transaction value moves by @SupunS in #3298
- Add predicate function and test for atree's PersistentSlabStorage.FixLoadedBrokenReferences by @turbolent in #3300
- Make static type cache an interface by @turbolent in #3315
- Improve dictionary migration by @turbolent in #3318
- Make migration error stacktrace configurable by @SupunS in #3322
- Add/improve caching in static type and entitlements migration by @turbolent in #3329
- Allow construction of paths with syntactically invalid identifiers by @turbolent in #3338
- Add invalidation for storage references by @SupunS in #3343
- Fix string formatting for values by @turbolent in #3370
- Update the storage explorer to the latest version of flow-go by @turbolent in #3374
- Forbid interface removals by @dsainati1 in #3380
- Improve dictionary value migration by @turbolent in #3381
- Decrease move operator precedence relative to cast operators by @dsainati1 in #3368
- Improve dictionary key migration by @turbolent in #3386
- Remove stacktrace from errors by @SupunS in #3392
- Improve update tool by @turbolent in #3395
- Cache results of static types migration and entitlements migration by @turbolent in #3396
- Put feature that allows type removals in contract updates behind a feature flag, disabled by default by @turbolent in #3410
- Also migrate path-capability and account-capability storage maps by @turbolent in #3411
- Ensure contracts cannot be borrowed with an authorization by @turbolent in #3421
- Improve dump-builtin-types command: Handle parameterized types by @turbolent in #3425
- Improve InclusiveRange type by @turbolent in #3426
- Improve the commit-based version handling in the update tool by @turbolent in #3440
- Improve update tool by @turbolent in #3441
- Improve handling of releases in update tool by @turbolent in #3442
- Allow borrowing of capability with subtype by @turbolent in #3449
- Simplify subtyping by @turbolent in #3447
- Speed up update tool by @turbolent in #3468
- Changed data type of account key index to uin32 by @janezpodhostnik in #3465
- Improve Cadence composite to Go struct decoding by @turbolent in #3469
- Improve intersected type error message by @turbolent in #3483
- Bring back members of path capability value by @turbolent in #3486
- Migrate capability values targeting storage paths by @turbolent in #3503
- Improve storage capability migration by @turbolent in #3516
- Infer missing borrow type for storage capabilities by @SupunS in #3519
- Improve borrow type inferrence for storage path capabilities by @turbolent in #3520
- Improve storage path capability migration reporting by @SupunS in #3522
- Add capability stored path info to the report by @SupunS in #3524
- Fix contract update validation: Check updated contract name by @turbolent in #3530
- Check if CBOR tag number is reserved by atree before using it to encode Cadence values by @fxamacker in #3532
- Improve address decoding error by @turbolent in #3560
π Bug Fixes
- Fix test matcher by @turbolent in #2130
- Update Stable Cadence branch, fix view function expression parsing by @turbolent in #2141
- Transaction pre-conditions must also be
view
by @dsainati1 in #2171 - fix view parsing for expressions by @dreamsmasher in #2164
- Add attachment keywords to keyword lists by @dsainati1 in #2499
- Fix crash on entitlement mappings with empty outputs by @dsainati1 in #2592
- Populate
Message
,LocationRange
fields forAssertionError
onTest.expect
function by @m-Peter in #2607 - Fix data race in sema/type_test.go by @fxamacker in #2624
- Fix potential data races by @turbolent in #2633
- Add support for max parameter count (internal #128) by @SupunS in #2656
- Remove spurious resource loss errors (internal #130) by @SupunS in #2657
- Fix checking of reference expressions involving optionals (internal #129) by @SupunS in #2658
- Prevent recursive transfers (internal #133) by @SupunS in #2659
- Handle destroyed optional references by @SupunS in #2661
- Make more
AuthAccount
functionsview
by @dsainati1 in #2666 - Fix positioning of default function conflict errors by @dsainati1 in #2665
- Fix entitlement memory metering by @SupunS in #2668
- Fix interface inheritance for nested interfaces by @dsainati1 in #2674
- Update reference invalidation check to consider optional resources by @SupunS in #2680
- Wrap host env errors with external errors by @SupunS in #2683
- Fix interface member inheritance by @dsainati1 in #2686
- Fix storage iteration and error misclassification by @SupunS in #2676
- Fix error on reference creation with invalid type by @SupunS in #2687
- Invalidate references to nested resources upon the move of the outer resource by @SupunS in #2460
- Hex encode user input in error to avoid invalid UTF-8 by @fxamacker in #2704
- Use thread safe data structures for entitlement maps by @dsainati1 in #2716
- Properly meter the creation of entitlement static types by @dsainati1 in #2723
- Fix doc (pretty printing) for function declaration without function block by @turbolent in #2774
- Port internal #143 by @turbolent in #2793
- Properly check removed expression for resource loss by @dsainati1 in #2798
- Fix Test framework's TestAccount's type name by @SupunS in #2802
- Fix capability controller deletion by @turbolent in #2788
- meter and deduplicate included entitlement relations by @dsainati1 in #2810
- Use kr/pretty instead of go-test/deep to prevent empty diffs, remove gocap by @turbolent in #2819
- properly access-check optional chaining with entitlements by @dsainati1 in #2825
- Check
before
statements inview
contexts by @dsainati1 in #2835 - Skip adding malformed entitlement relations to maps by @dsainati1 in #2838
- Require full codomain of map when assigning to mapped field by @dsainati1 in #2840
- Port internal 141: Fix swapping in resource array by @turbolent in #2844
- Port internal 144: Fix swap statement evaluation by @turbolent in #2845
- Port internal fix 145: Prevent re-deploy in same transaction by @turbolent in #2846
- Properly set base on loaded attachments during attachment iteration by @dsainati1 in #2847
- Fix memory metering for loading stored values by @turbolent in #2509
- [stable-cadence] Fix field assignment via references by @SupunS in #2868
- Entitlement mapping escape fixes by @dsainati1 in #2877
- Fix string atree value comparison: handle storage as slab by @turbolent in #2895
- Removing an attachment is an impure operation by @dsainati1 in #2890
- [v0.42] Prevent nested contract deployments by @SupunS in #2904
- Prevent nested contract deployments by @SupunS in #2902
- [v0.42] Fix nested resource moves by @SupunS in #2930
- [v0.42] Fix AuthAccount creation by @SupunS in #2932
- Fix nested resource moves by @SupunS in #2931
- Fix AuthAccount creation by @SupunS in #2933
- Fix transaction resource-typed field move by @SupunS in #2938
- Include interface conformances when computing the supported entitlements of an interface by @dsainati1 in #2946
- Port bug fixes from
v0.42.5-patch.1
by @SupunS in #2955 - Port bug fixes from v0.42.5-patch.1 by @SupunS in #2956
- Fix GetNativeCompositeValueComputedFields by @turbolent in #2977
- Statically prevent referenced-typed subexpressions in default arguments to destroy events by @dsainati1 in #2996
- Prevent use of
base
variable in default destroy event arguments outside attachments by @dsainati1 in #2999 - Prevent use of non-attachment type names in default arguments by @dsainati1 in #3000
- prevent creation of nested storage references by @dsainati1 in #3020
- Fix
revertibleRandom
with module test by @turbolent in #3025 - Remove Insert-entitled access for toVariableSized by @turbolent in #3031
- Fix gaps in migrations by @turbolent in #3036
- Remove backticks around suggested fixes for parser errors by @jribbink in #3046
- Handle optional storage references by @turbolent in #3064
- Fix entitlements migration by @turbolent in #3065
- Remove reference to
destroy
from sema.UnknownSpecialFunctionError by @jribbink in #3074 - Port Validator fix to master by @dsainati1 in #3078
- Fix intersection type migration: also migrate interface types by @turbolent in #3084
- Make capability ID mapping thread-safe by @turbolent in #3085
- Allow contract interface types in intersection types by @turbolent in #3089
- Consider inherited interfaces when checking for member clashes in intersection types by @turbolent in #3093
- Fix FunctionType.Equal() to check Purity equality by @fxamacker in #3105
- Fix EntitlementSetAuthorization.Equal() by making it ignore order of elements by @fxamacker in #3137
- Migrate static types of arrays and dictionaries by @SupunS in #3141
- Fix location ranges by @turbolent in #3151
- Produce a better error message when failing to reference type-erased references by @dsainati1 in #3150
- Make SupportedEntitlements thread safe by @dsainati1 in #3152
- Check invalidation of the looped reference by @SupunS in #3160
- Fix intersection type's legacy type getting converted to intersection type by @turbolent in #3166
- Implicitly track composite reference in attachment iteration by @dsainati1 in #3168
- Handle unparameterized Capability static types by @turbolent in #3196
- Fix address conversion by @turbolent in #3195
- Only encode reference static type in legacy format if it was decoded as such by @turbolent in #3199
- Fix conformance checking for enums in contract update validator by @SupunS in #3191
- Properly handle
Never
type argument toCapabilities.get
by @dsainati1 in #3203 - Add
TypeArgumentsCheck
s to certain builtin functions by @dsainati1 in #3208 - Proper type checking for resource use after validation on two-value transfers by @dsainati1 in #3176
- Convert references based on borrow type by @SupunS in #3213
- Fix migration of built-in types by @turbolent in #3205
- Resource Reference Invalidation Improvements by @dsainati1 in #3181
- Port fixes of v0.42.8-patch.4 by @turbolent in #3079
- Fix built-in type import by @turbolent in #3212
- Fix dereferencing non-reference type by @turbolent in #3216
- Handle missing type arguments in type argument checks by @turbolent in #3234
- Clear
inAssignment
when recursing into subexpressions by @dsainati1 in #3236 - Introduce special self-variable by @SupunS in #3235
- Fix type indexing resource loss by @SupunS in #3257
- Fix resource-loss check in dictionary set-key by @SupunS in #3267
- Handle account types in contract update validator by @SupunS in #3284
- Fix restricted typed field updates by @SupunS in #3283
- Fix Cadence 1.0 migration of dictionary values when using atree inlined data by @fxamacker in #3316
- Remove invalid ID capability error by @turbolent in #3325
- Fix borrowing of contract interface by @turbolent in #3327
- Port bug fixes by @SupunS in #3331
- Handle missing interfaces in Cadence 1.0 contract update validator by @turbolent in #3337
- Check dictionary keys when checking the ability for dereferencing by @SupunS in #3339
- Wrap host-function typed member-values with a bound-function by @SupunS in #3342
- Fix restricted type checking in contract-update-validator by @SupunS in #3352
- Add deprecated path Capability into backwards compability by @ianthpun in #3373
- Remove incorrect caching from migrations by @turbolent in #3375
- Fix error message by @turbolent in #3379
- Don't short circuit references on member access when entitlements are involved by @dsainati1 in #3387
- Prevent storage reference to another reference by @turbolent in #3404
- Add access top type to model inaccessible access for identity maps by @dsainati1 in #3406
- Fix JSON output by @turbolent in #3413
- Improve parsing of commit from Go's pseudo-version in update tool by @turbolent in #3418
- Simplify nil-coalescing checking by @SupunS in #3423
- Fix toConstantSized by @turbolent in #3446
- Fix String.split by @turbolent in #3457
- Fix String.replaceAll by @turbolent in #3458
- Fix account link migration by @turbolent in #3461
- Fix data races caused by empty string singleton by @turbolent in #3481
- Fix supertype inference by @SupunS in #3493
- Return user error when CCF encodes attachment field by @fxamacker in #3494
- Fix EntitlementDeclaration EndPos by @jribbink in #3498
- Fix migration of storage path capabilities by @turbolent in #3511
- Report and skip storage caps with missing borrow type by @SupunS in #3514
- Avoid conversion from sema-type to StaticType in storage cap migration by @SupunS in #3517
- Add support for exporting unmigrated path capabilities by @SupunS in #3538
- Handle invalid index-expressions in view assignment by @SupunS in #3539
- Make capabilities iteration ordered by @SupunS in #3542
- Fix program recovery by @turbolent in #3548
- Fix Cadence Parser NPM Package by @bluesign in #3551
- Fix contract update error when old program has errors by @turbolent in #3554
- Handle unmigrated path capabilities and path links in Account.capabilities functions by @turbolent in #3562
- Fix runtime type of Account_Inbox_claim() function by @SupunS in #3592
- Fix interpreting default functions by @SupunS in #3591
π§ͺ Testing
- Add tests for entitlement inheritance between interfaces by @dsainati1 in #2564
- Add cyclic imports tests by @SupunS in #2629
- Add test for borrowing as inherited interface by @SupunS in #2722
- Add test for attachment on built-in composite by @turbolent in #2732
- Add test for inner container mutation while iterating outer by @SupunS in #2733
- Add tests for invalidation of references created with index/field-access by @SupunS in #2758
- Add test for container mutation while iterating by @SupunS in #2960
- Test type order insignificance by @turbolent in #2967
- Test usage of potentially broken types by @turbolent in #3030
- Add tests for using keywords as field names by @SupunS in #3057
- Minor improvement in a
revertibleRandom
test by @tarakby in #3060 - Add tests for migrating reference to optional type by @SupunS in #3123
- Add test for nested container value migration by @SupunS in #3142
- Add a test case for non-public interface members by @turbolent in #3260
- Add test for untyped optional nested-reference creation by @SupunS in #3317
- Add reproducer as test for Cadence 1.0 migration issue #3288 by @fxamacker in #3314
- Add back transaction
execute
tests by @SupunS in #3345 - Add some more tests for string functions by @turbolent in #3453
- Update Fungible token transfer benchmark by @SupunS in #3471
- Add checker tests for nil-coalesce type inference by @SupunS in #3495
- Add regression tests for nil-coalescing bug by @turbolent in #3553
- Smoke test update of enum key in dictionary by @turbolent in #3556
- Add contract-update test for removing a field from nested resource by @SupunS in #3559
- Add test for modifying events during contract updates by @SupunS in #3561
π Documentation
- Add meeting notes for 2023-08-15 by @turbolent in #2740
- Add notes for 2023-09-12 meeting by @turbolent in #2780
- Add meeting notes for 2023-11-15 by @turbolent in #2944
- Fixes links to new docs site by @joshuahannan in #3075
- Improve development documentation by @turbolent in #3189
- Update staged-contracts-report-2024-06-12T13-03-00Z-testnet.md by @vishalchangrani in #3429
- Remove mention of feature branch by @chasefleming in #3444
- add 2024-07-03 staged contracts report by @zhangchiqing in #3450
- add staged contracts report 07-10 by @zhangchiqing in #3462
- add root block for migration 07-10 by @zhangchiqing in #3463
- Add mainnet migration report for Aug 21 by @j1010001 in #3547
- Staged contracts report Aug 27 by @j1010001 in #3557
Other Changes
- Merge master into Stable Cadence feature branch by @turbolent in #1922
- Merge master to Stable Cadence feature branch by @turbolent in #1943
- Sync Stable Cadence by @turbolent in #2014
- Sync Stable Cadence feature branch by @turbolent in #2051
- Sync Stable Cadence feature branch by @turbolent in #2089
- Refactor reference tests by @SupunS in #2086
- Sync Stable Cadence feature branch by @turbolent in #2098
- Sync stable cadence branch with master by @SupunS in #2111
- Sync Stable Cadence by @turbolent in #2124
- Clean up function types and type annotations by @turbolent in #2126
- Sync Stable Cadence branch by @turbolent in #2150
- Update Stable Cadence feature branches in downstream dependencies by @turbolent in #2158
- Merge master into Stable Cadence by @turbolent in #2189
- Sync master to Stable Cadence by @turbolent in #2219
- Sync Stable Cadence by @turbolent in #2230
- Optimize keyword testing by @turbolent in #2295
- Sync Stable Cadence by @turbolent in #2311
- backport #2302 to stable cadence (fix docstring parsing after functions) by @dreamsmasher in #2329
- Sync Stable Cadence by @turbolent in #2333
- Sync Stable Cadence by @dsainati1 in #2367
- Sync Stable Cadence by @turbolent in #2402
- Sync stable-cadence branch with master by @SupunS in #2455
- Sync stable-cadence branch with master by @SupunS in #2477
- Merge master into Stable Cadence feature branch by @turbolent in #2513
- Merge
release/v0.39.12
tomaster
by @github-actions in #2591 - Merge Entitlements feature branch into Stable Cadence by @dsainati1 in #2594
- Merge master to Stable Cadence feature branch by @turbolent in #2593
- Sync mutability restrictions branch with stable-cadence by @SupunS in #2600
- Add support for forks to compatibility check by @turbolent in #2612
- Set permissions in backward compatibility check by @turbolent in #2613
- Merge
release/v0.39.13-stable-cadence
tofeature/stable-cadence
by @github-actions in #2611 - Don't skip benchmark for forks by @turbolent in #2616
- Add mailmap by @turbolent in #2628
- Use diff command to generate diff by @turbolent in #2636
- Sync Stable Cadence by @turbolent in #2634
- Bump version to
v0.39.14
by @SupunS in #2660 - Sync stable cadence branch with master by @SupunS in #2667
- Rename mutability entitlements by @SupunS in #2690
- Update to Go 1.20, improve random value generation by @turbolent in #2694
- Merge
release/v0.40.0
tomaster
by @github-actions in #2695 - Update storage iteration value check and related tests by @SupunS in #2702
- Sync Stable Cadence branch with master by @turbolent in #2701
- Update mutability restrictions feature branch by @turbolent in #2714
- Add
cadence-tools/test
as a dependency to the language server by @SupunS in #2742 - Sync
feature/range-type
branch withmaster
by @SupunS in #2747 - Sync Stable Cadence feature branch by @turbolent in #2755
- Clean up intersection types by @turbolent in #2757
- Merge
master
into Stable Cadence by @dsainati1 in #2770 - Merge
release/v0.41.0
tomaster
by @github-actions in #2786 - Merge
release/v0.41.1
tomaster
by @github-actions in #2795 - Sync Stable Cadence by @turbolent in #2796
- Assign issues to group by @turbolent in #2797
- Remove unused composite type to interface type conversion function by @turbolent in #2804
- Sync Stable Cadence by @turbolent in #2820
- Merge
release/v0.42.0
tomaster
by @github-actions in #2852 - Sync Stable Cadence by @turbolent in #2854
- Add computation metering to the new stdlib functions by @SupunS in #2880
- Use
ComputationKindLoop
for internal array-value iterations by @SupunS in #2891 - Merge
release/v0.42.1
tomaster
by @github-actions in #2893 - Add meeting notes for 2023-10-24 by @turbolent in #2897
- Sync stable cadence branch with master by @SupunS in #2899
- Merge
release/v0.42.2
tov0.42
by @github-actions in #2905 - [v0.42] Port adding new
revertibleRandom
function by @SupunS in #2910 - Merge
release/v0.42.3
tov0.42
by @github-actions in #2911 - Update tests for
Crypto
contract to the latest testing framework API by @m-Peter in #2856 - Remove
StandardLibraryHandler
method fromTestFramework
interface by @m-Peter in #2927 - Merge
release/v0.42.4
tov0.42
by @github-actions in #2934 - Fix Semgrep by @turbolent in #2939
- Merge v0.42 into master by @turbolent in #2940
- Merge
release/v0.42.5
tov0.42
by @github-actions in #2941 - Sync stable-cadence branch with master by @SupunS in #2964
- Remove unsafeRandom by @turbolent in #2966
- Sync stable-cadence branch with master by @SupunS in #2968
- Cleanup reference tracking by @SupunS in #2969
- Make checkParameterizedTypeIsInstantiated recursive by @darkdrag00nv2 in #2915
- Sync
feature/range-type
branch withmaster
by @SupunS in #2995 - Merge
release/v1.0.0-preview.2
tomaster
by @github-actions in #3024 - Upgrade
exp
package version by @tarakby in #3027 - Merge
release/v1.0.0-M3
tomaster
by @github-actions in #3041 - Merge
release/v1.0.0-M4
tomaster
by @github-actions in #3049 - Merge
release/v1.0.0-M5
tomaster
by @github-actions in #3067 - Merge
release/v1.0.0-M6
tomaster
by @github-actions in #3100 - Update configuration of downstream dependencies by @turbolent in #3095
- Merge
release/v1.0.0-M7
tomaster
by @github-actions in #3106 - Dependencies got updated to onflow/flowkit/v2 by @turbolent in #3109
- Merge
release/v1.0.0-M8
tomaster
by @github-actions in #3129 - Pass location-range to value-interface methods by @SupunS in #3140
- Merge
release/v1.0.0-M9
tomaster
by @github-actions in #3148 - Merge
release/v1.0.0-M10
tomaster
by @github-actions in #3159 - Update version by @SupunS in #3161
- Merge
release/v1.0.0-preview.11
tomaster
by @github-actions in #3165 - Merge
release/v1.0.0-preview.12
tomaster
by @github-actions in #3167 - Merge
release/v1.0.0-preview.13
tomaster
by @github-actions in #3171 - Merge
release/v1.0.0-preview.14
tomaster
by @github-actions in #3174 - Merge
release/v1.0.0-preview.15
tomaster
by @github-actions in #3180 - Merge
release/v1.0.0-preview.16
tomaster
by @github-actions in #3185 - Update CODEOWNERS by @turbolent in #3190
- Merge
release/v1.0.0-preview.17
tomaster
by @github-actions in #3200 - Merge
release/v1.0.0-preview.18
tomaster
by @github-actions in #3202 - Bump atree version in Cadence v1.0 for new features (e.g. deduplication of Cadence dictionary type info) by @fxamacker in #3178
- Merge
release/v1.0.0-preview.19
tomaster
by @github-actions in #3217 - Sync atree inlining branch with master by @SupunS in #3179
- Merge master into v1.0 atree register inlining feature branch by @turbolent in #3229
- Bump onflow/atree to latest version in feature/atree-register-inlining-v1.0 by @fxamacker in #3223
- Merge
release/v1.0.0-preview.20
tomaster
by @github-actions in #3239 - Tool for converting staged contracts migration report from JSON to Markdown by @SupunS in #3249
- Bump atree version in master branch by @fxamacker in #3254
- Bump atree version in feature/atree-register-inlining-v1.0 by @fxamacker in #3256
- Update atree register inlining 1.0 feature branch by @turbolent in #3259
- Merge
release/v1.0.0-preview.21
tomaster
by @github-actions in #3269 - Merge master into atree register inlining v1.0 branch by @turbolent in #3270
- Adding migration result for staged contracts migration, testnet, Apri⦠by @j1010001 in #3263
- Adding staged contracts migration output JSON from Apr 17 to migratio⦠by @j1010001 in #3273
- Merge
release/v1.0.0-preview.22
tomaster
by @github-actions in #3279 - Adjust branches of downstream dependency checks by @turbolent in #3280
- Replace colons in staged contract reports by @jribbink in #3281
- Adding migration result for Testnet state from Apr 24 by @j1010001 in #3285
- Add basic stats and section on newly failing contracts by @j1010001 in #3286
- Merge
release/v1.0.0-preview.23
tomaster
by @github-actions in #3289 - Update update tool config by @turbolent in #3292
- Bump atree version in master branch by @fxamacker in #3293
- Bump atree version in feature/atree-register-inlining-v1.0 by @fxamacker in #3295
- Merge
release/v1.0.0-preview.24
tomaster
by @github-actions in #3302 - Update atree inlining v1.0 feature branch by @turbolent in #3301
- Merge
release/v1.0.0-preview.25
tomaster
by @github-actions in #3305 - Update atree inlining 1.0 branch by @turbolent in #3306
- Adding migration report for TN state snapshot taken May 1st by @j1010001 in #3311
- Update atree register inlining v1.0 by @turbolent in #3320
- Merge
release/v1.0.0-preview.26
tomaster
by @github-actions in #3321 - adding staged contracts migration report from TN state taken on May 8 by @j1010001 in #3330
- Update flow-go related configuration by @turbolent in #3319
- Bump atree version to v0.8.0-rc.2 in feature/atree-register-inlining-v1.0 by @fxamacker in #3346
- Bump atree version to v0.7.0-rc.2 in master branch by @fxamacker in #3347
- Merge
release/v1.0.0-preview.27
tomaster
by @github-actions in #3349 - Sync feature/atree-register-inlining-v1.0 with master by @fxamacker in #3351
- Merge
release/v1.0.0-preview.28
tomaster
by @github-actions in #3353 - Merge
release/v1.0.0-preview.29
tomaster
by @github-actions in #3358 - Update atree register inlining v1.0 by @turbolent in #3359
- Uploading migration results for TN state snapshot taked May 13 by @j1010001 in #3360
- move may15 staged contracts report to the correct directory by @j1010001 in #3361
- Bump atree version to v0.8.0-rc.3 in feature/atree-register-inlining-v1.0 by @fxamacker in #3365
- Adding migration report - TN May 22 by @j1010001 in #3367
- Add migration environment endpoint to the report by @j1010001 in #3369
- Merge
release/v1.0.0-preview.30
tomaster
by @github-actions in #3377 - Update atree register inlining v1.0 by @turbolent in #3378
- Merge
release/v1.0.0-preview.31
tomaster
by @github-actions in #3382 - Add report from May 29 by @j1010001 in #3384
- Update atree register inlining feature branch to v1.0.0-preview.30 by @turbolent in #3383
- Merge
release/v1.0.0-preview.32
tomaster
by @github-actions in #3389 - Update atree inlining branch by @turbolent in #3390
- Update copyright notice by @turbolent in #3391
- Update to Go 1.22 by @turbolent in #3393
- Merge
release/v1.0.0-preview.33
tomaster
by @github-actions in #3399 - adding report from June 5 TN state migration by @j1010001 in #3400
- Update feature/atree-register-inlining-v1.0 to latest master by @fxamacker in #3414
- Merge
release/v1.0.0-preview.34
tomaster
by @github-actions in #3415 - Merge v1.0.0-preview.34 into feature/atree-register-inlining-v1.0 by @turbolent in #3416
- adding report from June 12 TN state migration by @zhangchiqing in #3420
- Update update tool config by @turbolent in #3427
- adding report for Testnet migration on June 19 by @j1010001 in #3433
- Update update tool config by @turbolent in #3435
- Merge
release/v1.0.0-preview.35
tomaster
by @github-actions in #3437 - Update atree inlining cadence v1.0 feature branch by @turbolent in #3438
- add migrations data for 2024-06-26 by @zhangchiqing in #3439
- add root block info for migration net by @zhangchiqing in #3443
- Add root block info for migration 2024-07-03 by @zhangchiqing in #3451
- Update atree register inlining v1.0 branch by @turbolent in #3454
- Merge
release/v1.0.0-preview.36
tomaster
by @github-actions in #3452 - Merge
release/v1.0.0-preview.37
tomaster
by @github-actions in #3466 - Update atree inlining cadence v1.0 by @turbolent in #3467
- Merge
release/v1.0.0-preview.38
tomaster
by @github-actions in #3470 - Update atree inlining branch by @turbolent in #3472
- Update feature/atree-register-inlining-v1.0 by @fxamacker in #3474
- adding report for TN migration Jul 17 by @j1010001 in #3476
- Cleanup
ConvertSemaAccessToStaticAuthorization
method by @SupunS in #3479 - Merge
release/v1.0.0-preview.39
tomaster
by @github-actions in #3487 - Update atree register inlining 1.0 branch by @turbolent in #3488
- adding migration result from Jul 24, preview 34 by @j1010001 in #3489
- Move migration report files for 2024-07-17 into correct directory by @turbolent in #3490
- Merge
release/v1.0.0-preview.40
tomaster
by @github-actions in #3496 - Update atree inlining v1.0 branch by @turbolent in #3501
- Update feature/atree-register-inlining-v1.0 to use atree v0.8.0-rc.5 by @fxamacker in #3500
- Merge
release/v1.0.0-preview.42
tomaster
by @github-actions in #3504 - adding migration report from Testnet migration on 31st July by @j1010001 in #3506
- Add migration report for aug 7 by @zhangchiqing in #3510
- Update staged-contracts-report-2024-08-07T10-00-00Z-testnet.md by @j1010001 in #3513
- Merge
release/v1.0.0-preview.43
tomaster
by @github-actions in #3512 - Merge
release/v1.0.0-preview.44
tomaster
by @github-actions in #3515 - Merge
release/v1.0.0-preview.45
tomaster
by @github-actions in #3518 - Merge
release/v1.0.0-preview.46
tomaster
by @github-actions in #3521 - Merge
release/v1.0.0-preview.47
tomaster
by @github-actions in #3523 - add staged report for aug 12 by @zhangchiqing in #3525
- Merge
release/v1.0.0-preview.48
tomaster
by @github-actions in #3526 - Add staged contracts report for testnet spork on aug 14 by @zhangchiqing in #3531
- Crescendo Mainnet migration report Aug 16 by @j1010001 in #3541
- Merge
release/v1.0.0-preview.49
tomaster
by @github-actions in #3545 - Merge
release/v1.0.0-preview.50
tomaster
by @github-actions in #3549 - Merge
release/v1.0.0-preview.51
tomaster
by @github-actions in #3558
New Contributors
- @PratikDhanave made their first contribution in #2738
- @jribbink made their first contribution in #3046
- @ianthpun made their first contribution in #3276
- @chasefleming made their first contribution in #3444
Full Changelog: v0.39.12...v1.0.0