Технологический Болт Генона
9.53K subscribers
3.37K photos
436 videos
221 files
4.31K links
До Декарта никогда не существовало рационализма.

Музыкальный Болт Генона: @mus_b0lt_Genona
Мемный Болт Генона: @mem_b0lt_Genona
Кадровый Болт Генона: @kadr_b0lt_Genona
Генеалогический Болт Генона: @gen_b0lt_Genona
Обратная связь: @rusdacent
Download Telegram
Итак! Долгожданный (судя по личке) пост по выбору кнопочного телефона!

В июле я писал, что ищу замену своему старенькому кнопочному телефону
https://xn--r1a.website/tech_b0lt_Genona/5442

Там в комментариях было много разных предложений и советов

Реально хорошей альтернативой я считаю только один (теоретически)
Armor Mini 4
https://www.ulefone.com/products/armor-mini-4

, но не могу дать рекомендаций практических, потому что его себе в итоге не взял и не пользовался.

А не пользовался потому что мне подписчик, после моего поста, прислал телефон, который максимально похож на тот что у меня сейчас

Это Ginzzu R6 Dual. Ещё когда 11 лет назад я покупал свой, то я думал взять Ginzzu. Если вы посмотрите картинки, то увидите, что они очень похожи визуально. Это потому что китайцы на заводах клепали одинаковые корпуса под разных производителей и под разную функциональность.

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

В R6 Dual можно вкрутить антенну, как видно на фото, а на моём Evolveo в этом месте несъёмная заглушка.

Из плюсов:
- Тот же корпус (ещё и в хорошем состоянии: заглушки на месте, кнопки не вытерлись, прорезиненный корпус целый)
- Из предыдущего пункта следует тот же аккумулятор (у меня уже куплено было 2 штуки на смену для Evolveo)
- Отсутствует фронтальная камера
- Контакты переехали через gammu/wammu без проблем
- Есть режим рации

Из минусов:
- Не умеет WiFi раздавать

Резюмируя: человечество окончательно остановилось и даже в каком-то смысле деградировало в области защищённых кнопочных телефонов, но с этим ничего не поделать 🌝

ЗЫ

Кнопочные телефоны с Android на борту это страшно. Они глючат и тормозят (потому что железо таково), держат батарею мало (относительно моделей без него, потому что просто не могут жить без кучи всякого крутящегося "под капотом") и в целом это старые версии (сильно и не очень).

ЗЫЫ

На данный момент хожу со старым пока ещё
💊54👍25🥴54🔥43😁32
Организация Python Software Foundation, курирующая разработку языка программирования Python, отказалась от получения гранта в 1.5 млн долларов, одобренного Национальным научным фондом США в рамках программы "Безопасность, защита и конфиденциальность Open Source экосистем". Заявка на получение гранта была подана в январе и после многомесячного процесса проверки и согласования была одобрена на предоставление финансирования. Грант подразумевал выделение 1.5 млн долларов в течение двух лет, что является ощутимой для Python Software Foundation суммой, так как общий готовой бюджет данной организации составляет около 5 млн долларов в год при 14 трудоустроенных сотрудниках.

Причиной отказа от гранта стали условия, которые необходимо было принять в случае получения денег. В течение срока действия гранта участникам предписывалось не осуществлять инициативы, продвигающие или поддерживающие политику DEI (разнообразие, равенство и инклюзивность) или иную дискриминационную идеологию равенства, нарушающую федеральные антидискриминационные законы США (Дональд Трамп объявил программы DEI незаконными, аморальными и дискриминационными). Ограничение распространяется не только на финансируемые грантом работы, но и на всю деятельность организации, получившей грант.

Данное требование создаёт финансовые риски, так как Национальный научный фонд имеет право отозвать уже перечисленные средства, в случае нарушения условий предоставления гранта, т.е. уже потраченные средства могут быть затребованы назад. Кроме того, отмеченное требование идёт вразрез с миссией проекта Python, в которой разнообразие, равенство и инклюзивность упоминаются среди ключевых ценностей. По заявлению представителей Python Software Foundation, принятие условий и отказ от поддержки DEI стало бы предательством сообщества и объявленной миссии.

