Инструментарий Jitter официально перешёл под крыло проекта GNU и теперь будет развиваться под именем GNU Jitter с использованием инфраструктуры GNU и в соответствии с требованиями данного проекта. Jitter позволяет генерировать переносимые и очень быстрые виртуальные машины для произвольных конструкций языков программирования, производительность выполнения кода в которых существенно опережает интерпретаторы и близка к нативному компилируемому коду. Исходные тексты Jitter написаны на языке Си и поставляются под лицензией GPLv3.
Jitter принимает в качестве входных данных высокоуровневую спецификацию инструкций, поддерживаемых виртуальной машиной, а на выходе формирует готовую реализацию виртуальной машины для выполнения заданных инструкций. Логика каждой инструкции в спецификации задаётся при помощи кода на языке Си (см. пример спецификации виртуальной машины для языка Lisp). Из дополнительных возможностей отмечается поддержка труднореализуемых на языке Си и свойственных динамическим языкам программирования операций условного ветвления, таких как проверка значений тегов и проверка переполнений.
Результирующая виртуальная машина оформляется на языке Си с небольшим числом ассемблерных вставок. Предоставляются настройки для включения различных оптимизаций и выбора механизмов диспетчеризации, что упрощает портирование виртуальной машины для разных платформ. Поддерживается использование регистровой, стековой и комбинированной архитектуры выполнения, а также возможность отражения структур данных VM в аппаратные регистры CPU и подключение сборщиков мусора. Сгенерированный код включает простой C API для динамической подстановки и выполнения кода в виртуальной машине, а также программу-драйвер для обособленного запуска в виртуальной машине кода из текстовых файлов.
нечитабельная лапша, или только мне так кажется?
http://git.ageinghacker.net/jitter/tree/example-vms/jitterlisp/jitterlisp.jit
Др. дело что именно и как можно ли с этим сделать и показывать пример читаемый.
А у вебмакак всё едет, у них и канал - толстый, и проц - 24-ядерный, и оперативы - 128 гигов, и смузи - не протухло.
Вносить изменения через месяц после написания. Отдавать другим для тех же целей.
Всё нормально. Во-втором приближении квадрат - это окружность. Окружность - равнобедренный многоугольник со стороной стремящейся к нулю. Квадрат - это равнобедренный многоугольник. Треугольник пробовали - не катит.
Некоторые такое называют TODO
А такое: "# FIXME: is this ever needed?"
или такое // FIXME: just a test. Remove.
и тем более // FIXME: this loops forever with no-threading (not with the other dispatching models // including minimal threading) when the callee is compiled. A Jitter bug.
У меня на проекте это просто бы не дали вмерджить - завернули бы еще на этапе код-ревью.
Добро пожаловать
(Lisp '(очевиден что его учить то ? (Что-то что-то1 ... Что-тон)))
Ну да, писать Fortran^W Python/С код на лиспах действительно неудобно.
Не, я не против разнообразия, но не ради разнообразия же, а то уж слишком однообразно получается.
Пожалуйста Смотри всё в example-vms/jitterlisp/
The VM, alone, if not a complete implementation of the language.
Я ещё новичок, по-русски. -- Извините.
Do you have plans to implement VMs for other languages?
Спасибо Crazy Alex. Всё хорошо. Мы - хакеры, мы знаем необычных людей. Я сам необычный.
> Do you have plans to implement VMs for other languages?
GNU Poke первый пользователь (http://jemarch.net/poke ) -- я не автоr, но автор мой друг.
Я хочу просто́й язык, и простую виртуа́льную машину. Smalltalk. А мой язык.
sprintf ждем очередной баг с переполнением буфера :-)
ageinghacker.net uses an invalid security certificate. The certificate is not trusted because it is self-signed. Error code: MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT