Pact 4.7.0
4.7.0
This marks the 4.7.0 version of the Pact smart contract language.
Eval
- Improve advice implementation (#1187)
- Fix inconsistent trace output (#1153)
- Fix coverage, restore defun advice (#1151)
- Create persistence dirs if missing (#1148)
- Differentiate between errors on-chain and off-chain (#1185)
- Don't display function documentation in non-repl context (#1185)
- Runtime type checking on return types now enforced (#1209)
Natives
- Allow native function versioning in eval (#1195)
- Add new native
dec
for integer to decimal conversion (#1150) - Implement
shift
in terms of other natives for better gas costing (#1208) - Intialize body of
env-data
to an empty object instead of Null (#1188)
read-*
functions are now recoverable if the key doesn't exist. That is, a call such as(read-string 'key)
is recoverable if'key
does not exist in the data payload by surrounding it withtry
. As an example,(try "string if key isn't present" (read-string "key"))
. This applies to
read-integer
,read-string
,read-decimal
,read-keyset
andread-msg
(as long asread-msg
has a key supplied as an argument - #1223 )
Typechecking
- Fix Typechecker treatment of special binding forms (#1212)
Formal Verification
- Enable warnings during symbolic eval (#1175)
- Remove
emit-event
shim (#1168) - Remove
hash
shims (#1158) - Remove
enumerate
shim (#1155) - Remove
distinct
shim (#1154) - Remove
describe-namespace
shim (#1156) - Remove
is-principal
,typeof-principal
,create-principal
, andvalidate-principal
shims (#1160) - Remove
format
shim (#1159)
Documentation
- Remove mention of private defpacts from the reference manual (#1207)
- Add documentation for
enumerate
(#1176)
Misc
- New PR and Issue templates introduced.
Thanks to everyone for their contributions, especially @CryptoPascal31 for his wonderful feedback and commentary, and welcome to our newest Pact team member, @ak3n!.