Выделяемые средства планировали потратить на разработку новых инструментов для автоматизированного рецензирования пакетов, загружаемых в каталог PyPI (Python Package Index). Вместо ныне применяемой "reactive" схемы, подразумевающей проверку после того как пакет уже доступен в каталоге, намеревались внедрить "proactive" схему, при которой проверка выполняется до того, как пакет станет доступен пользователям. Для выявления вредоносных пакетов планировали использовать анализ функциональности, учитывающий типовые элементы известного вредоносного ПО. Предполагалось, что развиваемый инструментарий не ограничится защитой PyPI и его можно будет адаптировать для каталогов других открытых проектов, таких как NPM и
Crates.io.

Проект Python отказался от гранта в 1.5 млн долларов на повышение защищённости PyPI
https://www.opennet.ru/opennews/art.shtml?num=64123

Оригинал
The PSF has withdrawn a $1.5 million proposal to US government grant program
https://pyfound.blogspot.com/2025/10/NSF-funding-statement.html

via @itpgchannel
🤡61🔥16😁86🥴4👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Технолоджиа!

Running Rust on shared hosting via PHP wrapper (hear me out)
https://www.reddit.com/r/rust/comments/1o9w36k/running_rust_on_shared_hosting_via_php_wrapper/

I wanted actual memory safety and compile-time guarantees, but I'm also practical about infrastructure. Didn't feel like paying for VPS hosting, managing security patches, configuring databases, setting up backups, and generally babysitting servers when shared hosting is under $10/month and handles all that.

Problem: how do you run Rust on shared hosting that only officially supports PHP?

A compromise: use PHP as a thin CGI-style wrapper that spawns your Rust binary as a subprocess:

1. PHP receives HTTP request

2. Serializes request context to JSON (method, URI, headers, body, query params)

3. Spawns Rust binary via proc_open

4. Binary reads JSON from stdin, processes request, writes response to stdout

5. PHP captures output and returns to client

Static linking is critical so you don't depend on the host's glibc. Using musl target:

rustup target add x86_64-unknown-linux-musl cargo build --release --target x86_64-unknown-linux-musl


Verify it's fully static:

ldd target/x86_64-unknown-linux-musl/release/myapp


Then just upload via SFTP and chmod +x.

Rust side (simplified):


use serde::{Deserialize, Serialize}; use std::io::{self, Read};

#[derive(Deserialize)]
struct Context { method: String, uri: String, headers: HashMap<String, String>, body: String, }

#[derive(Serialize)]
struct Response { data: serde_json::Value, }

fn main() -> Result<(), Box<dyn std::error::Error>> { let mut input = String::new(); io::stdin().read_to_string(&mut input)?;

let ctx: Context = serde_json::from_str(&input)?;
let result = handle_request(ctx)?;

println!("Content-Type: application/json\n");
println!("{}", serde_json::to_string(&result)?);

Ok(())
}


Database gotcha:

Shared hosting usually blocks TCP connections to MySQL. Use Unix sockets:

// Won't work: let url = "mysql://user:pass@localhost:3306/db";

// Will work: let url = "mysql://user:pass@localhost/db?socket=/var/run/mysqld/mysqld.sock";


Find your socket path via phpinfo().

Trade-offs:

Pros: actual memory safety, minimal memory footprint, no server maintenance, cheap hosting, just upload via SFTP

Cons: process spawn overhead per request, no persistent state between requests, two codebases, requires cross-compilation, binaries run with your account's full permissions (no additional sandboxing)

Security considerations:

Your binary runs with the same permissions as PHP scripts. Not sandboxed. All the usual rules apply: validate input rigorously, don't expose to untrusted users, sanitize file paths. The security model is essentially identical to running PHP.

Why this works:

You get Rust's memory safety guarantees and zero-cost abstractions while leveraging cheap shared hosting infrastructure. Not optimal for high-traffic production systems, but solid for side projects, low-traffic sites, and learning purposes. For serious production workloads you probably still want proper VPS or containerized deployment.

