All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
sender()
function to get message sender address
- Upgrade
func
to0.4.2
- Windows paths support
pow
is now compile-only function
- Use new FunC wasm bundle
- exported
check
function for language server support
- Contracts now can be deployed only to the basic workchain unless
masterchain
settrue
- Checking field initialisation in init function
- Contracts now work only with basic workchain. To enable masterchain support set
masterchain: true
intact.conf.json
pow
function for exponentiationaddress()
compile-time function for creating addresses from stringscell()
compile-time function for creating cells from base64 stringsinterfaces
field to ABI- report workchain support in interfaces
logger
interface to programmatic API
verify
function to verify compiled package
- Fixing npm exports
- Fixing npm exports for typescript
- Fixing npm exports for typescript
- Fixed browser/node typings and exports
- Fixed browser environment execution
- Fixed missing
mkdirp
dependency
- Fixed cli command
@ton-lang/compiler/node
to invoke compiler from node similar how cli works@ton-lang/compiler/browser
to invoke compiler from browser
- Removed jetton library from stdlib. It would be re-introduced after 1.0 version with more thought put into it.
- Display line and column numbers in error messages to be able to navigate to the error in the editor
- Execution order of struct and message fields
initOf
argument type checks
- Tact contracts are now Argument-addressable meaning that they depend on init arguments and code hash only. Init function is now called when first valid message is received.
- Refactoring of allocator
- Moving contract's load function to the begining of the execution
- Moving contract's save function to the end of the execution
- moving
debug
flag fromexperimental
toparameters
intact.config.json
- Unknown fields in config are now considered an error
- Allow contracts without fields
- Typescript bindings are now working in browser and doesn't have
ton-emulator
dependency map
syntax now uses<>
instead of[]
for future compatibility with generics
- Allow
Builder
type as a field type similar toCell
andSlice
- Allow
String
type as a field type
- Error codes in reports
- Client-friendly typescript bindings
- Change repository locations
emptyMap()
for creating empty maps- Allowing assigning
null
value to a map variable (same as callingemptyMap()
)
- Update
dump
function to handle booleans and strings, better type checking or arguments - Report
org.ton.debug.v0
interface if debug mode is enabled - Update bindings generator to support
ton-emulator >= v2.1.0
- Importing
func
files
- Upgrade
func
to0.4.1
- Enforce
func
version in generated files - Enable critical pragmas by default
- Enable inlining in a lot of places thanks to fixed crashes in
func
- Optional
Address
fields in typescript bindings
Address.asSlice
for manual address parsing@stdlib/content
library withcreateOffchainContent
functions
>>
and<<
operations- Type checking of struct constructors
- Fix missing func compiler in distributive
- TextMate Grammar for syntax highlighting
- Embedd
func
compiler to package - Better builder types
- Moved docs to
ton-docs
repository
beginTailString
andbeginStringFromBuilder
for starting aStringBuilder
Slice.asString
for converting slice to aString
(without checks of contents)
- Fixing passing non-nullable type as second argument to map's
set
operation
- New
2022.v12
func compiler
- Improve gas usage in
storeBool
-newAddress
function to create a new address from chain and hash
-getConfigParam
to get system configuration
- Deep contract dependencies
loadAddress
inSlice
Fixing missing NPM release
- Changed message id algorithm to the one based on type signatures instead of tlb
- Dictionaries in typescript bindings
- Introduced packaging compilation step that packages a contract to a single package that can be deployed in predictable way.
tact-bindings
to build bindings to non-tact contracts
- Assignability type checks
toCell
to all structs and messages- restored disassembler as part of a compilation flow
typescript
bindings parser of structs and messages
abi.pack_cell
andabi.pack_slice
- Updated codegen to prefix function names with a
$
to avoid clashing with system functions random
andrandomInt
that are correctly initialized on first use unlike native one- Changed the way get and init methods expect their arguments and return values to match func-like primitives
- non-nullable value could break the nullable variable memory representation
- Large bindings generator refactoring to match new
ton-core
andton-emulator
packages
Deployable
trait in@stdlib/deploy
- Constants in contracts
- Global constants
- Added
SendRemainingBalance
,SendRemainingValue
,SendIgnoreErrors
,SendPayGasSeparately
,SendDestroyIfZero
constants in stdlib - Added
emptyCell
andemptySlice
helpers - Added jettons example
require
now accepts two arguments, second one must be a string literal that has error message. This error message then will be exported to ABI- Optional
Address
fields are not encoded using native representation
- Renamed Map's
get2
toget
and removingget
from keywords list.
- Fixed missing call arguments verification
String
literals and variablesInt.toString()
andInt.toFloatString()
StringBuilder
for gas-efficient string building- Global compile-time
ton
function that conversts string to Int during compile time. checkDataSignature
similar to funccheck_data_signature
String.asComment
for conversion text to a comment payloadResumable
trait, allows to resume contract operations once it was stopped- Comment receiver that allows to receive arbitrary comment
String.asSlice
cast string to a slice for parsing- Binary shift operators
>>
and<<
Slice.fromBase64
that converts text slice that has base64 to binary representation (both classic and url)Slice.asCell
,Builder.asCell
,Cell.asSlice
,Builder.asCell
convenience functionsSlice.loadCoins
that reads coins from slicemyBalance
that returns current balance of a contract before execution phase
contractAddress
now accepts single argument of typeStateInit
and always produces address for workchain. Old method is renamed tocontractAddressExt
.hashCell
andhashSlice
are now extension functionhash
onSlice
andCell
- Removed some keywords such as
message
,contract
,init
to allow use this names as variable names - Renamed
receiveBounced
tobounced
- Fixing importing tact with providing extension, now
import "./lib";
andimport "./lib.tact";
are equivalent. - Fixing extension function generation
- Fixing clashing of variable names with func primitives and global functions
- Fix fallback and bounce argument type resolving
- Fixed
loadUint
/preloadUint
- Fixed invalid generation of
>=
and>
operators
supported_interfaces
TEP support. TACT now automatically builds a list of supported interfaces of a contractIPFS
-based ABI reporting. TACT now automatically calculates and embeds ABI hash into smart contract and prepares a file to upload to IPFS.