Interested Article - SP-Forth

SP-FORTH — реализация языка Forth , начатая калининградским программистом в 1992 году . В настоящее время проект развивается силами ряда участников русской Forth Interest Group (RU-FIG) . В основном реализует стандарт ANSI 94, хотя имеет ряд отличий и расширений . Изначально работал под управлением операционной системы MS DOS , начиная с 3-й версии — Windows , в настоящее время имеется также Linux -версия.

Библиотеки расширений

  • Форт-ассемблер
  • поддержка многопоточности
  • поддержка межпоточного и межпрограммного взаимодействия (мутексы, семафоры, каналы и т.д.)
  • поддержка многозадачности и работы в качестве CGI-приложения
  • полная поддержка сокетов - инкапсуляция функций сокетов в более удобные для использования в Форте
  • готовые библиотеки для создания интернет-серверов и клиентов
  • поддержка функций построения пользовательского интерфейса - окон, диалогов, иконок, кнопок, тулбаров, ListView, TreeView и т.д.
  • поддержка графических функций
  • генерация Exe-файлов
  • доступ к базам данных через ODBC
  • программирование сервисов Windows NT
  • поддержка Crypt API
  • реализация ООП-расширений Форта
  • поддержка DCOM/COM/ActiveX/OLE
  • готовые примеры использования всех библиотек.

Использование

Имеет определённую известность благодаря написанному на его базе Андреем Черезовым коммерческому пакету EServ . Другой популярный прикладной пакет, написанный на SP-Forth — это утилита для автоматизации Windows nnCron .

В качестве примера использования в традиционной для Форта области управления аппаратурой можно назвать систему регистрации изображений, созданную в Алтайском Государственном университете А. В. Калачевым .

Проект URL Описание
HTTP/FTP/SMTP/POP3/IMAP сервер и прокси для Win32
(множество проектов)
форт-системы для pocket PC
unix-подобный cron планировщик для Windows со скриптами
SP-Forth как CGI
HTTP-сервер для Win32
http proxy-сервер
ftp-сервер

Версии

v1.0

Безуспешные поиски хорошей Форт-системы для IBM PC привели к написанию своего транслятора Форта. Он появился на свет летом 1992 года и v1.0 стала основой всех последующих версий: базовые словари v1.01-1.5 были переработками и усовершенствованиями исходного текста v1.0.

v1.5

С версии 1.5 начались существенные изменения в SP-Forth. За полгода работы с первыми версиями SP-Forth выявлены все "узкие места" этих реализаций, учтены пожелания пользователей, добавлены расширения. Написана зимой 1993.

v2.0 Beta

Ноябрь 1993

  • серия экспериментов со всеми существующими разновидностями шитого кода привела от прямого шитого кода через косвенный к подпрограммному: SP-Forth 2.0 генерирует на этот раз "настоящий машинный код".
  • SP-Forth "извлечен" из сегмента 64К: v2.0 работает в адресном пространстве 256К и больше.
  • код отделен от данных: маш.код, находящийся в сегменте CS, не модифицируется в период исполнения (может изменяться в процессе компиляции) и может работать в ПЗУ (по многочисленным просьбам разработчиков контроллеров). Вся модифицируемая часть ядра, переменные и т.п., помещена в сегменте DS.
  • информация для компилятора (словарные структуры) отделена от кода и данных и помешена в отдельный сегмент ES. В готовой программе он может отсутствовать (и по умолчанию отсутствует).
  • стек вынесен за пределы сегмента данных (хотя при желании его можно вернуть туда).
  • теперь SP-Forth генерирует EXE-файлы вместо COM. Минимальный размер работающего EXE-файла в этой версии - 64 байта.

v2.5

