LINUX.ORG.RU

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

системда тоже по такому же принципу написана, всё нормально

Harald ★★★★★
()

Спакуха, ща пайпвайр дефолтом везде впилятвместо пшпшаудио, заменят НМ на конмен + вайсиди, и сустемд вылетит в трубу...

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

Кстати, Поттеринг поддерживает ЛГБТ?

КоАП РФ ст. 6.21 – запрещается «пропаганда нетрадиционных сексуальных отношений среди несовершеннолетних».

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

Это всё элементарно решается через RAII. И никакой обработки ошибок не надо

Если бы RAII решала все баги на свете, то кодеры на C++ уже были бы самыми счастливыми людьми на свете, поскольку у них-то RAII уже давно есть. Но по факту алгоритм высвобождения через RAII обычно не тестируется, а потому частенько неожиданно переведит программу из одного некорректного состояния в другое некорректное состояние, например, высободив то, что не должен был бы высвобождать, из-за чего отвалится соседний код, который был вроде как не при делах, или, что более актуально, грохнет какой-то ресурс, от которого зависело высвобождение другого ресурса.

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

А как это делается на той же Сишеньке?

Только на MSVC, у которого есть расширения «__try» и «__except». Но нужно понимать, что, в отличие от C++, компилятор не дает никаких гарантий по поводу правильности возобновления работы после исключения, которое потенциально могло вывалиться после людей команды или даже внутри команды, из-за чего, например, ресурс выделился, но еще не попал ни в какую переменную, или наоборот, попал в переменную, но так и не выделился.

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

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

Я обычно тестирую хотя бы раз весь написанный код. Написать throw в середине кода и посмотреть что будет не сложно. Писать код, который ни разу не исполнялся – ошибочная практика.

Если бы RAII решала все баги на свете, то кодеры на C++ уже были бы самыми счастливыми людьми на свете

В C++ в отличии от Оберона есть UB и он не умеет кидать и обрабатывать исключения от разыменовывания NULL указателей и прочего. В Rust нет UB и казалось бы можно реализовать неубиваемость Оберона, но не осилили, он получился ещё более хрупким чем C++.

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

Ты не юли, у вас там >вечная сишечка, или коварно врывающийся в её лебенсраум, прямо в её проекты, ржавый? Теснят, однако. Не вечна, однако

Абсурд индустрии в том, что большую часть браузера не нужно писать на C++/Rust — это неудобно и неэффективно. Некое ядро, в принципе, можно было бы написать даже на Си (не то, чтобы я поощрял такой подход, но это просто практически выполнимо). Остальная же высокоуровневая логика должна писаться на чем-то более защищенном и удобном по скорости разработки и, самое главное, по простоте модификации как для выпуска новых мейнстримных версий, так и для кастомных поделок.

Rust и C++ — это слишком низкий уровень, этим можно пользоваться, но это трудоемко с сомнительными преимуществами в скорости выполнения кода, который и так выполняется 1-2% всего времени. Но проблема в том, что индустрия не любит новое, а среди старого мейнстримового у нас что? Rust изначально думался, как язык с GC, который ближе к ML, с неизменяемыми/персистентными структурами данных, которые обменивают скорость выполнения на надежность выполнения и скорость разработки. Но в итоге Rust этого не получил, получил скорость выполення, и очень медленную разработку.

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

C++ — это слишком низкий уровень

Если использовать контейнеры и владеющие указатели, то уровень будет довольно высокий. Контейнеры в том числе могут обрабатывать ошибки (выход за границы и т.п.).

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

let index = test.iter().position(|r| r == «two»)?

Вопрос — прикольный оператор, но проблема в том, что он возвращает значение из окружающей функции, таким образом накладывая ограничение на эту функцию. В итоге это все подходит очень близко к обработке исключений в C++, когда по ошибке мы выходим в ближайший блок перехвата ошибки. Только зачем тогда было «изобретать» исходное непонятно что с явным возвратом и ручной обработкой ошибки?

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

Такие прогнозы были и на стадии «вот появится хотя бы один real-life проект на Rust, тогда и поговорим». А сейчас мы находимся здесь

