* feat: support pyclass on tuple enums
* cargo fmt
* changelog
* ruff format
* rebase with adaptation for FnArg refactor
* fix class.md from pr comments
* add enum tuple variant getitem implementation
* fmt
* progress toward getitem and len impl on derive pyclass for complex enum tuple
* working getitem and len slots for complex tuple enum pyclass derivation
* refactor code generation
* address PR concerns
- take py from function argument on get_item
- make more general slot def implementation
- remove unnecessary function arguments
- add testcases for uncovered cases including future feature match_args
* add tracking issue
* fmt
* ruff
* remove me
* support match_args for tuple enum
* integrate FnArg now takes Cow
* fix empty and single element tuples
* use impl_py_slot_def for cimplex tuple enum slots
* reverse erroneous doc change
* Address latest comments
* formatting suggestion
* fix :
- clippy beta
- better compile error (+related doc and test)
---------
Co-authored-by: Chris Arderne <chris@translucent.app>
* Add feature controlling the global reference pool to enable avoiding its overhead.
* Document reference-pool feature in the performance guide.
* Invert semantics of feature to disable reference pool so the new behaviour becomes opt-in
* Remove delayed reference count increments as we cannot prevent reference count errors as long as these are available
* Adjust tests to be compatible with disable-reference-pool feature
* Adjust tests to be compatible with py-clone feature
* Adjust the GIL benchmark to the updated reference pool semantics.
* Further extend and clarify the documentation of the py-clone and disable-reference-pool features
* Replace disable-reference-pool feature by pyo3_disable_reference_pool conditional compilation flag
Such a flag is harder to use and thereby also harder to abuse. This seems
appropriate as this is purely a performance-oriented change which show only be
enabled by leaf crates and brings with it additional highly implicit sources of
process aborts.
* Add pyo3_leak_on_drop_without_reference_pool to turn aborts into leaks when the global reference pool is disabled and the GIL is not held
* Add `num-rational` support for Python's `fractions.Fraction` type
* Add newsfragment
* Use Bound instead
* Handle objs which atts are incorrect
* Add extra test
* Add tests for wasm32 arch
* add type for wasm32 clipppy
* graalpy: recognize graalpy implementation when building
* graalpy: global Ellipse, None, NotImplemented, True, and False are only available as pointers
* graalpy: PyObject struct is opaque, use functions for everything
* graalpy: missing many of the same functions as pypy
* graalpy: do not have 128bit conversion functions
* graalpy: add functions for datetime accessor macros
* graalpy: add implementations for list macro functions
* graalpy: skip tuple macros
* graalpy: always use extern Py_CompileString function
* graalpy: disable assertion that does not apply to graalpy
* graalpy: floatobject structure is opaque on graalpy
* graalpy: ignore gc dependent test
* graalpy: add CI config
* graalpy: run rust fmt
* graalpy: add changelog entry
* graalpy: discover interpreter on PATH
* graalpy: interpreter id is not applicable to graalpy (just like pypy)
* graalpy: skip tests that cannot work on GraalPy
* graalpy: fix constructing normalized Err instances
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
* graalpy: correct capi library name, but skip rust tests due to missing symbols
* graalpy: no support for C extensions on windows in latest release
* graalpy: declare support versions
* graalpy: frame, code, method, and function objects access from C API is mostly missing
* graalpy: take care only to expose C structure that GraalPy allocates
* graalpy: Bail out if graalpy version is less than what we support
---------
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
* add `FromPyObjectBound` adjustment for `&str` without GIL Refs
* review: alex, Icxolu feedback
* add newsfragment
* add newsfragment for `FromPyObject` trait change
* make some examples compatible with abi3 < 3.10
* seal `FromPyObjectBound`
* fixup chrono_tz conversion