memory heap
375 subscribers
2.56K photos
526 videos
52 files
3.16K links
science ∩ art = wonder

all memory blocks here are allocated by @a_v_p

GitHub: https://github.com/artyom-poptsov
Mastodon: https://fosstodon.org/@avp

https://memory-heap.org/~avp/
Download Telegram
Ломаю голову о дальнейшем развитии компилятора машин состояний Guile-SMC.

В библиотеке есть понятие контекста — то есть, некоторого объекта, который передаётся в обратные вызовы (callbacks) внутри ДКА.

Идея у меня следующая: библиотека должна предоставлять набор базовых контекстов для выполнения однотипных задач (например, для разбора текста, бинарных данных, обработки сетевых запросов и т.п.)

На данный момент у меня получилось выделить следующие виды контекстов:
- Символьный (char) — для чтения потока символов (реализован.)
- Бинарный (binary) — для чтения потока байт (в процессе реализации.)
- Токенизатор (token) — для чтения потока токенов, разделённых согласно определённым правилам (например, символами-разделителями.)
- Построчный (line) — для построчного чтения данных.

Если брать этот набор контекстов, они должны покрывать большинство задач обработки данных (а если и не хватит их, то всегда можно создать свой контекст.)

Но при этом события, обрабатываемые ДКА, могут являться не только неким потоком данных, но и вообще чем угодно. Например, для ДКА чат-бота входные события — это поступающие запросы от пользователя; для обработчика сетевого протокола — это запросы по сети, по некоторому протоколу.

Можно ли охватить весь этот потенциально бесконечный круг задач, решаемых через автоматное программирование, и свести его к некоторым примитивам, при этом не нарушая общность библиотеки? Думаю, что возможно, однако требует построения грамотной архитектуры.

Конечная цель проекта — автоматизировать написание автоматов путём кодогенерации на основе выскокоуровневого описания ДКА в формате PlantUML. Это даёт возможность сразу же получать визуализацию направленного графа переходов, а не пост-фактум, как часто бывает при ручном написании кода.

#projects #fsm #guile #scheme #dev
1
Vagrant Cascadian нашёл ещё одну проблему в Guile-SSH, связанную с поддержкой libssh 0.10, пришлось править тесты, чтобы не падали, и выпускать новую версию Guile-SSH 0.16.2:
https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.16.2

Кстати, Vagrant Cascadian — сопровождающий пакета Guile-SSH в Debian и Ubuntu:
- https://tracker.debian.org/pkg/guile-ssh
- https://launchpad.net/ubuntu/+source/guile-ssh

Отправил в GNU Guix патч с обновлением Guile-SSH до 0.16.2:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60502

Теперь, насколько вижу, можно обновить libssh 0.10 в GNU Guix, не нарушая сборку Gule-SSH и без "грязных хаков" с патчингом кода Guile-SSH перед сборкой.

#gnu #guix #guile #ssh #projects
3
"V" значит "Vegeta"

#cooking
3
memory heap
"V" значит "Vegeta" #cooking
32 units are ready, with a million more well on the way.

#vegan #cooking
4
memory heap
Процесс пошёл...
Интеграционное тестирование серьёзных ошибок не выявило.
2
Компиляция и линковка фалафель.so завершена.

#vegan #food #cooking
1
Forwarded from Каблог
Behind this red costume is more than just flesh.
Beneath this red costume, Mr. Grinch, is an idea.

And ideas are bulletproof.
1
Forwarded from Hacker News
Centralization is inevitable, but decentralization is right behind it (Score: 150+ in 14 hours)

Link: https://readhacker.news/s/5qjHP
Comments: https://readhacker.news/c/5qjHP
Аж олдскулы свело:
https://github.com/magiblot/tvision

Порт классического C++ фреймворка построения текстовых интерфейсов Turbo Vision, первая версия которого была выпущена в 1990-м году. Я в своё время начинал изучать программирование с Pascal (Turbo Pascal), и там как раз в IDE был такой интерфейс. На самом деле, в нём есть свой неповторимый шарм.

В 1997-м году компания Borland выпустила код фреймворка в общественное достояние, и на данный момент проект Turbo Vision, ссылка на который приведена выше, является его прямым развитием.

#gnu #linux #tui #library
🔥1
Forwarded from OpenNews (HK-47)
Представлен Blink, эмулятор x86-64, опережающий QEMU по производительности
Проектом blink развивается новый эмулятор процессоров x86-64, позволяющий запускать статически собранные Linux-приложения в виртуальной машине с эмулируемым процессором. Основным назначением проекта является предоставление возможности запуска собранных для архитектуры x86-64 Linux-программ в других операционных системах (macOS, FreeBSD, NetBSD, OpenBSD) и на оборудовании с другой аппаратной архитектурой (x86, ARM, RISC-V, MIPS, PowerPC, s390x). Код проекта написан на языке Си (ANSI C11) и распространяется под лицензией ISC. Из зависимостей требуется только libc (POSIX.1-2017).