@@ -238,11 +238,41 @@ fn main() {
238238 name : "_stockarray" ,
239239 env_var : "WEAVEPY_CAPI_STOCKARRAY_EXTENSION" ,
240240 } ) ;
241+ // `_stockcython.c` — wave 5 (RFC 0047): a Cython-shaped
242+ // extension that subclasses an extension-defined base and
243+ // reads inherited slots directly off `Py_TYPE(self)` (the
244+ // `inherit_slots` proof), plus the Cython C-API runtime tail.
245+ build_extension ( ExtensionBuild {
246+ cc : & cc,
247+ include_dir : & stock_inc,
248+ out_dir : & out_dir,
249+ target_os : & target_os,
250+ suffix,
251+ src : & workspace_root. join ( "tests/capi_ext/_stockcython.c" ) ,
252+ name : "_stockcython" ,
253+ env_var : "WEAVEPY_CAPI_STOCKCYTHON_EXTENSION" ,
254+ } ) ;
255+ // `_stockdatetime.c` — wave 5 (RFC 0029): a datetime consumer
256+ // compiled against the real `datetime.h`, exercising
257+ // `PyDateTime_IMPORT`, the inlined `PyDateTime_GET_*` accessor
258+ // macros, the capsule constructors, and the `tp_basicsize`
259+ // size-check — the exact ABI surface pandas' `tslibs` uses.
260+ build_extension ( ExtensionBuild {
261+ cc : & cc,
262+ include_dir : & stock_inc,
263+ out_dir : & out_dir,
264+ target_os : & target_os,
265+ suffix,
266+ src : & workspace_root. join ( "tests/capi_ext/_stockdatetime.c" ) ,
267+ name : "_stockdatetime" ,
268+ env_var : "WEAVEPY_CAPI_STOCKDATETIME_EXTENSION" ,
269+ } ) ;
241270 }
242271 None => {
243272 println ! (
244273 "cargo:warning=stock CPython 3.13 headers not found; \
245- skipping the _stockabi/_stocktype binary-ABI proof fixtures"
274+ skipping the _stockabi/_stocktype/_stockarray/_stockcython \
275+ binary-ABI proof fixtures"
246276 ) ;
247277 }
248278 }
0 commit comments