Language features
- Optimized message deserialization with native loading of
Maybe Cellfields: PR #2661 - Optimized message serialization with native stores of
Maybe Cellfields: PR #2647 - Zero inequality comparison optimization: PR #2655
- Compiler now generates more readable code for augmented assignment operators: PR #2710
- [fix] Compiler now disallows
ton()with empty or blank string: PR #2681 - [fix] Compiler now disallows
ton()with invalid number value or negative numbers: PR #2684 - [fix] Compiler now shows a more informative error message for abstract functions and constants without a body: PR #2688
- [fix] Compiler now correctly processes nested structs with default values in the interpreter: PR #2687
- [fix] Compiler now correctly compiles contracts with optional struct fields with default values: PR #2683
- [fix] Compiler now shows a more informative error message for unsupported assembly functions inside traits and contracts: PR #2689
- [fix] Compiler now shows a more informative error message for
Slice? as remainingfields: PR #2694 - [fix] Compiler now shows a more informative error message for fields with unsupported trait types: PR #2695
- [fix] Compiler now correctly generates code for functions with several wildcard parameters: PR #2703
- [fix] Compiler now checks that "override" functions and constants have a virtual or abstract modifier in the parent trait: PR #2700
- [fix] Compiler now throws an error if a non-optional method is called on an optional type: PR #2770
- [fix] Compiler now throws an error when inheriting from two traits that have methods with the same name: PR #2773
- [fix] Compiler now correctly generates code for the unary plus operator: PR #2807
- [fix] Compiler now shows a full error message for maps with optional value: PR #2810
- [fix] Compiler now correctly detects mutually recursive types: PR #2814
- [fix] Generated TypeScript wrappers now export all functions for serialization/deserialization: PR #2706
- [fix] Processing of
nullvalues of optional types in thedumpbuiltin: PR #2730 - [fix] Support constants as the second parameter of the
require()function: PR #2808
Standard Library
- Added compute phase exit code constants reserved by the Tact compiler:
TactExitCodeNullReferenceException,TactExitCodeInvalidSerializationPrefix,TactExitCodeInvalidIncomingMessage,TactExitCodeConstraintsError,TactExitCodeAccessDenied,TactExitCodeContractStopped,TactExitCodeInvalidArgument,TactExitCodeContractCodeNotFound,TactExitCodeInvalidStandardAddress,TactExitCodeNotBasechainAddress: PR #2527 - Added the
SignedBundlestruct and the correspondingverifySignaturemethod: PR #2627 - Added the
sendRawMessageandsendRawMessageReturnForwardFeefunctions instead of the deprecatednativeSendMessageandnativeSendMessageReturnForwardFeefunctions correspondingly: PR #2755 - Optimized the
sha256()function to about ~270 less gas used per call and added thekeccak256()function: PR #2775
Tooling
- Added source code formatter: PR #2768
TypeScript third-party API
- Support contract parameters in the AST printer: PR #2658
Docs
- Fixed code example of the
initOfexpression to highlight support for contract parameters: PR #2550 - Fixed the description of the Tact-reserved exit code 129 and expanded descriptions of functions that can throw it, such as
Message.fromCell()andMessage.fromSlice(): PR #2604 - Added "Learn Tact in Y minutes" page to the Book: PR #2375
- Ensured that variables are always shown declared with immediate initialization, and made it clear in the descriptions of the
letstatement: PR #2742 - Fixed the description of the Unicode escape upper bound (U+10FFFF): PR #2752
- Added generation of
llms.txt,llms-full.txt(full version), andllms-small.txt(compact version, with non-essential content removed): PR #2763 - Added description of the specialized math functions, such as
pow2()andlog2(), to the gas best practices page: PR #2771 - Added
BasechainAddressto the gas best practices page: PR #2802