Skip to content
This repository has been archived by the owner on Aug 26, 2022. It is now read-only.

Latest commit

 

History

History
284 lines (182 loc) · 10.5 KB

CHANGELOG.md

File metadata and controls

284 lines (182 loc) · 10.5 KB

Revision history for plutarch

Unreleased

  • TermCont: Parametrize by result type; add MonadFail instance; etc.

    Also, export from Plutarch.TermCont, and then from Plutarch.Prelude (TermCont is no longer exported by Plutarch.Internal).

    Started by: #226

  • Add PlutusType generic deriving support for data encoded Plutarch types, via PIsDataRepr and PIsDataReprInstances.

    All existing ledger api types now have PlutusType instances - not just PMatch.

    Started by: #250

  • Add PDataRecord construction utilities, necessary for full usage of data encoded PlutusType instances.

    In particular, you can build PDataRecords with pdcons and pdnil - refer to the guide for more info.

    pdcons and pdnil are also exported from Plutarch.Prelude.

    Also add PlutusType instance for PDataRecord.

    Module: Plutarch.DataRepr.Internal

    Started by: #250

  • Export PLabeledType ((:=)) from Plutarch.Prelude.

    Added by: #250

  • Add pconstantData - an efficient way of building data encoded constants directly.

    This is semantically equivalent to pdata . pconstant but does not do any extra builtin function call.

    Module: Plutarch.Builtin

    Added by: #251

  • Added APIs for constructing, compiling, serialising & hashing Plutarch scripts.

    Type synonyms for Plutarch-typed scripts PValidator,PMintingPolicy & PStakeValidator.

    mkValidator, mkStakeValidator & mkMintingPolicy functions, for creating Plutus API compatible scripts.

    validatorHash, mintingPolicySymbol & stakeValidatorHash to obtain script hashes.

    Module: Plutarch.V1.Api

    See: Plutarch.ScriptsSpec in plutarch-test for usage examples.

    Added by: #267

  • Add PTuple construction and related utilities.

    Module: Plutarch.Api.V1.Tuple

    Added by: #255

  • Add PIsData instances for PUnit and PBuiltinPair (PAsData a) (PAsData b).

    It's helpful to mentally note that PTuple a b, PAsData (PTuple a b) and PBuiltinPair (PAsData a) (PAsData b) all have the exact same underlying representation. See Plutarch.Api.V1.Tuple for no-op conversion functions.

    Module: Plutarch.Builtin

    Added by: #255

  • Add implicit pfromData for hrecField and the record dot. Add implicit pfromData for pfield.

    Module: Plutarch.DataRepr

    Added by: #235

1.1.0

  • General repository changes.

    • The Plutarch repo has moved to GHC 9.2.1. Projects using GHC 8.10.7 should still be able to depend on Plutarch. There is CI in place to ensure compatibility.

      Relevant PR: #86

      CI added by: #188

    • Major nix updates.

      Started by: #75

    • Benchmarks and perf diffing on PRs to keep track of performance regressions.

      Worked on through:

  • Significantly improve plam type inference - works seamlessly now (!!!)

    Worked on through:

    Relevant issue: #2

  • Many, many optimizations on generated code.

    Worked on through:

  • Add haddocks and examples to many functions

    Started by: #49

  • Add many new utility functions, instances, and builtin function synonyms.

    Breakdown of additions
    • Boolean utilities:- pnot, #&&/pand/pand', #||/por/por'

      Module: Plutarch.Bool

      Added in: #30

    • ByteString utilities:- pconsBS, psliceBS, plengthBS, pindexBS

      Module: Plutarch.ByteString

      Added in: #30

    • Cryptographic hashing utilities:- psha2_256, psha3_256, pblake2b_256, pverifySignature

      Module: Plutarch.Crypto

      Added in: #30

    • PEq, POrd, Semigroup, and Monoid instances for PUnit

      Module: Plutarch.Unit

      Added in: #30

    • UTF-8 encode/decode functions:- pencodeUtf8, pdecodeUtf8

      Module: Plutarch.String

      Added in: #30

    • PIntegral typeclass

      Module: Plutarch.Integer

      Added in: #30

    • PIntegral instance for PInteger

      Module: Plutarch.Integer

      Added in: #30

    • PEq instance for PData and PAsData

      Module: Plutarch.Builtin

      Added in: #38

    • Tracing functions:- ptrace, ptraceIfFalse, ptraceIfTrue, ptraceError

      Module: Plutarch.Trace

      Added in: #39

    • Builtin pair construction utility:- ppairDataBuiltin

      Module: Plutarch.Builtin

      Added in: #50

    • Loads of awesome list utilities thanks to #63!

      Module: Plutarch.List

    • PIsData instance for PBool

      Module: Plutarch.Builtin

      Added in: #110

  • Add PIsData for conversion between normal builtin types and their Data representation.

    Initially added in: #31

  • Add PAsData for preserving more type information regarding Data encoded values.

    Initially added in: #31

  • Add PDataRepr and related machinery to ergonomically work with Constr encoded data.

    There are also generic derivers (!!) to implement the related typeclasses for custom data types.

    Module: Plutarch.DataRepr

    Worked on through

  • Add PLift and PConstant - enabling conversion between Plutarch terms and Haskell types.

    This comes with convenient derivers. See the relevant section on the guide.

    Module: Plutarch.Lift; another deriver within Plutarch.DataRepr.Internal

    Worked on through

  • Deprecate punsafeConstant. Use pconstant instead!

  • Add PIsList & PList + instances for PBuiltinList - ergonomic list functions for all!

    Module: Plutarch.List; another instance in Plutarch.Builtin

    Added in: #63

  • Mutually recursive data types, scott encoded records and more provided by Plutarch.Rec!

    Module: Plutarch.Rec

    Worked on through:

  • The Plutus V1 ledger api types implemented in Plutarch!

    Module: Plutarch.Api.V1

    Worked on through:

  • Implement Plutarch rational type.

    Module: Plutarch.Rational

    Added in: #89

  • The s in Term s _ has a fixed kind now. data S, s :: S

    Module: Plutarch.Internal

    Added in: #115

  • Add PType, a synonym to S -> Type - i.e the kind of Plutarch types. In particular, the kind of the 3rd type parameter of Term.

    Module: Plutarch.Internal

    Added in: #115

  • Convenient do syntax with QualifiedDo (!!!)

    Module: Plutarch.Monadic

    Added in: #119

  • Add DerivePNewtype to derive common typeclasses for Plutarch newtypes.

    Module: Plutarch; Plutarch.Builtin; Plutarch.Bool; Plutarch.Integer

    Added in: #151

  • A whole lot more exports from Plutarch.Prelude

    Module: Plutarch.Prelude

    Added in: #181

  • Move out punsafe* functions from Plutarch and into Plutarch.Unsafe.

  • Add generic deriving for PlutusType with scott encoding representation.

    Added in: #189

Thanks to:

  • @blamario
  • @emiflake
  • @Geometer1729
  • @kozross
  • @L-as
  • @MatthewCroughan
  • @sergesku
  • @srid
  • @t1lde
  • @TotallyNotChase

1.0.0

Somewhat stable release