Бессмысленный и беспощадный
Я обещал – я собрался с мыслями. Ну почти. Или не собрался, но очень очень стараюсь это сделать.
Итак, последний раз я разглаголствовал по поводу Rust и Python. Честно говоря за давностью событий я уже не очень помню в чём же всё-таки было пригорание, но попробую вспомнить.
Итак – Rust. Всё ещё никому толком не нужный язык, который даже в ядре линукса задепрекейтили, но который усиленно продолжают пропихивать в массы. В общем и целом в чатике я уже писал, что основная проблема была в том, что для сборки компилятора и рантайма этого самого Rust требуется уже больше 16 гигабайт места, что, как по мне, какой-то сюр. Меня тут поправили недавно, что Rust использует тот самый пресловутый llvm в процессе своей сборки и сравнение с последним по занимаемому пространству было как минимум неверно. Штош – как есть. Но всё же я хочу заметить, что у меня ВСЯ операционка на диске занимает 44 гигабайта (в том числе с docker мусором, с базами в postgres и вообще), а также хочу заметить, что при пересборке мира в gentoo (полная пересборка всех пакетов) я ни разу не сталкивался с тем, чтобы кому-то не хватило 16 гигабайт. Делаем выводы, работаем дальше.
Теперь про петухон. Есть для администраторов набор утилит и шаблонизаторов, который называется ansible. Написан он полностью на петухоне с использованием петухонных же библиотек. Но есть один нюанс – некоторые **петухонные** библиотеки написаны **не** на петухоне. В общем и целом идея здравая – для того, чтобы что-то работало быстро – лучше всего написать это на компилируемом языке. Так вот, люди взяли и написали, но сделали это без уважения. Ansible для работы с серверами использует SSH подключение (удалённое подключение по зашифрованному каналу для исполнения команд на сервере) и есть у этого подключения несколько способов авторизации, как то по паролю, по секретному ключу, другое. В современном мире люди наизобретали большое количество способов шифрования данных и каждый день появляются новые, какие-то уходят в стандарты, какие-то тихонько умирают. Соответственно для шифрования секретных ключей, которые можно использовать при подключении к удалённому серверу есть также несколько стандартов шифрования, новые и старые. Для каждого стандарта есть свой собственный модуль (ну или общий моуль, который по мере добавления/удаления изменяется) Одним из стандартов является bcrypt. Там снизу много математики, но сейчас не будем углублять в детали. И вот модуль петухона для этого метода шифрования написан на Rust. Единственный модуль из базовой поставки ansible, который написан на Rust. А теперь возвращаемся к началу и собираем паровозик рассуждений:
- Нам нужен ansible, чтобы управлять серверами, мы его устанавливаем
- Он за собой тянет и компилирует модули
- В модулях этот сраный bcrypt
- Для bcrypt он тянет целый rust
Короче у меня пригорело и я пошёл писать cbcrypt, на чистеньком С. И даже написал, но естественно его никто в апстрим принимать не собирается. В общем и целом петухонные модули на отличных от петухона языках программирования это тоже интересный люк с гадостями, кучей биндов и кривых дефиниций, но об этом как-нибудь в другой раз.
Ещё последние несколько дней/недель погружаюсь глубоко во flask, это такой набор модулей и функций для быстрого запуска web-приложений и относительно простой их разработки. В целом всё было бы хорошо, если бы было не так плохо. ORM (flask-alchemy, модуль для работы с базой данных), никаких оптимизаций нет, на каждое движение запрос к базе. В общем очень большой модуль с одной стороны с попытками охватить все возможные варианты использования. Пришлось писать своё, с оптимизациями. Даже что-то прикольное получилось, осталось дописать. Следующим идёт локализация@интернационализация. Здесь предлагается модуль babel. Очень прикольный и забавный, медленный и своенравный. Особенно мне понравилось то, что для создания переводов требуется запустить 3 команды, потом поправить 18 файлов и запустить ещё две команды, чтобы он из промежуточных файлов сделал готовы в своём собственном ведомом ему формате. Видимо и это придётся переписывать. Штош, за удобство платим скоростью, но чот сильно дорого, поскольку сам петухон уже тормоз бесконечный.