Skip to content

Releases: algorandfoundation/puya

v3.2.1

04 Oct 02:07
Compare
Choose a tag to compare

v3.2.1 (2024-10-04)

Fix

  • fixed error when assigning result of an abi_call with inner transactions that return an ABI value (e3ef7dd)

v3.2.0

24 Sep 14:21
Compare
Choose a tag to compare

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

  • prevent error that occurs when removing a series of redundant Load and Store ops (17778b8)

  • fix compilation error when a nested tuple is passed as a named argument (d849496)

v3.1.0

13 Sep 02:37
Compare
Choose a tag to compare

v3.1.0 (2024-09-13)

Feature

  • algopy.arc4.abi_call, algopy.arc4.arc4_create and algopy.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 or False

    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 or algopy.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 to object.__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

28 Aug 12:05
Compare
Choose a tag to compare

v3.0.3 (2024-08-28)

Fix

  • do not remove swap ops before itxn_field if it's immediates point to the same field (0e88cdb)

v3.0.2

23 Aug 05:46
Compare
Choose a tag to compare

v3.0.2 (2024-08-23)

Fix

  • handle utf-8 alias's when checking for encoding, addresses #300 (90bf86f)

  • remove slice from __getitem__ in algopy.arc4.DynamicArray and algopy.arc4.StaticArray (c0049f1)

Documentation

  • improve ARC4 array documentation (251759f)

v3.0.1

20 Aug 07:09
Compare
Choose a tag to compare

v3.0.1 (2024-08-20)

Fix

  • handle in/not in tests correctly for differing types that can still be considered equal (234c376)

  • do not error when using algopy.arc4.abi_call with a method selector string containing no arguments (74577c4)

v3.0.0

16 Aug 02:08
Compare
Choose a tag to compare

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 from algopy.Application to algopy.UInt64 as the return value could be the id of either an application or an asset. Any existing usages of algopy.op.gaid will need to pass the result to either algopy.Application or algopy.Asset as appropriate

Feature

  • include num_log, log, create_app and created_asset properties for group transactions (5359c4d)

  • as part of optimization, remove no-op subroutines (5663a55)

v2.3.0

12 Aug 04:49
Compare
Choose a tag to compare

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

v2.2.0

30 Jul 09:32
Compare
Choose a tag to compare

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

10 Jul 07:52
Compare
Choose a tag to compare

v2.1.2 (2024-07-10)

Fix

  • corrected parsing of ARC4 ufixed types when provided via string literals in algopy.arc4.abi_call and algopy.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)

Documentation

  • clarify default behaviour of key_prefix in BoxMap (786e9b5)

    also fix existing invalid doc syntax for arguments

  • fix documentation of arc4.Tuple native property (172934b)