Ultimately though, the borrow checker doesn't care that it's being spawned by PHP.
🤪27🤡21🔥9💊9❤‍🔥2🙈2😁1🐳1
ФСБ потребовала от банков хранить переписку с клиентами
https://www.banki.ru/news/lenta/?id=11018892

ФСБ потребовала от банков установить системы для хранения переписки c клиентами в приложениях, узнал РБК. Соответствующие письма были направлены крупным кредитным организациям, рассказали источники издания. В самих банках от комментариев отказались.

Кредитные организации попадают под статус организаторов распространения информации (ОРИ), если соответствуют ряду критериев. Например, если они обеспечивают работу интернет-сайтов и мобильных приложений, через которые сотрудники и пользователи могут обмениваться сообщениями.

В соответствии с законом, ОРИ должны устанавливать у себя системы оперативно-разыскных мероприятий (СОРМ), хранить переписки, голосовые сообщения и видеозаписи из приложений и предъявлять их правоохранительным органам по запросу. Сейчас срок хранения данных о пользователях составляет один год, а с 2026 года увеличится до трех лет.

Банки также должны будут разработать программу взаимодействия с ФСБ, назначить ответственного сотрудника и установить оборудование с возможностью удаленного доступа.

По мнению экспертов, нововведение ожидаемо для рынка, поскольку предусмотрено законом. С реализацией проблем возникнуть не должно, уверены производители оборудования СОРМ.
💊31👏10👍6😁5🤡5👎4🥴4🎃2
Четверг, а значит время проектов от подписчиков! 🌝

Тем, кто пропустил, что такое четверговые проекты от подписчиков, можно прочитать тут - https://xn--r1a.website/tech_b0lt_Genona/4983

Слово автору @ozeranskii

---

Решал конкретно свою задачу и в итоге решил, что это можно выкатить в опенсорс.

Мне нужно было задебажить запросы к удаленному API по перформансу - не просто увидеть "запрос занял 800 мс", а получить реальную картину: какие этапы есть у запроса, сколько времени тратится на каждый шаг (DNS, коннект, TLS, ожидание ответа и т д), что именно тормозит. Так и появился httptap.

🔗 Репозиторий: https://github.com/ozeranskii/httptap

PyPi - https://pypi.org/project/httptap/

Почему не httpstat

Когда искал готовые решения, нашел два инструмента:
- https://github.com/reorx/httpstat (Python)
- https://github.com/davecheney/httpstat (Go)

И вот какие там ограничения.

httpstat (Python):
- это по сути обертка над curl - без curl не работает
- проект давно не развивается
- по набору фичей тоже получается бедней, чем у меня

httpstat (Go):
- нативная реализация без curl. Удобно
- но это скорее удобный curl -v с подсветкой
- нет глубокого TLS аудита
- нет JSON экспорта для автоматизации и регрессионных проверок

Короче, ни одно решение не закрывало мои сценарии полностью, плюс захотел свое ,как мне кажется, более интересное.

Что делает httptap по другому

🎯 Чистая Python экосистема
- без внешнего curl и системных зависимостей
- минимум зависимостей: httpx, dnspython, rich
- работает на macOS, Linux, Windows
- можно использовать как CLI и можно использовать как библиотеку внутри питоновского кода

📊 Продвинутый трейсинг
- точные замеры через httpcore trace hooks, а не парсинг вывода curl
- полная цепочка редиректов с таймингами на каждом хопе
- честно помечает метрики как is_estimated, если где то пришлось сделать фолбек
- это не просто "запрос занял N мс", это поэтапный waterfall

🔒 Глубокая TLS инспекция
- версия протокола и cipher suite
- common name сертификата
- сколько дней осталось до истечения (cert_days_left)
- отдельный TLS probe чтобы это измерить и показать отдельно

🌐 Работа с сетью
- определяет IPv4/IPv6
- показывает какой IP был на каждом шаге редиректа