Май 1994

  • ядро соответствует ANS-стандарту 1994 года;
  • из ядра исключены многие устаревшие и нестандартные слова;
  • семантика некоторых слов изменилась в соответствии со стандартом;
  • несколько повышена общая производительность;
  • стандартные множества слов CORE, EXCEPTION, SEARCH, FILE, MEMORY реализованы в ядре; стандартные расширения CORE-EXT, DOUBLE, FACILITY, TOOLS, STRING представлены в виде библиотек (исходники) и частично присутствуют в ядре.

v2.5.13

Последний официальный релиз версии SP-Forth для DOS. Дальнейшее развитие дос-версий не планируется. Следующие версии SP-Forth будут работать под Win32.

v3.01

Январь 1996

  • переход с платформы DOS на Win32;
  • новый целевой компилятор;
  • все CODE-слова переписаны в 32-разрядном варианте;
  • отказ от 4-сегментной модели памяти в пользу плоской модели win32;
  • заголовки словарных статей и данные снова "перемешаны" с кодом, как в SP-Forth v<2.0, но в структуре заголовков сохранена возможность их отделения от кода и данных;
  • доступны все функции Windows через конструкцию "WINAPI:";
  • ядро использует только вызовы KERNEL32.DLL;
  • как и в версиях 2.* используется подпрограммный шитый код, но многие детали кодогенерации изменены;

v3.70

Является переработанной версией SPF/3.14. Основные цели переработки - компиляция SPF самим собой, улучшение обработки ошибок форт-системой, "потоко-безопасность" всех слов для организации многопоточности уже на уровне ядра SPF.

  • SPF/3.70 компилируется предыдущими версиями SPF - SPF/3.0-3.16 раньше SPF/3 компилировался только by Win32for SPF/3.70 может компилировать и сам себя. Правда полученные exe будут различаться по адресам привязки в памяти (на hex 20000).
  • Вместо одного файла с исходным текстом - теперь больше 30-ти, разбито по "темам", зависимости от ОС, уровню и т.п. Удобнее ориентироваться и портировать независимые части.
  • Добавлены средства работы с USER-переменными - традиционный для многозадачных форт-систем способ исключить взаимные влияния потоков на общие переменные. Многопоточность привнесена на уровень ядра - в SPF/3.1x она прилеплялась сверху в виде библиотеки ts2.txt и патчей для READ-FILE и WRITE-FILE, что было не совсем полноценной реализацией нужных функций. Все форт-слова SPF теперь можно свободно использовать в многопоточном режиме без конфликтов по общим переменным и буферам - при создании потока автоматически создаются собственные копии этих областей данных.
  • Механизм структурированной обработки исключений Форта CATCH/THROW объединен с принятым в Windows сишным механизмом ловли исключений SEH, что позволяет превращать даже аппаратные исключения (деление на ноль, обращения по неверному адресу и т.п.) в THROW Форта и обрабатывать их программно без GPF-окон Windows. Это значительно упрощает отладку - при грубых ошибках Форт-система не завалится, а выдаст подробный дамп исключения - код ошибки, место ошибки (адрес и имя слова) и содержимое регистров. Этот механизм также многопоточный, в отличие от реализации в SPF/3.15, который приходилось исправлять внешними библиотеками.

v4.0

Январь 2001 SP-Forth/4.0 выпущен под именем SPF4 и с GPL лицензией.

Примечания

  1. . Дата обращения: 5 апреля 2012. 27 марта 2012 года.
  2. . Дата обращения: 18 мая 2022. 25 апреля 2022 года.
  3. . Дата обращения: 5 апреля 2012. 4 февраля 2012 года.
  4. от 23 сентября 2015 на Wayback Machine , Михаил Колодин, доклад на конференции EuroForth99
  5. А.В. Калачев. // Журнал радиоэлектроники. — 2007. — № 6 . 3 октября 2008 года.

Ссылки

  • — официальный сайт SP-Forth
  • - GIT-репозиторий SP-Forth
  • SP-Forth на javascript браузере и в Node.JS
Источник —

Same as SP-Forth