add local Codex skill for Python->C performance-focused translation define modular C architecture and benchmark/correctness gates add references for patterns, profiling, and module design add scaffold_c_module.py to generate include/src/tests/bench skeleton update agent default prompt for benchmark-backed optimizations
1.6 KiB
1.6 KiB
Architettura Modulare C per Performance
Obiettivo
Definire moduli C che siano allo stesso tempo veloci, testabili e sostituibili.
Struttura raccomandata
feature/
include/feature.h
src/feature.c
src/feature_internal.h
tests/test_feature.c
bench/bench_feature.c
Regole API
- Esporre API piccole e stabili in
include/feature.h. - Esporre tipi opachi quando lo stato interno non deve trapelare.
- Passare sempre buffer e lunghezze esplicite.
- Evitare allocazioni implicite nascoste nelle funzioni hot-path.
- Restituire codici errore prevedibili.
Esempio di firma:
feature_status_t feature_process(
const uint8_t *restrict in,
size_t n,
uint8_t *restrict out,
size_t out_n);
Separazione responsabilità
feature.c: implementazione pubblica + validazioni inputfeature_internal.h: helper statici e dettagli non pubblicitest_feature.c: correttezza funzionale e edge casebench_feature.c: metriche throughput/latenza isolate
Policy di memoria
- Definire ownership nel contratto API.
- Prediligere buffer chiamante-alloca per hot-path.
- Usare allocator personalizzato solo se il profiler mostra contesa o overhead.
Policy di concorrenza
- Preferire moduli reentrant e senza stato globale.
- Separare stato per thread quando serve parallelismo.
- Evitare lock nel percorso caldo; usare partizionamento dati.
Checklist revisione modulo
- API minima e coerente.
- Nessun dettaglio interno esportato inutilmente.
- Test e benchmark presenti.
- Input validation chiara e costo minimo.
- Dipendenze inter-modulo ridotte.