💾 Удобные форматы вывода
- rich waterfall - человекочитаемая табличка с этапами
- compact - однострочник для логов
- metrics-only - только цифры, чтобы парсить в скриптах или в CI
- полный JSON экспорт со всеми метаданными по каждому шагу, включая тайминги DNS/TCP/TLS/TTFB/Transfer, хедеры, сертификаты, summary
- максирование чувствительных заголовков при экспорте в JSON

🔧 Расширяемость
- четкие интерфейсы для DNS резолвера, TLS инспектора, визуализации
- можно подменить компонент и встроить httptap в свою отладку
- это не тупо консолька, это реально пригодно как часть пайплайна

Как это устроено внутри

В отличие от httpstat (python), который полагается на curl, httptap делает все сам внутри Python:
- использует httpx/httpcore и низкоуровневые trace hooks, то есть мы реально видим поведение клиента на уровне сокетов
- лезет в TLS руками и вытаскивает параметры шифрования и сертификат
- полностью контролирует измерения, а не просто печатает чужую статистику

Для чего это вообще
- performance troubleshooting - где именно тормозит API
- regression analysis - сравнение базовой метрики и текущей
- tls audit - что там с сертификатом и шифром
- network diagnostics - DNS, IPv4 vs IPv6, латентность соединения
- redirect chain analysis - как реально ходит запрос до финальной точки

Если вы отлаживаете API и вам нужно не просто "оно отвечает медленно", а понять почему - забирайте, пишите фидбек и контрибутьте. 🚀

---
🔥609👍6
Telegram в России тестирует отправку SMS-кодов через пользователей
https://kod.ru/telegram-p2pl-rus

Telegram начал поэтапно разворачивать в РФ функцию отправки SMS-кодов за счёт пользователей.

Речь о возможности воспользоваться программой Peer-to-Peer Login Program (Программа одноранговой авторизации), которую Telegram впервые запустил лишь в нескольких странах ещё в начале 2024 года.

- Суть функции в следующем: пользователь разрешает Telegram отправлять со своего номера телефона до 100 SMS в месяц — это SMS-сообщения с кодами авторизаций, которые получают другие пользователи.

Важный момент: функция фактически предлагается сейчас только пользователям с Android-смартфонами, так как iOS — закрытая система и позволять пользователю быть «ретранслятором» сообщений труднее.

- Как правило, подписку Telegram Premium отправляют при достижении минимального количества отправленных сообщений с использованием тарифного плана номера телефона пользователя.

- При этом подписка в виде подарочной ссылки, поэтому её можно подарить кому-то другому, например, другу или родственнику.

- Пользователи в любой момент могут отказаться от участия в Программе одноранговой авторизации.

«Код Дурова» убедился, что функция пока доступна только 0,01% пользователей и её массового распространения в России пока нет, при этом принудительно пользоваться ей Telegram заставлять не будет.

И сразу в эту же тему

390 миллиардов сообщений отправят в 2025 году компании в мессенджеры, продолжая диверсифицировать каналы доставки своих сообщений пользователям. В первую очередь это касается A2P-коммуникации, проще говоря – отправки одноразовых паролей и PIN-кодов для доступа в сервисы и на сайты, а также для подтверждения действий пользователя. Рост к 2027 году составит почти 44%. Главный драйвер – отказ от использования SMS и агрессивная ценовая политика WhatsApp, использование которого дает компаниям экономию от 50% до 90% по сравнению с использованием традиционных операторских SMS.

https://xn--r1a.website/contentreview/11030
👍14👎10🥴7🤔32😁1🖕1
- Не будет пузыря?
- Нет.
- Твёрдо и чётко?
- Твердо и четко.

Powell says that, unlike the dotcom boom, AI spending isn’t a bubble: ‘I won’t go into particular names, but they actually have earnings’
https://fortune.com/2025/10/29/powell-says-ai-is-not-a-bubble-unlike-dot-com-federal-reserve-interest-rates/

Federal Reserve Chair Jerome Powell doesn’t think the AI boom is another dotcom bubble. In fact, he made that distinction explicit on Wednesday, arguing that the current wave of artificial intelligence investment is grounded in profit-making firms and real economic activity rather than speculative exuberance.

“I won’t go into particular names,” Powell told reporters after the Fed’s policy meeting, “but they actually have earnings.