А что, появился хотя бы один real-life проект на Rust? Да, есть Servo, который что-то не особо выбился в real-life, на котором и происходила обкатка раста. Пока что раст не вылазит из состояния «написать небольшой кусок кода для большой системы».

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

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

У меня тот же вопрос к ребятам из дискорда. Они не успели освоить Go, а уже побежали мигрировать на раст, да еще и из пальца высасывают аргументы под это. Больше похоже на то, что крупные игроки индустрии проводят маркетинговую работу, а это значит, что скоро будет относительно много предложения рабочей силы на расте, а значит и предложения.

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

Я обычно тестирую хотя бы раз весь написанный код. Написать throw в середине кода и посмотреть что будет не сложно. Писать код, который ни разу не исполнялся – ошибочная практика

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

В C++ в отличии от Оберона есть UB и он не умеет кидать и обрабатывать исключения от разыменовывания NULL указателей и прочего

Delphi умеет, у меня бойцы все исключения перехватывали и игнорировали... Так и работало, пока прога не падала замертво с повреждением пользовательских данных. Проблема ведь заключается НЕ в самом перехвате ошибки, а в том, что ошибка возникла из-за нарушения целостности состояния относительно исполняемого кода — дальше хоть перехватывай, хоть не перехватывай, а разницы нет — программа «посыпалась», потому что в ней возникло состояние, которое имеющийся код не способен переварить. Можно только перезапустить программу, но это можно с любым ЯП сделать. Особенно тяжело будет что-то сделать если проблемное состояние — это чрезмерное потребление ресурсов из-за кодерской ошибки.

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

Поддерживаю, может оно сдохнет наконец, а я как раз на openrc отсижусь

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

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

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

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

Если использовать контейнеры и владеющие указатели, то уровень будет довольно высокий. Контейнеры в том числе могут обрабатывать ошибки (выход за границы и т.п.)

Java вообще была создана как раз из-за того, что владеющие указатели чот не работают. Так-то я могу и на сишке сделать «владеющие указатели» — вон, целую гору языков наклепали: Perl, Python, PHP, Ruby. Владеющие указатели да, а толку? По мере роста сложности и появления параллельных задач, возникает асинхронность, а там уже программа неизбежно превращается в классический цикл опроса «что сделано и что еще нужно сделать?», в котором исполняемый код становится данными, то есть, программа становится таким себе интерпретатором (почему я и вспомнил PPPR). Такую асинхронную модель приобретает и lock-free код, и простые серверы клиент-серверы, и сложная логика. И там уже может понадобится GC, абстракции для нестандартной работы с памятью — всё это скрыто под тем самым языком PPPR с реализацией на Си. И судя по тому, насколько PPPR популярны, многие не довольны «довольно высоким уровнем» C++.

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

Тогда у враппера будет очень простая задача в бесконечном цикле - запустить сервис-менеджер, ждать сигнала, проверить его живость; если он сдох, то подобрать всех зомбей и перезапустить упавший менеджер, иначе доставить в него информацию о полученном сигнале

Вот! S6 почти это и делает.

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

Враньё

все ок. эти требования не ломают установку софта. лишь бы не было слишком высоких требований и необходимости тащить специальную библиотеку.

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

да, я уже после почитал тред и твою идею понял. то, что у тебя еще руки не опустились столько вменяемого текста на лор писать, я тихонько собираюсь использовать для ликбеза:)

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

Если тебе не нравится systemd, то каким боком тебе нравится SMF в Solaris? По общей концепции это прямой предок Systemd, только с неудобными XML-конфигами вместо TOML/INI.

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

у systemd нет одного предка, в т.ч. SMF не является прямым предком. имхо, поттеринг больше на мак смотрел.

но SMF мне нравится абсолютно. если коротко, то SMF не пытается сидеть на двух стульях (десктоп и сервер). функционал ограничивается init-функциями. а systemd в себе содержит функции кучи сервисов, имеет компоненты по настройке сети, свой крон, свою логику взаимодействия компонентов. SMF является пускалкой и мониторилкой сервисов на классическом сервере времен XML. никакого bluetooth hotplug etc. SMF по сравнению с systemd минималистичен. даже в формате команд:

