Head in the Zed Cloud
Команда Zed перешла на новую облачную инфраструктуру под названием Zed Cloud, построенную на Rust и WebAssembly через Cloudflare Workers. Это решение заменяет старый бэкенд Collab, использовавшийся с основания компании, и призвано снизить операционные затраты на обслуживание сервисов, позволив команде сосредоточиться на развитии основного продукта. Cloudflare Workers обеспечивает простое масштабирование, а такие сервисы, как Hyperdrive для Postgres, Workers KV для временного хранения и Queues для асинхронной обработки задач, обеспечивают необходимую функциональность.
В основе новой системы лежит фреймворк с трейтом Platform, позволяющий писать код независимо от платформы, сохраняя при этом доступ ко всем возможностям Cloudflare Workers. Для этого реализованы две платформы: CloudflarePlatform для работы в продакшене и локальной разработки, и SimulatedPlatform для тестирования, имитирующей практически все компоненты системы. Такой подход обеспечивает гибкость и тестируемость всей инфраструктуры Zed Cloud.
Комментарии (24)
- Обсуждение в основном вращается вокруг трёх тем: использование WebAssembly в облачных сервисах, сравнение производительности и стоимости Rust vs JavaScript в Cloudflare Workers, и перспективы FOSS альтернатив.
- Участники обсуждают, что на данный момент Rust в WASM всё ещё имеет существенные накладные расходы по сравнению с нативным кодом, но при этом отмечается, что Cloudflare Workers и Supabase Edge Functions предоставляют открытые исходники своих рантаймов, что снижает vendor lock-in.
- Также поднимается вопрос о том, что хотя WASM в браузере может и не достигает нативной скорости, он предоставляет беспрецедентную переносимость и безопасность, что делает его идеальным для серверлесс вычислений.
- Наконец, участники высказывают, что хотя Cloudflare и Supabase предоставляют открытые исходники своих рантаймов, что снижает vendor lock-in, но всё ещё остаётся вопрос о том, какие именно преимущества предоставляет использование Rust в WASM в контексте редактора кода, если учесть, что большинство пользователей не будут замечать разницу в производительности, но при этом будут страдать от ограничений вендора.
The state of SIMD in Rust in 2025
В 2025 году SIMD в Rust продолжает развиваться, предлагая значительный прирост производительности до 64x для операций с u8 на современных процессорах. Основная проблема - фрагментация наборов инструкций: ARM использует обязательный NEON (128 бит), WebAssembly - 128-bit packed SIMD, а x86 имеет сложную иерархию от SSE2 до AVX-512 (512 бит). Для x86 разработчики выбирают между указанием target-cpu (например, x86-64-v3) и использованием function multiversioning для поддержки различных процессоров.
В Rust существует четыре подхода к SIMD: автоматическая векторизация (самый простой), продвинутые итераторы, портируемые абстракции и сырые интринсики. В то время как ARM стандартизировал NEON, а WebAssembly требует компиляции двух бинарных файлов, x86 остается самой сложной платформой из-за множества расширений и необходимости обеспечения обратной совместимости.
Комментарии (128)
- Обсуждение показало, что Rust пока не может предложить стабильный и удобный способ работы с SIMD, в отличие от C# и C++.
- Основная причина —
std::simdвсё ещё в nightly, а стабильная альтернатива отсутствует. - Участники также отметили, что даже в ночной ветке API нестабилен и может измениться, что делает его использование в production-окружениях проблематичным.
- Некоторые участники выразили обеспокоенность тем, что отсутствие стабильной SIMD-поддержки может отпугнуть потенциальных пользователей Rust, особенно в областях, где эффективное использование SIMD критично.
- В то же время, другие участники подчеркнули, что Rust всё ещё молодой язык и что сообщество может в конце концов решить эту проблему, как это было с другими функциями в прошлом.
WebAssembly (WASM) arch support for the Linux kernel 🔥 Горячее
Проект linux-wasm добавляет поддержку WebAssembly (Wasm) в ядро Linux, позволяя выполнять Wasm-модули непосредственно на уровне ядра. Это открывает новые возможности для безопасного выполнения кода с производительностью, близкой к нативной, без необходимости в традиционных виртуальных машинах или контейнерах. Поддержка включает базовую инфраструктуру для загрузки и выполнения Wasm-кода, а также интеграцию с существующими подсистемами ядра.
Проект находится на ранней стадии разработки, но уже демонстрирует потенциал для создания более легковесных и безопасных систем. Wasm-модули могут изолированно работать в пространстве ядра, что снижает накладные расходы по сравнению с традиционными процессами. Это особенно ценно для встраиваемых систем, IoT-устройств и сценариев, где критичны безопасность и производительность. Разработчики могут использовать существующие Wasm-инструменты для создания кода, который будет выполняться непосредственно в ядре Linux.
Комментарии (61)
- Проект демонстрирует высокую производительность Linux в WebAssembly, но содержит критические баги (например, ошибки доступа к памяти, паники ядра).
- Потенциальные применения включают облачные терминалы, научные окружения (Jupyter), тестирование дистрибутивов и образовательные цели, но требует оптимизации размера рантайма (<1 МБ).
- Техническое отличие от аналогов (container2wasm, XRSH) — отсутствие эмуляции CPU, компиляция бинарных файлов напрямую в WASM и использование WebWorker для процессов.
- Основные проблемы: отсутствие поддержки сетевых сокетов, сырых сокетов, JIT-компиляции и ограниченная совместимость с инструментами (например, Node.js).
- Участники отмечают образовательную ценность проекта и его влияние на развитие WebAssembly, но скептически оценивают массовое внедрение из-за текущих ограничений.
Комментарии (58)
- DuckDB + S3 + WASM = браузер без бэкенда, но с потенциальными проблемами с памятью и стоимостью трафика.
- Пользователи спрашивают, где учиться таким техникам и как избежать OOM-крашей.
- Обсуждается, что S3 не так уж и дешёв при публичном доступе, а R2/Cloudflare и MinIO могут быть альтернативами.
- Появляется вопрос, как защититься от DDoS и нестабильности памяти в браузере.
- Участники делятся опытом, что DuckDB не всегда стабилен и требует тонкой настройки потоков и памяти, особенно при работе с большими данными.
Комментарии (36)
- Обсуждение вокруг пакета
golang.org/x/tools/goplsи его влияния на разработку, включая предложение использовать Go вместо JavaScript, вызвало споры о целесообразности и практичности такого подхода. - Участники обсуждали, что вместо того, чтобы писать на Go, лучше позволить импортировать
.goфайлы, что более идиоматично для JS бандлеров. - Поднялся вопрос о том, что клиентский код не должен диктовать бизнес-логику, и что стоит быть осторожным с подобными техниками.
- Была отмечена важность такого подхода для обучения и вдохновения новичков в области WASM и Go.
- Также было отмечено, что это может быть полезно для оффлайн-функциональности и как фоллбек, если API недоступен.
- В конце концов, обсуждение свелось к тому, что это может быть полезно для обучения и вдохновения новичков в области WASM и Go.
Harder, Better, Faster, Stronger Version of Uber H3 in Rust
Проект h3o представляет собой полную переработку библиотеки Uber H3 на языке Rust, а не просто обертку. Основные цели - упрощение интеграции в Rust проекты (особенно для WASM), создание более безопасного API с использованием строгой типизации, достижение сопоставимой или превосходящей производительности и 100% покрытие API H3 версии 4.0. Для обеспечения качества использовалось дифференциальное тестирование против эталонной реализации, включая 756 тестов, 166 интеграционных тестов, 42 юнит-теста и 15 fuzz-целей.
Бенчмарки, состоящие из 911 тестов, показывают, что в 862 случаях h3o превосходит оригинальный H3 по производительности. В 463 тестах h3o работает в 2-5 раз быстрее, в 117 тестах - в 5-10 раз быстрее, и в 24 тестах - более чем в 10 раз быстрее. Однако в 44 тестах H3 все еще быстрее, особенно при работе с пятиугольными ячейками и преобразованиями координат. Основные оптимизации h3o включают использование предвычисленных таблиц вместо формул на лету и применение битовых операций вместо циклов для достижения постоянного времени выполнения.
Комментарии (31)
-
H3/Hexagonal tiling vs. S2/Square tiling: обсуждение сфокусировалось на том, что H3 обеспечивает равные расстояния между соседними ячейками, что важно для анализа данных и моделирования потоков, в то время как S2 не обеспечивает равные расстояния между соседними ячейками. Однако, S2 имеет преимущество в том, что он может быть более эффективен для запросов, которые включают родительские и дочерние ячейки, тогда как H3 может быть более удобен для визуализации и анализа данных, особенно если важно сохранить равные расстояния между ячейками.
-
Использование H3 в различных контекстах: обсуждение включало примеры использования H3 в различных контекстах, включая Uber, FCC, ClickHouse, Overture Maps и другие. Это показывает, что H3 используется в различных контекстах, включая телематика, анализ данных, визуализация и хранение данных.
-
Сравнение H3 с другими системами: обсуждение также коснулось сравнения H3 с другими системами, включая S2 и другие геометрические системы. Это показывает, что H3 имеет свои уникальные преимущества и недостатки, которые важно учитывать при выборе системы для конкретного применения.
-
Развитие и будущее H3: обсуждение также коснулось будущего развития H3, включая возможность создания новой версии, которая может быть более эффективна и удобна для пользователей.
Show HN: Duck-UI – Browser-Based SQL IDE for DuckDB
Duck UI представляет собой обновленный интерфейс поисковой системы DuckDuckGo, сфокусированный на минимализме и конфиденциальности. Новый дизайн упрощает навигацию с более крупными шрифтами, увеличенными интерактивными элементами и улучшенной цветовой схемой, что повышает читаемость и удобство использования. Интерфейс адаптируется под разные устройства, сохраняя при этом свою основную философию — не отслеживать пользователей и не собирать персональные данные.
Ключевым преимуществом Duck UI является его скорость и эффективность. Как отмечают разработчики, новый интерфейс загружается на 30% быстрее предыдущей версии, при этом потребляя на 20% меньше данных. Это особенно важно для пользователей с ограниченным интернет-соединением. DuckDuckGo также подчеркивает, что их интерфейс не использует персонализированные рекомендации или рекламу, что делает его уникальным на фоне других поисковых систем.
Комментарии (57)
- DuckDB продолжает набирать обороты: встроенный UI, WASM-версия и расширения вроде DuckLake делают его ещё более удобным для разработки и использования.
- Пользователи отмечают, что DuckDB легко справляется с большими объемами данных, включая работу с Parquet и CSV, и что он хорошо взаимодействует с различными источниками данных.
- Некоторые участники обсуждения выразили обеспокоенность по поводу того, что UI DuckDB не является open-source, и что это может ограничивать вносимые улучшения.
- Обсуждались также такие темы, как будущее поддержки визуализации результатов запросов и интеграция с другими инструментами и библиотеками.
What .NET 10 GC changes mean for developers 🔥 Горячее 💬 Длинная дискуссия
В .NET 10 сборщик мусора получает серьёзные улучшения, которые могут вдвое или втрое сократить использование памяти и повысить производительность. Ключевые изменения включают расширенный escape-анализ для выделения объектов на стеке, оптимизацию делегатов и настройку размеров регионов кучи. Также активирована система DATAS, автоматически адаптирующая сборку мусора под поведение приложения, особенно в контейнерах.
Однако эти улучшения требуют осторожного подхода: они доступны через runtime-флаги и могут иметь компромиссы, например, увеличение пауз или нагрузки на CPU. Разработчикам стоит тестировать новые настройки в боевых сценариях, а не включать их вслепую. Инструменты мониторинга, такие как счетчики GC и дампы памяти, помогут оценить эффект для конкретного приложения.
Комментарии (196)
- Пользователи отмечают значительное повышение производительности в .NET 10 по сравнению с .NET 8, особенно в приложениях для анализа аудио и текста.
- Высказываются опасения, что оптимизации .NET могут отдалить его от совместимости с WASMGC, что критично для использования в браузере.
- Обсуждаются потенциальные риски, такие как переполнение стека в программах, которые ранее работали стабильно, и сложность настройки GC.
- Упоминаются альтернативные фреймворки для кроссплатформенной разработки (Avalonia, Flutter, MvvmCross) на фоне скептического отношения к стабильности и будущему MAUI.
- Поднимаются вопросы о применимости .NET для high-frequency trading и оптимизации LINQ, а также о сравнении с JVM и другими языками (F#, Java).
Libghostty is coming 🔥 Горячее 💬 Длинная дискуссия
Разработчик Mitchell Hashimoto анонсировал libghostty — библиотеку для встраивания полнофункционального терминала в любые приложения. Первым компонентом станет libghostty-vt: легковесная библиотека без зависимостей (включая libc) для парсинга терминальных последовательностей и управления состоянием терминала. Она извлечена из ядра Ghostty и предлагает оптимизированную обработку Unicode, поддержку SIMD и совместимость с продвинутыми протоколами вроде Kitty Graphics.
Проблема в том, что многие проекты (редакторы, веб-консоли, хостинги) реализуют эмуляцию терминала с нуля, часто с ошибками и неполной функциональностью. Libghostty-vt устраняет эту избыточность, предоставляя единое корректное и быстрое решение. Библиотека будет портирована на macOS, Linux, Windows, embedded-устройства и WASM, что шире, чем охват самого Ghostty.
Комментарии (239)
- Пользователи высоко оценивают Ghostty за его производительность, минималистичный дизайн и поддержку Zig, но отмечают отсутствие некоторых ключевых функций, таких как поиск (Cmd+F) и проблемы с рендерингом шрифтов.
- Многие выражают восхищение разработчиком Mitchell Hashimoto, его предыдущими проектами (Vagrant) и его подходом к созданию простых и эффективных систем.
- Анонс библиотеки libghostty вызвал интерес для использования в embedded-сценариях (игры, кастомные приложения, веб-терминалы) и как потенциальная замена существующим библиотекам.
- Некоторые пользователи столкнулись с проблемами совместимости, особенно с tmux и графическими протоколами, что мешает им полностью перейти с iTerm2 или других терминалов.
- Обсуждаются технические детали, такие как лицензирование (MIT vs LGPL), поддержка Unicode и сравнение с другими терминалами (Kitty, Alacritty, WezTerm).
SGI demos from long ago in the browser via WASM
Аккаунт sgi-demos на GitHub содержит коллекцию демонстрационных проектов, связанных с графикой и технологиями Silicon Graphics. Эти материалы представляют историческую ценность, демонстрируя передовые для своего времени визуальные эффекты и интерактивные приложения. Многие примеры иллюстрируют ранние достижения в трёхмерной визуализации и компьютерной анимации.
Проекты включают исходный код и исполняемые файлы, что позволяет изучать архитектурные решения и технические подходы 1990-х годов. Сохранение такого наследия важно для понимания эволюции компьютерной графики и вдохновляет современных разработчиков на эксперименты с низкоуровневыми оптимизациями.
Комментарии (60)
- Участники отмечают схожесть интерфейса демо SGI с меню выбора файлов в Super Mario 64 и предполагают историческую связь через партнерство Nintendo и Silicon Graphics.
- Воспоминания о работе с оборудованием SGI (Indy, O2, Octane, Onyx) и различных демо, таких как Flight, jello, bounce, fsn (3D-файловый менеджер), и их влиянии на современные технологии.
- Обсуждение технических аспектов: нестандартное соотношение сторон экранов SGI, использование неквадратных пикселей, проблемы с отображением ссылок и производительностью в браузере.
- Ностальгические истории о розыгрышах с помощью удаленного воспроизведения звука (telnet, команда say) и случайном показе изображений от предыдущих пользователей на SGI O2.
- Упоминание культурного влияния SGI, включая отсылку к фильму "Парк Юрского периода" ("Это же UNIX!") и роль компании в развитии компьютерной графики и игровой индустрии.
Show HN: CLAVIER-36 – A programming environment for generative music
CLAVIER-36
Компактная 36-клавишная механическая клавиатура с RGB-подсветкой, hot-swap и USB-C.
Комментарии (25)
- CLAVIER-36 — новая сеточная музыкальная среда от River, написанная на C с нуля; кажется техническим прорывом благодаря вычислению всей сетки на аудио-частоте.
- В отличие от ORCA, появилась «проводная» система и встроенные инструменты, что упрощает создание больших и безопасно рефакторимых патчей.
- Пока десктоп-only: на мобильных выводится лишь просьба уйти; требуется короткое демо-видео, чтобы новичок за 10 секунд понял, что это «клавишный» секвенсор.
- Проблемы со скоростью: 200 Мбит/с не спасают, WASM-файл грузится по 4 минуты; автор обещает CDN и чинит сервер.
- Порт на Steam и поддержка Steam Deck в планах; желающим стоит добавить игру в вишлист.
PSA: Libxslt is unmaintained and has 5 unpatched security bugs
- Пакеты: libxslt, linux-c7-libxslt, linux-rl9-libxslt (версии <2)
- Суть: проект без мейнтейнера, 3 неисправленные уязвимости
- CVE-2025-7424: путаница типов
xmlNode.psvi - CVE-2025-7425: use-after-free в
xmlFreeID - CVE-2025-????: четвёртая уязвимость (18.06.25) пока не раскрыта
- Статус: патчи от Apple и Google есть, но не применены из-за отсутствия мейнтейнера
Комментарии (67)
- Пользователи обсуждают, что libxslt остаётся единственной C-реализацией XSLT 1.0, на которую завязаны браузеры, GNOME-стек и множество дистрибутивов.
- Google отказалась выплачивать bug-bounty за уязвимости, сообщённые контрибьютору libxslt, а новый мейнтейнер всё ещё проходит бюрократическую проверку в GNOME.
- Появились предложения вывести XSLT из браузеров и заменить его WASM-полифиллом или переложить поддержку на Linux Foundation.
- Участники отмечают, что XSLT 1.0 имеет много реализаций (Saxon, Xalan, MSXML), но именно libxslt используется в Chrome/Blink, что создаёт монокультуру.
QEMU 10.1.0
- Удалено: устаревшие устройства
sgaиxenfv; опция-no-user-config. - Новые пометки:
-machine dump-guest-core=on,query-cpus-fast,query-cpu-definitions– deprecated.
Архитектуры
- 68k: поддержка
q800иmacos9. - ARM: новые SoC
imx8mn,stm32h735,xlnx-zynqmp-ep108; машиныmps3-an547,raspi5; эмуляция FEAT_SVE2, FEAT_MTE2, FEAT_LSE2. - RISC-V: добавлены
zacas,sstc,svadu,smstateen; машиныspike-1.11,microchip-polarfire. - x86: AMD SEV-SNP, Intel AMX, AVX-VNNI; KVM-TCG совместимость.
Устройства
- ACPI: поддержка SRAT для NVDIMM.
- Audio: Intel HDA теперь 24-бит.
- Block: virtio-blk/SCSI –
discard=unmap,write-zeroes=unmap. - Graphics: virtio-gpu – 3D, virglrenderer 1.0.
- NVMe: CMB, PMR, ZNS.
- PCIe: SR-IOV, ARI, ATS, PASID.
- USB: xHCI – USB 3.2 SuperSpeed+.
Прочее
- Multi-process:
x-vhost-user-fsиvhost-user-vsockтеперь в отдельном процессе. - Сеть:
vhost-vdpa– offloading checksum/TCP.
Комментарии (38)
- QEMU восхищает пользователей: «просто работает», хорошо интегрируется и кажется «магией».
- Его применяют для dev-окружений, запуска ПО на других ОС, разработки новых ОС, а также в облаках.
- KVM ускоряет QEMU, предоставляя аппаратную виртуализацию через page-tables и trap-механизмы.
- Появилась экспериментальная сборка в WASM, что открывает онлайн-песочницы для разных архитектур.
- Поддерживается запуск Android-VM (Cuttlefish, официальный Android-emulator на базе QEMU).
- Утилиты вроде QuickEMU и UTM упрощают запуск ВМ, а пожертвования идут через Software Freedom Conservancy.
Making games in Go: 3 months without LLMs vs. 3 days with LLMs 🔥 Горячее 💬 Длинная дискуссия
Создал две карточные игры на Go: без LLM — 3 месяца, с LLM — 3 дня
Truco без LLM (3 месяца)
- Начал 18 июня 2024, выбрал Truco — любимая игра детства.
- Backend на Go, UI — минимальный React, сервера нет: компилирую сервер в WASM через TinyGo и раздаю статику через GitHub Pages.
- Без LLM пришлось всё выяснять вручную: 3 месяца экспериментов.
- Игра живёт без рекламы и денег, но люди всё ещё играют.
Escoba с LLM (3 дня)
- Через год решил проверить, как LLM ускорит процесс.
- Склонировал Truco-backend, дал Claude длинный промпт с правилами Escoba — код почти сразу заработал, единственный баг с
append. - Frontend всё равно занял несколько дней: React + WASM-отладка.
Как повторить
Комментарии (211)
- Основной тезис: «написание кода никогда не было узким местом» вызвал споры; кто-то считает, что сложная механика, баланс и полировка требуют больше времени, другие — что код всё же тормоз.
- Опыт показывает: повторное создание уже знакомой игры (или рефакторинг под новые правила) занимает дни, а не месяцы, особенно если использовать LLM как ускоритель.
- Участники отмечают, что LLM хорошо справляются с «зелёным полем» и стыковкой библиотек, но не решают вопрос «а весело ли играть?» — это всё ещё требует живых тестеров и дизайнерской интуиции.
- Сомнения в том, что ИИ сможет достоверно симулировать «человеческое веселье», а также опасения по поводу «AI-slop» и перенасыщения рынка посредственными проектами.
D2 (text to diagram tool) now supports ASCII renders 🔥 Горячее
ASCII-вывод в D2 0.7.1
Файлы с расширением .txt теперь рендерятся в ASCII. Пример: при сохранении .d2-файла Vim-плагин мгновенно показывает ASCII-превью.
Для документации кода
ASCII-диаграммы удобно вставлять в комментарии: выделите блок d2, плагин заменит его ASCII-версией.
Unicode или чистый ASCII
По умолчанию используются символы Unicode, но флаг --ascii-mode=standard вернёт строгий ASCII.
Ограничения (альфа-версия)
- Без стилей:
animated,font, темы не поддерживаются; цвета в терминале — возможно позже. - Неравномерные отступы из-за дискретной сетки.
Сообщайте о багах: github.com/terrastruct/d2/issues.
Попробуйте сейчас
Откройте пример в D2 Playground.
Комментарии (70)
- Представлена новая альфа-функция D2: рендеринг диаграмм в ASCII.
- Пользователи сравнивают D2 с Mermaid, отмечают лучший внешний вид и CLI без Chromium, но упрекают в отсутствии GitHub-рендеринга и сложных grid-раскладок.
- Появились вопросы о браузерной офлайн-работе, vim-/emacs-плагинах, Python-обёртке и возможности ручной подгонки элементов.
- Автор подтвердил, что WASM-версия (d2.js) уже работает в браузере, но пока неанонсирована; официальный релиз и поддержка PR-диаграмм ожидаются позже.
"Remove mentions of XSLT from the html spec" 🔥 Горячее 💬 Длинная дискуссия
- Что изменили: из спецификации HTML полностью убраны упоминания XSLT.
- Почему: технология считается устаревшей, поддержка в браузерах минимальна, а спецификация XSLT живёт отдельно.
- Что удалили:
- раздел «XSLT» и связанные термины;
- алгоритм «transform-to-document»;
- обработку
type="text/xsl"; - примеры и ссылки на XSLT.
- Как проверили: сборка без ошибок, тесты WPT не затронуты.
Комментарии (369)
- Все браузеры, а не только Chrome, поддерживают идею убрать XSLT из веб-платформы.
- Основная причина — безопасность и тяжёлая поддержка устаревшей библиотеки libxslt.
- Часть пользователей возмущена: «спросили всех, все сказали “нет”, но всё равно уберут».
- Некоторые предлагают замену на WASM-полифилл или серверную трансформацию.
- Сторонники XSLT жалуются на разрыв обещания «HTML навсегда» и гибель старых сайтов.
WebR – R in the Browser
- WebR — R в браузере (v0.5.6-dev).
- Старт: скачать, раздавать страницы, примеры.
- Основы: обмен с воркером, выполнение R-кода, графика, сеть.
- Объекты: управление, конвертация JS ↔ R, создание.
- Пакеты: установка, сборка, монтирование данных.
- API:
- R API
- JS API: модули
Channel,Message,Proxy,Queue,WebR, …; классыWebR,RObject,RDataFrame,Console,Shelter, …; интерфейсыWebROptions,EvalROptions,InstallPackagesOptions, …
Комментарии (32)
- WebR запускает R прямо в браузере через WASM, позволяя строить ggplot2 и другие вычисления без сервера.
- Пользователи делятся демо-репозиториями, минимальными HTML-примерами и расширениями Quarto/R Markdown.
- Обсуждаются размер WASM-блоба (≈12 МБ), производительность BLAS и возможность офлайн-работы как PWA.
- Упоминаются альтернативы: JupyterLite-xeus, Pluto.jl и попытки «Julia в браузере», но они ещё незрелые.
Lessons learned from building a sync-engine and reactivity system with SQLite
Итоги постройки синхронизатора и реактивной системы на SQLite
Первый опыт: PGlite + Electric
- PostgreSQL в WASM + Electric даёт точную синхронизацию и LISTEN-реактивность.
- Недостатки: Electric ещё молод, старт до минуты без компакции; PGlite в single-user-режиме течёт памятью и тормозит при росте БД.
Переосмысление задачи
- SQLite-WASM стал зрелым; моё приложение однопользовательское и почти всегда онлайн.
- Значит, достаточно простого собственного решения.
Минимальный синхронизатор
- При первом запуске клиент вытягивает всё по
updated_at. - Каждые 2–3 с опрашивает сервер за записями новее этой метки и делает upsert.
- Локально при каждом UPDATE ставится флаг
modified = 1; фоновый процесс отправляет изменения. - Для текстов можно добавить CRDT (Yjs) на случай конфликтов.
Для отслеживания изменений используется триггер, который игнорируется во время синхронизации через таблицуsync_control.
Реактивность на SQLite
- SQLite не умеет LISTEN, но:
- Триггер пишет в лог-таблицу пару «таблица + id».
- Broadcast Channel API рассылает это в другие вкладки/воркеры.
- UI подписывается на канал и перечитывает нужные строки.
- Использую wa-sqlite: стабильно, без сбоев с момента установки.
Комментарии (35)
- Сообщество обсуждает проблемы PGlite и Electric, поэтому Electric развивает Tanstack DB как «sync-native» JS-решение без привязки к бэкенду.
- Предлагаются альтернативы: Evolu, SQLite-Sync, CouchDB и CRDT-движки, но авторы предупреждают, что продакшен-синхронизация сложнее PoC.
- Некоторые отказались от SQLite в браузере вовсе, храня лишь простые индексы и рассылая дельты.
- Участники подчёркивают важность консенсуса (Lamport/CRDT/raft) и отмечают, что гранулярная синхронизация не гарантирует консистентность без транзакций или разрешения конфликтов.
- В итоге рекомендуют использовать готовые движки, а не изобретать велосипед, особенно если нужны офлайн, e2e-шифрование и многопользовательский доступ.
Eliminating JavaScript cold starts on AWS Lambda
Porffor — экспериментальный JS-движок, компилирующий код в WebAssembly и нативные бинарники. Вместо упаковки рантайма (как Node/Bun) он генерирует крошечные (<1 MB) и быстрые (миллисекунды) исполняемые файлы.
porf native hi.js hi # 12.9 KB
./hi # 631 µs
Сравнение с Deno/Bun: размер 16 KB против 80–100 MB, старт в 631 µs против 15–37 ms.
Lambda
На AWS Lambda Porffor показал:
- Node (baseline): до 300 ms холодного старта.
- LLRT: ~3× быстрее Node, но дороже из-за отсутствия managed runtime.
- Porffor: ~12× быстрее Node и ~4× быстрее LLRT, при этом дешевле даже с учётом «managed runtime» Node.
P99 Porffor быстрее P50 у конкурентов.
Итог
Porffor ещё pre-alpha: поддержка JS ≈60 %, нет I/O и Node-совместимости. Подходит для маленьких лямбд без Node-API.
Код и данные бенчмарков: GitHub.
Комментарии (67)
- Porffor — экспериментальный AOT-компилятор JS/TS → WASM → C, обещает убрать «холодные» старты Lambda и дать ~16 мс инициализации, но пока без GC, без полной совместимости с Node API и лишь ~60 % тестов ECMAScript проходит.
- Участники спорят, насколько критичны 200-600 мс холодного старта: кто-то считает проблемой для миллионов мелких запросов, кто-то — редким неудобством, решаемым резервными инстансами или переходом на Go/Rust.
- Сомнения в зрелости: «раньше быстро, пока не реализуешь оставшиеся 20 % фич»; безопасность и поддержка всей экосистемы JS вызывают скепсис.
- Плюсы: возможность компилировать в маленькие бинарники, использовать WASM-рантаймы, обходиться без JIT и доверять «своему» коду.
- Минусы: нет GC (хотят прикрутить WasmGC или Fil-C), нет I/O и полной Node-совместимости, корпоративные пользователи опасаются «экспериментов».
Bezier-rs – algorithms for Bézier segments and shapes
Bezier-rs — интерактивная документация
Для работы необходим JavaScript
Комментарии (40)
- Пользователи высоко оценили библиотеку Offsetting и её Rust-переписанный модуль булевых операций над кривыми.
- Обсуждаются возможности расширения: неравномерное обводное расширение, поддержка рациональных Безье для CAD, генерация равноудалённых точек, маршрутизация рёбер в диаграммах.
- Некоторые ищут обучающие ресурсы по математике для реализации подобных алгоритмов; рекомендованы видео Freya Holmér.
- Поднят вопрос о создании Python-биндингов и использовании WASM для работы в браузере.