“These companies … actually have business models and profits and that kind of thing. So it’s really a different thing” from the dotcom bubble, he added.
😁32🤔7🥴21🔥1
Технологический Болт Генона
Telegram в России тестирует отправку SMS-кодов через пользователей https://kod.ru/telegram-p2pl-rus Telegram начал поэтапно разворачивать в РФ функцию отправки SMS-кодов за счёт пользователей. Речь о возможности воспользоваться программой Peer-to-Peer Login…
Буквально три часа назад написал про СМС и Telegram
https://xn--r1a.website/tech_b0lt_Genona/5825

и вот уже объяснение этого движа

От российских операторов потребовали прекратить передачу SMS и звонков новым пользователям со стороны подрядчиков Telegram и WhatsApp* при попытке их регистрации, сообщил «Коду Дурова» источник на телеком-рынке. Операторы начали выполнять указание — и это затронет в том числе уже зарегистрированных пользователей
Эксклюзив: в России ограничили регистрацию пользователей в Telegram и WhatsApp*
https://kod.ru/telegram-i-whatsapp-bez-sms

Я уже говорил, что принудительно привязывать что-либо к номерам мобильных телефонов максимально тупорылая идея

https://xn--r1a.website/tech_b0lt_Genona/4953
https://xn--r1a.website/tech_b0lt_Genona/5082
🔥23🤬13🤔2😁1🤯1
Серия постов про то как наше железо (и не только) привязывают всё больше к облакам, подпискам и прочей шляпе

https://xn--r1a.website/tech_b0lt_Genona/5163
https://xn--r1a.website/tech_b0lt_Genona/5166
https://xn--r1a.website/tech_b0lt_Genona/5195
https://xn--r1a.website/tech_b0lt_Genona/5197
https://xn--r1a.website/tech_b0lt_Genona/5657
https://xn--r1a.website/tech_b0lt_Genona/5810

Умные матрасы Eight Sleep перестали работать из-за сбоя AWS: в них нет офлайн-режима
https://habr.com/ru/news/958652/

> В постах на неофициальном сабреддите Eight Sleep многие пользователи впервые узнали, что их матрасы сильно зависят от стабильного подключения и ошибок на серверах производителя. Один из комментаторов отметил, что его флагманская модель за 5 тыс. долларов должна работать всегда.

Лучше поздно, чем никогда
😁337🔥5
Forwarded from Активация
Для тех, кто в теме, уже давно не секрет, что обновление библиотеки OpenSSL до версии 3.x очень болезненное и проблемное: сломы обратной совместимости без явной на то причины, нередкие просадки производительности.

https://www.haproxy.com/blog/state-of-ssl-stacks

В этом году разработчики HAProxy сравнили производительность различных TLS-бэкендов: OpenSSL 1.1.1, несколько версий OpenSSL 3.x, WolfSSL и Amazon aws-lc (форк Google BoringSSL (форк OpenSSL 1.x)).

Помимо всего прочего, в посте представлен некоторый исторический контекст, который затрагивает вопросы адекватности и компетентности нынешних разработчиков OpenSSL, которые закономерно наносят вред качеству и репутации проекта.

TL;DR: OpenSSL — кринж, aws-lc и BoringSSL — база
😱12💯21👍1
Больше никакой латиницы. Россияне перекроили популярнейший язык программирования, чтобы писать программы на русском
https://www.cnews.ru/news/top/2025-10-30_bolshe_nikakoj_latinitsy

> По словам кандидата педагогических наук, доцента кафедры «Информатика и методика обучения информатике и математике» Андрея Дикова, все это «облегчает освоение программирования и снимает языковой барьер».

Когда устал от англоязычного написания своей фамилии и решил бороться радикально с английским языком во всех его проявлениях
🤡92😁39💊19🤣7👍3🖕31
Аня, она же @theyforcedme, задефейсила Башорг. Не забывайте оплачивать свои ресурсы 🌝

