The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск Rust 1.72. Решение поставлять макрос  serde_derive только в скомпилированном виде"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск Rust 1.72. Решение поставлять макрос  serde_derive только в скомпилированном виде"  +/
Сообщение от opennews (??), 24-Авг-23, 21:52 
Опубликован релиз языка программирования общего назначения Rust 1.72, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки)...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=59656

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 24-Авг-23, 21:52   +19 +/
Ни на чём этот язык не сфокусирован. Обычное шило на мыло.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #40

2. Сообщение от pin (??), 24-Авг-23, 21:53   +1 +/
Дорастаманились.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #3

3. Сообщение от Аноним (1), 24-Авг-23, 21:56   +6 +/
От былой безопастности не осталось и следа. Даже блобы норма, но при этом хозяева языка ничего не делают, да им и пофиг.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #14, #22, #133

4. Сообщение от Аноним (4), 24-Авг-23, 22:06   +2 +/
ну вот и дождались!
И здесь маски сорваны, маскарад окончен...
Красота.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #59

5. Сообщение от Anonymous116723333333333 (?), 24-Авг-23, 22:06   +5 +/
Хаха, поставлять скомпилированный бинарник в пакете это, конечно, сильно. Но зато я теперь понял, что значит по-настоящему значит memory safe.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #39, #95

6. Сообщение от Tron is Whistling (?), 24-Авг-23, 22:07   +1 +/
> поставлять crate-пакет serde_derive с макросом derive только в уже скомпилированном бинарном виде. Пакет serde_derive применяется для сериализации и десериализации данных и используется в качестве зависимости в 5495 других пакетах

Любители лить в рот прямо из трубы опять предсказуемо влетели.

Ответить | Правка | Наверх | Cообщить модератору

7. Сообщение от Аноним (7), 24-Авг-23, 22:09   +1 +/
Да в общем-то и раньше умные люди критиковали макросы.

> То есть на самом деле разбор форматной строки является не просто частью подключаемой по умолчанию библиотеки, что можно было бы предположить в случае println!, использованного в примере вывода Hello World, а и вовсе частью компилятора Rust. Сказки о невероятных удобствах и возможностях макросов, якобы позволяющих перенести в компайлтайм любое вычисление, рушатся уже на этапе написания первой программы на этом удивительном языке! Более того, с тем же успехом объяснить базовый пример можно было так, что непосредственно в языке есть конструкция вывода — и не городить огород с макросами.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #61

8. Сообщение от Аноним (8), 24-Авг-23, 22:10   –1 +/
А вот в сишечке такой ***** с блоками не было.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9, #11, #114

9. Сообщение от Аноним (8), 24-Авг-23, 22:12   +/
*блобами
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

11. Сообщение от Аноним2 (?), 24-Авг-23, 22:18   –1 +/
Было, но скорее по причине каменного века и отсутствия интернета. А в 2023 якобы топить за безопасность но спонсироваться гуглом и мелкософтом и предлагать бинари - ну это для любителей садомазахизма
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #55, #152

12. Сообщение от НяшМяш (ok), 24-Авг-23, 22:20   +10 +/
> Мэйнтейнер проекта Serde отказался идти на компромисс и заявил, что предкомпилированная реализация макроса будет единственным вариантом поставки пакета serde_derive.

Это не так. 4 дня назад он откатил изменения: https://github.com/serde-rs/serde/releases/tag/v1.0.184 Но бугурт поднял конечно знатный, ведь самое забавное то, что заметили это случайно меинтейнеры федоры и к тому времени скомпилированный бинарник уже распространялся недели три. Это к слову о том что опенсорс смотрят миллионы глаз, да.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #15, #44, #86, #101, #160

13. Сообщение от Аноним (7), 24-Авг-23, 22:21   +2 +/
Что нужно чтобы начать использовать безопасный язык? curl | sh, исчерпать свободное место на диске уязвимостью cargo и установить несколько бинарных блобов.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #87

14. Сообщение от pin (??), 24-Авг-23, 22:25   +/
> былой безопастности

Да какой там...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

15. Сообщение от Аноним (15), 24-Авг-23, 22:26   +6 +/
> 4 дня назад он откатил изменения

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #16

16. Сообщение от pin (??), 24-Авг-23, 22:27   –4 +/
Может наоборот, свой труд уважают?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

17. Сообщение от Ananimus (?), 24-Авг-23, 22:28   –1 +/
Да все уже, откатили прекомпилированный бинарник. К чувакам пришли в багтрекер и они в итоге сдались.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19

18. Сообщение от Аноним (18), 24-Авг-23, 22:40   +1 +/
Сабж это ад.
Нет даже так... адддище.
На роллинге еще норм, но релизный дистр - да оно или пересобирать сабж или отказываться от фокса и симанки.
Например, в дебиане 10 и 11 специально под это дело акромя древнего системного раста есть еще раст-мозилла.
Сейчас это 1.59 - а значит выше 102 фокса и полугодовалой 2.53.15 симанки не собрать...
А свежий раст-моззила просит кучу зависимостей конских и неделю на пересборку...

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #28, #88

19. Сообщение от Аноним (19), 24-Авг-23, 22:44   +7 +/
>К чувакам пришли в багтрекер и они в итоге сдались.

То, что они откатили, еще не значит, что сдались ;)
Ну и сдача, конечно не останавливает поехавшей у них крыши - это да.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #25

20. Сообщение от pashev.ru (?), 24-Авг-23, 22:49   –1 +/
Он уже сдал назад: https://github.com/serde-rs/serde/releases/tag/v1.0.184
Ответить | Правка | Наверх | Cообщить модератору

22. Сообщение от пох. (?), 24-Авг-23, 23:02   +2 +/
Как то ись не делают? Вот же ж - верификация и сертификация, чтоб блобы было удобнее и эффективнее поставлять всем тем пяти тыщам хайпожоров которым очередной лефтпад немедленно очень пригодился.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

25. Сообщение от Ananimus (?), 24-Авг-23, 23:13   +1 +/
> Ну и сдача, конечно не останавливает поехавшей у них крыши - это да.

Драма из ничего, в опенсурсе регулярно кто-то упоротые идеи выдает. Вспомни какую дичь Ульрих творил в glibc.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #31

27. Сообщение от Аноним (18), 24-Авг-23, 23:34   +4 +/
> В будущем выпуске Rust 1.76 планируется прекратить поддержку платформ Windows 7, 8 и 8.1

как самоотверженно стали закапывать...

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #57, #106

28. Сообщение от Анонин (?), 24-Авг-23, 23:42   –1 +/
> в дебиане 10 и 11 специально под это дело акромя древнего системного раста есть еще раст-мозилла.

ну а как можно иначе с таким древнем мамонтовым Г?

> неделю на пересборку

смени свой четвертый пень на что-то поадекватнее

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #33, #46

29. Сообщение от Аноним (29), 24-Авг-23, 23:48   –1 +/
> требует обязательной инициализации значений переменных перед использованием

Может и безопасно, но снижает производительность.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #30, #38, #54, #60, #168

30. Сообщение от Ananimus (?), 24-Авг-23, 23:50   –1 +/
>> требует обязательной инициализации значений переменных перед использованием
> Может и безопасно, но снижает производительность.

Говорят нам любители сишных strlen() и LIST_FOR_EACH(), ага :D

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

31. Сообщение от Витюшка (?), 24-Авг-23, 23:57   +/
Какую? Спрашиваю любопытства ради
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #36

33. Сообщение от Аноним (18), 25-Авг-23, 00:05   +/
> неделю на пересборку
> смени свой четвертый пень на что-то поадекватнее

теоретик?

там же надо прежде чем llvm пересобрать и еще с 10-ок пакетов...

так что на 4-пне оно бы год собиралось, наверное...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #34, #117

34. Сообщение от Анонин (?), 25-Авг-23, 00:07   +/
Конечно теоретик! Я от четвертого пня избавился еще лет 15 назад, когда корки вышли.
Хз сколько оно бы на нем собиралось, но на наверное тебе можно доверять)))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #180

36. Сообщение от Ananimus (?), 25-Авг-23, 00:20   +4 +/
> Какую? Спрашиваю любопытства ради

Например, Ульрих решил что ему не очень интересно возиться с ARMи embedded в целом и отказывался принимать патчи. В итоге поцоны из Дебиана до 2014 года тащили свой форк elibc, который потом влили в glibc.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #42, #72

37. Сообщение от Вы забыли заполнить поле Name (?), 25-Авг-23, 00:26   +1 +/
В npm такое часто. Это я к тому откуда ноги растут...
Ответить | Правка | Наверх | Cообщить модератору

38. Сообщение от burjui (ok), 25-Авг-23, 01:44   –1 +/
Производительность чего, чтения мусора из памяти?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #49, #66

39. Сообщение от burjui (ok), 25-Авг-23, 01:47   +/
Какая связь?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

40. Сообщение от Иваня (?), 25-Авг-23, 01:54   –5 +/
Потому я выбрал Golang для прототипирования и C++ для продакшена.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #43, #48

41. Сообщение от burjui (ok), 25-Авг-23, 01:58   –4 +/
Сколько бычков набежало в комменты на красную тряпочку в виде одного мейнтейнера с потёкшим чердаком... И, как назло, тот дырку заклеил. Эх, опять Rust не получилось закопать, что же такое.
Ответить | Правка | Наверх | Cообщить модератору

