Skip to content

0.0.4

Compare
Choose a tag to compare
@fangerer fangerer released this 25 May 13:28
· 687 commits to master since this release
41989b8

New Features/API

  • HPy headers are C++ compliant
  • Python 3.10 support
  • HPyField: References to Python objects that can be stored in raw native memory owned by Python objects.
    • new API functions: HPyField_Load, HPyField_Store
  • HPyGlobal: References to Python objects that can be stored into a C global variable.
    • new API functions: HPyGlobal_Load, HPyGlobal_Store
    • note: HPyGlobal does not allow to share Python objects between (sub)interpreters
  • GIL support
    • new API functions: HPy_ReenterPythonExecution, HPy_LeavePythonExecution
  • Value building support (HPy_BuildValue)
  • New type slots
    • HPy_mp_ass_subscript, HPy_mp_length, HPy_mp_subscript
    • HPy_tp_finalize
  • Other new API functions
    • HPyErr_SetFromErrnoWithFilename, HPyErr_SetFromErrnoWithFilenameObjects
    • HPyErr_ExceptionMatches
    • HPyErr_WarnEx
    • HPyErr_WriteUnraisable
    • HPy_Contains
    • HPyLong_AsVoidPtr
    • HPyLong_AsDouble
    • HPyUnicode_AsASCIIString, HPyUnicode_DecodeASCII
    • HPyUnicode_AsLatin1String, HPyUnicode_DecodeLatin1
    • HPyUnicode_DecodeFSDefault, HPyUnicode_DecodeFSDefaultAndSize
    • HPyUnicode_ReadChar

Debug mode

  • Support activation of debug mode via environment variable HPY_DEBUG
  • Support capturing stack traces of handle allocations
  • Check for invalid use of raw data pointers (e.g HPyUnicode_AsUTF8AndSize) after handle was closed.
  • Detect invalid handles returned from extension functions
  • Detect incorrect closing of handles passed as arguments

Misc Changes

  • Removed unnecessary prefix "m_" from fields of HPyModuleDef (incompatible change)
  • For HPy implementors: new pytest mark for HPy tests assuming synchronous GC