👀3🔥2🕊1
memory heap
Another Guile-PNG generative art: https://gist.github.com/artyom-poptsov/72fe27b7441f984262c99ee2b27082a8 #generative_art #art #guile_png #scheme
Экспериментальным способом получено изображение с повышенной шакальностью.
#generative_art #guile_png #scheme
#generative_art #guile_png #scheme
🎃4
Я аделлс ,агммопрру акоортя адеелт викооррсту бвку в .авлосх
#scheme
#!/usr/bin/env -S guile -L modules -e main -s
!#
(define (main args)
(let ((lst (string-split (cadr args) #\space)))
(for-each (lambda (word)
(display
(apply string
(sort (string->list word)
char<?)))
(display " "))
lst))
(newline))
#scheme
👾4
Выпустил релиз Guile-SSH 0.18.0:
https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.18.0
В новой версии:
1. Убрана поддержка libssh версий старше 0.8.0 (например, libssh 0.7)
2. Изменён интерфейс модуля
Зарепорчено пользователем graywolf в #39.
3.
Зарепорчено пользователем graywolf в #38.
4. Исправление ошибки компиляции из-за использования ключевого слова
Зарепорчено и исправлено пользователем Peter Tillemans в #43.
5. Исправлена сборка с libssh < 0.8.3. Также добавлены новые тесты в GitHub CI, проверяющие работу Guile-SSH на старых версиях.
6. Проект получил новое лого, более минималистичное и лаконичное! Спасибо дизайнеру, художнику и моему другу (в одном лице) Darya Sev. за ценные советы по поводу дизайна нового логотипа.
7. Обновлена и дополнена документация.
8. Обновлены и исправлены тесты.
9. Добавлен файл
#projects #guile_ssh #guile #scheme
https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.18.0
В новой версии:
1. Убрана поддержка libssh версий старше 0.8.0 (например, libssh 0.7)
2. Изменён интерфейс модуля
(ssh popen): процедуры open-remote-pipe*, open-remote-input-pipe* и open-remote-output-pipe* теперь работают также, как и open-pipe*. Также это делает их поведение соответствующим тому, что описано в документации Guile-SSH. Зарепорчено пользователем graywolf в #39.
3.
make-session теперь правильно обрабатывает параметр #:config со значением #f. Теперь выставление данного параметра в #f (false) выключает чтение стандартных конфигурационных файлов SSH (как и должно было быть по документации Guile-SSH). При использовании старых версий libssh (до 0.9) выставление параметра #:config в #f приводит к тому, что используется файл /dev/null в качестве конфигурационного (таким образом, предотвращая чтение стандартных конфигурационных файлов.)Зарепорчено пользователем graywolf в #38.
4. Исправление ошибки компиляции из-за использования ключевого слова
bool в качестве имени переменной.Зарепорчено и исправлено пользователем Peter Tillemans в #43.
5. Исправлена сборка с libssh < 0.8.3. Также добавлены новые тесты в GitHub CI, проверяющие работу Guile-SSH на старых версиях.
6. Проект получил новое лого, более минималистичное и лаконичное! Спасибо дизайнеру, художнику и моему другу (в одном лице) Darya Sev. за ценные советы по поводу дизайна нового логотипа.
7. Обновлена и дополнена документация.
8. Обновлены и исправлены тесты.
9. Добавлен файл
CODE_OF_CONDUCT.org в репозиторий.#projects #guile_ssh #guile #scheme
GitHub
Release v0.18.0 · artyom-poptsov/guile-ssh
Table of Contents
Changes in version 0.18.0 (2024-11-10)
Change (ssh popen) procedures behavior:API_CHANGE:
make-session now handles #:config set to #f properly
session-func.c: Fix compile error ...
Changes in version 0.18.0 (2024-11-10)
Change (ssh popen) procedures behavior:API_CHANGE:
make-session now handles #:config set to #f properly
session-func.c: Fix compile error ...
🔥5
memory heap
А вот кстати вылезла новая проблема: фигура не центрирована внутри изображения.
Переписал алгоритм отрисовки шестигранника, используя вот этот пример. Теперь кстати можно в целом многогранники реализовать, и сделать просто шестигранник частным случаем.
Красными точками отмечена стартовая точка.
#guile_png #scheme
Красными точками отмечена стартовая точка.
#guile_png #scheme
Преисполнился (ice-9 match) :
#lisp #scheme
(use-modules (ice-9 match) (srfi srfi-1))
(define (in-range? value ranges)
(and (number? value)
(match ranges
(((? number?) . (? number?))
(and (>= value (car ranges)) (<= value (cdr ranges))))
((((? number?) . (? number?)) ...)
(fold (lambda (range prev)
(or prev
(and (>= value (car range))
(<= value (cdr range)))))
#f
ranges)))))
(in-range? -1 '((1 . 10) (-2 . -1)))
=> #t
(in-range? -10 '((1 . 10) (-2 . -1)))
=> #f
(in-range? 10 '(1 . 10))
=> #t
#lisp #scheme
www.gnu.org
Pattern Matching (Guile Reference Manual)
Next: Readline Support, Previous: R7RS Support, Up: Guile Modules [Contents][Index]
⚡1🔥1
#projects #guile_ics #guile #scheme
Несколько дней работал над улучшением Guile-ICS (мне тут недавно написали issue на GitHub с просьбой реализовать нормальную поддержку
Теперь поддержка есть, только нехватает ещё вспомогательных процедур для работы с повторяющимися событиями.
Вот, как пример, вывод консольной утилиты для работы с форматом iCalendar, базирующейся на API библиотеки и поставляющейся вместе с ней. Здесь можно видеть разобранный и затем склеянный обратно (для красивого вывода) параметр
Значения параметров повторения теперь не только парсятся, но и проверяются на корректность. Библиотека не только бросается ошибками при некорректных значениях, но ещё и выдаёт справку по использованию данных параметров — по сути, куски RFC.
Несколько дней работал над улучшением Guile-ICS (мне тут недавно написали issue на GitHub с просьбой реализовать нормальную поддержку
RRULE — параметров повторяемости событий календаря.)Теперь поддержка есть, только нехватает ещё вспомогательных процедур для работы с повторяющимися событиями.
Вот, как пример, вывод консольной утилиты для работы с форматом iCalendar, базирующейся на API библиотеки и поставляющейся вместе с ней. Здесь можно видеть разобранный и затем склеянный обратно (для красивого вывода) параметр
RRULE:$ ./pre-inst-env ./utils/ics rrule.ics
BEGIN: VCALENDAR
BEGIN: VEVENT
RRULE (RECUR): FREQ=YEARLY; INTERVAL=2; BYMINUTE=30; BYHOUR=8,9,10; BYDAY=SU; BYMONTH=1
END: VEVENT
END: VCALENDAR
Значения параметров повторения теперь не только парсятся, но и проверяются на корректность. Библиотека не только бросается ошибками при некорректных значениях, но ещё и выдаёт справку по использованию данных параметров — по сути, куски RFC.
GitHub
GitHub - artyom-poptsov/guile-ics: iCalendar/vCard parser for GNU Guile.
iCalendar/vCard parser for GNU Guile. Contribute to artyom-poptsov/guile-ics development by creating an account on GitHub.
🔥1
David Thompson, "Optimizing Guile Scheme":
https://dthompson.us/posts/optimizing-guile-scheme.html
Интересная статья про оптимизацию программ на моём любимом языке программирования.
#guile #scheme #programming
https://dthompson.us/posts/optimizing-guile-scheme.html
Интересная статья про оптимизацию программ на моём любимом языке программирования.
#guile #scheme #programming
🔥2
Выпустил Guile-SMC 0.6.4 с исправлением ошибок:
https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.6.4
Основное исправление — Make больше не запускает генерацию целевого файла
#projects #guile #guile_smc #scheme
https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.6.4
Основное исправление — Make больше не запускает генерацию целевого файла
puml-fsm.scm из исходгого puml.puml, когда исходный поменялся. Вместо этого генерация запускается только тогда, когда puml-fsm.scm удалён. Это позволяет избежать иногда возникающих ситуаций, когда система сборки пытается сгенерировать puml-fsm.scm из puml.puml без наличия установленного Guile-SMC в системе, что приводило к ошибке (так как для этого нужен Guile-SMC.)#projects #guile #guile_smc #scheme
GitHub
Release v0.6.4 · artyom-poptsov/guile-smc
Table of Contents
Version 0.6.4 (2025-07-21)
Fix compilation of puml-fsm.scm from puml.puml
README.org: Improve the description of the manual installation process
Modernize guix.scm
Add a new tes...
Version 0.6.4 (2025-07-21)
Fix compilation of puml-fsm.scm from puml.puml
README.org: Improve the description of the manual installation process
Modernize guix.scm
Add a new tes...
Наконец-то добрался до своих FOSS-проектов. Замёржил в Guile-DSV патч от Denis 'GNUtoo' Carikli, добавляющий возможность указывать собсвтенную процедуру для нарезки строк при форматировании таблицы.
Попутно внёс ещё несколько небольших улучшений.
#guile #scheme #projects #guile_dsv
Попутно внёс ещё несколько небольших улучшений.
#guile #scheme #projects #guile_dsv
GitHub
modules/dsv/table: add 'string-slice" option by GNUtoo · Pull Request #12 · artyom-poptsov/guile-dsv
modules/dsv/table.scm (format-table, table-wrap, table-wrap-row):
Add "string-slice" option.
Signed-off-by: Denis 'GNUtoo' Carikli [email protected]
Add "string-slice" option.
Signed-off-by: Denis 'GNUtoo' Carikli [email protected]
Исправил баг в Guile-DSV:
https://github.com/artyom-poptsov/guile-dsv/commit/cdd573840c5c750be698543f289b1363abe2a631
#projects #scheme #lisp
https://github.com/artyom-poptsov/guile-dsv/commit/cdd573840c5c750be698543f289b1363abe2a631
#projects #scheme #lisp
GitHub
dsv/fsm/rfc4180.puml: Bugfix: Properly handle LFs in empty rows · artyom-poptsov/guile-dsv@cdd5738
Guile-DSV would fail to read RFC4180 format properly when faced with data that
uses empty rows with plain "LF" line endings. This patch fixes that
behavior.
Reported by mooseybo...
uses empty rows with plain "LF" line endings. This patch fixes that
behavior.
Reported by mooseybo...
Выпустил релиз Guile-DSV 0.8.0:
https://github.com/artyom-poptsov/guile-dsv/releases/tag/v0.8.0
В новой версии:
- Исправлен баг с чтением данных в формате RFC4180, где строки заканчиваются символом "LF", вместо рекомендуемой в RFC комбинации "CRLF". Теперь данные читаются корректно. Хотя это поведение не соответствует стандарту RFC4180, в данном случае Guile-DSV придерживается принципа надёжности ("Будь корсервативен в том, что отправляешь — и либеральным в том, что принимаешь.")
- Новые параметры для процедур в модуле
- Обновлена документация: теперь в Info документации подробно расписаны параметры таблицы; кроме того, добавлено описание новых параметров процедур.
- Файл
#projects #scheme #lisp
https://github.com/artyom-poptsov/guile-dsv/releases/tag/v0.8.0
В новой версии:
- Исправлен баг с чтением данных в формате RFC4180, где строки заканчиваются символом "LF", вместо рекомендуемой в RFC комбинации "CRLF". Теперь данные читаются корректно. Хотя это поведение не соответствует стандарту RFC4180, в данном случае Guile-DSV придерживается принципа надёжности ("Будь корсервативен в том, что отправляешь — и либеральным в том, что принимаешь.")
- Новые параметры для процедур в модуле
(dsv table): Процедуры format-table, table-wrap и table-wrap-row теперь принимают параметр string-slice, который позволяет контролировать, как столбцы таблицы вписываются в требуемую ширину. Процедуры table-wrap и format-table теперь принимают параметр calculate-cell-widths, который позволяет изменить поведение Guile-DSV при подсчёте ширины столбцов таблицы.- Обновлена документация: теперь в Info документации подробно расписаны параметры таблицы; кроме того, добавлено описание новых параметров процедур.
- Файл
README обновлён, теперь он более читаемый и информативный.#projects #scheme #lisp
GitHub
Release v0.8.0 · artyom-poptsov/guile-dsv
Table of Contents
Changes in version 0.8.0 (2025-11-02)
rfc4180.puml: Bugfix: Properly handle LFs in empty rows
(dsv table): Improve the API
New "string-slice" option
New "calcula...
Changes in version 0.8.0 (2025-11-02)
rfc4180.puml: Bugfix: Properly handle LFs in empty rows
(dsv table): Improve the API
New "string-slice" option
New "calcula...