42. Сообщение от Аноним (42), 25-Авг-23, 02:15   –1 +/
Можно подробнее? Ссылка на архив рассылок подойдёт. А то уже часто бывало, что Ульриха гнобили за якобы бредовые поступки, а на поверку оказывалось, что парень всё правильно сделал. Да и дебианы уже светились с кривыми патчами, которые апстрим не хотел принимать (история с cdrtools в пример).

Но я не троллинга ради, мне правда интересно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #45

43. Сообщение от An2 (?), 25-Авг-23, 02:25   –2 +/
Значительно ли повысилась производительность и уменьшилось потребление памяти?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40

44. Сообщение от An2 (?), 25-Авг-23, 02:29   –2 +/
> Это не так.

Это было именно так. Ещё к тому же он просто заткнул рот возражающим, заблокировав возможность оставлять комментарии к тому issue. Типа всё уже решено (им) окончательно, и возмущения бесполезны.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #197

45. Сообщение от An2 (?), 25-Авг-23, 02:35   +1 +/
https://snapshot.debian.org/package/eglibc/

2.9 (2009) .. 2.19 (2014). Т.е. где-то 5 лет неудобств. А то "до 2014" прозвучало, как будто неопределённо долго.

Ещё, кстати, была история с переходом на libav (форк ffmpeg):
0.6.2 (2011) .. 11.3 (2015 + длительная поддержка в stable Debian 8).

https://snapshot.debian.org/package/libav/

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

46. Сообщение от _kp (ok), 25-Авг-23, 03:00   +/
>>смени свой четвертый пень на что-то поадекватнее

Пересборка, это не запустил, попил кофе..и готово.
Но и ручное вмешательство. То, что то ошибку выдало, то не та версия, то пропатчить надо, то тесты не прошли и 6ачинай по новой..
Ну пересборка делается же в основном для нового, а старое и в бинарном виде можно уже готовое скачать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #102

48. Сообщение от Аноним (48), 25-Авг-23, 03:31   +/
>Golang для прототипирования

А почему именно Го, а не python?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40 Ответы: #51, #52, #67

49. Сообщение от _ (??), 25-Авг-23, 04:13   +/
Ну если у тебя в памяти мусор то И ...
Но ты ведь помнишь как дебиановцы "лохов" из OpenBSD/OpenSSH поправили и проинициализировали :)
После этого пароль подбирался на простом кнопочном калькуляторе за 5 минут.
Откатили после всепланетного рофла :)
Так что же выходит - не весь мусор в памяти одинаково вреден? Представляю как растишек в этом месте "... разрывает на части!(С)" :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #74

51. Сообщение от Аноним (51), 25-Авг-23, 04:31   +19 +/
Потому что Python уже выбрал я, пришлось из оставшихся вариантов выбирать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48

52. Сообщение от penetrator (?), 25-Авг-23, 05:36   –6 +/
и то УГ и то УГ, наваять на коленке что-то сойдет, но называть это "прототипированием" я бы не стал
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48

54. Сообщение от Твайлайт Спаркл (ok), 25-Авг-23, 06:43   +1 +/
Можно и неинициализированной памятью пользоваться, но это уже придётся оборачивать unsafe.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #159

55. Сообщение от Аноним (55), 25-Авг-23, 06:43   –1 +/
Да обосрались они со скоростью трансляции вот и пробуют экономить теперь на спичках/
По мн е так тупиковый язык и идея
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

57. Сообщение от Аноним (57), 25-Авг-23, 07:25   +3 +/
Нет, не по указке. Нет, не синдикат. У вас паранойя. Покупайте последние процессоры и последние версии ОС, иначе бог не полюбит вас.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #76, #84

58. Сообщение от Анонимemail (58), 25-Авг-23, 07:57   +/
А почему все критекуют тут раст за безопасность причем тут безопасная работа с памятью и написанный код.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #112

59. Сообщение от Аноним (59), 25-Авг-23, 08:32   +/
Готовьте кредитки, скоро будете ПЛАТИТЬ!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #68, #183

60. Сообщение от eganru (?), 25-Авг-23, 08:35   +1 +/
В большинстве случаев нет.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #108

61. Сообщение от Аноньимъ (ok), 25-Авг-23, 08:49   +/
Это бред.
Макросы не только лишь для принтлн нужны.
Это абсолютно нормально начиная с 80х годов прошлого столетия иметь полноценное метапрограммирование.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #210

62. Сообщение от Аноньимъ (ok), 25-Авг-23, 08:53   +/
Что-то я не понял прикола. В чем соль бинарников вместо исходников?
Если у меня отличная от бинарников архитектура?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #71, #73, #78

63. Сообщение от Аноним (63), 25-Авг-23, 08:53   +/
>Агент влияния NSA, для этого ставший мейнтейнером проекта Serde отказался идти на компромисс

Ясно.

Ответить | Правка | Наверх | Cообщить модератору

64. Сообщение от Аноним (63), 25-Авг-23, 09:01   +/
>несогласным с новой политикой разработчикам предложено создать и поддерживать собственный форк пакета.

Абсолютно правильно. Но есть немного другой вариант. Так как crates.io принадлежит Rust Software Foundation, то она может предложить мейнтейнеру serde создать свой содственный ЯП, пакетный менеджер, луна-парк и лунный модуль. А имя отжать и повесить по нему свой форк.

>даже на бросающийся в глаза перевод serde_derive в бинарную форму обратили внимание только спустя 4 недели и 12 релизов. При таком отношении профессионально обфусцированная вредоносная вставка в исходных текстах вероятно может годами оставаться незамеченной.

Я вам больое скажу, даже абсолютно не обфусцированная и абсолютно явная.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #65

65. Сообщение от Аноним (63), 25-Авг-23, 09:08   +/
Проверил в реестре зарегистрированных торговых магок США, serde там нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64

66. Сообщение от Аноним (29), 25-Авг-23, 09:10   –1 +/
Допустим, есть большой массив. Есть поток данных. Массив постепенно заполняется, по мере поступления данных. Инициализация всего массива – лишняя и ненужная трата времени, если алгоритм программы его и так весь заполнит.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #103, #104, #138, #167

67. Сообщение от Аноним (67), 25-Авг-23, 09:23   +/
Потому что у Python мерзкий синтаксис.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48 Ответы: #70

68. Сообщение от 1 (??), 25-Авг-23, 09:39   +1 +/
Но почему сразу кредитки ?
Может они добавят телеметрию (исключительно для безопасности) и кредитки не понадобятся.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59 Ответы: #97

69. Сообщение от Анонимemail (69), 25-Авг-23, 09:40   –3 +/
Раст - лучший яп
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #75, #79, #92

70. Сообщение от Пряник (?), 25-Авг-23, 09:41   –2 +/
Попался криворукий.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #67 Ответы: #80

71. Сообщение от Аноним (71), 25-Авг-23, 09:43   +/
Кстати, да. Это ж под все архитектуры надо свои бинарники.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #107

72. Сообщение от Пряник (?), 25-Авг-23, 09:46   –1 +/
Слабо тянет на дичь.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #161

73. Сообщение от 1 (??), 25-Авг-23, 09:47   +/
Значит тебе не нужен serde_derive
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #109

74. Сообщение от burjui (ok), 25-Авг-23, 09:48   +/
> Ну если у тебя в памяти мусор

Чтение неинициализированной памяти - UB, будь то Rust или C, если за читаемым адресом действительно память, а не MMIO.

> Но ты ведь помнишь как дебиановцы "лохов" из OpenBSD/OpenSSH поправили и проинициализировали

Не помню, напомните.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #77, #91

75. Сообщение от Аноним (75), 25-Авг-23, 09:50   +/
Потому что он умеет безопасно работать с памятью)))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69 Ответы: #82, #83

76. Сообщение от Аноним (80), 25-Авг-23, 09:50   +/
Забавно что последние версии Mozilla Firefox 116.0.x, которые как бы прекратили поддержу Windows 7 и автоматически не установятся, на практике прекрасно работают в Windows 7 если их скачать и распаковать вручную
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

77. Сообщение от Аноним (80), 25-Авг-23, 09:53   +/
https://github.com/g0tmi1k/debian-ssh
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74 Ответы: #128

78. Сообщение от burjui (ok), 25-Авг-23, 09:53   –1 +/
Просто автор хотел сэкономить пользователям serde время на компиляцию процедурных макросов, которые, по сути, являются плагинами компилятора. Идея интересная, только:
- У пользователя должен быть выбор, использовать прекомпилированные макросы или собирать их каждый раз с нуля (без учёта кеширования)
- Уже давно существует sccache
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #125

79. Сообщение от Аноним (80), 25-Авг-23, 09:55   +1 +/
Лучший по причинению страданий программисту
Если не считать Malbolge
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69 Ответы: #85

80. Сообщение от Аноним (80), 25-Авг-23, 09:57   +1 +/
Ну криворукий он или не криворукий, но мне помнится было очень весело когда правил программу на Питоне, и в ней были отступы табами, а в другом коде который я скачивал и добавлял - пробелами...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #70 Ответы: #100, #111, #151, #242

