Releases: algorandfoundation/puya
v3.2.0
v3.2.0 (2024-09-24)
Feature
- expand handling of literal expressions to allow combining them with binary boolean operators, and improve error messaging when handling of type unions in nested bool contexts (
b4e0c30
)
Fix
v3.1.0
v3.1.0 (2024-09-13)
Feature
-
algopy.arc4.abi_call
,algopy.arc4.arc4_create
andalgopy.arc4.arc4_update
now all support txn arguments (8133e1d
) -
add CLI option to serialize AWST to JSON (
66bf127
) -
optimize
int 0; return
->err
(3605cf4
) -
allow user to implement approval_program in ARC4Contract subclasses (
004450b
)
Fix
-
handle zero values for TemplateVar (
6087dc2
)boolean values are now also allowed as
True
orFalse
also incorrect values will no longer result in a critical error, but a CLI usage error instead
-
when accessing a member of
self
, use the source location of the access (2f827ab
) -
when there is exactly 15 arguments to an ABI function, the final argument should not be expected to be automatically tuple-packed (
04e15df
) -
calling
algopy.arc4.arc4_create
oralgopy.arc4.arc4_update
with a ARC4Contract type now works for abimethods that have a return type (99d6a24
) -
fix
super()
usage in multiple inheritance scenarios (21929cc
) -
allow
super().__init__()
calls that resolve toobject.__init__()
as no-ops, this is valid and can be useful in multiple inheritance scenarios (267f423
) -
abstract methods can still have implementations, which can be called via super (
9615467
) -
evaluate class bodies at module evaluation time, so that any referenced constants in e.g. decorators receive the correct value if it's later updated (
9aea78c
) -
resolve all base scratch slot reservations, not just direct bases (
f9521b5
)
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v3.0.0 (2024-08-16)
Breaking
-
use correct return type for
algopy.op.gaid
(a5c57ef
)BREAKING CHANGE:
algop.op.gaid
return type has changed fromalgopy.Application
toalgopy.UInt64
as the return value could be the id of either an application or an asset. Any existing usages ofalgopy.op.gaid
will need to pass the result to eitheralgopy.Application
oralgopy.Asset
as appropriate
Feature
v2.3.0
v2.3.0 (2024-08-12)
Feature
-
improved optimization when uint64 comparisons involve a boolean value (
a68ca06
) -
more aggressive optimization of
select
op involving constants or references to constants (8d59e2d
) -
optimise away
select
op when both values are the same (f8eb257
) -
optimise code size by converting conditional (ie ternary) expressions into
select
op when both values are simple variables / constants (b748976
) -
more aggressive optimization of the boolean condition argument to
setbit
(e9828b3
) -
support nested tuples (
fe270dc
)
Fix
-
correctly type the result of BigUInt bin ops at IR layer (
d8d92bd
) -
ensure non-zero UInt64 values that are explicitly converted to bool are handled correctly (issue #194) (
13929de
)
Documentation
- fix link (
c53d1f7
)
v2.2.0
v2.2.0 (2024-07-30)
Feature
-
remove requirement that the target variable of a for-loop with enumeration be a tuple unpacking (
5b994e3
) -
support for-else and while-else (
0959e2d
) -
include ARC-22 readonly flag in ARC-32 output (
6d325b9
) -
add support for compiling programs to AVM bytecode, and referencing those programs within other contracts. (
7d7a4fd
)
Fix
-
ensure conversion of UInt64 enum types to arc4 UIntN is handled correctly. (
70b49dc
) -
change total_num_byte_slice return type to UInt64 (
96b5165
) -
fix bug with iteration of single item tuples (
983f171
) -
fix a regression where
algopy.op
functions that accepted multiple literal types would fail to compile with all except one type (2cbf5df
) -
use UInt64 enum types as return types where appropriate in low-level ops stubs (
008c96a
) -
prevent internal errors when for-loop bodies always exit (#269) (
1b24cd7
)
v2.1.2
v2.1.2 (2024-07-10)
Fix
-
corrected parsing of ARC4 ufixed types when provided via string literals in
algopy.arc4.abi_call
andalgopy.arc4.emit
(43ffe8e
) -
in the case of overlapping values in a Switch (ie Python match-case), mark subsequent cases as unreachable to prevent a critical error from occurring ("Attempted to add a (non-entry) block with no predecessors") (
f21efc1
)