Skip to content

Releases: pocketpy/pocketpy

v1.4.5

19 Apr 04:59
Compare
Choose a tag to compare

Improvements

  • add bytes addition and slice support
  • improve FileIO and add more methods such as seek() and tell(). See https://pocketpy.dev/modules/io/
  • add __missing__ for dict and refactor defaultdict
  • add bit_length method to int #233
  • improve performance of for loop
  • adoping a more efficient division algorithm for bigint #232
  • make float always 64-bit; optimize for empty function
  • add vec.__getitem__; add pkpy_set_main_argv to set sys.argv
  • add reduce and partial for functools module
  • refactor random module to use builtin mt19937 implementation

New Features

Bug fixes

  • check the size of fillchar passed to str methods (ljust, rjust) #236
  • perform boundary check before searching to prevent security vulnerabilities #237

Full Changelog: v1.4.3...v1.4.5

v1.4.3

27 Mar 08:10
142e4fd
Compare
Choose a tag to compare

Fix some bugs and improve performance.

What's Changed

New Contributors

Full Changelog: v1.4.2...v1.4.3

v1.4.2

04 Mar 11:17
Compare
Choose a tag to compare

Changes

  1. add random.choices
  2. remove python3 deps (now you can compile pkpy without python3 installed)
  3. list.index supports __start; str.index and str.find supports __start
  4. fix a bug of line_profiler
  5. fix #217 #220 #223 #214 #212 #211
  6. raise an error if a literal int overflows
  7. support scientific notation #213

Break changes

pkpy now uses a RTTI-based py_cast<> implementation. You may need to add -frtti flags to compile it.

New Contributors

Full Changelog: v1.4.1...v1.4.2

v1.4.1

13 Feb 14:30
Compare
Choose a tag to compare

Changes

  1. move strip methods into cpp
  2. fix a bug of hex related methods
  3. add PK_NO_EXPORT_C_API macro
  4. add array2d module
  5. add line_profiler module
  6. make vm->_ceval_on_step always available
  7. mark stdout_write and stderr_write as virtual
  8. add some new methods for linalg module
  9. allows tuple as function default parameter

Break changes

  1. str was changed to be null-terminated; Str::c_str_dup was removed

v1.4.0

30 Jan 03:19
Compare
Choose a tag to compare

Changes

  1. remove #include <emscripten.h> for compatibility reason
  2. remove os.system
  3. rename some linalg methods
  4. reduce output binary size
  5. set PK_ENABLE_OS to 0 by default
  6. fix #194

New Features

  1. full slice support
  2. recursive repr detection, i.e. [1, [...]]
  3. add typed error message, e.g. TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
  4. add m__setattr__, m__getattr__ and m__delattr__ hooks in cpp

Internal Changes

  1. obj_type_name was rename to _type_name
  2. remove OBJ_NAME macro
  3. Tuple's constructor was changed
  4. remove timeit module

v1.3.9

15 Jan 07:07
Compare
Choose a tag to compare

Changes

  • add inplace methods set_trs, __imatmul__ and invert_ into linalg.mat3x3 (were renamed in v1.4.0, don't use them)
  • add inplace method .assign() to vec2, vec3, vec4 and mat3x3 (were renamed in v1.4.0, don't use them)
  • remove bind_builtin_func and all string-based bind overloads
  • add bind type parameter to vm->bind_func<>
  • some cleanup to improve code quality
  • add .hex() and .fromhex() to c.struct
  • make all PY_STRUCT_LIKE objects picklable
  • fix #187 the behavior of with <expr> [as <@id>]

Full Changelog: v1.3.8...v1.3.9

v1.3.8

14 Jan 06:30
Compare
Choose a tag to compare

Changes

  • add full support about @staticmethod and @classmethod
  • add a parameter to vm->bind, i.e. BindType to support bind @staticmethod or @classmethod
  • dot access class variables can retrive from base classes now
  • getattr now supports a default return value if not found
  • add vec2.smooth_damp
  • some adjustment about gc

Break changes

  • linalg.mat3x3.__init__ now takes a list of 9 floats, instead of 3 list of 3 floats

Full Changelog: v1.3.7...v1.3.8

v1.3.7

07 Jan 08:20
Compare
Choose a tag to compare

Changes

  1. warn return with arg inside generator function
  2. add typing.Protocol
  3. improve performance of builtin json.loads (not cJSON)
  4. add support for try..finally

Break changes

  1. re module was removed to reduce binary size.
android/arm64-v8a/libpocketpy.so:
1867 KB -> 1732 KB (-7%)
android/armeabi-v7a/libpocketpy.so:
1487 KB -> 1381 KB (-7%)
android/x86_64/libpocketpy.so:
1878 KB -> 1742 KB (-7%)
ios/libpocketpy.a:
2932 KB -> 2674 KB (-9%)
linux/x86_64/libpocketpy.so:
1941 KB -> 1697 KB (-13%)
macos/pocketpy.bundle/Contents/MacOS/pocketpy:
2543 KB -> 2319 KB (-9%)
windows/x86_64/pocketpy.dll:
1052 KB -> 1003 KB (-5%)

v1.3.6

04 Jan 12:04
Compare
Choose a tag to compare
  1. add complex number support and cmath module. For example, 1+2j
  2. support real exception objects. Now you can define a class derived from Exception

Break changes

  1. UNREACHABLE() has been renamed to PK_UNREACHABLE()
  2. FATAL_ERROR() has been renamed to PK_FATAL_ERROR()

You can do a global replacement (in user_config.h and your project sources) if there is any error about them.

v1.3.5

21 Dec 15:47
Compare
Choose a tag to compare

New features

  • improve f-string performance
  • add support for \b
  • add issubclass() builtin
  • support class decorator
  • add a new module dataclasses

Bug fixes

  • fix a bug when users are trying to create module instance
  • fix a bug about **kwargs in function call
  • fix a parser bug of f-string such as f"{stack[2:]}"
  • class can be used in normal blocks now

dataclasses module

from dataclasses import dataclass, asdict

@dataclass
class A:
    x: int
    y: str = '123'

a = A(x=2)
b = A(3, y='AAA')
print(a)    # A(x=2, y='123')
print(asdict(b))    # {'x': 3, 'y': 'AAA'}

Break changes

  • vm->new_type_object will not save the created type to the module anymore

Full Changelog: v1.3.2...v1.3.5