Gforth

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Gforth
Логотип программы Gforth
Тип Интерпретатор, Компилятор
Автор Bernd Paysan, Anton Ertl
Разработчик GNU Project
Написана на C, Forth
Операционная система Unix-like, Microsoft Windows, DOS, OS/2, Android
Первый выпуск середина 1992; 30 лет назад (1992)[1]
Последняя версия 0.7.3 (14 июня 2014; 7 лет назад (2014-06-14))
Тестовая версия 0.7.9_20220310 (10 марта 2022; 2 месяца назад (2022-03-10))
Лицензия GNU GPLv3
Сайт gnu.org/s/gforth/

gforthкроссплатформенная реализация стандартного ANSI Forth в рамках Проекта GNU[2]. Начиная с вышедшей в начале 2000 годов версии GForth 0.6 в состав пакета входит подпакет Vmgen — генератор виртуальных машин[3].

История[править | править код]

Проект начали в середине 1992 года Bernd Paysan и Anton Ertl. Gforth — наследник проектов bigFORTH и fig-Forth[1][4][5]. Использует GCC для реализации быстрого прямого и косвенного шитого кода; Gforth полностью соответствует стандарту ANSI FORTH[2]. Gforth распространяется в рамках проекта GNU с 1996 года[6].

Gforth v. 0.5 (2000 год), реализовывал традиционный косвенный и, для некоторых из поддерживаемых платформ, прямой шитый код[7]. Начиная с версии 0.6, вышедшей в 2003 году, реализация основана на так называемом примитивоцентричном шитом коде (англ. primitive-centric threaded code) — гибридной модели между прямым и косвенным шитым кодом[8] с поддержкой оптимизации за счёт динамического объединения форт-слов в суперинструкции[9][10]. Версия 0.7 отличается более гибким, динамически кешируемым отображением форт-стеков на регистры процессора[7][11][12].[13]

В настоящее время ведётся разработка версии Gforth 0.7.9[14]

Примечания[править | править код]

  1. 1 2 Origin - Gforth Manual. Дата обращения: 16 декабря 2015. Архивировано 4 марта 2016 года.
  2. 1 2 directory.fsf.org: GNU Forth. Free Software Foundation (14 June 2014). Дата обращения: 16 декабря 2015. Архивировано 19 февраля 2016 года.
  3. M. Anton Ertl, David Gregg, Andreas Krall and Bernd Paysan. vmgen - A Generator of Efficient Virtual Machine Interpreters // Software—Practice and Experience. — 2001. — Т. 32. — С. 265-293.
  4. http://bigforth.sourceforge.net/ Архивная копия от 2 апреля 2015 на Wayback Machine by Bernd Paysan
  5. Архивированная копия. Дата обращения: 16 декабря 2015. Архивировано 10 февраля 2016 года.
  6. Gregg and Ertl, 2004, с. 206.
  7. 1 2 Ertl M. A. A look at Gforth performance // 25th EuroForth Conference. — 2009. — С. 23-31.
  8. Direct or Indirect Threaded? - Gforth Manual. www.complang.tuwien.ac.at. Дата обращения: 17 января 2020. Архивировано 18 декабря 2019 года.
  9. Dynamic Superinstructions - Gforth Manual. www.complang.tuwien.ac.at. Дата обращения: 17 января 2020. Архивировано 18 декабря 2019 года.
  10. Ertl M. A. Threaded Code Variations and Optimizations // EuroForth 2001 Conference Proceedings. — 2001. — С. 49-55.
  11. Ertl M. A., Gregg D. Combining stack caching with dynamic superinstruction // Interpreters, Virtual Machines and Emulators (IVME ’04). — 2004. — С. 7-14.
  12. Ertl M. A., Gregg D. Stack caching in Forth // 21st EuroForth Conference. — 2005. — С. 6-15.
  13. Gforth - GNU Project - Free Software Foundation.. www.gnu.org. Дата обращения: 17 января 2020. Архивировано 31 января 2020 года.
  14. Bernd Paysan. Gforth mirror on GitHub (original is on Savannah). Contribute to forthy42/gforth development by creating an account on GitHub. — 2020-01-16. Архивировано 5 ноября 2020 года.

Литература[править | править код]

  • D.E. Stevenson. Leaning a New Language, Gforth // Programming Language Fundamentals by Example. — CRC Press, 2006. — С. 37-46. — 256 с. — ISBN 9781420013351.
  • David Gregg and M. Anton Ertl. A Language and Tool for Generating Efcient Virtual Machine Interpreters // Domain-Specific Program Generation: International Seminar, Dagstuhl Castle, Germany, March 23-28, 2003, Revised Papers / Lengauer, C. and Batory, D. and Consel, C. and Odersky, M.. — Springer Berlin Heidelberg, 2004. — P. 196-214. — 332 p. — ISBN 9783540259350.

Ссылки[править | править код]