81. Сообщение от Аноним (63), 25-Авг-23, 09:58   +1 +/
>решив отложить переход на поставку в бинарном виде до принятия в пакетный менеджер crate изменений для полноценной поддержки верификации предкомпилированных макросов. Разработчиками Serde подготовлен RFC с предложением реализовать в Crate верификацию предкомпилированных пакетов, проводимую на сервере репозитория crates.io через сверку бинарного файла с повторяемой сборкой из исходных текстов

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

За Rust взялись серьёзно в качестве элемента кибервойны. Статическое связывание всех библиотек в случае их компрометации приведёт статическому внедрению бэкдора в весь софт, от них зависящий. Вычистить его оттуда будет на практике невозможно - это надо будет пересобрать весь софт с чистыми библиотеками. Но Rust устроен так, что это невозможно - библиотеки требуют конкретных версий зависимостей и Cargo их удовлетворяет, а есщи их поменять - то компиляция ломается чаще, чем необходимо, ибо "разработчиков" (в кавычках) на Rust приучили, что ломать API можно без последствий, нужно лишь заплатить налог в виде держания последнего nightly-компилятора, установленного из `curl | sudo`, и гигантских бинарников и долгой компиляции. Тепень фарш нельзя провернуть назад - это придётся переделать пакетный менеджер и все либы, это будет язык, не совместимый с Rust, то есть будет уже не Rust, а другой ЯП с тем же именем. Поэтому его просто не будет.

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

Далее предположим на секундочку, что ОК, ну раз необходимо - значит перепишут. Но если весь софт забэкдорен, то что мешает в бэкдор засунуть функциональность вируса, встраивающую в компилирующиеся программы этот самый бэкдор-вирус? Если у нас весь софт инфицирован, где-то потому, что написан на Rust и зависит от вредоносных зависимостей, где-то потому, что на компьютере, где происходит сборку, был установлен забэкдоренный софт, который инфицировал софт во время сборки (т.н. Ken Thompson compiler hack), то как нам получить чистую систему, на которой можно собрать чистые версии софта? Как - понятно - взять старый комп с холодного хранения, там система будет чистая. Но новый софт полностью из исходников такая система не соберёт. И даже если соберёт - в старой системе будут уязвимости, которые можно будет проъксплуатировать и залить новый бэкдор-вирус, поэтому её нельзя вообще к инету подключать.

Эту инициативу нужно давить в зародыше.

1. выкинуть разраба из Rust Software Foundation
2. отжать имя пакета на crates.io и повесить туда форк
3. начать переделывать cargo для ликвидации безответственного и развратного подхода к управлению зависимостями.

3.1 каждая зависимость (имя ящика) на всё дерево зависимостей должна быть в одном экземпляре. Вводить постепенно - через дельту в номере версии, которые считаются "одной версией", захардкоженную в cargo. То есть если в одном месте требуется 1.3.1, 1.3.2 и 1.3.5, то чтобы считалось, что при Δ=1 нужно только 1.3.2 и 1.3.5, а при Δ=3 - только 1.3.5. Дэльту увеличивать так, чтобы на каждое изменение сломался определённый малый процент библиотек на crates.io. Разрабам сломанных библиотек придётся прогнуться и изменить свои привычки. Им не впервой, прогнутся, конформаисты же.

3.2 построить workflow вокруг возможности использования предкомпилированных shared библиотек, при этом какой тип библиотек используется, shared, static или source - должно контролироваться лицом, производящим сборку.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #139, #195

82. Сообщение от Анонимemail (69), 25-Авг-23, 09:59   –1 +/
Потому что он цельный в первую очередь. У языка есть четкая концепция, вокруг которой все строится. В большинстве других языков это не так. Как правило там зоопарк из финтеылюшек, подсмотренных в других яп и работает это все через какие-то костыли.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75

83. Сообщение от Аноним (63), 25-Авг-23, 09:59   +1 +/
И американо-госбезопасно работать с сообществом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75

84. Сообщение от ALTruist_linux (?), 25-Авг-23, 10:00   –1 +/
Какой б..г то? Редмонтовский?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

85. Сообщение от Анонимemail (69), 25-Авг-23, 10:03   –1 +/
А ты писал что-то на расте или просто слышал звон и не знаешь где он? Какие же страдания у тебя вызывает раст? Заставляет тебя обробатывать возможные ошибки? Единственное, так это некоторые моменты с временем жизни ссылок могут быть не вмегда сразу очевидны. Но компилятор все разжует и в рот положет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79 Ответы: #89, #94, #99

86. Сообщение от 12yoexpert (ok), 25-Авг-23, 10:05   –4 +/
растом пользуются полтора землекопа, каким-то васянским пакетом - ещё меньше. откуда миллион глаз лишь бы ляпнуть?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #130, #134

87. Сообщение от 12yoexpert (ok), 25-Авг-23, 10:06   –1 +/
> исчерпать свободное место на диске уязвимостью cargo

я думал, выжирать место на диске - это фишка раста

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

88. Сообщение от 12yoexpert (ok), 25-Авг-23, 10:07   +3 +/
а в чём проблема с пересборкой? gentoo с растом и firefox на ryzen 5950x собирается за два часа
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #178

89. Сообщение от eganru (?), 25-Авг-23, 10:09   –1 +/
[i]Но компилятор все разжует и в рот положет. [/i] - в некоторых случаях лучше не знать, через какое отверстие будет выходить результат пережевывания.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85 Ответы: #93

90. Сообщение от Аноним (63), 25-Авг-23, 10:10   –2 +/
Ещё в качестве дополнительной меры воздействия можно задействовать по алгоритм, изложенный в https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?az=p...

1. Заходим на https://github.com/dtolnay
2. Выбираем Block or Report
3. Block user

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #124, #126

91. Сообщение от Аноним (91), 25-Авг-23, 10:10   +1 +/
> Чтение неинициализированной памяти - UB, будь то Rust или C

нет, расширяй кругозор

https://github.com/u-boot/u-boot/blob/291055efee4e1ae4ad0b62...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74 Ответы: #118, #158, #164

92. Сообщение от 12yoexpert (ok), 25-Авг-23, 10:11   +/
для него уже есть хоть одна IDE не на джаве (включая джавускрипт)?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69 Ответы: #96, #115

93. Сообщение от Анонимemail (69), 25-Авг-23, 10:11   –1 +/
Тебе ставят клизмы с питательным раствором?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89

94. Сообщение от 12yoexpert (ok), 25-Авг-23, 10:12   +/
ты код на расте хоть раз в глаза видел? если он кажется тебе нормальным - у тебя искалеченная психика, обратись к врачу
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85 Ответы: #98

95. Сообщение от Минона (ok), 25-Авг-23, 10:14   +/
> поставлять скомпилированный бинарник в пакете это, конечно, сильно

Юзай генту =)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

96. Сообщение от Анонимemail (69), 25-Авг-23, 10:16   –1 +/
Она появилась сразу же - Oak. Была написана на самом расте. По сути это gui  с интегрироаанным вимом. Но автор, похоже, давно забросил проект. А по сути какая IDE  тебе нужна? Я открываю емакс в терминале, потом открываю вторую вкладку в терминале и в емаксе пишу код, а во второй вкладке его запускаю. Или ты без кнопки run  жить не можешь?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #92

97. Сообщение от Аноним (97), 25-Авг-23, 10:17   +/
Емнип, она и так есть, если не в самом компиляторе, то в тулинге. Хотя могу ошибаться, не цитируйте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68

98. Сообщение от Анонимemail (69), 25-Авг-23, 10:17   +/
Конечно видел, ведь я его пишу. И читаю код других. Так что с ним не так?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #94

99. Сообщение от Аноним (80), 25-Авг-23, 10:18   –1 +/
https://hirrolot.github.io/posts/rust-is-hard-or-the-misery-...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85 Ответы: #144

100. Сообщение от Аноним (100), 25-Авг-23, 10:20   –1 +/
Такого уже лет 10 как не встретишь. А то и больше
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80

101. Сообщение от Минона (ok), 25-Авг-23, 10:23   +3 +/
> Это к слову о том что опенсорс смотрят миллионы глаз, да

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #173

102. Сообщение от Аноним (100), 25-Авг-23, 10:27   +/
Смени cmake на cargo. Там все автоматически собирается без перерывов на кофе и ошибки
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #193

103. Сообщение от Минона (ok), 25-Авг-23, 10:32   +4 +/
Речь о том что после аллокации памяти под массив из него попытались что-то прочесть раньше чем записать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66

104. Сообщение от Аноним (97), 25-Авг-23, 10:34   +/
Ну так можно и не инициализировать. Ансейф раст — всего лишь маркер, что компилятор снимает с себя полномочия по доказательству корректности и перекладывает их на разработчика (что сишка *почти везде*). Никто не запрещает помечать ансейфом вообще всё и писать почти как на сишкчке (и доказывать корректность каждого стейтмента в комментариях), но тогда лучше уж на сишечке и не страдать х-пстернёй ради х-пстерни. Либо использовать ансейф точечно и доказывать в комментах только отдельные оптимизации.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66 Ответы: #169

106. Сообщение от пох. (?), 25-Авг-23, 10:42   –4 +/
Переносимый язычок (с единственным и неповторимым запретом на клонирование) такой вот переносимый.
Винда, винда, еще винда но только правильная - и, вот, нате-на-лопате еще linoops (тоже далеко не любой).