zoi: ты как, сцуко, башорг задефейсила?
аня: вы, уважаемый Зой, домен продлить забыли!
zoi: врёшь, продлили же
аня: ну
bash.org.ru продлили, а домен, указанный в NS-записях оплатить забыли
zoi: так и что же теперь?
аня: да просто напишите на vernisuka[at]
bash.org.ru или vernisuka[at]chatty.fish, и я всё верну
zoi: пиздец ты скучная, хоть бы гоатсе повесила
аня: я хотела вернуть максимально аутентичный баш, поэтому повесила выдуманный диалог


https://bash.org.ru/

via @dotrubic_thoughts
🥰47😁34🥱123👍3🤡1🌚1
В чате FreeBSD 1!!11! (@freebsd_ru) увидел чудесное про Debian (точнее про APT)

Hard Rust requirements from May onward
https://lists.debian.org/debian-devel/2025/10/msg00285.html

I plan to introduce hard Rust dependencies and Rust code into APT, no earlier than May 2026. This extends at first to the Rust compiler and standard library, and the Sequoia ecosystem.

In particular, our code to parse .deb, .ar, .tar, and the HTTP signature verification code would strongly benefit from memory safe languages and a stronger approach to unit testing.

If you maintain a port without a working Rust toolchain, please ensure it has one within the next 6 months, or sunset the port.

It's important for the project as whole to be able to move forward and rely on modern tools and technologies and not be held back by trying to shoehorn modern software on retro computing devices.


И это не просто сообщение не пойми от кого, это сообщение от мэйнтейнера APT (и вообще разработчика Debian с 2008 года) - Julian Andres Klode
https://www.debian.org/vote/2025/platforms/jak
https://github.com/julian-klode

Не все оказались рады такому подходу

> I find this particular wording rather unpleasant and very unusual to what I'm used to from Debian in the past. I have to admit that I'm a bit disappointed that such a confrontational approach has been chosen.

https://lists.debian.org/debian-devel/2025/10/msg00286.html
😁73🔥3🤔3👎2👍1
Блог* рассказал чего там нового в Rust 1.91.0 завезли
https://xn--r1a.website/dereference_pointer_there/10329

Я, как человек у которого несколько раз заканчивалось место на разделе во время сборки проектов на Rust, рад больше всего новому параметру

