|
1 | 1 | # Revision history for plutarch
|
2 | 2 |
|
3 |
| -# 1.5.0 |
| 3 | +# 1.10.0 -- 29-01-2025 |
| 4 | + |
| 5 | +## Added |
| 6 | + |
| 7 | +* `pmax` and `pmin` as new methods of `POrd` |
| 8 | +* `#>` and `#>=` as argument-flipping versions of `#<` and `#<=` |
| 9 | +* `pallBS` to `Plutarch.ByteString` (originally from `plutarch-extra`) |
| 10 | +* `pisHexDigit` to `Plutarch.String` (originally from `plutarch-extra`) |
| 11 | +* `preverse` and `pcheckSorted` to `Plutarch.List` (originally from |
| 12 | + `plutarch-extra`) |
| 13 | +* `ptraceIfNothing`, `pisJust`, `pmaybe`, `pfromMaybe`, `pjust`, `pnothing`, |
| 14 | + `pAssertPJust` to `Plutarch.Maybe` (originally from `plutarch-extra`) |
| 15 | +* `pexpectJustC` to `Plutarch.TermCont` (originally from `plutarch-extra`) |
| 16 | +* `PCountable` and `PEnumerable` type classes, as well as instances |
| 17 | +* `PByte` type as a limited Plutarch-level equivalent to `Word8` |
| 18 | +* `PLogicSemantics`, and construction functions, to help use of logical |
| 19 | + `PByteString` operations |
| 20 | +* `pandBS`, `porBS`, `pxorBS`, `pcomplementBS` mirroring CIP-122 operations |
| 21 | +* `pzeroesBS`, `ponesBS`, `preplicateBS`, as wrappers for CIP-122's |
| 22 | + `ReplicateByte` |
| 23 | +* `compileOptimized` in `Plutarch.Internal`, to optimize the generated UPLC |
| 24 | +* `PBitString` and associated functionality for CIP-122 and CIP-123 operations |
| 25 | + on bits, in `Plutarch.BitString` |
| 26 | +* `PEitherData`, a `Data`-encoded counterpart to `PEither`, plus some functions |
| 27 | +* `Positive` type in `Plutarch.Positive` that is Haskell level equivalent of |
| 28 | + `PPositive` |
| 29 | +* `PUnsafeLiftDecl` and `PConstantDecl` instances for `PPositive` |
| 30 | +* `evalScriptUnlimited` to `Plutarch.Evaluate` as unrestricted version of `evalScript` |
| 31 | +* `pmapMaybe` to `Plutarch.Maybe` |
| 32 | +* `PLiftable` type class |
| 33 | +* `Plutarch.Builtin.Bool` module |
| 34 | +* `Plutarch.Internal.Eq` module |
| 35 | +* `Plutarch.Internal.Ord` module |
| 36 | +* `pif'` to `Plutarch.Prelude` |
| 37 | +* `pcond` as a Plutarch equivalent to multi-way if |
| 38 | +* `PLiftable PRational` instance |
| 39 | +* `PDataFields`, `DerivePDataLiftable`, `PDataNewtype` now exported from the prelude |
| 40 | +* New methods for `Data` and Scott encoding derivation |
| 41 | +* `optimizeTerm` for separate optimization via UPLC from compilation |
| 42 | +* New numerical hierarchy in `Plutarch.Internal.Numeric`, plus new instances |
| 43 | +* `PNatural` type, corresponding to the Haskell `Natural` |
| 44 | +* Support for SoP encoding of data |
| 45 | +* `PSemigroup` and `PMonoid`, as improved Plutarch versions of `Semigroup` and |
| 46 | + `Monoid` |
| 47 | +* Unrolling utilities--`punrollBound`, `punrollUnbound`, and `punrollUnboundWhole`--is added to `Plutarch.Unroll` |
| 48 | +* `evalTerm'` is added to `Plutarch.Evaluate` |
| 49 | + |
| 50 | +## Changed |
| 51 | + |
| 52 | +* `pconsBS` now takes a `PByte` argument instead of a `PInteger` one |
| 53 | +* `pindexBS` now returns a `PByte` instead of a `PInteger` |
| 54 | +* `pexpModInteger` is now in `Plutarch.Integer` |
| 55 | +* `PMaybeData` no longer uses `PDataRecord` |
| 56 | +* `Plutarch.Internal` is now `Plutarch.Internal.Term` to better reflect its |
| 57 | + actual contents |
| 58 | +* `PBool` definition is now in `Plutarch.Builtin.Bool` |
| 59 | +* `PEq` type class definition is now in `Plutarch.Internal.Eq` |
| 60 | +* `PPartialOrd` and `POrd` type class definitions are now in |
| 61 | + `Plutarch.Internal.Ord` |
| 62 | +* `pif`, `pif'`, `pand`, `pand'`, `por`, `por'`, `pnot`, `#&&`, `#||` are |
| 63 | + now in `Plutarch.Builtin.Bool` |
| 64 | +* `Term s PRational` is now `Fractional` directly, instead of by way of |
| 65 | + `PFractional` |
| 66 | +* `Plutarch.Num` is now `Plutarch.Internal.Numeric` |
| 67 | +* `PIntegral` type class is now in `Plutarch.Internal.Numeric` |
| 68 | +* `Plutarch.Integer` is now `Plutarch.Builtin.Integer` |
| 69 | +* `#<`, `#<=`, `#>=`, `#>` are now part of `POrd` |
| 70 | +* `PPositive` (and `Positive`) are now exported from the prelude, along with |
| 71 | + some functionality |
| 72 | +* `PEither`, `PPair`, `PMaybe` and `PList` use SOP encoding instead of Scott |
| 73 | + |
| 74 | +## Removed |
| 75 | + |
| 76 | +* `plutarch-extra`, as all its functionality has been folded into Plutarch |
| 77 | + itself |
| 78 | +* `pbyteStr` (as it's deprecated) |
| 79 | +* `Plutarch.Bitwise` module, as its functionality has been superseded by more |
| 80 | + type-safe operations in `Plutarch.ByteString` and `Plutarch.BitString` |
| 81 | +* `PUnsafeLiftDecl` and `PConstantDecl` as they are replaced by `PLiftable` |
| 82 | +* `Plutarch` module, as it served no useful purpose and was just confusing |
| 83 | +* `PType` synonym (use `S -> Type` honestly instead) |
| 84 | +* `PSBool` and functionality (now in `plutarch-ledger-api`) |
| 85 | +* `PFractional` type class (only one instance, unlikely to ever have more) |
| 86 | +* `PIsData PRational` instance (made no sense) |
| 87 | +* `PPartialOrd` (all its functionality is now in `POrd`) |
| 88 | +* `Plutarch.FFI` module |
| 89 | +* `PNum` and `PIntegral` (replaced by new numerical hierarchy) |
| 90 | + |
| 91 | +### Fixed |
| 92 | + |
| 93 | +* Bug in `ppredecessorN` for `PPosixTime` where order of subtraction was flipped |
| 94 | +* Bugs in `pintersection` and `phull` that assigned wrong open/close bounds |
| 95 | +* Bug in `pafter` that will give opposite result when comparing against infinities |
| 96 | + |
| 97 | +# 1.9.0 - 25-09-2024 |
| 98 | + |
| 99 | +## Added |
| 100 | + |
| 101 | +* Cryptographic hashing utilities:- `pripemd_160`, `pkeccak_256`, and `pblake2b_224` to `Plutarch.Crypto` |
| 102 | +* PlutusV3 BLS primitives to `Plutarch.BLS` |
| 103 | +* PlutusV3 Bitwise primitives to `Plutarch.Bitwise` |
| 104 | +* `unsafeEvalTerm` to `Plutarch.Evaluate` |
| 105 | +* `PCountable` and `PEnumerable` type classes in `Plutarch.Enum` |
| 106 | + |
| 107 | +## Changed |
| 108 | + |
| 109 | +* Bumped `plutus-core` version to `1.33.0.0` |
| 110 | +* Updated getArity mapping to handle the new builtins in `Plutarch.Internal` |
| 111 | +* Updated `printScript` in `Plutarch.Internal.Other` to new PlutusCore version. |
| 112 | + |
| 113 | +# 1.8.1 - 11-07-2024 |
| 114 | + |
| 115 | +## Added |
| 116 | + |
| 117 | +* `applyArguments` to `Plutarch.Evaluate` |
| 118 | + |
| 119 | +# 1.8.0 - 24-06-2024 |
| 120 | + |
| 121 | +## Changed |
| 122 | + |
| 123 | +* Bumped `plutus-core` version to `1.30.0.0` |
| 124 | + |
| 125 | +# 1.7.0 - 11-06-2024 |
| 126 | + |
| 127 | +## Added |
| 128 | + |
| 129 | +* `PDataNewtype` derivation aid |
| 130 | +* `PTryFrom PData PBool` instance |
| 131 | + |
| 132 | +## Changed |
| 133 | + |
| 134 | +* Bumped `plutus-core` version to `1.29.0.0` |
| 135 | + |
| 136 | +# 1.6.0 - 27-05-2024 |
| 137 | + |
| 138 | +## Added |
| 139 | + |
| 140 | +* `ptraceInfo` and `ptraceDebug`, which allow tracing only when a particular log |
| 141 | + level is active. |
| 142 | +* `logLevel` to get the `LogLevel` of a `Config`. |
| 143 | +* `LogLevel` to indicate what level of logging we'd like to run with. |
| 144 | +* `ptraceInfoShowId`, `ptraceInfoError`, `ptraceInfoIfTrue`, `ptraceInfoIfFalse` |
| 145 | + (and similar for `Debug`), mirroring the deprecated originals, but with the |
| 146 | + logging level included. |
| 147 | +* `Eq`, `Show`, `Pretty`, `ToJSON`, `FromJSON` instances for `Config`. |
| 148 | +* `Pretty`, `ToJSON`, `FromJSON` instances for `TracingMode`. |
4 | 149 |
|
5 |
| -- Bump `plutus-core` and `plutus-ledger-api` to `1.20.0.0` |
| 150 | +## Changed |
| 151 | + |
| 152 | +* `ptrace`, `ptraceShowId`, `ptraceError`, `ptraceIfTrue` and `ptraceIfFalse` |
| 153 | + are now synonyms of `ptraceInfo` (and similar), and also deprecated. |
| 154 | +* `Config` now includes a `LogLevel` as well as a `TracingMode`. |
| 155 | +* `Config` now has pattern synonyms to make it look like a sum type with two |
| 156 | + arms: `NoTracing` which indicates that we do not trace, and `Tracing` which |
| 157 | + contains a `TracingMode` and a `LogLevel`. |
| 158 | +* `TracingMode` no longer includes `NoTracing`, as this has been superseded by |
| 159 | + the new `Config`. |
| 160 | +* `tracingMode` now returns in a `Maybe`. |
| 161 | +* `Config` is now a `Semigroup` and a `Monoid`, with the second mimicking the |
| 162 | + semantics of its old `Default` instance. |
| 163 | +* `TracingMode` is now a `Semigroup` based on generality. |
| 164 | +* `TracingMode` is now an `Ord` based on generality. |
| 165 | +* `TracingMode` now has `Eq` and `Show` instances. |
| 166 | + |
| 167 | +## Removed |
| 168 | + |
| 169 | +* `Default` instance for `Config`. |
| 170 | +* `data-default` direct dependency. |
| 171 | + |
| 172 | +# 1.5.0 - 26-01-2024 |
| 173 | + |
| 174 | +## Changed |
| 175 | + |
| 176 | +* Bump `plutus-core` and `plutus-ledger-api` to `1.20.0.0` |
| 177 | + |
| 178 | +## Removed |
| 179 | + |
| 180 | +* `Plutarch.LedgerApi`, plus all submodules, as these are now under `plutarch-ledger-api` |
6 | 181 |
|
7 | 182 | # 1.4.0
|
8 | 183 |
|
|
0 commit comments