Модному поколению не нужны лишние сложности при сборке, "и так сойдет!"

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #198

107. Сообщение от пох. (?), 25-Авг-23, 10:44   +/
_обе_. О каких "всех" идет речь у компилятора, который тестируют только на винде последней версии и еще...вот ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71 Ответы: #200

108. Сообщение от Аноним (97), 25-Авг-23, 10:45   +/
Ну, *лично я* как правило не доверяю оптимизациям, они если и работают, то как правило не до конца оптимально, для оптимизации горячего кода на уровне инструкций и циклов приходится бить компилятор по рукам, писать ансейф, а то и вовсе напрямую дёргать ллвм-интринсики. Но это только действительно горячий код и только под каждую конкретную платорму. Да, такое лучше делать на сишечке, но не всегда представляется возможным.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60 Ответы: #136, #137

109. Сообщение от пох. (?), 25-Авг-23, 10:45   +/
так ему и не нужен - нужен другой библиотеке, у которой он в зависимостях пятнадцатого порядка. Причем сама библиотека может быть хорошо и грамотно написанной (хотя, конечно, куда там...)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73

111. Сообщение от User (??), 25-Авг-23, 11:01   –1 +/
А я вот минифицированный js как-то раз на лету правил - тоже то ещё приключение было. Далеко идущие выводы из этого факта делать уже можно?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80 Ответы: #141

112. Сообщение от Аноним (91), 25-Авг-23, 11:05   –1 +/
> А почему все критекуют тут раст за безопасность причем тут безопасная работа с памятью и написанный код.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

114. Сообщение от Аноньимъ (ok), 25-Авг-23, 11:09   –1 +/
У сишки и пакетного менеджера не было.

Потому каждые свои нескучный менеджеры пакетов придумали, да ещё ядро линукса в них запихнули.

И в итоге сишкины либы как раз в большинстве бинарными блобами распространяются.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #119

115. Сообщение от Аноним (63), 25-Авг-23, 11:10   +/
Qt Creator/KDevelop/Kate + https://github.com/rust-analyzer/lsp-server (жрёт очень много памяти, как и все LSP).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #92

117. Сообщение от Аноньимъ (ok), 25-Авг-23, 11:17   +1 +/
Что за бред сумасшедшего.
Прийду домой проверю сколько оно из портов под Фрей собирается.
День там на дохлом 4хядереом бульдозере будет собираться десктоп полноценный.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #179

118. Сообщение от Аноньимъ (ok), 25-Авг-23, 11:21   +/
Объясните как из приведенной ссылки следует что это не UB ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91 Ответы: #120

119. Сообщение от Серб (ok), 25-Авг-23, 11:36   +/
> И в итоге сишкины либы как раз в большинстве бинарными блобами распространяются.

Сколько там процентов у debian'а пакетов с воспроизводимыми сборками?

И на чем написаны проекты оставшихся пакетов - с не воспроизводимыми сборками?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #114

120. Сообщение от Аноним (91), 25-Авг-23, 11:43   +/
> как из приведенной ссылки следует что это не UB ?

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

Для тебя есть примеры попроще - многоядерные системы с общей памятью, или просто шаред мемори  в многопотоке - инициализация нужна только с одной стороны, с другой вообще может быть только ридонли.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #118 Ответы: #123

123. Сообщение от morphe (?), 25-Авг-23, 12:37   +/
А при чём тут железо вообще? UB это про то, что компилятор имеет право подобный код скомпилировать как угодно
https://research.swtch.com/ub#uninit
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #120 Ответы: #127

124. Сообщение от User (??), 25-Авг-23, 12:39   +/
Еще можно куданадо написать, что автор по ночам гимн России поет, портрет Путина в шкафу держит и меньшинствами не интересуется - тут-то "он поймет: вот пусть к  проекту serde со своими хотелками и обращается, может serde соизволит ему сделать персональный луна-парк и лунный модуль."
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #90

125. Сообщение от Аноним (125), 25-Авг-23, 12:39   +4 +/
автор (dtolnay) сделал фантастическую фигню, сделав морду кирпичом и прикрываясь жалким блеянием про скорость процедурных макросов. учитывая компетентность товарища - его просто прогнули, 99% вероятности - гугл, где он работает. в гугле такая же жалкая аргументация для пропихивания мерзких дурно пахнущих "фич"

хорошо то, что бредятину откатили, но это только пока

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78 Ответы: #131

126. Сообщение от Glenorman (?), 25-Авг-23, 12:43   +/
Что-то мне это напомнило, а пару месяцев назад, не стели принимать очет об ошибке в одну библиотеку на почве национальности. Мну , аккуратно скопировал из неё  все классы ,переименовав их на букву Z , чуток потер комментарии, и поставил пару костылей , чтобы баг исправлялся только в моем частном случае , но никак не в общем... Сижу жду горения.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #90 Ответы: #129

127. Сообщение от Аноним (91), 25-Авг-23, 12:49   +/
> А при чём тут железо вообще?

при том что ответ был на пост про железо

> Чтение неинициализированной памяти - UB, будь то Rust или C, если за читаемым адресом действительно память, а не MMIO.

и привёл примеры где нет никакого неопределенного поведения при доступе к неинициализированной памяти "не MMIO"

https://en.wikipedia.org/wiki/Memory-mapped_I/O_and_port-map...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #123 Ответы: #135

128. Сообщение от burjui (ok), 25-Авг-23, 12:55   +1 +/
Для инициализации PRNG следует использовать специально для этого предназначенные источники энтропии, и в Linux это /dev/random, а не мусор из памяти.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #187

129. Сообщение от Аноним (129), 25-Авг-23, 13:00   +/
Причём тут национальность? Мы тут о человеке по его поступкам судим. Человек злоупотребил своим положением и влиянием в проекте для продвижения вредоносных изменений. Я сам - ярый сторонник бинарных пакетов, но тот способ поставки бинарного пакета, который он продвигает - это простотзаведомо небезопасно. Впрочем как и вся экосистема Rust.

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

Но у нас тоже есть кое-какое влияние для ответки. Не такое большое, как у него, но зато нас много.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #126 Ответы: #155

130. Сообщение от НяшМяш (ok), 25-Авг-23, 13:01   +1 +/
> растом пользуются полтора землекопа, каким-то васянским пакетом - ещё меньше. откуда миллион
> глаз лишь бы ляпнуть?

Я же не кексперт, умею интернетом пользоваться.
https://crates.io/crates/serde
https://crates.io/crates/serde_derive
500 тысяч загрузок _в день_

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86

131. Сообщение от НяшМяш (ok), 25-Авг-23, 13:07   +3 +/
> автор (dtolnay) сделал фантастическую фигню, сделав морду кирпичом и прикрываясь жалким
> блеянием про скорость процедурных макросов. учитывая компетентность товарища - его просто
> прогнули, 99% вероятности - гугл, где он работает. в гугле такая
> же жалкая аргументация для пропихивания мерзких дурно пахнущих "фич"
> хорошо то, что бредятину откатили, но это только пока

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #125 Ответы: #170

132. Сообщение от xsignal (ok), 25-Авг-23, 13:08   +2 +/
Проприетарщина, что и требовалось доказать. И это только начало.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #157

133. Сообщение от Аноним (133), 25-Авг-23, 13:12   +4 +/
Эксперты опеннета как всегда.
Во-первых, создатели языка тут ни при чем - речь о third-party библиотеке.
Во-вторых, комьюнити это решение как раз не понравилось, огромное количество людей выразило свою неудовольствие, после чего автор библиотеки передумал и отменил публикацию бинарей.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

134. Сообщение от freecoder (ok), 25-Авг-23, 13:12   +/
У serde_derive 172 миллиона загрузок.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86

135. Сообщение от Ананимус (?), 25-Авг-23, 13:22   +/
> и привёл примеры где нет никакого неопределенного поведения при доступе к неинициализированной памяти

Примеры чего? В стандарте написано что чтение неинициализированной переменной это UB.

Например:

int b;

if (b > 10)
    puts("опеннетчики не могут в стандарт C");
else
    puts("опеннетчики точно не могут в стандарт C");

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #127 Ответы: #146

136. Сообщение от eganru (?), 25-Авг-23, 13:22   +/
Я пока вилами и факелом в угол не загнали стараюсь не оптимизировать код, который работает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #108

137. Сообщение от Ананимус (?), 25-Авг-23, 13:23   +1 +/
> Ну, *лично я* как правило не доверяю оптимизациям

Собираешь с -O0?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #108

138. Сообщение от Ананимус (?), 25-Авг-23, 13:26   –1 +/
Это буквально то как работает Vec в Rust. Я понимаю что сишным пердолям сложно и они по привычке используют слайсы, но господи Иисусе, нельзя же быть НАСТОЛЬКО некомпетентными.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66 Ответы: #176

139. Сообщение от freecoder (ok), 25-Авг-23, 13:32   –1 +/
В любом проекте генерируется Cargo.lock файл в котором указаны все зависимости проекта. Обычно этот файл не редактируется вручную, но ничто не мешает залезть туда и поменять версии и репозитории любых зависимостей.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81 Ответы: #142, #143