SMF# svcs -xv 
vs
systemd#  systemctl list-units --state=failed 

и я особенно подчеркиваю, что никто в здравом уме не будет писать init так, чтобы он подменял собой сервис системного логирования!%(((

поэтому, если бы SMF с любыми конфигами, появился в Linux - я бы первый его поддержал. говорят, что он когда-нибудь без XML появится во FreeBSD... но до этого надо еще дожить.

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

TOML/INI

недавно на лоре было видео про ретро писишник. автору для подключения потребовалось перенастроить параметры agetty на новом systemd/Linux. так вот не только я обратил внимание на всю нелепость этой процедуры на systemd/Linux. автору пришлось проматывать портянку сервис-конфига на два экрана, чтобы фактически добраться до bash-script части и поменять пару символов.

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

Кстати, Поттеринг поддерживает ЛГБТ?

Кажется, нет. Он на твитере не обозначил свои любимые пронауны. И ещё его видели в майке «Open Source Tea Party».

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

Над этим там тоже работают: Microsoft выпустила официальную Rust библиотеку для Windows API

Там его по крайней мере собирать не понадобится.

emerge dev-lang/rust-bin

В других дистрибутивах тем более не надо.

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

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

Лично я подожду, пока скарнет запилит свой инит, и перееду с арча на дистр, где он появится. Alpine, void, типа того.

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

Там тоже это есть по самые гланды - от LLVM невозможно избавиться и заменить его на GCC. А где LLVM, там и Rust, как известно. Одно без другого не ходит.

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

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

Не очевидно.
Впрочем я сижу на openrc и эта тема меня слабо косается.

Лично я подожду, пока скарнет запилит свой инит, и перееду с арча на дистр, где он появится. Alpine, void, типа того.

Так в арче можно ж что-то типа гентушных оверлеев запилить?
Ну и ставить тот инит какой хочется. Или нет?

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

А где LLVM, там и Rust, как известно. Одно без другого не ходит.

LLVM и clang прекрасно уживаются без Rust. На Haiku у меня Сlang есть, а Rust нет, не вижу пока в нём необходимости.

X512 ★★★★★
()

Наброшу чуть: написавший патч, кажется, каким-то образом причастен к microsoft и гуглу (их организациям на github).

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

Читай «имеет более адекватные интерфейсы взамен POSIX». Так что почему бы и нет.

Тем не менее, регулятор звука в Xfce4 на FreeBSD переписали с использования системного mixer на пришлого pulseaudio. А что мешало оставить как было? Вопрос.

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

Самое забавное что требование наличия бинарника GCC для компиляции их не смущает.

Они принимают Этодругин(c)(r)(tm)

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

На Haiku у меня Сlang есть, а Rust нет, не вижу пока в нём необходимости.

Это пока не нужно тебе Firefox и Thunderbird пересобрать…

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

Так в арче можно ж что-то типа гентушных оверлеев запилить? Ну и ставить тот инит какой хочется. Или нет?

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

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

В хайке есть аналог librsvg?

Есть, например libsvgtiny. Посмотрел в репозитории, librsvg есть но не установлен.

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

Не знаю. Глянул репы, на первых попавшихся значились языки C, C++, Python

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

Ноют не пользователи Gentoo как таковые, а отдельные любители компиляции/отрицания использования бинарных сборок в Gentoo.

Я поставил rust-bin и забыл. Разве что время сборки librsvg возрасло очень-очень заметно. Но больше пока rust у меня ничего не требовало. Вот если более крупный проект появится в системе, требующий сборки с ним, то будет печальнее.

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

Панда на расте. Но насильное пропихивание раста в систему не радует. Гномоделы сделали ход конем. Переписали либу от которой все зависят.

utanho ★★★★★
()

Поттеринг осторожничает

Он осторожничает даже ещё сильнее. Предлагает сначала вести кодовую базу параллельно. И лишь когда всё будет реализовано полностью, переключиться.

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

Дальше лора можно ходить?

Не очень. Там сертификаты и алгоритмы шифрования протухшие, хотя наверное можно обновить.

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