Обновить
41
Мещеряков Александр@Self_Perfection

Линуксоид ПК

11
Подписчики
Отправить сообщение

Кажется полезным разделять риски от использования сети и от использования клиента.

Равно как и официальный клиент может добавить что-то. Если мы доверяем официальному клиенту потому что опенсорс и reproducible builds, то Forkgram полученный из F-Droid в той же степени заслуживает доверия: опенсорс и гарантированно получен из исходников.

Это где вы такое прочитали, особенно про форкграм (хороший оупенсорс-форк десктопа)?

В исследовании, на которое автор ссылается

https://rks.global/ru/research/alt-telegram-clients/#:~:text=Group.-,Mercurygram,версии

Mercurygram и Forkgram на момент исследования показали чистый сетевой профиль без передачи данных третьим сторонам. Однако это не гарантия на будущее - разработчики могут добавить любые механизмы сбора данных в следующей версии.

сошлись во мнении, что все они могут быть небезопасны для использования.

Это некорректный пересказ, до уровня обощений “всё в нашем мире представляет опасность а любая еда вредна”.

Для forkgram и mercurygram риски указаны " разработчик во власти добавить слежку в будущем" что примерно соответствует рискам от использования официального клиента

GUI жрёт лишних 100MB RAM. Вот на выбор экономнее:

mpv --no-video --really-quiet 'https://devopsradio.ru/radio/stream' &> /dev/null &
cvlc --quiet 'https://devopsradio.ru/radio/stream' &> /dev/null &
ffplay -nodisp -loglevel quiet 'https://devopsradio.ru/radio/stream' &> /dev/null &

Вариант через cvlc внезапно на моих тестах оказался самым экономичным по RAM.

Короче говоря вам важно оптимизировать под размер, если я правильно понял.

Это однако не означает, что 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, размер бинарника вышел бы примерно как сейчас.

При ReleaseSmall zmx меньше мегабайта:

$ 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 язык моднее-безопаснее и звёзд у репы на порядок больше. Но все эти критерии мало что говорят и выбора я пока для себя не сделал.

Любопытно сравнить с другим вышедшим только что исследованием 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

Поправите?

Там нечему развиваться, он просто показывает картинки )

$ xli /tmp/test.webp
/tmp/test.webp: unknown or unsupported image type

И это WebP, который уже лет 5 назад стал мейнстримом! Пора JPEG XL поддерживать.

feh, конечно, открывает.

xli заброшен и не развивается, постепенно вымывается из репозиториев. Переходите на feh.

А pqiv попробую посмотреть. Это вроде geeqie?

Главное отличие - сервер сессий уже есть в поставке.

А что это такое?

Отсутствие конфликтов прокруток и выделений — очень солидный аргумент! Я честно говоря считал решение этого практически невозможным. Что обязательно какой-нибудь 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.

Я попробовал почитать обзоры zellij но не увидел в них конкретных примеров преимуществ над tmux. Ну хоткеи discoverable - так я уже tmux запомнил

Можете привести пример чем пользуетесь?

Ну значит тем больше аргументов голосовать за пиратскую партию, если она есть в вашей стране.

Или рассказывать окружающим о проблемах.

Все сейчас решённые социальные проблемы осознавались как проблемы сначала небольшой долей людей. Так что в принципе, пусть иногда, но малое количество соратников — не приговор.

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

  • Можно посмотреть, может какое-то из установленных у вас приложений можно заменить на [ярлык на] вебсайт

  • Может показать кому-то из знакомых, что использование вебсайта вместо приложения даёт дополнительный контроль

  • Может в своей рабочей среде при принятии решения будет ли сделан вебсайт или мобильное приложение вы можете озвучить этические аргументы против мобильного приложения

1
23 ...

Информация

В рейтинге
6 569-й
Откуда
Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Системный администратор, DevOps-инженер
Linux
Bash
Nginx
PostgreSQL
Git
Docker