140. Сообщение от freecoder (ok), 25-Авг-23, 13:38   –1 +/
Подобные эксцессы всегда будут происходить, и раньше уже было (помянем Actix). Хорошо, что сообщество реагирует и успешно борется за свои принципы, свободу и безопасность.
Ответить | Правка | Наверх | Cообщить модератору

141. Сообщение от Аноним (80), 25-Авг-23, 13:40   +/
Это тут при чём? Форматирование блоков кода отступами в Питоне встроенное и принудительное, от него никуда не денешься. А минифицировать/обфусцировать код можно на любом языке, тут язык не при делах.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111 Ответы: #145

142. Сообщение от Аноним (142), 25-Авг-23, 13:48   +1 +/
Я так и делаю, в значительном числе случаев после этого проект перестаёт компилироваться, потому что обратной совместимости в Rust просто не существует, и в языках с таким подходом к связыванию она не может и существовать. Поэтому приходится делать иначе: проходить по всей истории, править уже Cargo.toml, откатывать изменения и сливать конфликты. Это кропотливая ручная работа, которая в отсутствии системы контроля версий, работающей на уровне AST, а не строк, может целый день занять для одного проекта. А теперь представь, что это не 1 проект, а все проекты. Кто это всё будет делать? И, в гипотетических будущих условиях, когда весь софт скомпрометирован и безопасности тебе от вычистки пакетов прибавится пренебрежимо мало, зачем? Проще расслабить булки, что большинство и сделает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #139

143. Сообщение от Аноним (143), 25-Авг-23, 13:55   +/
Понимаешь, всё приятно и легко только у тех, кто сам таким не занимался, а слышал от кого-то, что так можно, и получил короткий рецепт как так делать, без перечисления всех проблем и подводных камней. Это эффектом Даннинга-Крюгера называется.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #139 Ответы: #148

144. Сообщение от freecoder (ok), 25-Авг-23, 14:01   +/
> https://hirrolot.github.io/posts/rust-is-hard-or-the-misery-...

Автор какой-то странный. Растовый аналог его гошного кода


package main

import "fmt"

type Update struct{}
type Handler func(*Update)

type Dispatcher struct {
    handlers []Handler
}

func (dp *Dispatcher) pushHandler(handler Handler) {
    dp.handlers = append(dp.handlers, handler)
}

func main() {
    dp := Dispatcher{handlers: nil}
    dp.pushHandler(func(upd *Update) {
        fmt.Println(upd)
    })
}


Будет такой код:

#[derive(Debug)]
struct Update;

type Handler = fn(&Update);

struct Dispatcher(Vec<Handler>);

impl Dispatcher {
    fn push_handler(&mut self, handler: Handler) {
        self.0.push(handler);
    }
}

fn main() {
    let mut dp = Dispatcher(vec![]);

    dp.push_handler(|upd| {
        println!("{:?}", upd);
    });
}


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #99

145. Сообщение от User (??), 25-Авг-23, 14:05   +/
При том, что при форматировании дупой - любой язык становится излишне увлекательным.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #141

146. Сообщение от Аноним (91), 25-Авг-23, 14:16   +/
> Примеры чего? В стандарте написано что чтение неинициализированной переменной это UB.

примеры того что можешь подтереться стандартами и UB нет

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

для таких случаев есть volatile int b - иди подучись

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #135 Ответы: #147

147. Сообщение от Ананимус (?), 25-Авг-23, 14:19   +/
> примеры того что можешь подтереться стандартами и UB нет

Ты же понимаешь что компилятор не очень заботит чем ты подтираешься и он будет следовать стандарту?

> для таких случаев есть volatile int b

То есть ты настолько настроен писать говнокод что вместо инициализации переменной будешь volatile совать?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #146 Ответы: #149

148. Сообщение от freecoder (ok), 25-Авг-23, 14:27   –1 +/
> Понимаешь, всё приятно и легко только у тех, кто сам таким не
> занимался, а слышал от кого-то, что так можно, и получил короткий
> рецепт как так делать, без перечисления всех проблем и подводных камней.
> Это эффектом Даннинга-Крюгера называется.

Лично я подменой зависимостей занимался, и каких-то серьёзных проблем с этим не имел. В отличии от вас. Так что мне тут больше сказать вам нечего.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #143

149. Сообщение от Аноним (91), 25-Авг-23, 14:32   +/
> вместо инициализации переменной будешь volatile совать?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #147 Ответы: #150

150. Сообщение от Ананимус (?), 25-Авг-23, 14:52   +/
> конечно если это нужно, а ты переменную в памяти которую можно только читать будешь инициализировать ?

Ветка вообще не про это.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #149 Ответы: #153

151. Сообщение от Аноним (151), 25-Авг-23, 15:04   –2 +/
Твой редактор кода не умеет в замену табов на пробелы?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80

152. Сообщение от Ананимус (?), 25-Авг-23, 15:07   +/
> Было

Кто сказал firefox?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

153. Сообщение от Аноним (91), 25-Авг-23, 15:07   +/
> Ветка вообще не про это.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #150 Ответы: #154

154. Сообщение от Ананимус (?), 25-Авг-23, 15:31   +/
> как раз про это - ты не понимаешь что часто требуется не инициализировать память, но ведь чтобы понять надо опыт программирования иметь а

Ох... это требуется в двух случаях: tight loop и общение с железом. В первом случае нет никаких чтений неинициализированной памяти (потому что это мать его UB), а второе это специальный случай с volatile.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #153 Ответы: #209

155. Сообщение от Аноним (91), 25-Авг-23, 15:57   +/
> Но у нас тоже есть кое-какое влияние для ответки. Не такое большое, как у него, но зато нас много.

нет у вас ничего против корпораций кроме языка на их яичках

https://www.opennet.ru/opennews/art.shtml?num=58969

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #129

157. Сообщение от Аноним (157), 25-Авг-23, 16:21   +1 +/
Плюсую. Далее, с бинарников они перейдут на частично несвободную лицензию.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #132 Ответы: #202

158. Сообщение от burjui (ok), 25-Авг-23, 18:01   +/
Хорошо, здесь вы правы, я выразился неточно: UB не сам факт чтения, и именно использование неинициализированной памяти.

(void) readl((void *) rank1_base);

Т.к. здесь данные не используются, UB нет. Впредь постараюсь быть точнее.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91 Ответы: #163, #165

159. Сообщение от burjui (ok), 25-Авг-23, 18:07   +/
Но в неё можно только писать, т.е. инициализировать. Использование неинициализированной памяти - UB, независимо от того, unsafe это или нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54

160. Сообщение от Аноним (-), 25-Авг-23, 20:05   +2 +/
> случайно меинтейнеры федоры и к тому времени скомпилированный бинарник уже
> распространялся недели три. Это к слову о том что опенсорс смотрят миллионы глаз, да.

Он себя повел так как будто хотел втулить через мутный централизованный сервис бэкдор. А федористам факовв. Дебианщики нормально пакетят либы в деб-пакеты как обычно вместо вот этих самопалов с блобами. При таком управлении системой невозможно не заметить такую подляну. Но если вы камлаете на самопальный недо-пакетник от гугл-амазон-майкрософта то конечно получите характерный для маздая экспериенс. А что вы ожидали то?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

161. Сообщение от Аноним (-), 25-Авг-23, 20:12   +/
> Слабо тянет на дичь.

Коменты в редгадской багзиле и рассылках от этого фрика были более чем колоритные.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72

162. Сообщение от Аноним (-), 25-Авг-23, 21:11   +2 +/
Шаг с выбросом Вин7 это сильный шаг. То есть нет. Наоборот.

Вот представим что юзеры Вин7 хотят некий тул. Например текст редактор. И что ? На Раст теперь его не напишешь. Хахаха ! А вот на Лазарус напишешь.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #166, #174, #227, #254

163. Сообщение от Аноним (91), 25-Авг-23, 21:43   +/
> Т.к. здесь данные не используются, UB нет.

они могут и использоваться - буферы DMA from device, общая память IPC mailbox/msgbox в SoC из которой читаешь сообщения от асинхронной корки - пишет туда сопроцессор которым упраляешь а не твой код на CPU, это аналогично MMIO но в обычной памяти.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #158

164. Сообщение от Someone (??), 25-Авг-23, 22:27   +/
Это UB для LLVM. Это означает что компилятор может скомпилировать этот код как ему захочется, например просто выкинуть.

Ведь записи в память не происходит, а значит и чтения тоже нет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91 Ответы: #172

165. Сообщение от Someone (??), 25-Авг-23, 22:36   +/
Разве в стандарте не говорится просто об чтении?
В любом случае для LLVM чтение неинициализированной памяти кажется точно UB
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #158 Ответы: #188

166. Сообщение от Могилла (?), 25-Авг-23, 22:38   –1 +/
Вот представим, есть неконсумерист/параноик с Windоws 7. Рекламу отключает или просто игнорит и ничего по ней не покупает, ибо денег нет. Нужно ли на такого ресурсы команды разработки браузера тратить иресурсы сервера с телеметрией? Просто дропнем Windows 7 в браузере. А потом и в Rust. Хочешь использовать современные программы - купи и современный зондокомп с Windows 11. Не готов? Ну а а зачем ты нам такой нужен, посмотрим как ты запоёшь, когда без современного смузи-софта останешься. Придётся тебе самому переписать его на C++, весь лунный модуль и весь луна-парк, вместе с посетителями.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #162 Ответы: #248

