Foxpro умер в 2007-м, но кто-то его воскрешает
Меня всегда удивляло, как умирают технологии: не в бою, а тихо, по решению сверху. Microsoft закрыла Visual FoxPro в 2007 году — и будто бы вычеркнула его из истории.
Что именно воскресили
На FoxScript.org я увидел попытку вернуть эту платформу к жизни. Речь не о простой поддержке старого кода, а о полноценном воссоздании среды разработки — FoxDev Studio.
Авторы проекта не стали делать эмулятор или обёртку над прежним движком. Они написали runtime с нуля, но так, чтобы поведение совпадало с оригинальным Visual FoxPro.
Представьте: вы открываете папку с проектом, который не трогали пятнадцать лет. Формы, отчёты, меню — всё на месте. Никакой миграции, никакого экспорта. Просто открываете и работаете.
Редактор и отладчик — формы, классы, меню и отчёты открываются прямо из файлов. Отладчик останавливается на нужной строке, показывает стек вызовов, локальные переменные и watches.
Базы данных — таблицы, индексы и memo-поля читаются и пишутся на месте. Файл на диске остаётся тем же файлом, что и был.
Совместимость — старые системные вызовы, COM-объекты и библиотеки .fll продолжают работать без переписывания.
FoxScript — лямбда-функции, отвечающие на HTTP-запросы. Для 2024 года это звучит необычно, но для FoxPro-разработчиков это шанс запустить свой код в вебе без полной миграции.
АРХИТЕКТУРА FOXDEV STUDIO
──────────────────────────
┌─────────────────────────────────────────────────────────┐
│ 64-БИТНОЕ ЯДРО │
├─────────────────┬─────────────────┬─────────────────────┤
│ React-слой │ WebAssembly VM │ Хост-процесс │
│ (отрисовка │ (исполнение │ (файлы, таблицы, │
│ интерфейса) │ байткода в │ COM, 64-битные │
│ │ браузере) │ библиотеки) │
└─────────────────┴─────────────────┴─────────────────────┘
│
32-битные .fll библиотеки
(через прослойку в хосте)
Главное: 64 бита вместо 32
Здесь оригинал упирался в потолок. Visual FoxPro был 32-битной программой, и это задавало жёсткие лимиты:
- таблица
.dbfне могла превысить 2 ГБ; - memo-файл тоже ограничивался 2 ГБ;
- большой отчёт мог упасть даже при наличии памяти.
Причина проста: 32-битные числа со знаком. Максимум — 2 147 483 647. Это примерно 2 ГБ, а не 4, потому что один бит уходит под знак.
FoxDev Studio полностью 64-битная. Разработчики утверждают, что теперь offsets — то есть смещения в файле — тоже 64-битные, и каждый байт чтения и записи адресуется напрямую.
Важно и предупреждение: таблица, выросшая выше 2 ГБ, не откроется в оригинальном Visual FoxPro. Это односторонняя дверь.
ОГРАНИЧЕНИЯ РАЗМЕРА ТАБЛИЦЫ ──────────────────────────── Visual FoxPro (32 бита): ┌────────────────────────┐ │▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│ ← 2 ГБ max └────────────────────────┘ FoxDev Studio (64 бита): ┌─────────────────────────────────────────────────────────┐ │▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│ └─────────────────────────────────────────────────────────┘ ← 9.2 ЭБ max (9 223 372 036 854 775 807 байт — физический предел)
Зачем это нужно
Тут возникает главный вопрос: кому вообще нужен FoxPro в 2024 году?
Во-первых, компаниям с legacy-системами. Бизнес-логика, написанная двадцать лет назад, часто работает до сих пор. Переписывать её дорого и рискованно.
Во-вторых, разработчикам, которые выросли на этой экосистеме. Не все хотят переучиваться на новые стеки ради моды.
В-третьих, исследователям старых платформ. Мне как инженеру интересно, как переизобретают умершую систему: что сохраняют, что меняют и где проходят границы совместимости.
На сайте утверждают, что из 1 722 элементов справочника Visual FoxPro 9 реализовано 1 534. Остальное либо не реализовано сознательно, либо ещё ждёт своей очереди.
Выводы
Это не история для всех. Если вы начинающий разработчик, FoxPro — скорее технологическая археология, чем будущее.
Но если у вас есть legacy-система, которую нужно оживить без переписывания, такой проект может быть очень полезен.
Главный вывод простой: технологии не всегда умирают окончательно. Иногда их возвращают к жизни энтузиасты, которые понимают, зачем они вообще были нужны.
Ссылки
- FoxScript.org — официальный сайт проекта
Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.