
C та CGI у 2026 році живлять комерційний вебпродукт
Cory Prophitt випустив marketyour.games — комерційний вебпродукт з обліковими записами, пошуком, папками, платежами Stripe та листами Postmark, побудований на C і CGI у OpenBSD. Один бінарник обслуговує всі запити.
Комерційний вебдодаток на CGI у 2026 році
Cory Prophitt заявляє, що marketyour.games випущено як комерційний вебпродукт, написаний мовою C і обробляється за допомогою CGI. У продукті є облікові записи користувачів, панель пошуку для авторів контенту, папки для впорядкування контенту, платежі через Stripe та транзакційні електронні листи через Postmark. Він слідує поступовому посиленню та не потребує JavaScript.
Стек — це BCHS: OpenBSD, C, httpd і SQLite. Немає ні фреймворка, ні мови шаблонів, ні окремого сервера бази даних і ні контейнера. Програма на C читає змінні середовища CGI та відповідає, код C безпосередньо видає HTML, а C API SQLite відкриває файл бази даних. Розгортання — це статично зкомпільований бінарник, який можна просто кинути в папку.
Один бінарник і три бібліотеки
Кожен запит створює новий процес, тому розгортання нової версії означає заміну одного файла. За словами Cory Prophitt, сервер не перезапускається і затримок немає: нові запити просто використовують новий бінарник. OpenBSD надає параметри за замовчуванням та інструменти, такі як pledge і unveil, для захисту програми на C, а httpd за замовчуванням обслуговує всередині chroot, тому бінарник CGI ізольований у пісочниці.
Додаткові бібліотеки: libcurl для вихідних запитів до Stripe і Postmark; libsodium для генерації випадкових ідентифікаторів, хешування паролів і перевірки HMAC вебхука Stripe; і libcjson для обробки JSON. Тільки libcurl і libsodium є залежностями збірки. libcjson — це один файл на C без зовнішніх залежностей, а SQLite використовується через його офіційну амальгаму. Обидва вбудовані в проєкт і компілюються разом із ним.
Cory Prophitt спрямовує весь трафік httpd на бінарник CGI і компілює їх у виконувані файли сам, щоб вони потрапляли в пам’ять. За його словами, чиста збірка займає кілька секунд, а повторна — менше пів секунди. Його ланцюг збірки — компілятор C і три бібліотеки, а головний редактор — Vim без плагінів.
Що змінилось
CGI надає дуже мало готових засобів, тому все одно потрібно писати утиліти для обробки та створення файлів cookie, обробки та валідації параметрів query, обробки та валідації даних форми та екранування введення. Cory Prophitt написав власний варіант в одному заголовному файлі, cgi.h, але не впевнений, що це було правильним рішенням. Він зазначає, що існують бібліотеки на зразок kcgi, але їхнє використання означає прийняття їхнього API та моделі безпеки, а йому потрібні були утиліти в стилі бібліотек stb.
Його висновок: CGI старий, але не забутий. Fork процесів коштує дешевше, ніж будь-коли, а FastCGI може бути можливим оновленням, якщо fork колись стане проблемою. Продукт працює на одному бінарнику за моделлю сервісу, стандартізованою у 2004 році, і в ньому менше рухомих частин, ніж у будь-чому іншому, що він коли-небудь випускав.
Джерела: prophitt.me
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.