Releases: beeware/rubicon-objc
Releases · beeware/rubicon-objc
0.5.0
Features
- Retain Objective-C objects when creating Python wrappers and release them when the Python wrapped is garbage collected. This means that manual
retain
calls and subsequentrelease
orautorelease
calls from Python are no longer needed with very few exceptions, for example when writing implementations ofcopy
that return an existing object. (#256) - Support for Python 3.14 was added. (#529)
Bugfixes
- Protection was added against a potential race condition when loading methods defined on a superclass. (#473)
- A workaround for python/cpython#81061 is now conditionally applied only for the Python versions that require it (Python 3.9 and earlier). (#517)
Backward Incompatible Changes
- Manual calls to
release
orautorelease
no longer cause Rubicon to skip releasing an Objective-C object when its Python wrapper is garbage collected. This means that fewerretain
thanrelease
calls will cause segfaults on garbage collection. Review your code carefully for unbalancedretain
andrelease
calls before updating. (#256) - Python 3.8 is no longer a supported platform. (#529)
Documentation
- Building Rubicon ObjC's documentation now requires the use of Python 3.12. (#496)
Misc
- #464, #466, #467, #469, #470, #472, #473, #474, #475, #476, #477, #478, #479, #480, #481, #482, #483, #484, #485, #486, #487, #488, #489, #490, #491, #492, #493, #494, #499, #500, #502, #503, #505, #506, #507, #508, #509, #510, #511, #512, #513, #514, #515, #516, #518, #519, #520, #521, #522, #523, #524, #525, #526, #527, #528, #530, #531, #532, #533, #534, #535, #536, #537, #538, #541, #544, #546, #548, #549, #550
v0.4.9
Features
- Objective-C methods with repeated argument names can now be called by using a
__
suffix in the Python keyword argument to provide a unique name. (#148) - The error message has been improved when an Objective-C selector matching the provided arguments cannot be found. (#461)
Bugfixes
- The handling of structure and union return types was updated to be compatible with changes to ctypes introduced in Python 3.13.0a6. (#444)
Backward Incompatible Changes
- The order of keyword arguments used when invoking methods must now match the order they are defined in the Objective-C API. Previously arguments could be in any order. (#453)
Documentation
- The README badges were updated to display correctly on GitHub. (#463)
Misc
0.4.8
Features
- Name clashes caused by re-registering Objective C classes and protocols can now be automatically avoided by marking the class with
auto_rename
. (#181) - Apple Silicon is now formally tested by Rubicon's continuous integration configuration. (#374)
- Support for Python 3.13 was added. (#374)
- The
__repr__
output forObjCBoundMethod
,ObjCClass
,ObjCInstance
,ObjCMethod
,ObjCPartialMethod
, andObjCProtocol
were simplified. (#432)
Bugfixes
- The
__all__
definition forrubicon.objc
was corrected to use strings, rather than symbols. (#401)
Documentation
- The documentation contribution guide was updated to use a more authoritative reStructuredText reference. (#427)
Misc
0.4.7
Features
- The
__repr__
and__str__
implementations forNSPoint
,CGPoint
,NSRect
,CGRect
,NSSize
,CGSize
,NSRange
,CFRange
,NSEdgeInsets
andUIEdgeInsets
have been improved. (#222) objc_id
andobjc_block
are now exposed as part of therubicon.objc
namespace, rather than requiring an import fromrubicon.objc.runtime
. (#225)
Bugfixes
- References to blocks obtained from an Objective C API can now be invoked on M1 hardware. (#225)
- Rubicon is now compatible with PEP563 deferred annotations (
from __future__ import annotations
). (#308) - iOS now uses a full
NSRunLoop
, rather than aCFRunLoop
. (#317)
Backward Incompatible Changes
- Support for Python 3.7 was dropped. (#334)
Documentation
- All code blocks were updated to add a button to copy the relevant contents on to the user's clipboard. (#300)
Misc
- #295, #296, #297, #298, #299, #301, #302, #303, #305, #306, #307, #310, #311, #312, #314, #315, #319, #320, #321, #326, #327, #328, #329, #330, #331, #332, #335, #336, #337, #338, #341, #342, #343, #344, #345, #346, #348, #349, #350, #351, #353, #354, #355, #356, #358, #359, #360, #361, #362, #363, #364, #365, #366, #367, #368, #369, #370, #371, #372, #373, #375, #376, #377, #378, #379, #380
0.4.6
0.4.5
0.4.5rc1
Due to an incompatibility with Toga 0.3.0dev39, Rubicon-ObjC 0.4.4 was yanked from PyPI. This RC1 release was published so that development versions of Toga could access the bug fixes contained in that release.
Features
- Support for Python 3.6 was dropped. (#371)
Misc
v0.4.4
Due to an incompatibility with Toga 0.3.0dev39, Rubicon-ObjC 0.4.4 was yanked from PyPI.
Bugfixes
- Background threads will no longer lock up on iOS when an asyncio event loop is in use. (#228)
- The ObjCInstance cache no longer returns a stale wrapper objects if a memory address is re-used by the Objective C runtime. (#249)
- It is now safe to open an asyncio event loop on a secondary thread. Previously this would work, but would intermittently fail with a segfault when then loop was closed. (#250)
- A potential race condition that would lead to duplicated creation on ObjCInstance wrapper objects has been resolved. (#251)
- A race condition associated with populating the ObjCClass method/property cache has been resolved. (#252)