167. Сообщение от Someone (??), 25-Авг-23, 22:39   +/
Для этого есть https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html. Создаешь, пишешь, используешь
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66 Ответы: #177

168. Сообщение от Someone (??), 25-Авг-23, 22:42   +/
https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html

Это то что нужно знать, если уж хочется неинициализировать данные

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

169. Сообщение от morphe (?), 25-Авг-23, 23:47   +/
> Ансейф раст — всего лишь маркер,
> что компилятор снимает с себя полномочия по доказательству корректности и перекладывает
> их на разработчика

Не верно, никаких он полномочий не перекладывает, все гарантии из safe rust там сохраняются.
Однако в unsafe{} блоке можно вызывать unsafe функции (Сторонние библиотеки например, FFI, или просто функции в которых есть unsafe, и корректность вызова которых должен доказывать пользователь), разыменовывать указатели (не путать с ссылками), обращаться с изменяемыми статичными переменными (static mut), и обращаться к полям union.
Кроме этих дополнительных _разрешений_ unsafe блок ничего не делает.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #104

170. Сообщение от Вы забыли заполнить поле Name (?), 25-Авг-23, 23:55   +/
>> автор (dtolnay) сделал фантастическую фигню, сделав морду кирпичом и прикрываясь жалким
>> блеянием про скорость процедурных макросов. учитывая компетентность товарища - его просто
>> прогнули, 99% вероятности - гугл, где он работает. в гугле такая
>> же жалкая аргументация для пропихивания мерзких дурно пахнущих "фич"
>> хорошо то, что бредятину откатили, но это только пока
> На реддите и в других ветках на гитхабе ему нормально так по
> морде надавали. Ведь при наличии инкрементальной компиляции эта байда компилируется один
> раз и время потраченное на это в сравнении с компиляцией всего
> проекта вообще незаметно.

Санта-Барбара какая-то... Не лень вам участвовать в большой стирке?


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #131 Ответы: #171

171. Сообщение от НяшМяш (ok), 26-Авг-23, 00:48   +1 +/
> Санта-Барбара какая-то... Не лень вам участвовать в большой стирке?

Хоть какое-то развлечение. Не кекспертов же местных обсуждать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #170

172. Сообщение от Аноним (91), 26-Авг-23, 01:18   +/
> Это UB для LLVM. Это означает что компилятор может скомпилировать этот код как ему захочется, например просто выкинуть.

при чём тут LLVM - шланг стандарт С не признаёт и выкинет доступ к volatile ?

https://elixir.bootlin.com/u-boot/latest/source/arch/arm/inc...

https://elixir.bootlin.com/u-boot/latest/source/arch/arm/inc...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #164

173. Сообщение от Аноним (173), 26-Авг-23, 06:21   +/
А ещё лет 15 назад, пользователи Gentoo, ставили флаги для Сишечки -Wall -Werror=format-security -fPIC и патчили сорцы, слали репорты в апстрим. А сегодня вместо флага -Werror=format-security используют ржавого.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #101

174. Сообщение от Ан (??), 26-Авг-23, 07:20   +1 +/
Этот момент в Rust конечно пугает. Допустим твои клиенты пользуются Windows 7 (или Windows 10 в будущем), и тут из под тебя выдергивают стул. Или сидеть на последней работающей версии или спонсировать разработку компилятора/std. С C++ как-то все надежней, поддержка Windows XP есть в Visual Studio 2015.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #162 Ответы: #175, #182, #203

175. Сообщение от Аноним (175), 26-Авг-23, 07:25   –1 +/
А зачем на сайте юниксоидов ты пишешь про Виндовс? Страдай, твои проблемы! Лучше иди-ка ты на сайт вантузников.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #174 Ответы: #184

176. Сообщение от Аноним (29), 26-Авг-23, 09:47   +/
Vec – динамический массив, а я про обычный. Работа с динамической памятью может быть медленней, особенно на микроконтроллерах.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #138

177. Сообщение от Аноним (29), 26-Авг-23, 09:56   +/
Здорово, но... Лишние строчки кода.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #167 Ответы: #181

178. Сообщение от Аноним (18), 26-Авг-23, 11:16   –1 +/
читать не пробовали? речь не о роллинге по готовым ебилдам собрать...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88

179. Сообщение от Аноним (18), 26-Авг-23, 11:18   +/
читать не пробовали?
под 11 фрю собери и проверь как оно собирается...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #117 Ответы: #186

180. Сообщение от Аноним (18), 26-Авг-23, 11:20   +/
видимо еще и неадекват-теоретик... не смог прочитать что речь не столько о железе...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

181. Сообщение от Ананимус (?), 26-Авг-23, 11:27   +/
Если ты боишься что это медленнее будет, то не будет, весь сахар эфемерный и уйдет после компиляции. Если ты хочешь той же семантики что у Vec, то ArrayVec.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #177

182. Сообщение от Ананимус (?), 26-Авг-23, 11:41   –1 +/
Грустно быть опеннетчиком. Читаем оригинал:

Currently Windows 7 and 8 are listed as Tier 1 supported platforms. However, this has not been true for a long long time. We simply do not have the testing infrastructure. And with so much software now abandoning Windows 7 and 8 (everything from Git to Go to every major browser), continuing to provide the little support that we do is only getting more difficult. There is also a lack of vendor support for these targets.

[…]

Support for Windows 7 and 8 may continue beyond these dates through the creation of new "legacy" targets for older Windows versions. Individuals or organisation(s) who can commit to providing some level of legacy testing and support should go through the normal process for creating new targets.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #174 Ответы: #192

183. Сообщение от Аноним (183), 26-Авг-23, 11:57   +/
Не кредитки, а ЦВЦБ.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59

184. Сообщение от Аноним (80), 26-Авг-23, 12:12   +1 +/
Где на сайте написано что он для юниксоидов?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #175

186. Сообщение от Аноньимъ (ok), 26-Авг-23, 15:25   +/
Эм, 11 фря больше не поддерживается. Инфраструктура просто отключена.
Новый софт под нее никакой не собрать. В смысле без приключений правки мейкфайлов и прочего.

Фаерфокс ничем особенным не выделяется на фоне всего остального в этом плане.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #179 Ответы: #211

187. Сообщение от _ (??), 26-Авг-23, 17:29   +/
Ну дык что - пропвтчишь ssh то, покажешь лохам как надо? Или так потрепалсО и в кусты? :-)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #128 Ответы: #217

188. Сообщение от _ (??), 26-Авг-23, 17:38   +/
Тогда бы им можно было только хилоуворды(С) собирать. А им даже вёдра собирают.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #165

192. Сообщение от Ан (??), 26-Авг-23, 19:12   +/
> Грустно быть опеннетчиком. Читаем оригинал:

И что там в оригинале? Ровно то что я и сказал, если захочешь поддержку Windows 7 (или Windows 10 в будущем), придется стать такой organization(s) or individual которые будут поддерживать target. Хватит ли нашей гипотетической компании бюджета на это большой вопрос.

Более того, нет особо никакого понимания как все будет. Просыпаешься такой утром, читаешь новости, "это версия будет последней для вашей платформы".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #182 Ответы: #204

193. Сообщение от _kp (ok), 26-Авг-23, 19:37   +/
> Смени cmake на cargo. Там все автоматически собирается без перерывов на кофе
> и ошибки

Так речь только о сборке уже готового, пусть и свежего. А бывает что помимо мелких патчей, в худшем случае надо скестить ежа с ужом. ;)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #102

194. Сообщение от gdg (??), 26-Авг-23, 20:25   +1 +/
Zig выигрывает у сабжа примерно во всём относительно системного программирования.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #212

195. Сообщение от Вы забыли заполнить поле Name (?), 26-Авг-23, 21:03   –1 +/
> Статическое связывание всех библиотек в случае их компрометации приведёт статическому внедрению бэкдора в весь софт, от них зависящий.

В плане безопасности статическое связывание как раз лучше. Один раз собрал и точно знаешь, что обновление другого пакета не добавит уязвимости в конечную программу. Крупные конторы на С++ давно все статически собирают.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81 Ответы: #196

196. Сообщение от Аноним (196), 26-Авг-23, 21:30   +1 +/
Конторы живущие поддержкой одного большого программного обеспечения.

Если не будешь компилировать статически, кто же будет покупать поддержку с исправлением всех дырок во всех библиотеках?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #195 Ответы: #239

197. Сообщение от Прохожий (??), 26-Авг-23, 21:41   +/
Было и есть. Прошлое и настоящее. Гм...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

