Автор запустил проект по исправлению C — он написал sp.h, библиотеку на 15 000 строк на чистом C99, которая не зависит от libc. Это не обёртка. Работает напрямую с системными вызовами. Исходники лежат на GitHub.
Главная идея: libc вредна. Она даёт FILE* как основу для ввода-вывода и требует строки с завершающим нулём. Автор считает, что это источник багов и уязвимостей. sp.h отказывается от такого подхода. Вместо char* используется sp_str_t — пара указатель + длина. Это позволяет брать подстроки без копирования, узнавать длину за O(1) и строить строки без мусора. Единственный минус — нужно делать копию при интеграции с другими C-библиотеками, но автор уверяет, что это не имеет значения. В статье есть пример клона wc, который читает файл, разбивает на строки и слова и считает их — без единого копирования из исходного буфера.
В sp.h нет кучи в привычном смысле. Вместо этого есть явные аллокаторы. Программа сама решает, откуда брать память. Никаких глобальных состояний, никаких неявных malloc. Ошибки всегда возвращаются, а не глотаются. Память инициализируется нулями.
Код портабелен: C99, работает на Linux, macOS, Windows, под WASM, даже в браузере. Дружит с MSVC, MinGW, TCC, Cosmopolitan. Библиотека поставляется одним файлом без конфигурации. Внутри — около 40 системных вызовов, это единственный платформозависимый код. Всё организовано по тегам, удобно искать и людям, и LLM.
Автор не гонится за низкоуровневой производительностью — ни SIMD, ни хитрых хеш-таблиц. Он считает, что «овчинка выделки не стоит». Но даёт правильные абстракции: zero-copy IO, API без копирования. Оптимизация под конкретные сценарии — это уже забота программиста.
Почему C? Потому что это единственный язык, который компилируется напрямую в любой машинный код, имеет зрелые оптимизирующие компиляторы и написан на том же языке, что и ядро ОС. Автор считает, что C ценен своей простотой. Он приглашает всех желающих помочь с портированием и обсуждать код на Discord и IRC.