LINUX.ORG.RU
ФорумTalks

Переехал на кучу утилит переписаных на Rust

 , , ,


38

7

Тег «угадай автора по заголовку».

Q: Зачем?

A: Ради эксперимента, повысится комфорт пользования терминалом или нет.

Q: Причем тут Rust?

A: Ни при чем, но из-за нативности и отсутствия GC на нем толпа людей побежала переписывать что ни попадя. С таким же успехом можно было бы и npm install, но тормозило бы. Ближе opam install или go get

Теперь мой терминал по истине свистит и пердит. Даю список если кому надо.

  • alacritty - GPU ускоренный терминал.
  • alias cat=bat- cat с хорошей подсветкой синтаксиса и нумерацией строк и пейджером.
  • broot - навигатор по каталогам, который одновременно показывает дерево, но адекватно себя ведет с громадными каталогами, показывая их по чуть-чуть.
  • dust - утилита для исследования места занимаемого каталогами, сортирует деревья файлов начиная с самых больших каталогов.
  • alias ls="exa -l --group-directories-first" ls с хорошими дефолтами, tree встроено.
  • rip Утилита для удаления файлов с разными удобными фичами и восстановлением
  • hors "How do I parse float in javascript?" - находит короткий ответ в интернетах и отвечает. Чуть лучше работает чем оригинал - howdoi.
  • mdcat - cat для Markdown, для отображения удобочитаемой формы документа. Ссылки делает сносками.
  • alias grep=rg - очень быстрый и удобный grep
  • starship - shell command prompt, показывает кучу полезной информации в зависимости от контекста, например git branch если в репозитории, версии софта и ЯП если в каталогах с сорцами, hostname если зайти по ssh.
  • tokei - сборщик статистики по ЯП и строкам кода в деревьях исходников.
  • hyperfine - бенчмарк утилита, time на стероидах.
  • tldr- сокращенная версия man, показывает как чем пользоваться в примерах, а не выдавая полную справку. Страницы поддерживаются сообществом для громадного количества утилит. Изначальный проект - https://tldr.sh/
  • topgrade - универсальная утилита обновления. При запуске пытается обновить все что видит - системные пакеты, vim пакеты и так далее.
  • runiq - быстрый sort | uniq с разными алгоритмами внутри.
  • fd - быстрый и удобный find, удобно чтобы не вспоминать заковыристые ключи
  • fselect - поисковик файлов с SQL-like языком запросов
  • sd - как sed, только интуитивный
  • i3status-rs - Сразу i3status+i3blocks. Плюс батарейки к i3blocks, которые как я понял автор решил убрать.
  • onefetch - Вроде neofetch, но для сорцов. Просто запустите эту штуку с корня любого git репа, клонированого локально
  • wasmtime - JIT runtime для WASI стандарта. Пускалка WebAssembly приложений.
  • scriptisto - «shebang-интерпретатор» для компилируемых языков, прозрачно собирает и кеширует нативные сборки кода

Что не зашло совсем

Все вышеперечисленое ставится через cargo install <package_name> (кроме alacritty), название смотрите на страницах. Сам cargo и Rust ставятся через

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

P.S. Призываю остальных взять ЯП вашей секты и поставить такой эксперимент и отписаться. Да-да, расскажите как вы пользовались ls на Java. Пользователей emacs прошу не беспокоить

★★★☆☆

Ответ на: комментарий от Bioreactor

На собеседовании можно употреблять гендерно-нейтральное «JVM»

А в собесе вполне возможно увидедь джаву

spoonbob ()
Ответ на: комментарий от Bioreactor

https://insights.stackoverflow.com/survey/2019#technology-_-most-popular-development-environments

Visual Studio Code 50.7%
Visual Studio 31.5%
Notepad++ 30.5%
IntelliJ 25.4%
Vim 25.4%
Sublime Text 23.4%
Android Studio 16.9%
Eclipse 14.4%

Врети! У нас в Java конторе все на Java IDE!!!!

Врети! На StackOverflow одни JavaScript хипсторы, а они не люди!!!!

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

Врети! На StackOverflow одни JavaScript хипсторы, а они не люди!!!!

Ну так-то да :)

Legioner ★★★★★ ()

Лоес. Два пингвина этому регистранту.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Legioner

Надо написать сервер, который будет принимать подключения,

Он уже написан.

Если Вас заинтересует, то ссылку на уже готовый продукт я дал.

На самом деле в «Фейсбуке» Nailgun давно используется и авторы спонсируются.

Наш стендап-комик со своими растами и го об этом не знает.

И я использую NG.

Bioreactor ★★★★★ ()
Ответ на: комментарий от Legioner

как память у джавы отбирать

Она сама отдаёт, если явный излишек образовался. Но весьма неохотно, да.

Deleted ()
Ответ на: комментарий от vertexua

Врети

Ну так-то тут у жабки 56.7% суммарно.

Deleted ()
Ответ на: комментарий от vertexua

Notepad++

Вы решили окончательно переквалифицироваться в клоуны?

Bioreactor ★★★★★ ()
Ответ на: комментарий от vertexua

Починили - значит, больше не отдаёт?)

Deleted ()
Ответ на: комментарий от RazrFalcon

В докере удобно всякое наркоманское держать чтобы не засирать систему. Я там китайские тулчейны держал, сборку прошивок для одноплатников делал, что-то там ещё. Основной каеф - на CI можно спихнуть в полтора движения.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Bioreactor

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

Deleted ()
Ответ на: комментарий от Bioreactor

Данные не мои, а Stackoverflow. А значит это лучше чем мои и твои данные

vertexua ★★★☆☆ ()
Ответ на: комментарий от Bioreactor

Там еще xcode должна быть в первых строках