198. Сообщение от Прохожий (??), 26-Авг-23, 22:10   +1 +/
А почему Microsoft можно прекращать поддержку Windows 8.1 (платная ОС, а разработчикам Rust (бесплатная среда разработки) - нельзя? Наверное потому, чтобы великому эксперту пох-у было что ляпнуть.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #106

200. Сообщение от Прохожий (??), 26-Авг-23, 22:25   +1 +/
Чуть больше, о великий эксперт. https://doc.rust-lang.org/nightly/rustc/platform-support.html
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #107 Ответы: #249

202. Сообщение от Прохожий (??), 26-Авг-23, 22:36   –2 +/
Два эксперта не удосужились проверить, что автор уже откатил все свои хотелки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #157 Ответы: #205, #218

203. Сообщение от Прохожий (??), 26-Авг-23, 22:39   –1 +/
Кто мешает (запрещает) использовать старую версию Rust? Visual Studio 2015 сколько годков? Вот возьмёте такую же версию Rust и вперёд и с песней. Или это другое?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #174 Ответы: #226, #241

204. Сообщение от Ананимус (?), 26-Авг-23, 22:45   –1 +/
На чем ты предлагаешь им тестировать свой код, если win7 не продается с конца 17го года и не поддерживается с начала 23го, лол?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #192 Ответы: #206, #225

205. Сообщение от Аноним (196), 26-Авг-23, 22:53   +1 +/
> Два эксперта не удосужились проверить, что автор уже откатил все свои хотелки.

Это спасает проблему с инфраструктурой раста?

Когда большинство проектов при сборке вытаскивают последние версии зависимостей и собирают с ними?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #202 Ответы: #208

206. Сообщение от Аноним (196), 26-Авг-23, 22:56   +/
Ты можешь использовать виртуалку хоть с Windows NT.

Где брал не помню, но помню, что MS сама выкладывала для разработчиков виртуалки со старыми своими версиями.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #204 Ответы: #207

207. Сообщение от Ананимус (?), 27-Авг-23, 00:18   +/
Нет, не можешь, для тестирования тебе нужна та же система, на которой будут гонять твой код. И если ты не можешь ее купить, а вендор говорит что больше не будет ее поддерживать, то ты ее дропнешь. Как уже сделали Git, Go и прочие.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #206

208. Сообщение от Ананимус (?), 27-Авг-23, 00:41   –1 +/
Ну так не используй все это и пиши как на сишке все сам руками, кто тебе мешает-то.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #205

209. Сообщение от Аноним (91), 27-Авг-23, 10:03   +/
> Ох... это требуется в двух случаях: tight loop и общение с железом. В первом случае нет никаких чтений неинициализированной памяти (потому что это мать его UB), а второе это специальный случай с volatile.

в ядре Linux 80% кода это драйверы железа, т.е примерно всегда, охай дальше

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #154 Ответы: #219

210. Сообщение от Аноним (210), 27-Авг-23, 13:09   +1 +/
сишный define это не полноценное метапрограммирование.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #61 Ответы: #216

211. Сообщение от Аноним (18), 27-Авг-23, 13:31   +/
Дак я как раз и писал о том, что сборка FF и SM упираются именно в сабж.
Как по самому времени пересборки, так и по ресурсам требуемым на сборку и времени на решение проблем с зависимостям.
В итоге получается быстрее и проще хромиум собрать, чем с ФФ возиться...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #186 Ответы: #215

212. Сообщение от freecoder (ok), 27-Авг-23, 13:35   –3 +/
> Zig выигрывает у сабжа примерно во всём относительно системного программирования.

Сомневаюсь, но! Rust - это наследие и развитие C++, с иной философией. Поэтому его прямой конкурент - это плюсы и некоторое подмножество высокоуровневых языков (Java, Go, Pythion). Rust больше подходит для разработки прикладного софта с вкраплениями системщины или системного софта с приличной долей прикладного кода. Поэтому он сужает область выгодного использования C и Zig, но не претендует на их полную замену. В отличии от области плюсов.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #194 Ответы: #213

213. Сообщение от gdg (??), 27-Авг-23, 14:00   +/
>> Zig выигрывает у сабжа примерно во всём относительно системного программирования.
> Сомневаюсь, но! Rust - это наследие и развитие C++, с иной философией.
> Поэтому его прямой конкурент - это плюсы и некоторое подмножество высокоуровневых
> языков (Java, Go, Pythion). Rust больше подходит для разработки прикладного софта
> с вкраплениями системщины или системного софта с приличной долей прикладного кода.
> Поэтому он сужает область выгодного использования C и Zig, но не
> претендует на их полную замену. В отличии от области плюсов.

Где системное программирование и где плюсы. Я специально подчеркнул область применения.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #212 Ответы: #214, #238

214. Сообщение от gdg (??), 27-Авг-23, 14:01   +/
>>> Zig выигрывает у сабжа примерно во всём относительно системного программирования.
>> Сомневаюсь, но! Rust - это наследие и развитие C++, с иной философией.
>> Поэтому его прямой конкурент - это плюсы и некоторое подмножество высокоуровневых
>> языков (Java, Go, Pythion). Rust больше подходит для разработки прикладного софта
>> с вкраплениями системщины или системного софта с приличной долей прикладного кода.
>> Поэтому он сужает область выгодного использования C и Zig, но не
>> претендует на их полную замену. В отличии от области плюсов.
> Где системное программирование и где плюсы. Я специально подчеркнул область применения.

А прикладнику в 2к23 лучше писать на языке со сборкой мусора.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #213 Ответы: #223

215. Сообщение от Аноньимъ (ok), 27-Авг-23, 14:24   +/
> Дак я как раз и писал о том, что сборка FF и
> SM упираются именно в сабж.
> Как по самому времени пересборки, так и по ресурсам требуемым на сборку
> и времени на решение проблем с зависимостям.
> В итоге получается быстрее и проще хромиум собрать, чем с ФФ возиться...

Для сборки раста нужно:

Build dependencies:

        cmake : devel/cmake-core
        ninja : devel/ninja
        pkgconf>=1.3.0_1 : devel/pkgconf
        python3.9 : lang/python39

Library dependencies:

        libcurl.so : ftp/curl

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #211

216. Сообщение от Аноньимъ (ok), 27-Авг-23, 14:26   –1 +/
> сишный define это не полноценное метапрограммирование.

А сишка то тут причем?

Полноценное метапрограммирование было в Лиспе примерно всегда.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #210

217. Сообщение от burjui (ok), 27-Авг-23, 14:52   +/
Иди сам пропатч, чудо. Этому багу уже больше 10 лет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #187

218. Сообщение от Вы забыли заполнить поле Name (?), 27-Авг-23, 16:39   +1 +/
> Два эксперта не удосужились проверить, что автор уже откатил все свои хотелки.

Сегодня откатил, завтра не откатит, завтра он будет уже не один. Такие явления - это звонок.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #202

219. Сообщение от Ананимус (?), 27-Авг-23, 18:15   +/
Прекрасно, как код драйвера железа относится к exfat?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #209 Ответы: #220

220. Сообщение от Аноним (91), 27-Авг-23, 19:07   +/
>> в ядре Linux 80% кода это драйверы железа
> как код драйвера железа относится к exfat?

exfat по твоему к железу относится ? тебя кто-то обманул

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #219 Ответы: #221

221. Сообщение от Ананимус (?), 27-Авг-23, 21:06   +/
> exfat по твоему к железу относится

Нет, я спрашиваю как exfat или device mapper относятся к железу. Потому что дыреней там из-за пердолева с неинициализированной памятью не меньше.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #220 Ответы: #222

222. Сообщение от Аноним (91), 27-Авг-23, 23:10   +/
> Нет, я спрашиваю как exfat или device mapper относятся к железу. Потому что дыреней там из-за пердолева с неинициализированной памятью не меньше.

ты знаешь что не относится к железу но всё равно спрашиваешью Это наверно как-то должно отменить факт что доступ к регистрам MMIO повсеместно через volatile, может ты считаешь что CPU програмно должен инициализировать тысячи регистров в железе а не его аппаратный сброс и это как-то поможет устранить ошибки exfat и device mapper ? Тебя кто сильно обманул.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #221 Ответы: #231, #232

223. Сообщение от freecoder (ok), 27-Авг-23, 23:30   +/
> А прикладнику в 2к23 лучше писать на языке со сборкой мусора.

Прикладной софт, требовательный к производительности, в 2к23 лучше писать на безопасном языке с borrow checker.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #214 Ответы: #224

224. Сообщение от gdg (??), 27-Авг-23, 23:50   +/
>> А прикладнику в 2к23 лучше писать на языке со сборкой мусора.
> Прикладной софт, требовательный к производительности, в 2к23 лучше писать на безопасном
> языке с borrow checker.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #223 Ответы: #228

225. Сообщение от Ан (??), 28-Авг-23, 06:09   +/
А куда делась инфраструктура? Раньше была и вдруг резко пропала, а новую не купить?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #204 Ответы: #229

226. Сообщение от Ан (??), 28-Авг-23, 06:47   +1 +/
Можно, я и написал этот вариант. Но в целом теперь я думаю что C++ может выглядит если честно более жизнеспособным если проект рассчитан на работу на машинах клиентов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #203 Ответы: #230

227. Сообщение от BeLord (ok), 28-Авг-23, 09:46   +/
Весь софт для археологов уже есть, раз в семь-десять лет можно себе позволить менять все, а не тащить легаси веками.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #162

228. Сообщение от freecoder (ok), 28-Авг-23, 12:10   –1 +/
Комментарии для того здесь и нужны, чтобы обмениваться мнениями. Или вы что, боитесь потерять веру в свою религию? )

Ну, например - регулярные выражения. Производительность в Rust может в разы быть лучше других языков (и на порядок лучше Java и Go): https://github.com/mariomka/regex-benchmark

Или, веб серверы. В топе 10 - пять написаны на Rust: https://www.techempower.com/benchmarks/#section=data-r21&tes...

