Releases: aeternity/aesophia
Releases · aeternity/aesophia
v8.0.1
v8.0.0
Added
- Bitwise operations for integers:
band
,bor
,bxor
,bnot
,<<
and>>
. Int.mulmod
- combined builtin operation for multiplication and modulus.Crypto.poseidon
- a ZK/SNARK-friendly hash function (over the BLS12-381 scalar field).Address.to_bytes
- convert an address to its binary representation (for hashing, etc.).- Raw data pointers added to AENS. In short we have introduced a new namespace
AENSv2
; they contain types similar to the oldAENS
;AENS.name
and
AENS.pointee
, where the latter now has a constructorDataPt(bytes())
. All
AENS actions have been moved toAENSv2
, andAENSv2.lookup
and
AENSv2.update
consume and produce the new types. The oldAENS
namespace
only contains the old datatypes, that can be used to interface existing
contracts. Standard libraryAENSCompat
is added to convert between old and
new pointers. - Introduce arbitrary sized binary arrays (type
bytes()
); addingBytes.split_any
,
Bytes.to_fixed_size
,Bytes.to_any_size
,Bytes.size
,String.to_bytes
,
andInt.to_bytes
; and adjustBytes.concat
to allow both fixed and arbitrary
sized byte arrays. Chain.network_id
- a function to get hold of the Chain's network id.- Allowing
Bytes.to_any_size
in calldata creation, to enable creation of arguments
with arbitray size. - Signature literals
sg_...
- they have typesignature
(which is an alias forbytes(64)
).
Changed
Crypto.verify_sig
is changed to havemsg : bytes()
. I.e. the
signed data can be of any length (used to be limited tobytes(32)
/hash
).- System aliases are handled explicitly when converting to a Sophia value, this is only
observable forsignature
where a value of typesignature
is now represented as a
(new) signature literal. - Allow self-qualification, i.e. referencing
X.foo
when in namespaceX
. - Support for OTP-27 - no changes in behavior.
Removed
Bitwise.aes
standard library is removed - the builtin operations are superior.
Full Changelog: v7.4.1...v8.0.0
v8.0.0-rc1
Added
- Bitwise operations for integers:
band
,bor
,bxor
,bnot
,<<
and>>
. Int.mulmod
- combined builtin operation for multiplication and modulus.Crypto.poseidon
- a ZK/SNARK-friendly hash function (over the BLS12-381 scalar field).Address.to_bytes
- convert an address to its binary representation (for hashing, etc.).- Raw data pointers added to AENS. In short we have introduced a new namespace
AENSv2
; they contain types similar to the oldAENS
;AENS.name
and
AENS.pointee
, where the latter now has a constructorDataPt(bytes())
. All
AENS actions have been moved toAENSv2
, andAENSv2.lookup
and
AENSv2.update
consume and produce the new types. The oldAENS
namespace
only contains the old datatypes, that can be used to interface existing
contracts. Standard libraryAENSCompat
is added to convert between old and
new pointers. - Introduce arbitrary sized binary arrays (type
bytes()
); addingBytes.split_any
,
Bytes.to_fixed_size
,Bytes.to_any_size
,Bytes.size
,String.to_bytes
,
andInt.to_bytes
; and adjustBytes.concat
to allow both fixed and arbitrary
sized byte arrays. Chain.network_id
- a function to get hold of the Chain's network id.- Allowing
Bytes.to_any_size
in calldata creation, to enable creation of arguments
with arbitray size.
Changed
Crypto.verify_sig
is changed to havemsg : bytes()
. I.e. the
signed data can be of any length (used to be limited tobytes(32)
/hash
).
Removed
Bitwise.aes
standard library is removed - the builtin operations are superior.
Full Changelog: v7.4.1...v8.0.0-rc1
v7.4.1
Changed
- Improve how includes with relative paths are resolved during parsing/compilation. Relative include paths are now always relative to the file containing the
include
statement.
Fixed
- Disable unused type warnings for types used inside of records.
Full Changelog: v7.4.0...v7.4.1
v7.4.0
v7.3.0
v7.2.1
v7.2.0
[7.2.0]
Added
- Toplevel compile-time constants
namespace N = let nc = 1 contract C = let cc = 2
- API functions for encoding/decoding Sophia values to/from FATE.
Removed
- Remove the mapping from variables to FATE registers from the compilation output.
Fixed
- Warning about unused include when there is no include.
v7.1.0
[7.1.0]
Added
- Options to enable/disable certain optimizations.
- The ability to call a different instance of the current contract
contract Main = entrypoint spend(x : int) : int = x entrypoint f(c : Main) : int = c.spend(10)
- Return a mapping from variables to FATE registers in the compilation output.
- Hole expression.
Changed
- Type definitions serialised to ACI as
typedefs
field instead oftype_defs
to increase compatibility. - Check contracts and entrypoints modifiers when implementing interfaces.
- Contracts can no longer be used as namespaces.
- Do not show unused stateful warning for functions that call other contracts with a non-zero value argument.
Fixed
- Typechecker crashes if Chain.create or Chain.clone are used without arguments.