На Java из адекватных IDE сейчас только продукты от JetBrains. Исторически сложилось, что они на Java. В начале 2000-х выбор был не велик (лучше бы делфи выбрали)

spoonbob ()

А папа не ругается, когда ты всё это к нему на сервер пытаешься запихнуть?

pon4ik ★★★★★ ()

Все вышеперечисленое ставится через cargo install <cmd>. Сам cargo и Rust ставятся через

alacritty оттуда это просто заглушка с хеловорлд.

iamweasel ()
Ответ на: комментарий от spoonbob

Ставлю что они переползут на Kotlin, а потом на Kotlin Native

vertexua ★★★☆☆ ()

Тег «угадай автора по заголовку».

Не угадал. Я, видать, не в теме.

Спасибо за список ПО, посмотрю что-нибудь для себя.

Все вышеперечисленое ставится через cargo install <cmd>. Сам cargo и Rust ставятся через

Тред не читал, Раст не тыкал. У меня вопрос - бинарники к рантайму компонуются статически как в Go и D или динамически как в крестах?

devzero ()
Ответ на: комментарий от devzero

Rust библиотеки статически, но по дефолту libc и если надо openssl - динамически. Это типичные либы, которые не переписали на Rust, все что выше - Rust

Короче все что переиспользуется от С/С++ - динамически, тот же Gtk например. Можно использовать musl и пособирать ещё другие статические либы, тогда прожует и будет как Go.

В отличие от D, своя стандартная библиотека статическая полностью

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)

Еще заметил, что каждая утилита подтягивает 50-150 разных зависимостей для сборки. Джаваскрипт какой-то.

iamweasel ()
Ответ на: комментарий от iamweasel

В бинаре много чего вытирается. Не вытираются гигантские таблицы Unicode, а они тянутся сразу за базовой либой регексов, отсюда сразу мегабайт. А вот та сотня либ почти не влияет на размер

vertexua ★★★☆☆ ()
Ответ на: комментарий от devzero

Установка

$ rustup target add x86_64-unknown-linux-musl

Потом сборка своего приложения

$ cargo build --target x86_64-unknown-linux-musl --release

musl-gcc должен быть в системе

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от iamweasel

Есть такое свойство. С другой стороны, что в этом плохого? Больше модулей – меньше перекомпилировать с нуля при инкрементальных билдах.

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

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

Siborgium ()
Ответ на: комментарий от devzero

musl весит меньше, но медленнее раз в 20, как я помню. А glibc все равно почти везде есть, не вижу смысла особо париться, если честно.

Siborgium ()
Ответ на: комментарий от Siborgium

RustTLS/ring вон уже будут чаще и чаще поддерживать. Аудит бы им формальный ещё пройти

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от Bioreactor

Пшел вон, я с тобой поигрался, хватит. Ты реально двинулся на своей жабе. Не мешай нам, нормальным джавистам, общаться

vertexua ★★★☆☆ ()
Ответ на: комментарий от Siborgium

Каждый раз пишет Compiling для всех зависимостей. Надеюсь внутри подтягивает готовое.

iamweasel ()
Ответ на: комментарий от iamweasel

Там просто для разного софта разные версии (редко разные опциональные фичи и ключи сборки). Одно и то же просто так перекомпилировать не будет

vertexua ★★★☆☆ ()
Ответ на: комментарий от Siborgium

Были там какие-то бенчмарки, но реально не все так плохо. Я думаю это какая-то синтетика.

На практике все хорошо работает с musl. Один пример - Alpine Linux самый популярный дистр для докер базового образа, часто включая софт, зависящий от libc. В Alpine все собрано с musl

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от spoonbob

На Java из адекватных IDE сейчас только продукты от JetBrains.

Ну, видно, я слишком старый, раз Eclipse использую.

Не думаю, что в IBM и/или Oracle дураки работают, раз они Eclipse юзают.

И Eclipse абсолютно не сдает своё лидерство -

https://www.datanyze.com/market-share/ide/intellij-idea-vs-eclipse-ide

Bioreactor ★★★★★ ()
Ответ на: комментарий от iamweasel

Ну, например, тот же самый broot, несмотря 68 крейтов-зависимостей, не зависит вообще ни от чего, кроме gcc-libs. И это можно было бы устранить с помощью musl.

Siborgium ()
Ответ на: комментарий от iamweasel

В общем и целом, часть пакетов из топика есть в Arch/AUR, там можешь и зависимости посмотреть итоговые.

Siborgium ()
Ответ на: комментарий от vertexua

Вы не «нормальный джавист».

Вы нормальный массовик-затейник - https://ru.wikipedia.org/wiki/Аниматор_(актёр).

С незнанием, что есть nailgun - это была самая лучшая Ваша шутка юмора.

Отмыться и оправдаться более Вам не получится.

Bioreactor ★★★★★ ()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от Bioreactor

Отмыться и оправдаться более Вам не получится.

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

vertexua ★★★☆☆ ()
Ответ на: комментарий от vertexua

Страдайте.

Ваше ЧСВ задето.

Каким-то «офисным планктоном».

Bioreactor ★★★★★ ()
Ответ на: комментарий от iamweasel

А что в них написано? Если что, то всегда можно issue открыть

vertexua ★★★☆☆ ()
Ответ на: комментарий от iamweasel

Так тут же dead code elimination. Поэтому на бинарь оно мало сказывается.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от vertexua

Про саму реализацию не в курсе, но lto может и на 30% ужать бинарь. Правда могут быть ошибки компиляции. Поэтому глобально его пока не включаю.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от vertexua

Повторяемая сборка

Для повторяемой сборки есть guix. Уж лучше guix, чем все эти chroot'ы на стероидах и виртуалки для бедных.

Camel ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)