Кратко

Данные были доступны, автоматического шага не было

Человеку достаточно открыть страницу с курсами. Боту нужно самостоятельно повторять запрос и разбирать результат. В собственной хронологии проекта Стенберг рассказывает о боте для IRC-канала, связанного с Amiga. Для получения данных он нашёл свободную утилиту HttpGet, которую бразильский разработчик Рафаэл Сагула опубликовал 11 ноября 1996 года. Стенберг добавил свои изменения; 17 декабря вышла версия с ними. Сагула создал исходный инструмент. Потребность бота объясняет, почему инструмент получил нового активного разработчика.

Название HttpGet обещало получение данных по HTTP. В 1997 году программа научилась принимать HTTP-адрес в командной строке и работать через прокси. Затем, согласно истории проекта, были исправлены возможности Gopher и добавлено скачивание по FTP. Одно протокольное слово в названии перестало вмещать реальную работу. В августе 1997 года версия 2.0 получила имя urlget. Таблица выпусков сохраняет линию происхождения: новая вывеска не создала новый код с нуля.

Вскоре стало тесно и слову «get». В том же году появились отправка файлов по FTP и HTTP POST. Утилита уже не только забирала данные, но и передавала их серверу. Запрос валютного курса был частной операцией; программа постепенно брала на себя двусторонний сетевой обмен. Названия приходилось менять потому, что выполняемая работа становилась шире обещания на упаковке.

Команда превратилась в вызываемый механизм

20 марта 1998 года вышел curl 4. Номер четыре важен: он продолжает историю urlget, а не объявляет внезапное рождение продукта. Новое имя не связывало инструмент только с одним протоколом или направлением передачи. SSL и cookies добавлялись в течение 1998 года; записывать все эти возможности на день переименования было бы неверно. Программа росла вслед за конкретными условиями работы с серверами.

Для разработчика другого приложения оставалась проблема. Запустить внешнюю команду и разобрать её вывод можно, но такое соединение хрупко. Хронология проекта описывает переработку весной 2000 года ради пригодного библиотечного интерфейса. Версия 7.1 вышла 7 августа с интерфейсом easy. Исходный список изменений перечисляет публичные символы libcurl, устанавливаемые заголовочные файлы, сборку разделяемой библиотеки и вызовы настройки параметров. Именно эти строительные детали позволили чужой программе обращаться к движку напрямую.

По сведениям проекта, уже в августе 2000 года появилось стороннее связывание с libcurl. Разработчик за пределами основной команды смог опереться на новую границу. Нынешняя документация C API показывает общий порядок: настроить передачу, выполнить её, освободить ресурсы. Все сегодняшние возможности не следует переносить в 2000 год. Тогдашним шагом стало само право приложения вызывать механизм сетевого обмена как библиотеку.

Переименования показывают цену повторения

HttpGet обозначал получение по HTTP. urlget охватывал больше адресов. curl оставлял место для передачи в обе стороны. libcurl отдавал работу чужим программам через API. Каждое имя догоняло уже работающий код. Под этой чередой вывесок лежал экономический расчёт: поддерживать один механизм протоколов и передачи дешевле, чем заново писать его в каждом боте и приложении. Маленький вопрос о курсе валют выявил большую статью повторяющихся расходов.