Кажется полезным разделять риски от использования сети и от использования клиента.
Равно как и официальный клиент может добавить что-то. Если мы доверяем официальному клиенту потому что опенсорс и reproducible builds, то Forkgram полученный из F-Droid в той же степени заслуживает доверия: опенсорс и гарантированно получен из исходников.
Mercurygram и Forkgram на момент исследования показали чистый сетевой профиль без передачи данных третьим сторонам. Однако это не гарантия на будущее - разработчики могут добавить любые механизмы сбора данных в следующей версии.
сошлись во мнении, что все они могут быть небезопасны для использования.
Это некорректный пересказ, до уровня обощений “всё в нашем мире представляет опасность а любая еда вредна”.
Для forkgram и mercurygram риски указаны " разработчик во власти добавить слежку в будущем" что примерно соответствует рискам от использования официального клиента
Короче говоря вам важно оптимизировать под размер, если я правильно понял.
Это однако не означает, что Zig вам не подходит. Я не программист, но из того что я читал про него, это такой современный C, который в том числе прозрачно с C взаимодействует и позволяет собирать его проекты. Как я понимаю, zmx такой большой потому что работает через libghostty-vt, внутри всё-таки эмулируя терминал. А ему для этого дофига всего надо, например парсить юникод. Вот отчёт клода с анализом:
Что вносит основной вклад в размер (881Ki ReleaseSmall)
.text — 538Ki (61%)
┌──────────────────────────────┬─────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Источник │ ~Размер │ Причина │
├──────────────────────────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ghostty: terminal.* │ ~170Ki │ Terminal emulator: PageList, Screen, OSC parser, Stream, formatter — весь ghostty-vt │
├──────────────────────────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ log.scoped инстанциации │ ~125Ki │ 127Ki из одного ghostty terminal/stream — каждый log.warn("...", .{}) с уникальной format-строкой = отдельная скомпилированная функция (Zig comptime) │
├──────────────────────────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ std.debug (panic/stacktrace) │ ~70Ki │ DWARF reader (debug.Dwarf.ElfModule.load = 26Ki), stack unwinder, panic machinery. Тянется из-за того что binary linked с libcxx │
├──────────────────────────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ zmx: main.* │ ~60Ki │ Собственный код daemon, attach, list │
├──────────────────────────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ std (fmt, collections) │ ~65Ki │ std.fmt, ArrayHashMap, etc. │
└──────────────────────────────┴─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
.rodata — 227Ki (26%)
┌───────────────────────────────┬────────┬─────────────────────────────────────────────────────┐
│ Источник │ Размер │ │
├───────────────────────────────┼────────┼─────────────────────────────────────────────────────┤
│ props.Tables.stage2 (Unicode) │ 61Ki │ Unicode property lookup table (ghostty-vt) │
├───────────────────────────────┼────────┼─────────────────────────────────────────────────────┤
│ props.Tables.stage1 (Unicode) │ 16Ki │ Второй уровень таблицы │
├───────────────────────────────┼────────┼─────────────────────────────────────────────────────┤
│ simdutf lookup tables │ ~30Ki │ UTF-8/UTF-16 SIMD conversion tables │
├───────────────────────────────┼────────┼─────────────────────────────────────────────────────┤
│ format strings & strings │ ~120Ki │ Строковые литералы (в т.ч. от 155 log-инстанциаций) │
└───────────────────────────────┴────────┴─────────────────────────────────────────────────────┘
.eh_frame — 53Ki (6%)
C++ exception unwinding frames. Приходят от linkage с libcxxabi + libunwind (которые ghostty-vt тянет из-за SIMD C++ кода). Этот оверхед есть всегда при смешивании Zig + C++.
.data.rel.ro — 37Ki (4%)
Таблицы виртуальных функций C++ (vtables) из libcxxabi. Нужны для C++ exceptions / RTTI в simd/*.cpp.
---
Итоговая картина зависимостей
ghostty-vt (~65% размера)
├── terminal/* Zig code ~170Ki .text (VT emulator core)
├── unicode property tables ~80Ki .rodata (Unicode lookup tables)
├── log.scoped инстанциации ~125Ki .text (ghostty's logging в stream.zig)
└── simd/ C++ (simdutf, highway) ~40Ki .text + C++ overhead:
├── .eh_frame 53Ki (C++ unwind frames)
└── .data.rel.ro 37Ki (C++ vtables/RTTI)
std.debug / panic machinery ~70Ki .text (DWARF reader для stacktrace)
cxa_demangle (libcxxabi) ~132Ki VM (C++ name demangler — для panic demangling)
zmx own code ~60Ki .text
Главные выводы
1. Доминирует ghostty-vt: ~65% бинарника. Это цена за использование полноценного VT эмулятора.
2. log.scoped(.stream).warn — 127Ki сюрприз. В ghostty terminal/stream.zig множество log-вызовов, каждый с уникальной строкой → Zig генерирует отдельную функцию на каждый. Это называется "log bloat" от comptime-инстанциации.
3. C++ overhead (libcxxabi + libunwind + .eh_frame + .data.rel.ro) = ~280Ki — неизбежная стоимость использования simd/*.cpp из ghostty, который тянет C++ runtime.
4. std.debug = ~70Ki — DWARF reader для красивых panic stacktrace. Без него было бы меньше.
Если бы вы писали atch на zig, размер бинарника вышел бы примерно как сейчас.
$ time zig build -Doptimize=ReleaseSmall
real 0m56,688s
user 3m11,146s
sys 0m22,207s
$ ls -l zig-out/bin/
total 884
-rwxrwxr-x 1 self self 901600 2026-03-07 18:38 zmx
Да и в вашем выводе 130K - это уже не килобайтики, а весомые сотни килобайт. Да, собирается не быстро (atch ещё не пробовал собирать, так что не могу сравнить).
Ок, atch поменьше, зато у zmx язык моднее-безопаснее и звёзд у репы на порядок больше. Но все эти критерии мало что говорят и выбора я пока для себя не сделал.
Но можно и не заниматься такой вознёй, а слать со своих прогулок фоточки своему партнёру и получать в ответ сердечки и пожелания круто оторваться. Тоже доступная опция!
Главное отличие - сервер сессий уже есть в поставке.
А что это такое?
Отсутствие конфликтов прокруток и выделений — очень солидный аргумент! Я честно говоря считал решение этого практически невозможным. Что обязательно какой-нибудь sixel отвалится.
С другой стороны насколько я знаю tmux прозрачно интегрируется с iTerm (но я сам маки обхожу за километр)
У zellij конфиг выглядит как нормальный конфиг - key, value и набор вложенных лэйаутов в формете близком к json
Что только люди ни придумают лишь бы TOML не использовать (
Манов по настройке и дефолтного конфига, в который можно было бы заглянуть за опциями в поставке tmux не имется, насколько мне известно.
man tmux. Дефолтные параметры смотреть типа такого: Run tmux show-options -g for session options and tmux show-window-options -g for window options.
Ну значит тем больше аргументов голосовать за пиратскую партию, если она есть в вашей стране.
Или рассказывать окружающим о проблемах.
Все сейчас решённые социальные проблемы осознавались как проблемы сначала небольшой долей людей. Так что в принципе, пусть иногда, но малое количество соратников — не приговор.
Ну и это, господа айтишники, давайте подумаем, как мы можем противостоять чрезмерной миграции вебаппов в мобильные приложения. Например:
Можно посмотреть, может какое-то из установленных у вас приложений можно заменить на [ярлык на] вебсайт
Может показать кому-то из знакомых, что использование вебсайта вместо приложения даёт дополнительный контроль
Может в своей рабочей среде при принятии решения будет ли сделан вебсайт или мобильное приложение вы можете озвучить этические аргументы против мобильного приложения
Кажется полезным разделять риски от использования сети и от использования клиента.
Равно как и официальный клиент может добавить что-то. Если мы доверяем официальному клиенту потому что опенсорс и reproducible builds, то Forkgram полученный из F-Droid в той же степени заслуживает доверия: опенсорс и гарантированно получен из исходников.
В исследовании, на которое автор ссылается
https://rks.global/ru/research/alt-telegram-clients/#:~:text=Group.-,Mercurygram,версии
Это некорректный пересказ, до уровня обощений “всё в нашем мире представляет опасность а любая еда вредна”.
Для forkgram и mercurygram риски указаны " разработчик во власти добавить слежку в будущем" что примерно соответствует рискам от использования официального клиента
GUI жрёт лишних 100MB RAM. Вот на выбор экономнее:
Вариант через cvlc внезапно на моих тестах оказался самым экономичным по RAM.
Короче говоря вам важно оптимизировать под размер, если я правильно понял.
Это однако не означает, что Zig вам не подходит. Я не программист, но из того что я читал про него, это такой современный C, который в том числе прозрачно с C взаимодействует и позволяет собирать его проекты. Как я понимаю, zmx такой большой потому что работает через libghostty-vt, внутри всё-таки эмулируя терминал. А ему для этого дофига всего надо, например парсить юникод. Вот отчёт клода с анализом:
Если бы вы писали atch на zig, размер бинарника вышел бы примерно как сейчас.
При ReleaseSmall zmx меньше мегабайта:
Да и в вашем выводе 130K - это уже не килобайтики, а весомые сотни килобайт.
Да, собирается не быстро (atch ещё не пробовал собирать, так что не могу сравнить).
Ок, atch поменьше, зато у zmx язык моднее-безопаснее и звёзд у репы на порядок больше. Но все эти критерии мало что говорят и выбора я пока для себя не сделал.
Любопытно сравнить с другим вышедшим только что исследованием https://www.anthropic.com/research/labor-market-impacts
https://github.com/neurosnap/zmx видели?
Недавно появился и как я понимаю тоже с намерением сделать как dtach, но лучше.
Как такие смартфоны искать?
Сборка для F-Droid страдала от похожих проблем недавно: https://gitlab.com/relan/fennecbuild/-/issues/134
Тогда нашли workaround.
хорошо бы зарепортить вашу ситуацию куда-то
Сборка для F-Droid страдала от похожих проблем недавно: https://gitlab.com/relan/fennecbuild/-/issues/134
хорошо бы зарепортить вашу ситуацию куда-то
Но можно и не заниматься такой вознёй, а слать со своих прогулок фоточки своему партнёру и получать в ответ сердечки и пожелания круто оторваться. Тоже доступная опция!
Было бы неплохо уточнить OpenStreetMap о проверенных таксофонах.
Сейчас OSM знает в РФ 4643 общественныamenity=telefoneх телефона: https://overpass-turbo.eu/s/2eIN
Тег amenity=telefone
Поправите?
И это WebP, который уже лет 5 назад стал мейнстримом! Пора JPEG XL поддерживать.
feh, конечно, открывает.
xli заброшен и не развивается, постепенно вымывается из репозиториев. Переходите на feh.
А pqiv попробую посмотреть. Это вроде geeqie?
А что это такое?
Отсутствие конфликтов прокруток и выделений — очень солидный аргумент! Я честно говоря считал решение этого практически невозможным. Что обязательно какой-нибудь sixel отвалится.
С другой стороны насколько я знаю tmux прозрачно интегрируется с iTerm (но я сам маки обхожу за километр)
Что только люди ни придумают лишь бы TOML не использовать (
man tmux. Дефолтные параметры смотреть типа такого:Run
tmux show-options -gfor session options andtmux show-window-options -gfor window options.Я попробовал почитать обзоры zellij но не увидел в них конкретных примеров преимуществ над tmux. Ну хоткеи discoverable - так я уже tmux запомнил
Можете привести пример чем пользуетесь?
Не надо zellij: он потребляет RAM на порядок с лишним больше, чем tmux.
Ну значит тем больше аргументов голосовать за пиратскую партию, если она есть в вашей стране.
Или рассказывать окружающим о проблемах.
Все сейчас решённые социальные проблемы осознавались как проблемы сначала небольшой долей людей. Так что в принципе, пусть иногда, но малое количество соратников — не приговор.
Ну и это, господа айтишники, давайте подумаем, как мы можем противостоять чрезмерной миграции вебаппов в мобильные приложения. Например:
Можно посмотреть, может какое-то из установленных у вас приложений можно заменить на [ярлык на] вебсайт
Может показать кому-то из знакомых, что использование вебсайта вместо приложения даёт дополнительный контроль
Может в своей рабочей среде при принятии решения будет ли сделан вебсайт или мобильное приложение вы можете озвучить этические аргументы против мобильного приложения