FoxPro возвращается: FoxDev Studio запускает старые приложения на 64 битах

· Программы
Спустя почти два десятилетия после того, как Microsoft закрыла Visual FoxPro, энтузиасты выпустили FoxDev Studio — среду, которая открывает старые проекты как есть и снимает ограничения 32-битной эпохи.

cover.svg

Microsoft прекратила развитие Visual FoxPro в 2007 году, остановившись на девятой версии и на 32 битах. Проект FoxDev Studio предлагает то, чем могла бы стать «десятая версия»: тот же язык, перенесённый на фундамент, который с тех пор не заморожен.

Проект открывается таким, каким был

Главная идея — никакой миграции. Вы указываете среде на папку, которую не открывали годами, и получаете ровно то, что там лежит: проекты, формы, библиотеки классов, меню и отчёты открываются прямо из существующих файлов. Знакомые дизайнеры форм, менеджер проекта, командное окно и отладчик, останавливающийся на нужной строке, на месте. Таблицы, индексы, memo-поля и базы читаются и пишутся там же, где лежали, и остаются файлами того же формата.

Старые системные вызовы, объекты автоматизации и внешние библиотеки, на которые опирается приложение, продолжают работать — части, которые никто не хочет трогать, остаются нетронутыми.

Что изменилось под капотом

Среда полностью 64-битная. Это снимает потолки, встроенные в 32-битную арифметику: таблица и memo-файл больше не упираются в два гигабайта, крупный отчёт не исчерпывает память. Каждое смещение в файле — 64-битное, а таблица вовсе не читается в память целиком, поэтому тот же .dbf доходит до сотен гигабайт. Правда, у этой двери один проход: выросшую за два гигабайта таблицу Visual FoxPro уже не откроет.

Виртуальная машина написана на Rust и скомпилирована в WebAssembly. Тот же компилятор проверяет вводимый код, поэтому подсветка ошибок в редакторе и то, что отвергает исполнение, не расходятся. Работающая программа — это «файбер»: когда ей нужно что-то извне, она не блокируется, а уступает управление, поэтому окно за модальным сообщением не замирает.

Форма на экране — это дерево живых объектов, которое рисует React; каждый объект следит только за собой, так что изменение одной надписи перерисовывает её, а не всю форму.

Мост в 32-битный мир и FoxScript

Старые .fll-библиотеки — 32-битные образы, и внутри 64-битного приложения их не открыть. Вместо отказа SET LIBRARY TO поднимает крошечный 32-битный процесс, который держит библиотеку, а среда общается с ним синхронно.

Надстройка FoxScript добавляет к языку лямбды и возможность отвечать на HTTP-запросы кодом, который уже знает бизнес-логику. Тот же runtime исполняет и формы, и веб-маршруты.

Поведение выверяется не по справочнику, а сопоставлением с ответами самого Visual FoxPro: из 1722 элементов языкового справочника 1534 проверяются автотестом на совпадение. Ночные сборки под Windows и Linux публикуются на GitHub.


Источник: Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.