Треды в Zig

Автор разбирает устройство std.Io.Threaded в Zig - реализации интерфейса ввода-вывода, которая использует обычные блокирующие системные вызовы и потоки, но при этом полноценно поддерживает отмену операций.

Фокус на различии между параллелизмом и конкурентностью. Проблема "просто использовать потоки" в том, что нет способа прервать заблокированный в ядре поток. Zig решает это на POSIX через сигналы: отменяющий поток выставляет флаг в разделяемой памяти и циклически посылает сигнал целевому потоку, пока тот не получит EINTR и не проверит флаг, аккуратно сворачивая работу через error.Canceled

Новости

Post Thumbnail

Игры под Nintendo 64

Автор портировал свой старый JavaScript-демо-шутер Xibalba (2014) на Nintendo 64, ставший лишь второй новой физической игрой для консоли с 2002 года - его издала Modretro для своего клона M64 с картриджем, коробкой и мануалом Чувак реально заморочился. В ос...

Post Thumbnail

Soppo

Пятничный язык программирования! Я про него уже писал, но он продолжает развиваться и стоит взглянуть на него еще разок. Этот язык программирования сохраняет синтаксис Go, но добавляющий недостающие возможности: перечисления с паттерн матчингом, оператор ? ...

Post Thumbnail

Мигаем диодом на Rust

Автор показывает использование Embedded Rust - от подключения программатора ST-LINK V2 через SWD-интерфейс до сборки и прошивки. Все это на STM32 Автор использует готовый шаблон проекта на базе крейта stm32f1xx-hal, разбирает ключевые атрибуты, а затем прям...

Post Thumbnail

Какой ты газонокосильщик

The Pudding провели интерактивный эксперимент, в котором больше 30 тысяч человек "косили" виртуальный газон, чтобы исследовать, насколько эффективно люди решают задачу Coverage Path Planning - родственную знаменитой "задаче коммивояжера" 52% участников улож...

Post Thumbnail

Typescript Defer

Автор экспериментировал с добавлением оператора defer из Go в компилятор TypeScript, реализовав парсинг, проверки и AST-трансформацию, которая оборачивает тело функции в try/finally и выполняет отложенные вызовы в обратном порядке (LIFO) с захватом значений на...

Post Thumbnail

Движение назад

Прикольная статья если вы хотите поковыряться в итераторах, джинериках и вот в этих новых фишечках Go. Автор в шутливой форме проводит мысленный эксперимент: как бы выглядела эволюция функции Backward для обхода слайса в обратном порядке, если бы ее писал н...

Статьи

Post Thumbnail

DNS на Zig

Это должен был быть перевод статьи "From Log Reader to Packet Crafter — Building DNS from Scratch in C". Но автор довольно фигово написал исходную статью и не удосужился показать весь написанный код, Поэтому я решил пойти дальше, реализовать очень маленький ин...

Post Thumbnail

Playdate

Наше поколение выросло вместе с первыми консолями. Мы все с теплотой вспоминаем время, когда у нас появилась первая денди. Теперь у нас есть самые разные движки и большие мощности для игр. Но чем больше возможностей, тем сложнее начать что-то делать, сложне...

Post Thumbnail

Привет Ethernet

Если вы читаете эту статью, то есть очень большая вероятность, что прямо сейчас вы пользуетесь Ethernet соединением где-то между вашими устройствами и хостингом, на котором размещён этот блог. Семейство технологий Ethernet - это строительные блоки для современ...

Post Thumbnail

RAG в Go проекте

Одна из ключевых задач для компаний, работающих с искусственным интеллектом, - обеспечить эффективный доступ к внутренним знаниям. На первый взгляд всё просто: загрузи корпоративные документы в большую языковую модель (LLM) и дай ей генерировать ответы. Но на ...

Инструменты

Post Thumbnail

paneru

Оконный менеджер для macOS, который размещает окна на бесконечной полосе, расширяющейся вправо. При открытии нового окна размер существующих окон не меняется, новые окна не накладываются друг на друга - все окна просто красиво выровнены в один ряд с возможност...

Post Thumbnail

frame

Нативная утилита для конвертации медиафайлов, написанная на языке Rust. Она предоставляет десктопный интерфейс для операций FFmpeg с детальным контролем над настройками видео, аудио, изображений, субтитров и метаданных

Post Thumbnail

Rayfish

Peer-to-peer mesh VPN на Rust, построенный поверх библиотеки iroh, который позволяет объединить все ваши устройства в частную сеть без аренды серверов, регистраций и единой точки управления. Достаточно одному участнику выполнить ray create, сгенерировать о...

Post Thumbnail

go-push-receiver

Go-библиотека для подписки на GCM/FCM и получения push-уведомлений напрямую, без необходимости в Android-устройстве или Firebase Admin SDK. Библиотека эмулирует поведение Android-клиента: использует protobuf-протоколы MCS и Checkin, заимствованные из Chrom...