Выпустил релиз Guile-SMC 0.6.2:
https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.6.2
Ключевые изменения:
- Исправлена ошибка с процедурой
- Исправлена ошибка высчитывания отметок времени в модуле
- Исправлен рассчёт времени в модуле
- В модуль
- Теперь Guile-SMC позволяет задавать
- В модуле
- Обновлена документация.
Новый релиз обратно совместим с версиями 0.6.0 и 0.6.1.
#dev #projects #guile #smc
https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.6.2
Ключевые изменения:
- Исправлена ошибка с процедурой
pre-action в модуле (smc context functional char): Теперь процедура во всех случаях возвращает контекст.- Исправлена ошибка высчитывания отметок времени в модуле
(smc trace-context). Теперь значение отметок времени всегда получается положительным, как и должно. При этом, если всё же обнаруживается уход времени в отрицательные значения, бросается ошибка.- Исправлен рассчёт времени в модуле
(smc cli command-profile) профайлера. Теперь профайлер Guile-SMC даёт правильные значения суммарного времени работы ДКА и времени для каждого отдельно взятого состояния.- В модуль
(smc context oop generic) добавлен недостающий модуль (smc core log). Его отсутствие приводило бы к ошибками при попытке использования (smc context oop generic).- Теперь Guile-SMC позволяет задавать
pre-action и post-action для ДКА прямо в PlantUML описании. Эти процедуры выполняются перед всеми остальными проверками для каждого состояния, и могут например использоваться для обновления счётчиков в контексте. Пример задания этих процедур в PlantUML файле описания ДКА:legend- Для класса
pre-action: custom-pre-action
post-action: custom-post-action
endlegend
<fsm> в модуле (smc fsm) теперь добавлены процедуры для задания pre-action (fsm-pre-action-set!) и post-action (fsm-post-action-set!). Также из модуля экспортированы процедуры fsm-pre-action и fsm-post-action для получения текущих значений pre-action и post-action соответственно.- В модуле
(smc core log) теперь регистрируется логгер по-умолчанию, под именем "guile-smc". Также добавлена процедура smc-log-default-logger.- Обновлена документация.
Новый релиз обратно совместим с версиями 0.6.0 и 0.6.1.
#dev #projects #guile #smc
GitHub
Release v0.6.2 · artyom-poptsov/guile-smc
Version 0.6.2
⚡1
memory heap
Сравнение скорости обработки текстовых данных через Guile-DSV. В первом случае (верхняя синяя линия на графике) тест проходил на оригинальной версии Guile-DSV с рукописным ДКА, а во втором случае (оранжевая нижняя линяя на графике) — с ДКА, сгенерированным…
Провёл ещё один замер производительности Guile-DSV с новым ДКА, сделанным на базе Guile-SMC, используя датасет "Feed Grains: Yearbook Tables" на почти полмиллиона строк (498929 строк, если быть точным.)
Время на графиках в секундах.
Новая версия парсера работает быстрее старого на этом примере примерно в 15 раз.
Конечно, сорость обработки данных ещё зависит от самих данных и их формата. Например, парсер Unix-формата DSV работает быстрее, поскольку там нюансов меньше, и следовательно сам ДКА для Unix-формата проще.
#dev #projects #guile #dsv
Время на графиках в секундах.
Новая версия парсера работает быстрее старого на этом примере примерно в 15 раз.
Конечно, сорость обработки данных ещё зависит от самих данных и их формата. Например, парсер Unix-формата DSV работает быстрее, поскольку там нюансов меньше, и следовательно сам ДКА для Unix-формата проще.
#dev #projects #guile #dsv
⚡1
Выпустил релиз Guile-DSV 0.7.0:
https://github.com/artyom-poptsov/guile-dsv/releases/tag/v0.7.0
Анонс в списке рассылки
https://mail.gnu.org/archive/html/guile-user/2023-08/msg00050.html
Ключевые изменения:
- Guile-DSV теперь использует Guile State Machine Compiler (Guile-SMC) для генерации кода парсеров формата Unix и RFC 4180 из PlantUML описания во время сборки. Это изменение позволило сократить количество кода на Scheme, и сделать описание парсера более читаемое и краткое. Кроме того, новая версия парсеров работает от 3 до 15 раз быстрее старой версии (замеры: 1, 2).
- Процедуры
- Утилита
#dev #projects #guile #dsv
https://github.com/artyom-poptsov/guile-dsv/releases/tag/v0.7.0
Анонс в списке рассылки
guile-user:https://mail.gnu.org/archive/html/guile-user/2023-08/msg00050.html
Ключевые изменения:
- Guile-DSV теперь использует Guile State Machine Compiler (Guile-SMC) для генерации кода парсеров формата Unix и RFC 4180 из PlantUML описания во время сборки. Это изменение позволило сократить количество кода на Scheme, и сделать описание парсера более читаемое и краткое. Кроме того, новая версия парсеров работает от 3 до 15 раз быстрее старой версии (замеры: 1, 2).
- Процедуры
dsv->scm и dsv-string->scm теперь поддерживают дополнительные именованные параметры: #:debug-mode? (включить/выключить режим отладки), #:log-driver (установить драйвер логирования; по-умолчанию используется "syslog"), #:log-opt (установить параметры драйвера логирования — см. документацию для детального описания.)- Утилита
dsv теперь также поддерживает опции --log-driver и --log-opt — см. dsv --help для справки.#dev #projects #guile #dsv
GitHub
Release v0.7.0 · artyom-poptsov/guile-dsv
Version 0.7.0
⚡2
memory heap
Похоже, нашёл баг в Guile-ZLib: https://notabug.org/guile-zlib/guile-zlib/issues/4 И уже сделал патч: https://notabug.org/guile-zlib/guile-zlib/pulls/5 #guile #patches
Ночью не спалось, придумал (не без подсказок Людовика Кортеса, конечно) и реализовал вроде бы хорошую эвристику для решения проблемы выделения памяти под распаковываемые данные в Guile-Zlib:
https://notabug.org/guile-zlib/guile-zlib/issues/4#issuecomment-40615
Собственно, коммит, который делает всё хорошо (я надеюсь):
https://notabug.org/a_v_p/guile-zlib/commit/9a32cef04aeb84c3b6fc60b78174399b10591a02
#dev #bugfix
https://notabug.org/guile-zlib/guile-zlib/issues/4#issuecomment-40615
Собственно, коммит, который делает всё хорошо (я надеюсь):
https://notabug.org/a_v_p/guile-zlib/commit/9a32cef04aeb84c3b6fc60b78174399b10591a02
#dev #bugfix
notabug.org
guile-zlib/guile-zlib
👾2
Впервые воспользовался
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69635
До этого обычно создавал патчи через
Вчера был на Guix Patch Review Session, как раз спрашивал про настройку и использование
Хорошая инструкция по настройке:
https://git-send-email.io/
Подробная инструкция, как "подружить"
https://stackoverflow.com/a/68238913
Установка необходимых пакетов в GNU Guix:
После всей настройки отправить последний коммит с текущей ветви в виде патча в список рассылки
Потратил примерно 2 часа на то, чтобы понять, почему у меня
Оказалось, что в
Ещё в очередной раз убедился, что мне нужно больше говорить с людьми по-английски, чтобы прокачать разговорный навык. Читаю, пишу и на слух воспринимаю английский достаточно свободно, а вот для real time общения нужно разговорно-мыслительные мускулы прокачивать.
#guix_patches #dev #guix
git send-email для отправки патчей:https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69635
До этого обычно создавал патчи через
git format-patch, и затем отправлял их, прикрепляя к письму через Emacs Gnus.Вчера был на Guix Patch Review Session, как раз спрашивал про настройку и использование
git send-email. Пользователь Romain Garbage показал свой workflow по работе с патчами, ответил на вопросы. Респект и уважуха человеку, хотя наверное он вряд ли это сообщение здесь прочитает. :-)Хорошая инструкция по настройке:
https://git-send-email.io/
Подробная инструкция, как "подружить"
git send-email с Gmail:https://stackoverflow.com/a/68238913
Установка необходимых пакетов в GNU Guix:
guix install perl-authen-sasl perl-mime-base64 perl-mime-tools perl-net-smtp-ssl git:send-email git perl-io-socket-ssl
После всей настройки отправить последний коммит с текущей ветви в виде патча в список рассылки
[email protected] можно так:git send-email [email protected] -1 --base=HEAD~1
Потратил примерно 2 часа на то, чтобы понять, почему у меня
git send-email вываливается с ошибкой:Command unknown: 'AUTH' at /gnu/store/kjbpvqmq723z2n07qm8wkc3jjv9wpfmi-git-2.41.0-send-email/libexec/git-core/.git-send-email-real line 1724
Оказалось, что в
~/.gitconfig в разделе [sendemail] написал smtpSncryption вместо smtpEncryption.Ещё в очередной раз убедился, что мне нужно больше говорить с людьми по-английски, чтобы прокачать разговорный навык. Читаю, пишу и на слух воспринимаю английский достаточно свободно, а вот для real time общения нужно разговорно-мыслительные мускулы прокачивать.
#guix_patches #dev #guix
🔥4
#lisp #guile #dev
Artyom Bologov, "Guile Optimization Gotchas: There Is No Free Beer, Only Cheap":
https://aartaka.me/guile-optimization-gotchas
Интересная статья про работу с профилировщиком GNU Guile и оптимизации.
Artyom Bologov, "Guile Optimization Gotchas: There Is No Free Beer, Only Cheap":
https://aartaka.me/guile-optimization-gotchas
Интересная статья про работу с профилировщиком GNU Guile и оптимизации.
Artyom Bologov
Guile Optimization Gotchas: There Is No Free Beer, Only Cheap
Optimizing Guile Scheme is not always obvious. This post is a collection of takeaways from optimizing a heavily numeric piece of code.
🔥4
Похоже, что удалось выявить и исправить ошибку в утилите btop, которая приводила к SEGFAULT:
https://github.com/aristocratos/btop/pull/958
Жду review патча от авторов утилиты.
#dev #patches
https://github.com/aristocratos/btop/pull/958
Жду review патча от авторов утилиты.
#dev #patches
GitHub
GitHub - aristocratos/btop: A monitor of resources
A monitor of resources. Contribute to aristocratos/btop development by creating an account on GitHub.
⚡3
memory heap
Похоже, что удалось выявить и исправить ошибку в утилите btop, которая приводила к SEGFAULT: https://github.com/aristocratos/btop/pull/958 Жду review патча от авторов утилиты. #dev #patches
GitHub
Merge pull request #958 from artyom-poptsov/avp-fix-embedded-intel-gr… · aristocratos/btop@df3f052
…aphics-segfault
👾3
#dev #guile_ssh
Работаю над допиливанием изменений в Guile-SSH перед следующем релизом. Добавил в GitHub CI задачу сборки с libssh 0.8.3 для тестирования изменений.
Благодаря GNU Guix это сделать достаточно просто. [1, 2]
Выявил проблему в обратной совместимости, исправил. Таким образом, Guile-SSH сейчас должен поддерживать libssh 0.8.3+, 0.9, 0.10 и 0.11. Учитывая, что libssh 0.8 был выпущен в 2018-м, считаю достаточно неплохим результатом.
В libssh 0.7.4 и более старых был выявлен CVE-2016-0739, поэтому смысла поддерживать такое старое ископаемое не вижу (хотя пока теоретически Guile-SSH может с ними собраться, но я даже это не проверяю теперь.) Думаю, что поддержку версий libssh старше 0.8.3 стоит вообще выкинуть, так будет честнее.
Работаю над допиливанием изменений в Guile-SSH перед следующем релизом. Добавил в GitHub CI задачу сборки с libssh 0.8.3 для тестирования изменений.
Благодаря GNU Guix это сделать достаточно просто. [1, 2]
Выявил проблему в обратной совместимости, исправил. Таким образом, Guile-SSH сейчас должен поддерживать libssh 0.8.3+, 0.9, 0.10 и 0.11. Учитывая, что libssh 0.8 был выпущен в 2018-м, считаю достаточно неплохим результатом.
В libssh 0.7.4 и более старых был выявлен CVE-2016-0739, поэтому смысла поддерживать такое старое ископаемое не вижу (хотя пока теоретически Guile-SSH может с ними собраться, но я даже это не проверяю теперь.) Думаю, что поддержку версий libssh старше 0.8.3 стоит вообще выкинуть, так будет честнее.
GitHub
GitHub - artyom-poptsov/guile-ssh: Guile-SSH is a library that provides access to the SSH protocol for GNU Guile programs.
Guile-SSH is a library that provides access to the SSH protocol for GNU Guile programs. - artyom-poptsov/guile-ssh
🔥4👀1
#dev #guile #patches
Замёржили моё исправление в документации Guile-GnuTLS:
https://gitlab.com/gnutls/guile/-/merge_requests/26
Замёржили моё исправление в документации Guile-GnuTLS:
https://gitlab.com/gnutls/guile/-/merge_requests/26
GitLab
doc/gnutls-guile: Update "Anonymous Authentication Guile Example" (!26) · Merge requests · gnutls / Guile-GnuTLS · GitLab
doc/gnutls-guile.texi: Update "Anonymous Authentication Guile Example" to work with the latest Guile-GnuTLS version.