На алгоритмических задачах - и снова производительность Rust на уровне C и C++: https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

Отсюда вопрос: так зачем мучиться, лепить франкенштейна - половину кода писать на Java/Go, половину на C (причём и прикладного тоже), когда можно просто взять Rust? И бонусом ещё получить типобезопасную многопоточность (Java тут вообще в сторонке курит).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #224 Ответы: #235, #247

229. Сообщение от Ананимус (?), 28-Авг-23, 12:45   +/
> а новую не купить?
> Окончание продаж Windows 7: 31.10.2016

А ты догадливый!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #225 Ответы: #245

230. Сообщение от Ананимус (?), 28-Авг-23, 12:46   –1 +/
> Можно, я и написал этот вариант. Но в целом теперь я думаю
> что C++ может выглядит если честно более жизнеспособным если проект рассчитан
> на работу на машинах клиентов.

Нет, не выглядит, потому что VS свежих релизов тоже не поддерживает Windows 7. Так что разницы буквально никакой :D

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #226 Ответы: #246

231. Сообщение от Ананимус (?), 28-Авг-23, 12:48   +/
> Это наверно как-то должно отменить факт что доступ к регистрам MMIO повсеместно через volatile

Это прекрасно, но то что доступ к MMIO через volatile не отменяет того факта что код вокруг этого volatile это капля в море и все равно специальный случай.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #222

232. Сообщение от Ананимус (?), 28-Авг-23, 12:51   +/
>> Нет, я спрашиваю как exfat или device mapper относятся к железу. Потому что дыреней там из-за пердолева с неинициализированной памятью не меньше.
> наверно как-то должно отменить факт что доступ к регистрам MMIO повсеместно
> через volatile, может ты считаешь что CPU програмно должен инициализировать тысячи
> регистров в железе а не его аппаратный сброс

Чтобы не быть голословным:

$ cd ~/src/linux/drivers/net/ethernet/intel
$ git grep -c volatile .
e1000/e1000_hw.h:11
i40e/i40e_txrx.h:1

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #222 Ответы: #233

233. Сообщение от Аноним (91), 28-Авг-23, 15:54   +/
> $ cd ~/src/linux/drivers/net/ethernet/intel
> $ git grep -c volatile .

в коде драйверов кроссплатформенные readX/writeX, ioreadX/iowriteX и тд и надстройки над ними, а  implmentation defined реализации этих ф-ций в /arch

https://www.opennet.ru/openforum/vsluhforumID3/131335.html#172

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #232 Ответы: #234

234. Сообщение от Ананимус (?), 28-Авг-23, 16:14   +/
> в коде драйверов кроссплатформенные readX/writeX, ioreadX/iowriteX и тд и надстройки над ними, а  implmentation defined реализации этих ф-ций в /arch

Ага. Поэтому у тебя работа с volatile спрятана в двух функциях и не торчит наружу. Прямо как ненавидимый местными поциентами unsafe :D

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #233 Ответы: #236

235. Сообщение от gdg (??), 28-Авг-23, 16:25   –1 +/
>[оверквотинг удален]
> боитесь потерять веру в свою религию? )
> Ну, например - регулярные выражения. Производительность в Rust может в разы быть
> лучше других языков (и на порядок лучше Java и Go): https://github.com/mariomka/regex-benchmark
> Или, веб серверы. В топе 10 - пять написаны на Rust: https://www.techempower.com/benchmarks/#section=data-r21&tes...
> На алгоритмических задачах - и снова производительность Rust на уровне C и
> C++: https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
> Отсюда вопрос: так зачем мучиться, лепить франкенштейна - половину кода писать на
> Java/Go, половину на C (причём и прикладного тоже), когда можно просто
> взять Rust? И бонусом ещё получить типобезопасную многопоточность (Java тут вообще
> в сторонке курит).

Я тоже умею натягивать сову на глобус, но с возрастом это занятие теряет свой шарм. Адьо, теоретик.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #228 Ответы: #237

236. Сообщение от Аноним (91), 28-Авг-23, 17:45   +/
> работа с volatile спрятана в двух функциях

она не спрятана - ф-ции чтения/записи с гарантией того что вызовы не будут переупорядочены зависит от модели памяти архитектуры на которой исполняется код, если не заметил кроме volatile в реализации есть ещё барьеры памяти, сделано так чтобы писать кроссплатформенные драйверы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #234 Ответы: #243

237. Сообщение от freecoder (ok), 28-Авг-23, 21:16   +/
Кроме вашего возраста, больше аргументы нет против?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #235

238. Сообщение от yet another anonymous (?), 28-Авг-23, 22:38   +/
>>> Zig выигрывает у сабжа примерно во всём относительно системного программирования.
>> Сомневаюсь, но! Rust - это наследие и развитие C++, с иной философией.
>> Поэтому его прямой конкурент - это плюсы и некоторое подмножество высокоуровневых
>> языков (Java, Go, Pythion). Rust больше подходит для разработки прикладного софта
>> с вкраплениями системщины или системного софта с приличной долей прикладного кода.
>> Поэтому он сужает область выгодного использования C и Zig, но не
>> претендует на их полную замену. В отличии от области плюсов.
> Где системное программирование и где плюсы. Я специально подчеркнул область применения.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #213

239. Сообщение от Вы забыли заполнить поле Name (?), 29-Авг-23, 00:06   +/
> Конторы живущие поддержкой одного большого программного обеспечения.
> Если не будешь компилировать статически, кто же будет покупать поддержку с исправлением
> всех дырок во всех библиотеках?

Как предлагается пинать пользователей обновить уязвимые динамические зависимости?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #196

241. Сообщение от Аноним (241), 29-Авг-23, 12:32   +/
Кратко: всё устройство языка Rust и его экосистемы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #203

242. Сообщение от Пряник (?), 29-Авг-23, 12:48   +/
И в чём трудность поменять везде на 4 пробела? В редакторе замена текста не работает?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80

243. Сообщение от Ананимус (?), 29-Авг-23, 13:27   +/
>> работа с volatile спрятана в двух функциях
> она не спрятана - ф-ции чтения/записи с гарантией того что вызовы не
> будут переупорядочены зависит от модели памяти архитектуры на которой исполняется код,
> если не заметил кроме volatile в реализации есть ещё барьеры памяти,
> сделано так чтобы писать кроссплатформенные драйверы.

Она спрятана в функции. Прям внутри.

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

Так что на общий случай "положили массив на стек" или "создали пару переменных" наличие volatile не влияет никак.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #236 Ответы: #244

244. Сообщение от Аноним (91), 29-Авг-23, 16:09   +/
> Она спрятана в функции. Прям внутри.
> начал орать что мы ничего не понимаем

объяснил на пальцах, и да ты ничего не понимаешь

> обращение к памяти устройства это как раз-таки специальный случай

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

> переменные все-таки хорошо бы инициализировать

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #243 Ответы: #251

245. Сообщение от Ан (??), 29-Авг-23, 19:06   +/
Так куда пропала инфраструктура?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #229 Ответы: #250

246. Сообщение от Ан (??), 29-Авг-23, 19:16   +/
Текущий проект собирается на VS2005, VS2015, clang, gcc (разные версии). Я вот думаю можно ли так было бы сделать на rust? Наверное в каких-то пределах можно, если не будет зависимостей с crates.io.  Вроде VS2022 с трудом но ставится на Windows 7
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #230

247. Сообщение от Аноним (249), 31-Авг-23, 13:30   +/
>Производительность в Rust может в разы быть лучше других языков

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #228 Ответы: #252

248. Сообщение от Аноним (249), 31-Авг-23, 13:34   +/
Это наивный взгляд на вещи. Прецедент с прекращением поддержки старых ОС это 100% отказ от использования в системах ESR, критичных для бизнеса.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #166

249. Сообщение от Аноним (249), 31-Авг-23, 13:42   +/
Считать научись. По ссылке буквально подтверждение, что две платформы. Варианты с разными библиотеками - это не платформы, про tier 2 даже не заикайся - они не гарантируют работоспособности.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #200

250. Сообщение от Ананимус (?), 31-Авг-23, 16:51   +/
> Так куда пропала инфраструктура?

Её никогда и не было. Windows 7 сдохла раньше, чем они начали регулярные сборки Tier1 :D

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #245

251. Сообщение от Ананимус (?), 31-Авг-23, 16:55   +/
> так их и надо инициализировать когда нужно, а когда не нужно  - не надо

Ты условил самую суть! Поэтому в Rust память инициализируются по умолчанию. Для тех случаев, когда не надо сделали MaybeUninit.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #244

252. Сообщение от freecoder (ok), 01-Сен-23, 15:16   +/
> А может и не быть. Выборочно сформировать список бенчмарков, подтверждающих лидерство любого
> системного языка, совсем не трудно.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #247

253. Сообщение от Andrewpotam (?), 01-Сен-23, 19:26   +/
Чем громче вой анонимуса, тем более очевидно что язык действительно достойный внимания. Если бы был никому не нужен, никто бы не обращал внимания.
Ответить | Правка | Наверх | Cообщить модератору

254. Сообщение от VladSh (?), 02-Сен-23, 22:23   +/
Я вообще не понял, при чём тут версия ОС к языку программирования...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #162


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру