andrea bozzo / personal home page

← Tutti i progetti

projects / arrow-abi-doctor

C · Rust · Apache Arrow · ABI testing

arrow-abi-doctor

Test differenziali per le interfacce Arrow C Data e C Stream.

Un harness di test che costruisce riproduttori portabili e minimi di strutture C Arrow, li passa a consumer reali in processi isolati e osserva l’intero ciclo di vita: import, spostamenti, rilasci, leak e i dati restituiti.

Aggiornato da fonti pubbliche ·

Un corpus, sei consumer

La milestone 1 esegue un modello di conformità congelato di 5.650 celle contro un controllo nullo, nanoarrow come validatore di riferimento, PyArrow, Arrow C++ e DuckDB compilati con sanitizer, e dataprof. Un consumer è in accordo quando il ciclo di vita è pulito, non ci sono leak e i dati restituiti hanno il digest di quelli inviati. Le celle che un consumer non può eseguire risultano non eseguite, con il motivo.

Risultati arrivati upstream

L’harness ha trovato due difetti FFI in dataprof, entrambi corretti, e una slice Utf8 di lunghezza zero con offset non nullo che sforava il buffer in arrow-rs, corretta in apache/arrow-rs#10916. Le letture disallineate su buffer non allineati sono state corrette in nanoarrow; in DuckDB sono riprodotte ma ancora aperte. Il perimetro sono producer fidati ma difettosi, non quelli malevoli.