LINUX.ORG.RU

Автор Wayland композитора Way Cooler переписывает своё детище с Rust на C

 , ,


2

9

Как-то давно смотрел список Wayland композиторов, в нём был проект Way-Cooler, примечательный тем, что декларировался как духовный наследник AwesomeWM и проект использовал Rust. Но недавно я набрёл на пост автора с грустными новостями. В новостях про Rust часто просят привести примеры ПО, разрабатываемого на этом языке, т.е. многим интересен опыт реального применения этого языка. Именно таким опытом и делится автор по ссылке выше.

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

Автор на протяжении примерно года писал биндинг к библиотеке wlroots, за это время он внёс более 1000 изменений и в итоге репозиторий wlroots-rs содержал более 11 тысяч строк Rust кода, при чём это не просто копипаста одного куска для каждой сущности библиотеки, автор написал несколько макросов, один из которых сам же назвал уродливым. Автор пишет, что все 11 тысяч строк это просто обёртки, которые занимаются управлением памяти и при этом они не покрывают и половины API wlroots. Кроме того, автор заметил, что разобраться и пользоваться плодом его трудов довольно сложно и некоторые отказываются от использования wlroots-rs в пользу wlroots.

Основными проблемами при написании обёртки для wlroots автор называет описание модели владения объектами wlroots на языке Rust. По ссылке автор показывает несколько примеров кода, которые демонстрируют проблему. Кроме того, автор не видит возможности написать на Safe Rust расширение протокола Wayland.

В итоге автор принял непростое решение переписать Way-Cooler на C. Автор упоминает некоторые другие проекты, столкнувшиеся с аналогичной проблемой написания биндингов, которые приняли противоположное решение – переписать библиотеки на Rust.

Предлагаю кроме обсуждения этой новости, размещать в этой теме ссылки на другие истории использования Rust.

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

Теперь будущее языка Rust зависит от допущения от достаточности промежутков между капельками мочи. o.O

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

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

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

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

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

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

Ну, да! Лучше меньше, да лучше. Излишества в языке тоже вредны. Достаточно вспомнить ПЛ/1 и его более поздние реинкарнации ;)

В принципе, по меркам сегодняшнего дня в языке Раст есть все или почти все, что нужно. Единственное, что если завтра какой-нибудь сумрачный гений придумает что-то супер-пупер новое, то тогда придется переделывать, но это сильно вряд ли. В программировании по-сути мало что нового было придумано за последние лет 30-40, если не считать единичных вещей, таких как умение эффективно реализовывать сборку мусора, хотя сама идея много старше. А трейты (или по-другому «классы типов») - это тоже на границе 80-90х прошлого столетия, если не раньше. Сейчас скорее время, когда эффективно реализуется и компонуется то, что было придумано ранее. А принципиально нового почти и не создается в программировании, как мне кажется.

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

В программировании по-сути мало что нового было придумано за последние лет 30-40

Этот же async/await, на мой взгляд одна из таких фич. Которая 10 лет назад никому была не нужна, а теперь мейнстрим. Не факт, что еще через 10 лет от нее все не откажутся, но в раст она так и останется.

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

Если кому-то нужно начать проект, который планируется вести лет так 10, а то и больше, то брать Rust - самоубийство.

Что такое, берешь Rust - и сразу умираешь? Или проект сразу умирает? Rust для длительного проекта означает что какие-то риски выше (но какие-то ниже).

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

Налабать лям строк за лет 5, а потом язык свернётся и что делать?

Это и есть риск. Только он очень далек от самоубийства: языку скоро 10 лет - только разворачивается всё это время.

Поддерживать самому?

А ты планируешь написать 10-летний проект в одиночку? А так да - если язык свернется и сообщество внезапно дезинтегрируется, то поддерживать самому. Тебе ведь не разрабатывать его надо, а поддерживать. Всякие там FreePascal живут без корпов.

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

Если тебе в твоей ситуации проще взять Java - не вопрос. Но не надо всей этой экзальтации с «самоубийством».

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

Просто человек больше верит в силу денег, чем в силу идей. И его можно понять, время сейчас такое. А так, даже учитывая, что rust еще очень молод и неказист, он всё же привносит в мир программирования определенные новшества, которых не было до него и которые можно считать безусловно конкурентными на фоне языков его целевой ниши. Просто кто-то один перестаньте сраться, не уподобляйтесь царю в этом нет никакого конструктива.

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

Я вообще на плюсах пишу, ибо если мне нужно будет пофиксить что-то в моей проге через 5-10 лет, есть большая вероятность, что проблем не будет, ибо у плюсов жёсткая обратная совместимость.

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

Может с «самоубийством» я и погорячился, но будущее Rust пока очень туманно. Если будут вливать бабос ещё лет 5-10 - всё станет совсем кошерно.

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

Просто человек больше верит в силу денег, чем в силу идей.

Тут лисперы на каждом шагу рассказывают о прелестях лиспа. И где он? Все пишут на жабе, жутком C++, убогом C и динамическом мусоре. Людям нужен инструмент, а не идеи.

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

Да никуда он не делся, существует. Даже тут есть представители которые пишут не нем код, за который получают деньги. Просто объективно программистов на нем получающим за его использование деньги меньше, так как таких вакансий меньше, так как он действительно используется не в таких «хлебных» местах, как перечисленные вами языки. Ну умереть то он не умирает, не так ли? Деньги это всегда хорошо, кто же спорить будет - никто. Посмотрим что будет с rust через десяток лет, если сами доживем :)

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

Вот так вот, если смотреть на ретроспективу развития программирования в целом, все перечисленные вами языки, которые можно считать безусловно состоявшимися и перспективными, по сути и «взлетели» в определенный момент своего уже исторического развития как реализации каких-то новых идей и подходов, потому как предлагали на те моменты безусловные новшества и качественный скачок как инструмент. Так было с С, так было с С++, так было с Java. У Rust есть все задатки для того чтобы так было и с Rust, он все-таки привносит что-то новое, в отличии например от того же Java vs C# (рассматриваем только язык, а не платформы в целом), если первый был по сути «революционером» (первая реализация которая смогла доказать состоятельность идеи менеджмент кода), то второй инертная копия первого в которую просто закинули достаточно денег, чтобы она смогла жить и получила достаточное количество поклонников (хотя конечно это не говорит о том, что люди делающие C# «воры» (не стоит уподобляться) не реализовавшие ни строчки оригинального кода и не привнесших ничего нового в этот мир).

abcq ★★
()
7 декабря 2019 г.
Ответ на: комментарий от max_lapshin

то, конечно, ложь, раст — это следующее поколение, искупление грехов создания С++

про грехи c++ не знаю, но rust изначально создавался как go, с рантаймом, зелеными потоками и еще чем-то. это потом они до статического анализа и zero-cost доперли.
парадигма фладения это тоже скорее идиома. а так, конечно, rust нафарширован. нужен какой-то язык, который будет с фичами rust, но не rust.

dinama
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.