> У cargo теперь есть настройка (https://github.com/rust-lang/cargo/pull/15833) для указывания того, куда складывать промежуточные артефакты компиляции.

CARGO_BUILD_BUILD_DIR
> The directory where intermediate build artifacts will be stored. Intermediate artifacts are produced by Rustc/Cargo during the build process.

https://doc.rust-lang.org/cargo/reference/config.html#buildbuild-dir
👍14🤡61
Мощно ворвались

Linux gamers on Steam finally cross over the 3% mark

https://www.gamingonlinux.com/2025/11/linux-gamers-on-steam-finally-cross-over-the-3-mark/
😁54🔥36🥰8🤡3
no-code - пакет для скрытия кода на языке Python
https://www.opennet.ru/opennews/art.shtml?num=64148

Опубликован инструментарий no-code, позволяющий скрывать код в скриптах на языке Python. Преобразованный скрипт выглядит в редакторах кода как одна строка "# coding: no" без какого-либо иного содержимого, но при этом продолжает запускаться и выполнять прежние функции.

Метод скрытия основан на кодировании содержимого при помощи двух Unicode-символов, имеющих нулевую длину (не приводящие к отступу пробелы 0x200B и 0x200C). Один невидимый символ отождествляется с "0", а второй с "1".

Строка "# coding: no" в скрипте со скрытым кодом указывает на использование в файле кодировки с именем "no" - ключевое слово "coding:" применяется в Python для задания кодировки исходного кода. Для запуска преобразованного скрипта требуется установка Python-пакета "no_code", который включает файл "no.pth", вызываемый при использовании кодировки c именем "no" для декодирования перед обработкой парсером. Для скрытия не всего файла, а отдельных порций с кодом, проектом предоставляются функции no_code.nothing() и no_code.something().


$ cat some_code.py
print("Hello, world!")

$ no_code some_code.py > no_code.py

$ cat no_code.py
# coding: no
​‌‌‌​​​​​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌​​​​​‌​​​‌​​‌​​‌​​​​‌‌​​‌​‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​‌‌‌‌​​‌​‌‌​​​​‌​​​​​​‌‌‌​‌‌‌​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​‌‌​​​‌‌​​‌​​​​‌​​​​‌​​‌​​​​​‌‌‌‌​​​​‌​​‌‌‌‌‌‌​​‌‌​​​‌​​​​​​‌​​‌​​​‌​​​‌​‌​​‌​​​​‌​‌​
$ python no_code.py
Hello, world!

$ yes_code no_code.py > some_code.py

$ cat some_code.py
print("Hello, world!")

GutHub
https://github.com/lemonyte/no-code

Из похожих проектов можно отметить Perl-модуль Acme::Bleach (https://metacpan.org/pod/Acme::Bleach), преобразующий код в представление из пробелов и табуляций, а также JavaScript-библиотеку INVISIBLE.js (https://aem1k.com/invisible/encoder/), позволяющую скрывать код через кодирование в символы с нулевой длиной.
🔥25😁162🤔2
В списке рассылки разработчиков ядра Linux опубликованы патчи с реализацией архитектуры "Wasm" для ядра Linux, позволяющей компилировать ядро в промежуточный код WebAssembly для последующего прямого выполнения в web-браузере без задействования эмуляторов. Кроме того, для ядра Linux проектом реализована возможность запускать исполняемые файлы в формате ".wasm" и подготовлен драйвер "web console" для симуляции работы с консолью в браузере. Также подготовлен инструментарий для упрощения сборки запускаемых в браузере системных окружений.

В качестве примера сформировано окружение на базе скомпилированных в WebAssembly набора утилит BusyBox и системной библиотеки musl. В качестве эмулятора терминала для работы с подобным окружением задействован Xterm.js.

Проект развивается уже около двух лет и на текущем этапе позволяет загружать ядро в браузерах и выполнять типовые программы. Работа ещё не завершена и порт имеет отдельные проблемы и ограничения. Например, ещё не реализована поддержка вызовов vfork и longjmp (к BusyBox применены патчи для работы без них), отсутствует возможность прерывания задач, недоступен MMU (ядро и процессы работают в одном адресном пространстве), невозможно изменение уже загруженного кода, наблюдается зависание консоли примерно через 5 минут из-за проблем с таймером. Отмечается, что имеющиеся ограничения преодолимы, но для некоторых из них требуется реализация в браузерах дополнительных расширений к WebAssembly. Подобные расширения предложено реализовать для MMU и приостановки потоков.

Невозможность приостановки выполнения потоков в WebAssembly не сочетается с работой планировщика задач в ядре, но многозадачность удалось реализовать обходным путём, через привязку каждого потока/задачи к своему виртуальному CPU, обрабатываемому в отдельном Web Worker. Таким способом удалось добиться параллельного выполнения процессов за счёт браузерного движка и ядра хостовой ОС без использования вытесняющей многозадачности и переключения задач в запускаемом в браузере ядре. Прерывания и сигналы при такой схеме полноценно не работают, а для доставки прерываний таймера и IPI (Inter-Processor Interrupt) задействован отдельный виртуальный CPU.

Область применения проекта выходит за рамки простого запуска Linux-окружений в браузерах. Например, порт может применяться для создания многоплатформенных WebAssembly программ, использующих специфичные для Linux системные вызовы. Реализация подобных системных вызовов может быть отдельно преобразована в WebAssembly и прикреплена к приложению, что позволит использовать его без привязки к системному ядру. Порт также будет полезен для организации изолированного выполнения приложений при помощи WASI (WebAssembly System Interface).


Представлен порт ядра Linux для WebAssembly, запускаемый в браузере
https://www.opennet.ru/opennews/art.shtml?num=64163

Оригинал
https://lore.kernel.org/lkml/618f3602-03aa-46a8-b2d4-3c9798c4cd2b@icemanor.se/

Сайт с демо - https://joelseverin.github.io/linux-wasm/
🔥30💊15🤪94🌚3👎2