Проект curl основан на фундаменте, заложенном в конце 1996 года инструментом под названием httpget.
ANSI C, ставший известным как C89
В 1996 году было не так много хороших альтернатив для создания небольшого и эффективного инструмента командной строки для передачи данных через Интернет. Я не хочу сказать, что C был единственным имевшимся языком, но для меня выбор был прост, и, честно говоря, когда начался этот путь, я даже не думал о каких-то других языках. Мы называли версию этого языка ANSI C, чтобы отличать его от «старорежимного» C
K&R. Версию ANSI C позже переименовали в C89 (иногда её называют C90, и это сбивает с толку).
В 2000 году мы выпустили libcurl — библиотеку, предоставляющую всем желающим суперсилы передачи данных через Интернет. Это ещё сильнее оправдывало выбор C. Благодаря C мы могли без проблем предоставить стабильный API/ABI, чего в то время не мог обеспечить даже C++. К тому же это был достаточно портируемый язык, поэтому мы смогли перенести curl и libcurl практически на все современные операционные системы.
Поскольку я хотел, чтобы curl и libcurl предоставляли возможности системного уровня, и нацеливался на максимально широкое распространение, их нельзя было написать ни на одном из высокоуровневых языков наподобие Perl, Python или им подобных. Из-за этого они стали бы слишком большими и тащили за собой слишком много «лишнего багажа».
Я убеждён, что использование (консервативного) C для разработки curl — ключевой фактор его успеха и возможности использования его «где угодно».