The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

В число проектов GNU принят генератор языковых виртуальных машин Jitter

20.12.2021 09:58

Инструментарий Jitter официально перешёл под крыло проекта GNU и теперь будет развиваться под именем GNU Jitter с использованием инфраструктуры GNU и в соответствии с требованиями данного проекта. Jitter позволяет генерировать переносимые и очень быстрые виртуальные машины для произвольных конструкций языков программирования, производительность выполнения кода в которых существенно опережает интерпретаторы и близка к нативному компилируемому коду. Исходные тексты Jitter написаны на языке Си и поставляются под лицензией GPLv3.

Jitter принимает в качестве входных данных высокоуровневую спецификацию инструкций, поддерживаемых виртуальной машиной, а на выходе формирует готовую реализацию виртуальной машины для выполнения заданных инструкций. Логика каждой инструкции в спецификации задаётся при помощи кода на языке Си (см. пример спецификации виртуальной машины для языка Lisp). Из дополнительных возможностей отмечается поддержка труднореализуемых на языке Си и свойственных динамическим языкам программирования операций условного ветвления, таких как проверка значений тегов и проверка переполнений.

Результирующая виртуальная машина оформляется на языке Си с небольшим числом ассемблерных вставок. Предоставляются настройки для включения различных оптимизаций и выбора механизмов диспетчеризации, что упрощает портирование виртуальной машины для разных платформ. Поддерживается использование регистровой, стековой и комбинированной архитектуры выполнения, а также возможность отражения структур данных VM в аппаратные регистры CPU и подключение сборщиков мусора. Сгенерированный код включает простой C API для динамической подстановки и выполнения кода в виртуальной машине, а также программу-драйвер для обособленного запуска в виртуальной машине кода из текстовых файлов.

  1. Главная ссылка к новости (http://ageinghacker.net/blog/p...)
  2. OpenNews: Релиз 19.3.0 виртуальной машины GraalVM и реализаций Python, JavaScript, Ruby и R на её основе
  3. OpenNews: Мэйнтейнеры проектов GNU выступили против единоличного лидерства Столлмана
  4. OpenNews: Фонд свободного ПО пересмотрит взаимодействие с проектом GNU
  5. OpenNews: Ричард Столлман опубликовал "Руководство по доброжелательному общению" для проектов GNU
  6. OpenNews: Проекту GNU исполнилось 35 лет
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/56378-gnu
Ключевые слова: gnu, jitter, vm
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (63) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 10:14, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Симд есть? Жытлисп, это жизнеспособно? Жытгцы всё?
     
     
  • 2.5, Аноним (5), 10:16, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +11 +/
    жыесть брат
     
  • 2.59, Аноньимъ (ok), 05:59, 21/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Я так понимаю вы можете любую дичь ассемблерную вставить по своему желанию.
     

  • 1.3, Аноним (3), 10:15, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    > см. пример спецификации виртуальной машины для языка Lisp

    нечитабельная лапша, или только мне так кажется?

     
     
  • 2.24, And (??), 12:20, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    2182-ве строки местами без отступов - примерно так и есть.

    http://git.ageinghacker.net/jitter/tree/example-vms/jitterlisp/jitterlisp.jit

    Др. дело что именно и как можно ли с этим сделать и показывать пример читаемый.

     

  • 1.6, Аноним (6), 10:29, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Жесть конечно... Сама спека - плохочитаемая неструктурированная портянка: куча ifdef, многострочных дефайнов и закомментированных вызовов.
    У них только в этом примере 13 FIXME... И не стыдно было такое выкладывать?
     
     
  • 2.8, ыы (?), 10:31, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вам шашечки или ехать?
     
     
  • 3.12, Аноним (6), 10:54, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Это не серьезно. Таким аргументом можно оправдать все что угодно:
    у вас лапшкод и крашится аппа - тебе шашечки...
    у вас на сайте 10Мб js-кода - тебе шашечки...
     
     
  • 4.16, Аноним (16), 11:26, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так 10мб js кода и не едет. А это - едет.
     
     
  • 5.50, Аноним (50), 16:25, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это у вас - не едет. Потому что вы проезд не оплачиваете.

    А у вебмакак всё едет, у них и канал - толстый, и проц - 24-ядерный, и оперативы - 128 гигов, и смузи - не протухло.

     
  • 3.25, And (??), 12:24, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Вам шашечки или ехать?

    Вносить изменения через месяц после написания. Отдавать другим для тех же целей.

     
  • 3.32, Аноним (32), 13:16, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да чёрт с этими шашечками. Колёса почему квадратные?
     
     
  • 4.37, ng (ok), 14:32, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Колёса почему квадратные?

    Всё нормально.
    Во-втором приближении квадрат - это окружность.
    Окружность - равнобедренный многоугольник со стороной стремящейся к нулю.
    Квадрат - это равнобедренный многоугольник.
    Треугольник пробовали - не катит.

     
     
  • 5.65, paver (?), 13:29, 21/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ... только не равнобедренный, а правильный
     
  • 4.51, Аноним (50), 16:29, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не окатались ещё.
     
  • 2.22, n00by (ok), 12:17, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    # FIXME: make a one-argument version generalizing these.  These zero-argument
    # versions are useful to generate from rewrite rules right now, before Jitter
    # support is ready.

    Некоторые такое называют TODO

     
     
  • 3.35, Аноним (6), 14:21, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну допустим это было 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.

    У меня на проекте это просто бы не дали вмерджить - завернули бы еще на этапе код-ревью.

     
     
  • 4.38, Crazy Alex (ok), 14:36, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так это и не продакшн-код
     
  • 4.43, n00by (ok), 15:08, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    threading в контексте dispatching models - скорее всего не потоки, а т.н. шитый код (threaded code).
     

  • 1.7, ыы (?), 10:31, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Хорошая попытка. Но нет. Не заставите учить LISP. Пишите спецификацию для js, тогда посмотрим...
     
     
  • 2.9, Аноним (9), 10:36, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тебе надо - ты и пиши.

    Добро пожаловать

     
     
  • 3.10, ыы (?), 10:41, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ну при таком подходе пожалуй и исходники открывать нет смысла.
     
     
  • 4.11, Аноним (9), 10:47, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Исходники и открывают для тех, кому надо. Они и пишут
     
  • 4.44, Аноним (44), 15:13, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Напиши свои и не открывай, в чем дело.
     
  • 2.14, Аноним (14), 11:00, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Lisp очевиден, что его учить-то? (Что-то что-то1 ... Что-тон)
     
     
  • 3.15, Аноним (15), 11:04, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    (Lisp (очевиден (что (его (учить (то (? (Что (то (что (то1 (... (Что (тон))))))))))))))
     
     
  • 4.21, Аноним (9), 12:13, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Сразу видно тех, кто про лисп слышал только скобки

    (Lisp '(очевиден что его учить то ? (Что-то что-то1 ... Что-тон)))

     
     
  • 5.26, Аноним (15), 12:42, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    пробовал на нем писать плагин для гимпа. Неадекватный язычок. Даже на XSLT (!) (вы не ослышались! На XSLT!) легче программировать (!) (вы не ослышались! программировать на XSLT!)
     
     
  • 6.29, Аноним (14), 12:57, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Язык нормальный, очень даже изящный. Вопрос весь только в том, какой в гимпе диалект (т е. грубо говоря какие там стандартные функции из коробки есть). Но это уже проблема гимпа, а не лиспа как явления
     
     
  • 7.31, Аноним (15), 13:07, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    получается лисп как социализм. Каждый считает, что у других он неправильный
     
  • 6.40, анонн (ok), 14:45, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > пробовал на нем писать плагин для гимпа. Неадекватный язычок. Даже на XSLT
    > (!) (вы не ослышались! На XSLT!) легче программировать (!) (вы не
    > ослышались! программировать на XSLT!)

    Ну да, писать Fortran^W Python/С код на лиспах действительно неудобно.


     
  • 6.56, Урри (ok), 22:20, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что, функциональщину не потянул, императивщик?
     
     
  • 7.72, Аноним (72), 04:55, 22/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если писать функциональщину, то в лиспе неожиданно меньше (разнообразных) скобок по сравнению с... А казалось бы...
     
  • 4.28, Аноним (14), 12:56, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну и всё очевидно же, вложенная структура со скобками
     
  • 3.23, n00by (ok), 12:19, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Может там был намёк на размер спецификации?
     
  • 2.20, Аноним (20), 12:10, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    "Логика каждой инструкции в спецификации задаётся при помощи кода на языке Си"
     

  • 1.13, Анонус (?), 10:56, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чем это лучше GraalVM с Truffle?
     
     
  • 2.52, Аноним (50), 16:30, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Словом GNU в названии. И v3.
     

  • 1.27, Аноним (27), 12:45, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Во времена моего детства это называлось либо транслятором (лисп->с) либо кросс-компилятором (лисп->с->бинарник). Ой, тут же еще и виртуальная машина. Ладно, так и запишем - переизобрели шитый код (байткод). Очередная нот-ин-хаус вариация на тему LLVM.

    Не, я не против разнообразия, но не ради разнообразия же, а то уж слишком однообразно получается.

     
     
  • 2.39, Crazy Alex (ok), 14:38, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот если б оно только лисп умело - можно было бы и так называть. А оно умеет генерировать VM для произвольного языка, задавнного спекой. Разницу видите?
     

  • 1.30, anonymous (??), 12:59, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У вас ссылка битая на https://www.gnu.org/software/jitter/
     
  • 1.33, Аноним (-), 14:04, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Добро пожаловать в дружную семью GNU.
     
     
  • 2.48, Аноним (48), 16:05, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    где одни трупики? как там поживает libdwg или приоритетный проект GNU по имени gnash ?
     
     
  • 3.63, Аноним (20), 11:40, 21/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Приоритет с gnash снят ещё нескольео лет назад. Ибо Адоба закопала Flash.
     

  • 1.34, Luca SAIU (?), 14:18, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Привет.  Я Luca Saiu.

    Пожалуйста Смотри всё в example-vms/jitterlisp/

    The VM, alone, if not a complete implementation of the language.

    Я ещё новичок, по-русски. -- Извините.

     
     
  • 2.45, Аноним (44), 15:19, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Спасибо, Лука.
     
  • 2.47, Брат Анон (ok), 15:50, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Точно это ты?
    Если это точно ты -- одобряю, что пишешь код.
    Но непонятно на сколько в таком ПО есть потребность.
     
  • 2.53, Crazy Alex (ok), 19:10, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Luca, thank you for your work, it is really interesting. This forum has some "traditions" that cause many people to demonstrate their hostility, it is mostly a jest.

    Do you have plans to implement VMs for other languages?

     
     
  • 3.55, Luca SAIU (ok), 21:28, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Luca, thank you for your work, it is really interesting. This forum
    > has some "traditions" that cause many people to demonstrate their hostility,
    > it is mostly a jest.

    Спасибо Crazy Alex.  Всё хорошо.  Мы - хакеры, мы знаем необычных людей.  Я сам необычный.

    > Do you have plans to implement VMs for other languages?

    GNU Poke первый пользователь (http://jemarch.net/poke ) -- я не автоr, но автор мой друг.

    Я хочу просто́й язык, и простую виртуа́льную машину.  Smalltalk.  А мой язык.

     

  • 1.36, svpcom (ok), 14:29, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    http://git.ageinghacker.net/jitter/tree/example-vms/jitterlisp/jitterlisp.jit

    sprintf
    ждем очередной баг с переполнением буфера :-)

     
     
  • 2.57, Урри (ok), 22:22, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Уже snprintf.
     

  • 1.41, Luca SAIU (?), 15:03, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    jitterlispvm_specialized_instruction_names [sins_opcode] размер ограничен.
     
     
  • 2.54, Аноним (50), 19:42, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    I'm sorry for the offtop, but there is an issue with your website.

    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

     
     
  • 3.58, Luca SAIU (ok), 22:40, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Я знаю, спасибо.  I fail to see why I should trust a CA, including the ones giving certificates for free.
     
     
  • 4.66, Аноним (50), 13:48, 21/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Because now there is absolutely no means to verify integrity of the channel The... большой текст свёрнут, показать
     

  • 1.42, Luca SAIU (?), 15:07, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Это C.  Нормальное.
     
     
  • 2.46, svpcom (ok), 15:34, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А в чем проблема использовать snprintf(buffer, sizeof(buffer), ...) ?
     
     
  • 3.67, Аноним (2), 14:00, 21/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Snprintf на сколько там порядков тормознее? На 3 или 4 да? Не оно конечно зависит от того сколько раз за секунду нужно вызвать, но обычно много. Потом удивляетесь, чё это программы так тормозят.
     

  • 1.49, Luca SAIU (?), 16:12, 20/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Нет проблем.  Спасибо.
     
  • 1.64, Аноним (64), 12:36, 21/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "Труднореализуемая" проверка переполнений на языке Си:
    assert(index < length);
    assert(index >= 0);
     
     
  • 2.68, sdkhflskhgl (?), 14:37, 21/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    а если index это size_t ?
     
     
  • 3.71, Аноним (71), 23:09, 21/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    тогда assert((ssize_t)index >= 0);
    правда, тогда нет смысла в использовании size_t ин да фёрст плейс.
    ...
    ааа, вот поэтому оно и труднореализуемо, наверное.
     

  • 1.73, rmmr (ok), 13:47, 23/12/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Из документации одни видосики и неоконченный туториал? Современно!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру