- Add "advice" plus LCOV code coverage (#861)
- General advice mechanism for e.g. instrumenting performance bracketing
-c
in pact tool outputs coverage tocoverage/lcov.info
relative to loaded file
- Emit synthetic cross-chain events (#875)
- Emits
X_YIELD
on cross-chain initiation andX_RESUME
on cross chain resumption for any defpact:(pact.X_YIELD targetChain:string continuationName:string continuationArgs:[*])
(pact.X_RESUME sourceChain:string continuationName:string continuationArgs:[*])
- Thus a cross-chain transfer send from 0 to 1 would be
(pact.X_YIELD "1" "coin.transfer-crosschain" ["Bob" "Alice" 10.0])
on chain 0 then(pact.X_RESUME "0" "coin.transfer-crosschain" ["Bob" "Alice" 10.0])
on chain 1.
- Emits
- Support blessed modules and add source chain in crosschain (#862)
- Blessed modules are now supported for resuming cross-chains initiated pre-upgrade.
- Initiation of cross-chain captures/transmits source chain in output in field
.continuation.yield.sourceChain
- New natives (#859,#874,#860,#862)
enumerate
to build sequenced listsstr-to-list
andconcat
to transform strings to arrays and backdistinct
to de-dupe listsemit-event
to not fire event defcaps when emitting, and allowing arbitrary parameter values
- Miscellaneous
- Elide info from Modref JSON (#856)
- Move SigData and related types into library (#852)
- More robust TH and avoid deprecated use of star (#870)
- Enable benchmarks in nix ghc build (#869)
- Remove thyme dependency (#867)
- Remove swagger support (#866)
- Add time benchmarks (#868)
- Remove setup from gas results (#865)
- Improve gas golden output (#864)
- Conditional z3 and servant (#850)
- Module References (#817,#839)
- Pact Events:
- Backward compatible JSON (#820)
- @event tag for capabilities (#830)
env-events
for testing (#827)
- Fix runtime typechecker for lists (#825)
with-applied-env
,expect-that
testing tools
- Pact events (#819)
- Type-only module reference support (#814,#816)
- Update SBV and other deps (#812)
- ApiReq: expose builder, migrate String -> Text (#805)
- Fix install module governance issue
NFData
instances for common Pact Service types (#800)- Analysis (#798):
- Soft support for
is-charset
(analysis does not choke on this primitive) - Fix column delta calculation
- Static Cap tracing
- Upgraded to SBV 8.6
- Soft support for
- Additional benchmarks for 10x operations/tx (#795)
- Fix bad commandline rendering from tool on load failure (#793)
- Better sanitization of sqlite db names (#787)
- Bugfix for
base64
primitives (#788)
- Add the commands
sign
,add-sig
, andcombine-sigs
for working with signatures (#759) - Decode StackFrame in JSON output (#755)
- CommandResult golden coverage (#754)
- Use CFFI for aeson (upstreamed from chainweb) (#749)
- Add gas logs to eval result (#748)
- Add missing case in Eval (#764)
- Misc updates to docs
- Add "Literate Flags" in execution config (#722)
- Add flag to allow reads in local (#777)
Note this is the version that deploys with Chainweb 1.4.x, with a finalized gas model and managed capability improvements (auto-management, autonomous management)
- Improve ApiReq for creationTime, TTL, haddocks for PublicMeta and friends (#753)
- Allow for flexible interface manager spec, and "auto-managed" caps (#746)
- Cover module persistence with golden test (#745)
- Execution config (#741)
- Fail
define-namespace
on bad atom structure (#737) - Finalize gas model (#734)
- Use ByteString readFile and explicit UTF8 decoding (#735)
- Enable autonomous managed capabilities (#733)
- benchmark and improve rounding (#732)
base64-(encode|decode)
natives- Bugfix: you can now declare user guards as constants
- keysets are now set-based so that keyset equality works regardless of key order
- Bugfix: module guards with managed caps on demand installs works properly
- Signature checks only consider acquired and pending caps
- Better docs all around
- Managed capabilities (see documentation)
- Production Gas model v1
- Added signing utilities
- Interfaces now admit
defcap
,defschema
, anddefpact
declarations - Add explicit import system. Users may now import function, constant and schema symbols
- Enforce unique names for in-module declarations
- Typechecking interfaces now succeeds
- Previous block hashes added to public data
- TTL + creation time added to public data
- Added new natives:
is-charset
: provides support for testing string conformity with a given charset.CHARSET_LATIN1
: built-in constant defining the latin1-charsetCHARSET_ASCII
: built-in constant defining the ascii-charsettest-capability
overload for granted capabilitiesexpect-failure
overload allowing users to match on substrings of errors Currently suppported charsets include: ASCII and ISO 8859-1 (latin1 supplement) character sets
- Bug fix disallowing access to Capabilities via FQN
- Steps with rollbacks now disallowed w/ cross-chain yields
- Network-id requirement in payloads
- Analysis:
- list and object length analysis
with-default-read
analysis bugs fixed- Unbound column invariants
- vacuous property detection and report
- New native function
try
has been added - Bug fixes to the typechecker
- Improved documentation
- All non key-related data for
decrypt-cc20p1305
is now required to be base64-encoded - Improved documentation
- Analysis:
- bitwise operators are now supported
- Add SPV endorsement functionality to
defpact
s - '=' now compares only like terms
- User guards can now be created as closures of boolean-valued functions
- Improved swagger documentation
- Improved error messages
- Added new decryption and keypair validation primitives for CHACHA20-POLY1305 Authenticated Encryption with Associated Data (AEAD)
- Added bitwise integer native functions
&
,~
,shift
,xor
, and|
- Add user-facing
chain-data
native schema type - Documentation for namespaces and interfaces
- Add base-64 case to
str-to-int
and improve error messages - Add
int-to-str
native - Analysis:
- traces now render on same line
- added support pact step signatures, and governance analysis
- added support for
chain-data
pact native - upgrade z3 version support to 4.8.5
- Scope checking for interfaces
- Check for module in stack when enforcing module guard
- Output test failures on error
- fix describe table output and meta pretty instance
- Guards and capabilities, with full model-checking support
- Scoped namespaces for modules and keysets
- Adds module governance function
- Migrate all runtime pact state to DB backend: modules, pacts, transaction ID management
- Improved transaction non-malleability: signatories and chain version in payload
- Adds SPV support with configurable backend
- Multiple Cryptographic signature schemes: ED25519, ECDSA
- Adds Table-based Gas model
- Standardize on CommandResult in all API endpoints
- CommandResult adds gas consumed, logs, and metadata fields
- CommandResult's "result" field changed to output reliable, user-friendly Terms and errors.
- Adds continuation proof field to ContMsg
- Adds public metadata to Pact Command API
- Format all hashes in Base64url
- Adds typechecking for lists,
yield
, andresume
- Typechecker and analysis support for partial schemas
- Removes support for non-string keys in objects
- Rejects decimal literals with too many digits
defpact
can run in local mode- Disallow rollback on the last step of a pact
- Replaces REPL's
env-step
andenv-pactid
withcontinue-pact
andpact-state
- Adds REPL functions
chain-data
andenv-chain-data
- Better compile and typecheck errors
- Pretty printing
- Working Windows build
- Analysis:
- Adds analysis for non-literal constants
- Adds pact analysis tools developer guide
- Adds analysis for
pact-id
,defpact
,yield
, andresume
- Improves output from verification
- Supports analysis of (bounded-size) lists and nested objects
- Pins z3 to a specific version (4.8.3)
- Uses timeout of 1 second for all z3 queries
- Swagger for API
- Korean readthedocs
- Interfaces copy models onto implementing modules
- Better/tighter compile phase, remove TBless, TImplements
- Fix bug preventing correct reporting of argument values in falsifying models from the property checker
- Pact Interfaces
- Localized docs in JP, EN
- Add configurable gas limit for
pact -s
- Remove file server from
pact -s
- Fix empty list runtime type enforcement bug
- Enforce top-level only for builtins
pact-version
,enforce-pact-version
, etc - Various changes to support web repl
- use cryptonite for Blake2 implementation
- new
str-to-int
builtin - Numerous fixes to pact reference docs
- New compiler using megaparsec
- analysis supports
str-to-int
andread-integer
built-ins - new
row-exists
,read
,column-of
,column-written
properties @model
now always takes a list when applied on modules, functions, or schemas.- properties can now be applied to an entire module
- Fix bug in analysis impl of decimal arithmetic
- Model falsifications are now presented as execution traces with example values
- Fix keyset enforce of old keyset
- Pluggable gas model with simple fixed-rate implementation
- "Pact" continuation API support
- Allow qualified keyset predicate function names
- Allow commas to delimit list literals
- Improve cp example: authorization, load scripts
- Accept keyset name as string
- Document Pact database backend format
- Nix build support
- Break up Lang and Runtime type files
Analysis:
- New
@model
/@doc
syntax. - We now display all the argument and variable values, reads, writes, keysets, and function result for invalidating models.
- Introduced
row-read-count
androw-write-count
, specifying the number of times a row is read or written. - Table quantification: it's now possible to quantify over tables, though in this release you can't yet quantify over columns.
- Object literals and
at
now work in properties. Object comparison with=
and!=
also now works. - Analysis now typechecks references to tables (ie it knows table schemas and the types you can read and write to them) and return types.
verify
now typechecksdefconst
s, so it now checks a superset oftypecheck
.- We now check each invariant individually and give a separate invalidating model for each invariant.
- Property parse errors are now less confusing and include location info.
read-decimal
andenforce-one
are now supported.- Bug fix: Analysis of
and
andor
now (correctly) short-circuits. - The property checking system is now included in the documentation.
defproperty
: New properties can now be defined at the module level.
- New
- Fix support for property checker in Atom
- Preview support of of property-based formal verification
- Fix fold type signature
- Refactor ghcjs code into external project
- Various bug fixes in typechecker
- GHC 8.4 support (semigroup instances, statistics-0.14)
- "No-Leftpad" dependency management implementation
- Nested schema support
- Pact tool improvements: auto-complete, readline support, better multiline
- Fix documentation for
format
form - Internal changes: TableName in AST, expose evalRepl', token parsing
- build improvements: weeder, hlint enforcement
keylog
returns rows indexed by txid
- Support for reading JSON arrays/objects to pact lists/objects
- Microsecond support in time objects
- new
keylog
function for obtaining logs by key
- Fix issue where extra parens silently ignored in repl scripts/prompt
pact
tool improvements: better stdin support, '-d' for debug output of load
- Bugfix for
and
regression
- ghcjs build working, typechecking not supported in browser yet
- native blake2 support, only for ghcjs
- Restore callstack, better rendering, runtime errors at top callsite
contains
addeddrop
,take
for objects- allow empty objects
- short-circuiting
and
,or
constantly
,identity
added
- "Pure" execution capability, used in keyset enforcement
enforce-one
added- Pact tests counted in HUnit results
- defpact overhaul to support public/escrow
- New query model:
select
,where
,and?/or?/not?
reverse
andsort
added- Better typechecking on partial application, TC bugfixes
- BREAKING:
format
takes list instead of var args - BREAKING:
pact-id
replacespact-txid
- Consts memoized at load
enforce-version
added
- Pact tool now supports '-a' to format API requests and '-g' to generate ED25519 keypairs
- Fixed error output (was breaking Atom parsing)
- Changelog removed from reference docs
- Module Hashes:
use
support - use accepts barewords
- better output in
describe-module
list-modules
addedprint
REPL command- "transactional awareness" in Persist
yield
andresume
added for use in defpactsyielded
,sig-keyset
repl functions- JSON defaults for keysets, better dispatch of builtin preds
pact-version
function added.
- Privacy API:
private
endpoint, address fields in command - Typechecker support for
at
,filter
,map
,fold
,compose
- Persist layer standardized for easier extension
- Library features: Interpreter module, NFData all the things, Eval uses exceptions
- Types module breakup
- "pact -serve": new REST API server for app development
- pact-lang-api.js javascript package
json
repl function,read-msg
can take zero args to get entire data payload
- Support for types: inference, runtime enforcement, typechecking
- Numeric negation literals
deftable
,defschema
in module definitionswith-keyset
nowenforce-keyset
with no body
- New function
listModules
, improveddescribeModule
- REPL function
load
with optional reset arg