Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.3.5] - 2026-03-11¶
Added¶
- All protocol builder
def_*methods that returnPythonObjectnow also accept handler functions that return any type satisfyingConvertibleToPython & ImplicitlyCopyable. The correct overload is resolved at compile time with no runtime overhead.
[0.3.4] - 2026-03-11¶
Added¶
- All protocol builder
def_*methods now accept value-receiver handler functions (e.g.fn(self: MyStruct) -> Int) in addition to the existing pointer-receiver (UnsafePointer[T, MutAnyOrigin]) overloads. Both raising and non-raising value-receiver handlers are accepted via a single overload (Mojo coercesfn(T) -> Rtofn(T) raises -> Rautomatically for value types).
[0.3.3] - 2026-03-11¶
Added¶
- Protocol builder
def_*methods now accept non-raising handler functions (e.g.fn(...) -> Twithoutraises), in addition to the existing raising overloads. The correct overload is selected automatically at compile time with no runtime overhead.
[0.3.2] - 2026-03-11¶
Changed¶
- All four protocol builders (
TypeProtocolBuilder,MappingProtocolBuilder,NumberProtocolBuilder,SequenceProtocolBuilder) now take aself_typecompile-time parameter (e.g.MappingProtocolBuilder[DataFrame](tb)). - Handler functions registered via
def_len,def_getitem,def_richcompare, etc. now receiveUnsafePointer[T, MutAnyOrigin]as their first argument instead of a rawPythonObject, eliminating the per-methoddowncast_value_ptr/_get_self_ptrboilerplate. - Added internal
_unwrap_self[T]helper inadapters.mojothat performs the typed downcast and aborts with a clear message on type mismatch.
0.3.0¶
Release under the modular-community channel.
0.2.3¶
Build debug.
0.2.2¶
Build debug.
[0.2.1] - 2026-03-08¶
Added¶
- Focused integration tests for all four protocol builders: mapping, number, sequence, and type protocol (
tests/) pixi run test-alltask and per-protocoltest-*/build-test-*tasks
Changed¶
- Builder method chains now use parenthesised multi-line style, consistent with the Mojo formatter
[0.2.0] - 2026-03-08¶
Changed¶
- Renamed internal modules:
protocols.mojo→utils.mojo,protocol_adapters.mojo→adapters.mojo,protocol_type_builder.mojo→builders.mojo - Replaced
PontoneerTypeBuilderwith four focused builders:TypeProtocolBuilder,MappingProtocolBuilder,NumberProtocolBuilder,SequenceProtocolBuilder
[0.1.1] - 2026-03-07¶
Fix pixi.lock and debug prefix.dev release process.
[0.1.0] - 2026-03-07¶
Added¶
PyTypeObjectSlottag struct with slot constants:mp_length,mp_getitem,mp_setitem,tp_richcompareNotImplementedError— raise from a rich compare handler to returnPy_NotImplementedRichCompareOpsconstants:Py_LT,Py_LE,Py_EQ,Py_NE,Py_GT,Py_GEPontoneerTypeBuilder— wrapsPythonTypeBuilderand addsdef_methodoverloads for all four protocol slots- Columnar DataFrame example demonstrating all four slots (
examples/columnar/)