Skip to content

Commit fd7d1c1

Browse files
authored
Merge pull request #806 from Plutonomicon/staging
v1.10.0 release
2 parents 4b67fd3 + f42e24e commit fd7d1c1

File tree

609 files changed

+49352
-96643
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

609 files changed

+49352
-96643
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ result*
33
.direnv
44
.pre-commit-config.yaml
55
.nvimrc
6+
plutarch-docs/book

CHANGELOG.md

Lines changed: 177 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,183 @@
11
# Revision history for plutarch
22

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`.
4149

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`
6181

7182
# 1.4.0
8183

Plutarch.hs

Lines changed: 0 additions & 72 deletions
This file was deleted.

Plutarch/Api/Internal/Hashing.hs

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)