Введение
Gosling Emacs (часто сокращают до "Gosmacs" или "gmacs") — это прекращенная реализация Emacs, написанная в 1981 году Джеймсом Гослингом на языке C.
Гослинг изначально разрешил распространять Gosling Emacs без каких-либо формальных ограничений, как того требовала "коммуна Emacs" с 1970-х годов, лишь прося прислать письмо с подтверждением авторства. Позже, желая продолжить работу над другими проектами, он продал свою версию Emacs компании UniPress. Конфликт между Ричардом Столлманом и UniPress послужил стимулом для создания первой официальной лицензии для Emacs, которая впоследствии стала GPL, поскольку в 1980 году Конгресс ввел защиту авторских прав на программное обеспечение.
Особенности
Gosling Emacs был особенно примечателен благодаря эффективному коду обновления экрана, который использовал технику динамического программирования для решения классической задачи коррекции одной строки в другую. Алгоритм был весьма сложным; в начале этого участка исходного кода был изображён череп и скрещённые кости, выполненные в ASCII-графике, предупреждающие любого, кто захочет внести в него изменения, что даже если им кажется, что они понимают, как работает код отображения, они, скорее всего, ошибаются.
Распространение
Поскольку Гослинг разрешил его свободное распространение, Ричард Столлман использовал часть кода Gosling Emacs в первоначальной версии GNU Emacs. В частности, он переписал фрагмент кода Гослинга, начинавшийся с комментария в виде черепа и скрещенных костей, сделав его "более коротким, быстрым, понятным и расширяемым". Компания Unipress вызвала споры, потребовав от Столлмана прекратить распространение его версии Emacs для Unix. UniPress так и не предприняла никаких юридических действий против Столлмана или его только что созданного Фонда свободного программного обеспечения, полагая, что "любители и академики никогда не смогут создать Emacs, способный конкурировать" с их продуктом. Весь код Gosling Emacs был удален из GNU Emacs к версии 16.56 (июль 1985 года), за исключением, возможно, нескольких особо сложных разделов кода, отвечающих за отображение. В последних версиях GNU Emacs (начиная с августа 2004 года) предупреждение в виде черепа и скрещенных костей отсутствует.
Язык расширения
Его язык расширения, Mocklisp, имеет синтаксис, напоминающий Lisp, но в Mocklisp нет списков, есть только строки и массивы. Интерпретатор Mocklisp, разработанный Гослингом и его коллегой, был заменен полноценным интерпретатором Lisp в GNU Emacs.