The OpenNET Project / Index page

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



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

"Для ядра Linux предложен драйвер GPIO, написанный на Rust"  +/
Сообщение от opennews (ok), 20-Июл-21, 16:01 
В ответ на замечание Линуса Торвальдса о том, что  пример драйвера, прилагаемый к набору патчей с реализацией поддержки языка Rust для ядра Linux, бесполезен и не решает реальных задач, предложен вариант драйвера PL061 GPIO, переписанный на Rust. Особенностью драйвера является то, что его реализация практически построчно повторяет имеющийся драйвер GPIO на языке Си. Для разработчиков, желающих познакомиться с созданием драйверов на Rust, подготовлено построчное сравнение, позволяющее понять в какие конструкции на Rust преобразован код на Си...

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

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

Оглавление

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

1. Сообщение от OnTheEdgeemail (ok), 20-Июл-21, 16:01   +14 +/
завертелось...
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #43

2. Сообщение от Аноним (2), 20-Июл-21, 16:01   –12 +/
А вот это действительно очень круто.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #50, #396

4. Сообщение от lockywolf (ok), 20-Июл-21, 16:04   –5 +/
Жалко, что не на С++, но вообще молодцы.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #8, #9, #101

6. Сообщение от Аноним (6), 20-Июл-21, 16:05   +30 +/
>Особенностью драйвера является то, что его реализация практически построчно повторяет имеющийся драйвер GPIO на языке Си

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

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

7. Сообщение от КО (?), 20-Июл-21, 16:05   +5 +/
"практически построчно"
И внизу полотно комментов, разбирающий и исправляющий ошибки в раст варианте...
Не вижу реальной пользы в перестановке стульев.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #11, #146

8. Сообщение от Аноним (8), 20-Июл-21, 16:06   –12 +/
Ну так C++ - это почти C, только чуть удобнее, ООП (хотя концепция ООП под вопросом), больше возможностей, но всё такое же с ушами из 80-ых.
Любил C++ до перехода на Rust.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #12, #204

9. Сообщение от OnTheEdgeemail (ok), 20-Июл-21, 16:06   –1 +/
ну так весь смысл в пресловутой безопасности раста, так что упоминание плюсов здесь просто неуместно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #13, #32

10. Сообщение от Аноним (15), 20-Июл-21, 16:06   +/
недолюбливаю я этот rust, внутреннее чутье подсказывает мне что GPIO будет теперь менее стабилен.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #23

11. Сообщение от Аноним (8), 20-Июл-21, 16:07   –7 +/
Довольно наглядно сравнивать, почему синтаксис Растп делает код приятнее. Думаю, это основная цель.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #18, #162

12. Сообщение от Аноним (12), 20-Июл-21, 16:08   +16 +/
> почти C, только чуть удобнее

коротко про анонимов с опеннет

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

13. Сообщение от Аноним (8), 20-Июл-21, 16:08   –3 +/
Не считаю это основным преимуществом Раста. Скорее как приятный бонус, да. Его сила в остальных возможностях.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

14. Сообщение от Аноним (8), 20-Июл-21, 16:08   –2 +/
Бро, я пишу на C++ больше 10 лет.
Да, чуть удобнее C, но всё та же помойка.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #15

15. Сообщение от Аноним (15), 20-Июл-21, 16:10   +10 +/
скорее всего вы просто за 10 лет не научились писать на С++.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #17

16. Сообщение от Аноним (18), 20-Июл-21, 16:11   –4 +/
Ктобы сомневался что ничего полезного он итаки не сделают. Только вон построчно и могут заменить даже не включая мозга. Но это раст детка.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #42, #48, #62, #122

17. Сообщение от Crazy Alex (ok), 20-Июл-21, 16:11   +11 +/
Скорее всего он так и пишет на С++98.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15 Ответы: #19, #52, #59

18. Сообщение от Аноним (18), 20-Июл-21, 16:12   +3 +/
О да. Сам то понял что ступил?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #54, #61

19. Сообщение от Аноним (15), 20-Июл-21, 16:13   +2 +/
Думаю да ...
но даже там можно писать хорошо, так что проблема скорее всего в руках и голове )
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #27

20. Сообщение от Аноним (20), 20-Июл-21, 16:21   +5 +/
В Rust меня отталкивает синтаксисом, но если его не учитывать, то плюсов при переходе можно набрать достаточно.

Ох, если бы не вырвиглазный синтаксис Rust...

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

21. Сообщение от йцукен (??), 20-Июл-21, 16:25   –2 +/
х.м.  а такое

.ok_or(Error::ENXIO)?

разве не вызывает панику

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

22. Сообщение от Аноним (122), 20-Июл-21, 16:26   –2 +/
Синтаксис не проблема, тем более он не так сильно отличается от си. Плюс на том же лиспе люди как-то писали и выжили.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #115, #212, #409

23. Сообщение от Аноним (23), 20-Июл-21, 16:27   +3 +/
"Не читал, но осуждаю", да?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #107

24. Сообщение от Rev (?), 20-Июл-21, 16:27   +/
Просто не используйте дженерики и ссылки с временами жизни ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #35

25. Сообщение от Rev (?), 20-Июл-21, 16:28   +3 +/
Нет
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

26. Сообщение от Аноним (26), 20-Июл-21, 16:29   +5 +/
А патч очищающий Linux от ржавчины уже есть?

Надо сделать обязательно! По аналогии с южноамериканским deblob.

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

27. Сообщение от Rev (?), 20-Июл-21, 16:30   +5 +/
Писать хорошо можно на чём угодно, только статистика говорит о том, что никто на это не способен.
Так что нужен компилятор, который перепроверит код на наличие тупости перед компиляцией.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #149, #347

28. Сообщение от SystemD (?), 20-Июл-21, 16:31   +/
Надо весь Linux переписать на Rust!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #31, #33, #140

30. Сообщение от Аноним (30), 20-Июл-21, 16:38   –4 +/
Nim > Rust
Запомните этот твит!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #69, #97, #290

31. Сообщение от ыы (?), 20-Июл-21, 16:39   +7 +/
построчно!!!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

32. Сообщение от Кир (?), 20-Июл-21, 16:39   +5 +/
Всегда убеждался, что люди, ругающие C++, его попросту не знают (или пользуют подпротухшие стандарты типа 98). Удиви меня, приведи обоснованную критику?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #51, #121, #218

33. Сообщение от Тинус Лорвальдс (ok), 20-Июл-21, 16:40   +4 +/
Ну раз надо, значит делай. Или у тебя руки способны писать только комментарии в интернете?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #91

34. Сообщение от SystemD (?), 20-Июл-21, 16:40   –2 +/
Rust это язык будущего! Быстро извенись перед всеми на каленях, только так тебя простит великий Rust! Сейчас же извенись! Сейчас же!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #36

35. Сообщение от Аноним (18), 20-Июл-21, 16:41   –1 +/
Просто не используйте раст.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #63

36. Сообщение от Аноним (26), 20-Июл-21, 16:44   –2 +/
Я и go, systemd, dbus, polkit+JS, JIT, ... так же в своей системе видеть не желаю! Та что можешь мне соснуть, стоя на коленях.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34 Ответы: #41, #45, #95

37. Сообщение от Аноним (37), 20-Июл-21, 16:44   –1 +/
Т.е. они взяли изначально нормально работающий и проверенный драйвер. Сделали замену сишных вызовав прекрасными растоструктурами и такие "во, смотрите, мы драйвер написали"

Ай да молодцы. Ай да квалификация. Вот это прорыв. Вот это уровень образования. Вот это я понимаю.

Это даже не двойка.....

Учитесь люди как надо драйвера писать.

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

39. Сообщение от макпыф (ok), 20-Июл-21, 16:48   –1 +/
пока, к счастью, не от чего очищать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

40. Сообщение от Kroz (ok), 20-Июл-21, 16:51   +6 +/
> подготовлено построчное сравнение, позволяющее понять в какие конструкции на Rust преобразован код на Си.

Превосходно!
Наконец-то можно будет код на Rust переписать на Си!

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

41. Сообщение от Великая Rust (?), 20-Июл-21, 16:51   +/
SystemD это как Chromium, ты можешь его и не ставить, но будешь соcать раком за бортом прогресса!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #90, #104

42. Сообщение от Dzen Python (ok), 20-Июл-21, 16:54   +1 +/
Ты забыл про бульон!
Теперь все растовички будут гордо тыкать ровно в 1 (один) пример драйвера на расте, который делает хоть что-то.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

43. Сообщение от Dzen Python (ok), 20-Июл-21, 16:55   +4 +/
Как в машинке "Вятка-Автомат". Жизнь-то закрутится, завертится.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #60

44. Сообщение от Аноним (37), 20-Июл-21, 16:57   –4 +/
Зачем? На нём что-то толковое разве сделали? Чтобы не текло и безапастноне падало
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40 Ответы: #64, #73, #292

45. Сообщение от Аноним (45), 20-Июл-21, 16:58   –1 +/
Так переходи на вантуз. Разве что только JIT из всего списка останется.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #110

47. Сообщение от Аноним Анонимович Анонимов (?), 20-Июл-21, 17:00   +5 +/
Полистал код драйвера. Я не знаю кому удобнее читать/писать на такой смеси крестов с явой и прочей эзотерикой.

Уж лучше чистый Си.

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

48. Сообщение от Аноним (-), 20-Июл-21, 17:03   +3 +/
> On Thu, Jul 8, 2021 at 9:49 PM Linus Walleij <linus.walleij@linaro.org> wrote:
>
>  With my GPIO maintainer hat on I'd say a GPIO driver would be quite
>  interesting to look at. We are two GPIO maintainers and Bartosz is

...
>  This is not to say I promise we will merge it or so, but I just generically
>  like new approaches to old problems so I like this whole thing
>  overall, despite being critical to some details.

...
т.е. "перепишите GPIO - мы поглядим, не обещаем что замержим"
переписали - анонимы опеннета опять недовольны.
> Ктобы сомневался что ничего полезного он итаки не сделают.

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


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

49. Сообщение от Аноним (49), 20-Июл-21, 17:04   –4 +/
Ща блевану. Притащить ржавого чтобы написать все то же самое, что уже есть на Си и работает прекрасно. ГПИО гребаный это всего навсего сраный COM порт с уартом и проститутками.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #67

50. Сообщение от Урри (ok), 20-Июл-21, 17:05   +2 +/
У-ха-ха-ха-ха-ха-ха.
Народ, зацените - для анонима построчно переписать код с С на с-подобный язык, это "круто"!

Чувак, транспайлеры были придуманы более 30 лет назад.

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

51. Сообщение от Аноним (76), 20-Июл-21, 17:05   +1 +/
Никто его полностью не знает(кроме может пары человек), потому собсна Раст и появился. Он родился чтобы все UB превратить в панику или (что предпочтительнее) в ошибку компиляции
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

52. Сообщение от Урри (ok), 20-Июл-21, 17:06   +/
На си-с-классами.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

53. Сообщение от Аноним (2), 20-Июл-21, 17:07   –2 +/
Не тупи, это хороший прогресс, который поможет разобраться в написании драйверов, демонстрирует работу драйвера и в целом инфоповод
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50 Ответы: #203

54. Сообщение от заминированный тапок (ok), 20-Июл-21, 17:09   +4 +/
это у него очень тонкий юмор
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

55. Сообщение от Аноним (55), 20-Июл-21, 17:11   +14 +/
Конкретный код про выделение памяти с обработкой ошибки выделения на си занимает 2 строки (выделил, сверил указатель с null), на Rust это какая-то дикость
```
Ref::try_new_and_init(
            device::Data::new(
                PL061Registrations {
                    gpio_chip: gpio::ChipRegistration::default(),
                },
                PL061Resources {
                    base: IoMem::try_new(res)?,
                    parent_irq: irq,
                },
                // SAFETY: We call `irqsave_spinlock_init` below.
                unsafe { IrqDisableSpinLock::new(PL061Data::default()) },
            ),
            |mut data| {
                // SAFETY: General part of the data is pinned when `data` is.
                let gen = unsafe { data.as_mut().map_unchecked_mut(|d| d.deref_mut()) };
                kernel::irqdisable_spinlock_init!(gen, "PL061::General");
            },
        )?;
```

По сути и там и там это про управление памятью, только в си оно прямое, а в Rust тебе приходится делать то же самое, но косвенными путями, с болью и мучениями. Читать такой код и понимать, что конкретно он будет делать с памятью - очень сложно, это задача из разряда "а если бы вот ты знал особенности компилятора Rust, ты бы написал лямбда-функцию и итератор вместо простого new с присваиванием, и производительность бы выросла в 1000 раз". Нужна предсказуемость, пожалуйста.

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

56. Сообщение от Аноним (56), 20-Июл-21, 17:11   +4 +/
> Т.е. они взяли изначально нормально работающий и проверенный драйвер. Сделали замену сишных
> вызовав прекрасными растоструктурами и такие "во, смотрите, мы драйвер написали"

Т.е они взяли и прочитали сообщения Грега с мейнтейнером GPIO
https://lore.kernel.org/ksummit/YOdJLYmUkoMyszO7@kroah.com/
> From: Greg KH <greg@kroah.com>
>  And really, there is no need to dig through a huge spec, try porting an existing C driver will be much easier.
> From: Linus Walleij <linus.walleij@linaro.org>
> With my GPIO maintainer hat on I'd say a GPIO driver would be quite

interesting to look at.
а надо было анонимов опеннета читать!

> Это даже не двойка.....
> Учитесь люди как надо правильно ...

не читать ссылки и подробности, а сразу высказывать Особо Ценное Анонимное Менение, ага.

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

57. Сообщение от Аноним (76), 20-Июл-21, 17:13   +4 +/
По началу есть такое чувство. Это примерно как с пробелами в питоне. Но синтаксис это лишь малая часть языка. Куда важнее сообщество вокруг, написанные библиотеки, тулинг и заложенные подходы. И надо признать что сам дизайн языка вокруг трейтов для почти всего(в том числе динамического диспатчинга) очень элегантен. После осознания этого все складывается и непривычными остаются только лайфтаймы. Но для них все остальные придуманные способы еще хуже.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #83, #207

58. Сообщение от Урри (ok), 20-Июл-21, 17:14   +5 +/
Для желающих поугорать:

Оригинал (С): https://code.woboq.org/linux/linux/drivers/gpio/gpio-pl061.c...
Ремастер (rust): https://raw.githubusercontent.com/wedsonaf/linux/pl061/drive...

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #74, #112, #113, #151, #170, #286

59. Сообщение от Аноним (2), 20-Июл-21, 17:16   +2 +/
C++17 в среднем.

Да даже в C++20 отовсюду видны уши C, нет модулей (стабильно во всех компиляторах), нет сети в стл, нет дефолт пакетного менеджера, нет дефолт системы сборки (cmake лучший, но синтаксис...), нет нормальной де/сериализации структур/классов без костылей, нет дефолт стайл гайдов (каждый лепит как придумал), да много чего нет.
Морально устаревшее нечто с 100% unsafe кодом, тонной UB, серией крэшей, которое уже ничего не спасет.

Не говорю, что в Расте прям всё есть, но с вышеперечисленным всё ок. А это уже львиная для воркфлоу.
И падал у меня ровно один раз. Когда неправильно из C данные передал :)

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

60. Сообщение от _hide_ (ok), 20-Июл-21, 17:17   +11 +/
А чем растовый вариант драйвера лучше сишного? Без стёба?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43 Ответы: #72, #76, #93, #109

61. Сообщение от Аноним (2), 20-Июл-21, 17:17   –3 +/
Где ступил? Посмотри на код, у Раста и меньше, и красивее
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #94, #143

62. Сообщение от Аноним (2), 20-Июл-21, 17:19   +/
обоже, только ослы с опеннета могут глубокий WIP с иными целями посчитать за что-то мегаважное и до* на пустом месте
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #81

63. Сообщение от Аноним (8), 20-Июл-21, 17:20   +1 +/
А более нечего, если хочется скорости.
C малофункционален, C++ легаси и перегружен, а Кристал, Зиг и прочие малопопулярны.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #78, #106

64. Сообщение от Аноним (76), 20-Июл-21, 17:20   +/
ну да, ну да. а в curl например его от нехерделать завезли видимо. и всякие хоть и хипстерские, но рвущие в бенчах ripgrep'ы и прочие cli-утилиты для всяких cloudflare и гугл
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #118

65. Сообщение от Аноним (8), 20-Июл-21, 17:21   +/
Разбери немного, перестанет откладывает
У меня тоже раньше подобная "проблема" была, но потом приходит понимание, что там всё логично, красиво и к месту
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #213

66. Сообщение от Аноним (66), 20-Июл-21, 17:21   –5 +/
может лучше на грязном Си ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47

67. Сообщение от Аноним (122), 20-Июл-21, 17:21   –3 +/
Конечно они написали тоже самое и взяли самый простой пример. Надо же было пожалеть старперов с напрочь закостенелой способностью разбираться в чем-то новом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #240

68. Сообщение от Аноним (8), 20-Июл-21, 17:22   –3 +/
Только ослы будут очищать a shit of C от прекрасного.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #98

69. Сообщение от Аноним (8), 20-Июл-21, 17:23   +4 +/
Ним вообще зеро, даже без компилятора и никогда не выстрелит.
Запомните этот твит!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #368

70. Сообщение от Аноним (8), 20-Июл-21, 17:23   –1 +/
А ты хоть так сможешь сделать?

Очевидно, что там иные цели, а не просто сделать драйвер)

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

71. Сообщение от Аноним (76), 20-Июл-21, 17:25   +1 +/
Тут код в основном про безопасную инициализацию, а не про выделение памяти. лямбды иногда пихают для ленивой инициализации, но это общий для многих языков паттерн
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #79

72. Сообщение от Аноним (-), 20-Июл-21, 17:26   +8 +/
> А чем растовый вариант драйвера лучше сишного? Без стёба?

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

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

73. Сообщение от Аноним (8), 20-Июл-21, 17:26   –5 +/
На C? Да в общем-то не особо. Всё так же течет и падает. Есть крупные проекты вроде Линукса, где титаническими усилиями заставляют его работать хоть как-то, но получается не всегда.
В отличие от Раста, который не течет и не падает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #116, #127, #177, #293

74. Сообщение от Аноним (8), 20-Июл-21, 17:27   –7 +/
Спасибо, угораю с убогого оригинала
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #84, #125

76. Сообщение от Аноним (76), 20-Июл-21, 17:28   +4 +/
Тем что большее количество UB отловлено на этапе компиляции. У кода появляются формальные гарантии
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60 Ответы: #135

77. Сообщение от CGo_one_love (?), 20-Июл-21, 17:29   +2 +/
Посмотрел сравнение. Синтаксис реально дичь. Я вижу в этом только желание выделиться, мол смотрите, сколько закорючек в одной строке делают магию (чем-то Perl напоминает, но у него ниша подходящая). Эти :: ? (()), где на Си простые человеческие строки - жесть. В таких конструкциях шансов больше накосячить уже в плане опечаток и невнимательности. Примерно как стих без рифмы, работает, но читается трудно. Даже JS лучше читается.
Вот пример - Го, просто взяли и сделали легкий текст, который в то же время очень похож на Си, и даже легче, чем Си в плане синтаксиса, и возможностей при этом сделали больше, в т.ч. выход за пределы, сборщики, структуры с методами, и прочие паники, и без ООП. Даже без знания языка понятно, что в коде происходит. Но Го не подходит для системного уровня, почему нельзя сделать язык аналогичный для системного - а потому что уже есть Си.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #99, #148, #164

78. Сообщение от Аноним (78), 20-Июл-21, 17:29   +/
> C малофункционален

Что значит малофункционален? Как бы новость о том, что на расте драйвер для линукса написали. Вот этот самый линукс написан на С. На С можно написать абсолютно любой код.

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

79. Сообщение от Аноним (55), 20-Июл-21, 17:31   +/
Код-то в основном про инициализацию, но именно этот неделимый на более мелкие куски блок кода, над результатом которого выполняется оператор ?, теоретически способен вернуть какую-нибудь информацию об ошибке при аллокации.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71

80. Сообщение от Аноним (2), 20-Июл-21, 17:33   +1 +/
Ветка же не связана с ядром, а абстрактна о языках.

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

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

81. Сообщение от Аноним (2), 20-Июл-21, 17:34   +/
прошу прощения, психануло)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62

82. Сообщение от НяшМяш (ok), 20-Июл-21, 17:36   –4 +/
А что в нём вырвиглазного? Всё такое же как и везде, плюс пара своих специфических плюшек типа времени жизни. Как минимум куда приятнее современных плюсов, в которых реально непонятно что происходит.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #154

83. Сообщение от Аноним (2), 20-Июл-21, 17:36   +/
Лайфтаймы в общем-то есть и в C/C++, но большинство погромистов на этих языках мелкие нюансы мало волнуют :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

84. Сообщение от CGo_one_love (?), 20-Июл-21, 17:37   +/
Т.е. ты оценил его по факту написания на Rust, т.к. функционал то один и тот же! Придумали для выпедрёжа этот синтаксис, а не для решения задач? Просто субкультура, какими были панки, готы, эмо... где они сейчас. Очередная иллюзия нового и надежд на избавление от проблем.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74 Ответы: #126

85. Сообщение от НяшМяш (ok), 20-Июл-21, 17:37   +/
Панику может вызвать только явный unwrap без предварительной проверки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

86. Сообщение от Аноним (23), 20-Июл-21, 17:39   –1 +/
Эммм, новость мы читаем ж@пой?
Это пример. Пример написания драйвера на расте. Для этого и взят простой драйвер, для этого и сделано построчное сравнение с сишным.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #123

87. Сообщение от НяшМяш (ok), 20-Июл-21, 17:40   –3 +/
Ну вообще вот это написано чисто из-за ядерной специфики.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #92

88. Сообщение от Аноним (88), 20-Июл-21, 17:41   +1 +/
Опять что-то переписали?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #89, #100

89. Сообщение от Аноним (-), 20-Июл-21, 17:44   –3 +/
> Опять что-то переписали?

Опять устроили в комментах перепись читающих заголовки.

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

90. Сообщение от Аноним (90), 20-Июл-21, 17:46   +/
пох это ты, мы тебя узнали
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41

91. Сообщение от Аноним (90), 20-Июл-21, 17:47   +/
>Или у тебя руки способны писать только комментарии в интернете?

На некоторых грязных сайтах есть видео отрицающее это

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

92. Сообщение от Аноним (55), 20-Июл-21, 17:48   +/
Отлавливать ошибки аллокации было бы неплохо и в userspace-приложениях, тем более раз уж Rust пытается быть безопасным как в рекламе, а не безопасным от двух багов - use-after-free и double-free
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #87 Ответы: #157

93. Сообщение от Dzen Python (ok), 20-Июл-21, 17:49   +1 +/
Если говорить серьезно - ничем.

За кодера прошел borrow checker, спаянный со парой слизанных из статических анализаторов фич, засунутых зачем-то в конпелятор. После чего бывший js-макак, он же гуру реакта, повелитель вуе, а ныне - разраб на русте, над которым завис красномордый дядька-начальник и под угрозой увольнения заставил напилить код, расправил крылья и ходит с лыбой от уха до уха, что теперь "супир бишапашно".

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

Ах, да, забыл. Руст же полностью исключает dll hell^W^W UB. Запомните, дети, UB, это такие казуистические случаи, вроде

    j = i++ + ++i;

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

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

94. Сообщение от CGo_one_love (?), 20-Июл-21, 17:53   –2 +/
Так женись на нём. Наверно заместили естественный объект красоты и малой ширины на искусственный.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #61 Ответы: #272

95. Сообщение от Аноним (370), 20-Июл-21, 17:54   –2 +/
Go вроде и ничего, но стандартная библиотека и сплайсы всё жедание осваивать его отбили. Переписал пару утилит дата-конвертеров с питона на го и больше не трогал
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #111, #216

96. Сообщение от CGo_one_love (?), 20-Июл-21, 17:56   +6 +/
Панику зрительных нервов?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

97. Сообщение от Аноним (97), 20-Июл-21, 17:57   –1 +/
2 опечатки в слове Zig
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30

98. Сообщение от CGo_one_love (?), 20-Июл-21, 18:01   –1 +/
Без Си ты бы даже не смог написать это сообщение. У тебя в смартфоне и компе всё провоняло, получается.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68 Ответы: #145

99. Сообщение от Аноним (140), 20-Июл-21, 18:02   –1 +/
Уже делают zig. Он как С только модный молодежный.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #171

100. Сообщение от Аноним (140), 20-Июл-21, 18:04   +/
Пытаются показать что могут, но до сих пор не могут внятно сказать зачем.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88

101. Сообщение от _kp (ok), 20-Июл-21, 18:04   –5 +/
В с++ инициализацию структур до сих пор тормозят на уровне 90х годов, что вынуждает в с++ проекте всё равно тянуть  си файлы...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #223

102. Сообщение от user90 (?), 20-Июл-21, 18:05   +5 +/
Учебный проЭкт? Ну ладно, пусть будет, но в ядре-то он нахрен?))
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #352

103. Сообщение от Аноним (103), 20-Июл-21, 18:06   +/
https://www.opennet.ru/opennews/art.shtml?num=54970
> Ещё одной проблемой стали попытки использования вычислений с плавающей запятой или 128-битными типами, что не является допустимым для таких окружений, как ядро Linux. Это оказалось более серьёзной проблемой, так как в данный момент базовая (core) библиотека Rust неделима и представляет собой один большой blob - в ней нет возможности запросить только некоторые из возможностей, предотвратив использование той или иной проблемной функциональности. Решение проблемы может потребовать внесения изменений в компиляторе rust и библиотеки, при том, что на данный момент у команды ещё нет стратегии, как реализовать модульность библиотек языка.

куда интересней как они вот это будут решать

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

104. Сообщение от Аноним (104), 20-Июл-21, 18:08   +3 +/
> SystemD

Это не прогресс, а регрес в безопасности.

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

105. Сообщение от Аноним (105), 20-Июл-21, 18:09   –1 +/
Zig модный молодёжный, простой приятный, великий китайский C заменитель язык Xi кнопка УДАР!
Ответить | Правка | Наверх | Cообщить модератору

106. Сообщение от _kp (ok), 20-Июл-21, 18:13   +/
> C малофункционален

У Вас устаревшие сведения

>C++ легаси и перегружен

Никто не заставляет использовать всё.
Даже в маломощных встраиваемых решениях, грамотное использование С++ повышает скорость, надёжность, и как ни странно сокращает объём кода.

Ps: отношение к Rust? Нейтральный игнор. Меня интересует переносимость кода как между различными ОС, так и работа без ОС, и прямо сейчас.


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

107. Сообщение от Аноним (107), 20-Июл-21, 18:21   +1 +/
А тут к бабке не ходи понятно что проблем станет больше. Например со сборкой этих драйверов на новом тулчейне на разных платформах и версиях этого раста.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #133

109. Сообщение от Ordu (ok), 20-Июл-21, 18:25   +4 +/
Он сделан не для того, чтобы быть лучше. Он создан для того, чтобы посмотреть на более реалистичный пример rust'а в ядре, нежели тот первый пример модуля, который ничего полезного не делал.

Невозможно осмысленно создавать инструмент, не делая ничего этим инструментом. Можно спрашивать "зачем гонять ракетный двигатель на стенде, толкая им бетонную стену" -- действительно, зачем? Какой в этом смысл? Дык вот в этом примерно тот же смысл, какой был в написании этого драйвера.

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

110. Сообщение от Аноним (104), 20-Июл-21, 18:27   –1 +/
У меня и GNU/Linux без этого списка работает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45

111. Сообщение от Аноним (104), 20-Июл-21, 18:31   +3 +/
> Go вроде и ничего

Думал также, увидел это:

https://gitweb.gentoo.org/repo/gentoo.git/tree/net-p2p/go-ip...

и сразу изменил свое мнение.

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

112. Сообщение от ng (ok), 20-Июл-21, 18:35   –1 +/
> Для желающих поугорать:

Существует всего два вида программ: большие и маленькие. Последние не могут работать при наличии ошибок.

Похоже, rust создан для разработки последних.

imho

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

113. Сообщение от Онаним (?), 20-Июл-21, 18:37   +/
Да пипец какой-то.
Даже этот полухеллоуворлд на сях в разы более читабелен, сразу понятно, что делается, где и зачем, в отличие от.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #267

114. Сообщение от Плюсовик (?), 20-Июл-21, 18:43   +1 +/
Ужас! Даже добавить нечего.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111

115. Сообщение от Ванёк (?), 20-Июл-21, 18:52   +5 +/
Не выжили
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #410

116. Сообщение от Ванёк (?), 20-Июл-21, 18:54   +2 +/
Прежде чем писать, что раз подумай, а потом подумай ещё 1000 раз!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73

118. Сообщение от Аноним (118), 20-Июл-21, 18:55   +1 +/
Рипгреп-то по функциональности простой греп догнал или всё также уровня хелловорлда? Специально под тесты-то заточить это одно, а дальше всё.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #152

119. Сообщение от деанон (?), 20-Июл-21, 19:03   –1 +/
В чем проблема, пишите на java и c#
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59 Ответы: #139

120. Сообщение от Ванёк (?), 20-Июл-21, 19:03   +5 +/
Опять занимаются велосипедостроением вместо полезных дел
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #132

121. Сообщение от iLex (ok), 20-Июл-21, 19:08   –6 +/
Таких лютых проблем с зависимостями, как в C++, нет больше нигде. Иногда быстрее написать собственную библиотеку, чем разобраться, как заставить собраться уже существующую. Выберите любой крупный проект на github, сделайте git clone, попробуйте собрать. С первого раза не соберётся никогда и ничего (а к ряду проектов написаны целые тома с инструкциями по сборке, это по-вашему нормально?).
C++ всё ещё не может в нормальную кросс-компиляцию - даже банально собирать код под винду, сидя на Linux - это адский ад (а что-нибудь типа OpenCV вы и вовсе никогда не соберёте кросс-компиляцией, только ставить контейнер с целевой осью и собирать в нём).
Пока весь мир на 98% состоял из винды на x86, это было норм. Но в мире, где уже есть пачка платформ и каждый год добавляются новые, кодить на этом будет разве только мазохист, потому что задолбаетесь зоопарк платформ поддерживать с вашей сишкой.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #178, #198, #222, #248, #249

122. Сообщение от Аноним (122), 20-Июл-21, 19:23   +4 +/
Ну да, настолько бесполезная вещь что в переписке разрабы благодарят проделанную работу "Thanks a lot, this looks extremely helpful!" и задают разные вопросы и получают на них ответы.
Но кто они такие по сравнению с гуру опеннета...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

123. Сообщение от деанон (?), 20-Июл-21, 19:24   –2 +/
Ты понимаешь как пишется софт?! Проекция в чужой синтаксис не делает программу родной и показать оно не может ничего, кроме говнокодинга
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86 Ответы: #124

124. Сообщение от деанон (?), 20-Июл-21, 19:26   +1 +/
Что, кстати, многое говорит о квалификации этих программистов
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #123 Ответы: #130

125. Сообщение от Аноним (37), 20-Июл-21, 19:29   +1 +/
Действительно, после раста посмотришь на оригинал и ржать хочется насколько криво на расте всё получается.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74

126. Сообщение от Аноним (37), 20-Июл-21, 19:29   +/
Он не оценил. У него память раст сожрал и случилась растоистерика.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84

127. Сообщение от Аноним (37), 20-Июл-21, 19:31   +1 +/
Ну да, у растоманов и с логикой смотрю плохо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73

128. Сообщение от Аноним (37), 20-Июл-21, 19:32   –1 +/
Прикинь а. У меня нет проблем ни с памятью ни с логикой.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #70 Ответы: #131, #150

129. Сообщение от Анончик (?), 20-Июл-21, 19:43   +3 +/
>На С можно написать абсолютно любой код

Громкое заявление, покажи верификатор.

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

130. Сообщение от Аноним (23), 20-Июл-21, 19:44   +1 +/
А ты понимаешь, как пишутся модули ядра? В этом примере половина кода - привязка к ядерным api, что в растовском, что в сишном случае, а вторая половина простая как табуретка, опять же в обоих случаях.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #124 Ответы: #176

131. Сообщение от Аноним (23), 20-Июл-21, 19:45   +1 +/
Что ты тогда на опеннете делаешь?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #128

132. Сообщение от Аноним (23), 20-Июл-21, 19:49   –3 +/
Полезные дела для тебя оставили.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #120

133. Сообщение от Аноним (23), 20-Июл-21, 19:52   +/
По сравнению с задачей "обеспечить сборку ядра clang-ом", которую решали лет 5 как минимум - какой-то раст - это вообще семечки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #107 Ответы: #252

134. Сообщение от _hide_ (ok), 20-Июл-21, 20:17   +1 +/
Да, но это же не показательный вариант. Никаких фишек раста не использовано. Давайте ещё на паскале, го, свифте и чистом llvm asm будем модули писать и выставлять их? Причем на первых 3х это уже давно делают.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109 Ответы: #138, #153

135. Сообщение от _hide_ (ok), 20-Июл-21, 20:18   +2 +/
Вы вообще пример драйвера на смотрели?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76

136. Сообщение от Ananimasss (?), 20-Июл-21, 20:34   –4 +/
Простите экс вебмакаку, но что казуистического в примере?
Прибавится единичка к  i до сложения, выполнится сложение и запишется в j, после прибавится 1 к i.
Где-то это не так?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93 Ответы: #158, #197

137. Сообщение от Аноним (137), 20-Июл-21, 20:36   +2 +/
>> Особенностью драйвера является то, что его реализация практически построчно повторяет имеющийся драйвер GPIO на языке Си.

То есть вместо "бесполезного драйвера" они решили положить другой бесполезный драйвер?
Интересный у них подход. Писать код только ради того, чтобы писать код, а не для того, чтобы приносить пользу людям.

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

138. Сообщение от Линус (?), 20-Июл-21, 20:39   –1 +/
Сделай.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #134 Ответы: #181

139. Сообщение от Аноним (139), 20-Июл-21, 20:45   +5 +/
Вот это контраргумент, уделал его, уничтожил.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #119 Ответы: #174

140. Сообщение от Аноним (140), 20-Июл-21, 20:47   +/
А Rust надо переписать на Linux!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #221

141. Сообщение от Аноним (140), 20-Июл-21, 20:48   +2 +/
Драйвера и на джаваскрипт можно писать. Давайте покажите класс что вы можете.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #210

143. Сообщение от danonimous (?), 20-Июл-21, 20:54   +4 +/
Они вероломно использовали одну хитрость, чтобы код на rust занимал меньше строк - не переносили скобки на новую строку :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #61 Ответы: #370

144. Сообщение от Аноним (144), 20-Июл-21, 20:55   +/
>Он сделан не для того, чтобы быть лучше. Он создан для того, чтобы посмотреть на более реалистичный пример rust'а в ядре

Осталось только написать остальные более реалистичные примеры: работу с VFS на примере реализации ФС, работу с потоками, сетью, памятью и т.д.

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

145. Сообщение от Аноним (-), 20-Июл-21, 21:01   –4 +/
> Без Си ты бы даже не смог написать это сообщение.

Мог, мог. Колибря, Редокс, современные браузеры на плюсах? Не, не слышал!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #98 Ответы: #255, #277, #279

146. Сообщение от proninyaroslavemail (ok), 20-Июл-21, 21:03   +/
Ну так это не предполагается для текущих драйверов (именно из-за ошибок при переписывании того что уже работает), а для якобы новых.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

147. Сообщение от Ordu (ok), 20-Июл-21, 21:05   +/
>>Он сделан не для того, чтобы быть лучше. Он создан для того, чтобы посмотреть на более реалистичный пример rust'а в ядре
> Осталось только написать остальные более реалистичные примеры: работу с VFS на примере
> реализации ФС, работу с потоками, сетью, памятью и т.д.

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

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

148. Сообщение от proninyaroslavemail (ok), 20-Июл-21, 21:06   –1 +/
Так раст это идейный продолжитель C++, но никак не Си. Ни в плане абстракций, ни в плане синтаксиса. Мешанины в плюсах не меньше, чем в расте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #173, #205

149. Сообщение от Аноним (149), 20-Июл-21, 21:07   +2 +/
Только раст на эту роль не претендует
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

150. Сообщение от Аноним (-), 20-Июл-21, 21:09   +1 +/


> Прикинь а.

Верим-верим.
> Сделали замену [b\сишных вызовав прекрасными растоструктурами

...
> У меня нет проблем ни с памятью ни с логикой.

Только с чтением/аглицким, да.
Ну и еще - с азами и прочими "мелочами".

А так-то да, тут каждый второй аноним - как минимум, Лев Толстой и заслуженный разработчик ядра. По крайней мере, на словах.


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

151. Сообщение от Аноним (151), 20-Июл-21, 21:10   +/
Да, дичь как она есть.
Через кровь пот и слезы к железу.
Зачем полумеры?
Берите и переписывайте все ядро на расте.
И варитесь в своем уютном котле.
Я лично в гробу видел поддерживать ядро написанное на двух языках и ломать себе мозг когда вот такое встретится.
Это хуже чем С.
Даже асм и то понятнее.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

152. Сообщение от Аноним (-), 20-Июл-21, 21:12   +2 +/
> Рипгреп-то по функциональности простой греп догнал или всё также уровня хелловорлда?

А че так скромно, без конкретики и "по пунктам"? Не стесняйтесь!
> Специально под тесты-то заточить это одно, а дальше всё.

Довольно неоригинальная отмазка.


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

153. Сообщение от Ordu (ok), 20-Июл-21, 21:12   +1 +/
> Да, но это же не показательный вариант. Никаких фишек раста не использовано.

Это что за фишки такие?

#[derive(Default)] -- это не такая фишка?

А Ref<T>, для работы с ref_count -- это не такая фишка? Между прочим в списке рассылки трындец обсуждение, ядрёным C программистам объясняют, как это может работать. Ты, кстати, тоже можешь почитать просветиться. Вопросы к коду задают серьёзные люди, а не анонимы опеннета, и отвечают серьёзно, а не как я тут.

impl amba::Driver for PL061Device
...
impl power::Operations for PL061Device
...
module_amba_driver! {
    type: PL061Device,
    name: b"pl061_gpio",
    author: b"Wedson Almeida Filho",
    license: b"GPL v2",
}

Это не те фишки раста, которые ты ищешь? Если нет, то каких фишек ты ждёшь от раста? Чтобы он скомпилировал код вида "please, rustc, compile this line into a real kernel driver"?

> Давайте ещё на паскале, го, свифте и чистом llvm asm будем
> модули писать и выставлять их? Причем на первых 3х это уже
> давно делают.

Пиши, тебе что кто-то запрещает?

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

154. Сообщение от Аноним (149), 20-Июл-21, 21:15   –1 +/
жабоскриптер   осуждает с++ и хвалит раст? Не удивлён
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82 Ответы: #189

156. Сообщение от Аноним (-), 20-Июл-21, 21:18   +1 +/
> https://www.opennet.ru/opennews/art.shtml?num=54970
>> Ещё одной проблемой стали попытки использования вычислений с плавающей запятой или 128-битными типами, что не является допустимым для таких окружений, как ядро Linux. Это оказалось более серьёзной проблемой, так как в данный момент базовая (core) библиотека Rust неделима и представляет собой один большой blob - в ней нет возможности запросить только некоторые из возможностей, предотвратив использование той или иной проблемной функциональности. Решение проблемы может потребовать внесения изменений в компиляторе rust и библиотеки, при том, что на данный момент у команды ещё нет стратегии, как реализовать модульность библиотек языка.
> куда интересней как они вот это будут решать

Решать что? Проблемы перевода очередного пересказа "о расте"?


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

157. Сообщение от Ordu (ok), 20-Июл-21, 21:19   –1 +/
> Отлавливать ошибки аллокации было бы неплохо и в userspace-приложениях, тем более раз
> уж Rust пытается быть безопасным как в рекламе, а не безопасным
> от двух багов - use-after-free и double-free

У тебя есть use-case для отлова ошибок аллокации в userspace-приложениях? По-моему опыту в linux'е без oom-killer'а, лишь бы сдохли все побыстрее, кто выжрал столько памяти. Если когда они продерутся через всё это и дождутся NULL в качестве результата malloc, ещё вот не хватало, чтобы они пытались бы провести какой-то рекавери после ошибки. Пускай ДОХНУТ суки.

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

158. Сообщение от ананим.orig (?), 20-Июл-21, 21:24   –6 +/
> Прибавится единичка к  i до сложения, выполнится сложение и запишется в j, после прибавится 1 к i.

как откроете для себя (например) переопределение операторов, не будете столь категоричны.

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

159. Сообщение от Аноним (208), 20-Июл-21, 21:28   +/
Уважаемые любители раста, Линус Торвальдс привествует вас и передает вам "f*ck you!"
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #166

162. Сообщение от Аноним (162), 20-Июл-21, 21:37   –1 +/
Не знаю не С, не Rust
Но код на С выглядит понятнее О_о
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #163

163. Сообщение от Аноним (-), 20-Июл-21, 21:48   +/
> Не знаю не С, не Rust

Не стесняйся, большей части местных "анти" комментаторов это никак не мешает.


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

164. Сообщение от Аноним (208), 20-Июл-21, 21:52   –1 +/
Drew DeVault пилит подобный "секретный язык" https://drewdevault.com/2021/05/24/io_uring-finger-server.html
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #262

166. Сообщение от Аноним (166), 20-Июл-21, 21:55   –1 +/
Золотой человек чтобы мы без него делали?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #159

170. Сообщение от Аноним (208), 20-Июл-21, 22:03   +/
Вот автор на С оставил автограф, а как же растоман? Боится ручки испачкать? Потом ведь за свю жизнь не отмоется.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

171. Сообщение от Аноним (208), 20-Июл-21, 22:04   +/
В Россее могут запретить.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #99 Ответы: #192

172. Сообщение от Аноним (208), 20-Июл-21, 22:06   +/
Хехехе. Мне нравится как мэйинтейнеры ядра одним ленивым взглядом находят труднорешаемые проблемы для хипстеров.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #103

173. Сообщение от Аноним (37), 20-Июл-21, 22:10   +/
Меньше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #148

174. Сообщение от деанон (?), 20-Июл-21, 22:13   –1 +/
Ну, начнем с того, что у него в предложении совершенно несвзанные вещи в качестве "аргументов"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #139 Ответы: #238

175. Сообщение от Dzen Python (ok), 20-Июл-21, 22:16   +2 +/
Мне одному это очень сильно напоминает работу по кодингу от какой-нибудь девочки-зубрилки курсе на 2-3м любого ИТ-вуза нашей необъятной?

Поясняю: у каждого в группе она была - девушко, хорошистка, но при этом тупая как валенок в профильном предмете и выезжающая только на КВН, самодеятельности, я-волонтёрко-и-ниипёт, просиживанию штанов в профкоме и/или упорным лизанием задниц всем преподам текущего семестра. Которая лабы по тому же кодингу сдавала так же. Ну, вытягивала из реально шарящего студента накаляканный код, просто его красивенько форматировала, меняла пару переменных, а потом этот подсрочник пыталась сдать, падая на самых элементарных вопросах, вроде "зачем вообще нужна эта переменная" или "почему здесь заюзан алгоритм Маршалла-Фуллера вместо Клефа-Брайта?".

Блин, кто-нибудь из местных неананасных неыкспердов с расторассадников, объясните мне сакральную причину переделки в виде подстрочной трансляции в стиле той зубрилко, что ночью перед сдачей уродует код ботана, а не в виде оригинальной реализации GPIO? Где можно и язык показать с лучшей стороны, и вообще? Почему? Или все гуру раста полыхают на опеннете, в святой войне против Ыкспердов?

Нет, тут уже сравнивали эту реализацию с тестовым стендом двигла. Хорошо. Зачем брать уже миллион лет как зарекомендовавший себя ЖРД, стоящий последние полмиллиона лет буквально на всем, от пылесосов до Гиганских Космических Меха-Покорителях Вселенных, заменять каждую детальку кривой китайской копией, а заем снова впихивать на стенд? Не разумнее на основе этого двигла сделать (вырастить?) какой-нибудь Биосовместимый Ветропускающий Двигатель на горохе? Который делает ровно то же, но показывает преимущества органики перед металлом?

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

176. Сообщение от деанон (?), 20-Июл-21, 22:18   –1 +/
Понимаю, но, что тогда это должно продемонстрировать, что нужно писать на си?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #130 Ответы: #184

177. Сообщение от Аноним (122), 20-Июл-21, 22:23   +/
Не, сишечка не падает. Просто бажина из-за переполнения буфера 15 лет живет в ядре и позволяет получить рут. А надежно и ничего не падает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73

178. Сообщение от деанон (?), 20-Июл-21, 22:31   +/
Ля, проблемы с зависимостями. Мы ещё посмотрим на лешаси Раста, лол
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #121

179. Сообщение от Аноним (122), 20-Июл-21, 22:39   +3 +/
Причина простая - показать си разрабам ядра как это выглядело бы на rust - такой себе розеттский камень. И они (в отличие от оппенетовских диванных кодеров) этим остались довольны. Можно посмотреть дальнейшую переписку в рассылке - там задают вопросы, обсуждают почему и как.
Если его переписать не транслирую (напр. поменять структуры данных где это можно) - то им будет очень сложно понять, потому что им этот язык вообще не знаком. Там нет каких-то зубодробительных фишек типа, только минимум чтобы оно работало точно так же. И этого уже достаточно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #175

181. Сообщение от Аноним (181), 20-Июл-21, 22:48   +2 +/
> Причем на первых 3х это уже давно делают.
> ...уже давно делают...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #138

182. Сообщение от Аноним (181), 20-Июл-21, 22:50   –3 +/
Растаманы пытались всё это сделать, но редох начал течь... Поэтому переключились на линух.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #144 Ответы: #199

183. Сообщение от Аноним (207), 20-Июл-21, 22:51   –1 +/
Поигравшись немного с растом я пришёл к следующему выводу.

1. Раст - сырой нестабильный язык, пользоваться которым на данный момент - боль и унижение. Потому что нет алсолютно необходимых примитивов, которые есть в других языках, потому что их запретил borrow-checker.

2. Из-за этого сообществу и Foundation приходится постоянно изобретать новые примитивы и идиомы, взамен тех, что нельзя использовать.

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

4. Когда примитивы появляются, счастью каждого разработчика нет предела. Можно выкинуть старое неудобное громозкое говно. Поэтому все сидят исключительно на nightly. Стабильные и бета  бесполезны - даже если лично вы предпочтёте извратиться, авторы других ящиков извращаться не будут.

5. Из-за таких вот постоянных подарков разработчикам раст и является самым любимым языком с самыми фанатичными фанатами.

6. Не смотря на быстрое развитие, это всё равно что вычерпывание моря. Пригодным для разработки раст станет нескоро. Но когда станет - всех порвёт. Если раньше профессию программиста не упразднят и не переложат на GPT-5.

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

184. Сообщение от Аноним (23), 20-Июл-21, 22:54   +1 +/
Это сделано
> Для разработчиков, желающих познакомиться с созданием драйверов на Rust

Не твое это.

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

186. Сообщение от Урри (ok), 20-Июл-21, 23:00   +1 +/
Какой отбордый бред. Смузихлеб, это все десятки лет есть в библиотеках!

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

> Не говорю, что в Расте прям всё есть, но с вышеперечисленным всё ок. А это уже львиная для воркфлоу.

"Аааааа, перекодировщик видео не включен в стандартную библиотеку, бидабида, я не умею поюзать гит и систему сборки, мне надо чтобы все через карго ставилось, ааааааааа, мама, у миня ни палучаится быть праграмистаааамммм!!!"

ffmpeg куда записывать будешь, гений, в стандартную библиотеку? А sqlite3 тоже? Развелось неучей, ска.

А хотя я понял, тебя пугает разнообразие? Ты не в состоянии все время учить новые вещи? Ну так иди сайты клепай, в программировании то что забыл?

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

187. Сообщение от Аноним (207), 20-Июл-21, 23:05   +/
>"почему здесь заюзан алгоритм Маршалла-Фуллера вместо Клефа-Брайта?".

И почему же? Я вот погуглил, если по первому гугл нашёл парочку ссылок, то по второму не нашёл ничего. Также я очень сомневаюсь, что в универах на лабах нужно накодить алгоритм планирования процессов, и ещё обосновать. Это вообще на многозадачную ОС тянет, а это работа явно не для лабы. И даже внутри ядра ОС планирование процессов вообще нужно только разработчику планировщика процессов и юзерспейсных потоков, то есть почти ни кому не нужно, что есть в стандартной библиотеке и ОС - то и будем использовать.

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

188. Сообщение от Аноним (122), 20-Июл-21, 23:07   +3 +/
Ну, ты из 6 пунктов целых 4 посвятил "абсолютно необходимым примитивам", но не назвал ни одного... Или примитивы твои слишком известны, чтобы ты их называл?)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #183

189. Сообщение от НяшМяш (ok), 20-Июл-21, 23:07   –1 +/
Естественно, раст больше на жеес\теес похож, чем плюсы ). Тупо на нём легче писать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #154 Ответы: #208

191. Сообщение от Урри (ok), 20-Июл-21, 23:08   +2 +/
Два неуча.

В С не регламентирован порядок вычисления большинства операндов выражений (за исключением && и ||). Поэтому выражение i++ + ++i может быть вычислено как слева направо, так и справа налево, так еще и результат i++ может быть записан в i после вычисления всего выражения.

Аналогичная беда с выражением func(i++, i++);

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

192. Сообщение от Аноним (207), 20-Июл-21, 23:14   +/
Та, что у нацистов, пишется по-другому.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #171 Ответы: #296

193. Сообщение от Аноним (193), 20-Июл-21, 23:15   –6 +/
У Си с его malloc и проверкой на NULL (ага, NULL, а не null) есть маленькая проблемка. Веделенная память содержит "мусор", т.е. неизвестный набор байт и язык Си не проверит за программиста, не забыл ли тот корректно инициализировать все поля. Без такой инициализации в дальнейшем может прилететь.

Громоздкость инициализации в Rust гарантирует что в структуре Data будут только корректные значения, плюс дальше компилятор не даст ни лажу туда записать, ни время жизни нарушить.

Что-то типа https://ru.scribd.com/document/403214728/Modern-Memory-Safet... только бесплатно

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

194. Сообщение от None (??), 20-Июл-21, 23:18   +/
Когда мы видим одну операцию присваивания, а реально их три - да, фигня получается.
Зато удобно автоинкрементную/автодекрементную индексацию как бы описывать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93

195. Сообщение от Аноним (-), 20-Июл-21, 23:19   +2 +/
> Не разумнее на основе этого двигла сделать (вырастить?) какой-нибудь Биосовместимый
> Ветропускающий Двигатель на горохе? Который делает ровно то же, но показывает
> преимущества органики перед металлом?

Вместо ваяния сего пафосного опуса - прошел бы по ссылке lkml и прочитал предложение Грега взять в качестве примера имеющийся драйвер и предложение Линуса (не Т, но не суть важно) взять драйвер GPIO.
Но это было бы слишком скучно и вообще, читать дальше заголовка - невместно для уважающего себя опеннетчика, да?


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

196. Сообщение от Аноним (193), 20-Июл-21, 23:19   –3 +/
а ты точно с растом поигрался?)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #183 Ответы: #215

197. Сообщение от Anonymoustus (ok), 20-Июл-21, 23:20   +/
Как там у вас?


let a = 1
undefined


Так?

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

198. Сообщение от Урри (ok), 20-Июл-21, 23:21   +1 +/
А можно пример такого проекта? А то я вполне спокойно собираю хромиум, например. Да и кучи других проектов тоже.

> C++ всё ещё не может в нормальную кросс-компиляцию - даже банально собирать код под винду, сидя на Linux - это адский ад

Там выше уже было очень справедливо сказано: "Всегда убеждался, что люди, ругающие C++, его попросту не знают".

Почему я спокойно собираю свою либо под... секундочку... вот: (aarch64 armv5tel armv5te armv6hf armv6l armv7hf armv7l i686 mipselhf mipsel mipshf mips ppc64le ppc64 ppcle ppc). А это не хелловоролд, там несколько десятков тысяч строк, включая платформозависимые части для винды, ведроида, макоси?

c/c++ единственный (!) компилятор, который действительно умеет в кросскомпиляцию. И единственный, который соберет и запустит твой helloworld без каких-либо изменений на всем, на чем вообще можно что-то запускать.

> а что-нибудь типа OpenCV вы и вовсе никогда не соберёте кросс-компиляцией

А при чем тут C++ к системе сборки, которую выбрали ребята из opencv? cmake по твоему то же самое, что с++ компилятор? с++ то как раз прекрасно код opencv собирает.

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

199. Сообщение от None (??), 20-Июл-21, 23:21   –1 +/
redox течёт? Ахаха, вот и цена этому продукту. Только вот уже несколько языков (D и nim точно) зашкварились, начав тащить к себе эту дрянь - "концепцию владения".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #182 Ответы: #206

200. Сообщение от Anonymoustus (ok), 20-Июл-21, 23:21   +/
На PDP тоже так было, великий гуру?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #191 Ответы: #328

201. Сообщение от Урри (ok), 20-Июл-21, 23:24   –5 +/
Ух ты, в расте, оказывается, есть ref_count, который в С существует... дайте вспомнить сколько... да уже лет 30, наверное. Если не больше.

Одна из библиотек, которые я давно использую:
https://github.com/Snaipe/libcsptr

Наслаждайся:

struct log_file *open_log(const char *path) {
    smart struct log_file *log = shared_ptr(struct log_file, {0}, close_log);
    if (!log) // failure to allocate
        return NULL; // nothing happens, destructor is not called

    log->fd = open(path, O_WRONLY | O_APPEND | O_CREAT, 0644);
    if (log->fd == -1) // failure to open
        return NULL; // log gets destroyed, file descriptor is not closed since fd == -1.

    return sref(log); // a new reference on log is returned, it does not get destoyed
}

int main(void) {
    smart struct log_file *log = open_log("/dev/null");
    // ...
    return 0; // file descriptor is closed, log is freed
}


---
они изобрели смарт-поинтеры, ухахахахахахахах.

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

202. Сообщение от деанон (?), 20-Июл-21, 23:24   +/
Офигенная аргументация, ага, так держать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #184

203. Сообщение от Урри (ok), 20-Июл-21, 23:25   –3 +/
Инфоповод, согласен. Я три программерских чата заставил ржать аки лошади.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53 Ответы: #400

204. Сообщение от None (??), 20-Июл-21, 23:28   +/
главная проблема C++ - шаблоноёбство, из-за которого при наличии развёрнутой системы типов начинается фантастическое раздувание кода.
но в компилируемом языке иначе нельзя, либо делаем разные куски кода, либо придётся вводить условия, косвенные обращения и т.п.
С другой стороны, где золотая середина, сэкономить на лишнем обращении к памяти, или сэкономить на загрузке в кэш очередного куска кода.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

205. Сообщение от Урри (ok), 20-Июл-21, 23:31   –2 +/
Меньше. С++ вполне логичный в плане синтаксиса и строгий. Раст же постоянно перестраивают, потому что то там то там что-то не вяжется.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #148 Ответы: #253

206. Сообщение от Аноним (-), 20-Июл-21, 23:31   +1 +/
> redox течёт?

Нет, в оригинале 4 года назад было:
> The Redox kernel does not have the structures in place to allow freeing memory.
> The userspace allocator can free, and then reuse, but anything allocated with sbrk from the kernel will be lost.

просто местные экспертусы - не умеют в разработку и/или английский ...

> Ахаха, вот и цена мнению местных экспертусов

пофиксил.

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

207. Сообщение от Аноним (207), 20-Июл-21, 23:34   –3 +/
Но в питоне не навязывают пробелы. Это в ниме и ямле навязывают.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

208. Сообщение от Аноним (208), 20-Июл-21, 23:40   +1 +/
Каким местом он на них похож?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #189 Ответы: #276

209. Сообщение от Ordu (ok), 20-Июл-21, 23:44   +/
> Ух ты, в расте, оказывается, есть ref_count, который в С существует... дайте
> вспомнить сколько... да уже лет 30, наверное. Если не больше.

ref_count существовал до всех этих ваших C, не надо его недооценивать.

> Одна из библиотек, которые я давно использую:
> https://github.com/Snaipe/libcsptr

И чё?

> они изобрели смарт-поинтеры, ухахахахахахахах.

Демонический смех у тебя ничё так выходит, мне понравилось. Я б рекомендовал басов немного добавить, хотя в районе 3кГц очень неплохое присутствие. Но, и всё же, мне неясно, каким таким образом тебе удалось придти к выводу об изобретении смарт-поинтеров разработчиками rust?

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

210. Сообщение от Аноним (208), 20-Июл-21, 23:48   +3 +/
Ну зачем ты так сразу? Альтернативно одаренные трансгендерные кодеры еще не отошли от проблемы в leftpad (помним (с)), а ты сразу драйвер.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #141 Ответы: #230

211. Сообщение от Аноним (208), 20-Июл-21, 23:53   +2 +/
> Поясняю: у каждого в группе она была - девушко, хорошистка,

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

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

212. Сообщение от Аноним (212), 20-Июл-21, 23:58   +1 +/
У lisp синтаксис элементарный, он весь на основе sexp, в отличии от мешанины в rust.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

213. Сообщение от Аноним (212), 21-Июл-21, 00:00   +/
Нет, там выбраны очень дурацкие символы и конструкции для выражения смысла.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65 Ответы: #384

214. Сообщение от псевдонимус (?), 21-Июл-21, 00:20   –3 +/
>построчно повторяющий

И после этого кто-то удивляется травле и глумлением над нарко..оастоманами.

Ну да и пусть. Линукс все равно спасать нет смысла. Да и нечего там спасать. Все, что в нем есть ценного драйвера.

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

215. Сообщение от Аноним (212), 21-Июл-21, 00:21   +1 +/
а ты точно читать умеешь?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #196

216. Сообщение от Аноноша (?), 21-Июл-21, 00:22   +/
> но стандартная библиотека всё жедание осваивать его отбили

Что с ней не так?

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

217. Сообщение от псевдонимус (?), 21-Июл-21, 00:30   –1 +/
Именно!

За это расоноркоманов и не любят.

Может в вэб этому убожество нашлось бы место, но мазила Рип, а в вэб пхп, питон и го. И "умерший" перл, внезапно.

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

218. Сообщение от Аноним (218), 21-Июл-21, 00:58   +/
Ну сходи в рассылку ядра и ответь на критику Линуса. Или комменты на опеннете - твой потолок?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

219. Сообщение от Аноним (218), 21-Июл-21, 01:17   +/
Линус ещё 2 недели назад написал:
"At least the argument is that Rust _fixes_ some of the C safety
issues. C++ would not."

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

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

221. Сообщение от Аноним (221), 21-Июл-21, 01:29   –4 +/
Не понятно, что разработчикам, продвигающим Rust, мешает форкнуть ядро и построчно переписать его. И вообще может кто-то из них сможет транслятор сделать из C в Rust?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #140 Ответы: #259, #266

222. Сообщение от Кир (?), 21-Июл-21, 01:38   +/
Удивительно, у меня в системе процентов 15-20 софта собрано из исходников без единой проблемы. Что я делаю не так?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #121 Ответы: #250

223. Сообщение от Кир (?), 21-Июл-21, 01:41   +2 +/
Вот, типичнейшая иллюстрация к тезису о дремучести критиканов C++. Человек застрял на уровне C и по нему судит о C++.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #101 Ответы: #428

224. Сообщение от Я (??), 21-Июл-21, 01:58   +/
вообще-то именно так и делают гайды для тех кто хочет писать драйвер на расте но умеет только на си.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50 Ответы: #260, #380

225. Сообщение от Аноним (-), 21-Июл-21, 02:30   +1 +/
https://lore.kernel.org/ksummit/YOdJLYmUkoMyszO7@kroah.com/
>> From: Greg KH <greg@kroah.com>
>>  And really, there is no need to dig through a huge spec, try porting an existing C driver will be much easier.
>> From: Linus Walleij <linus.walleij@linaro.org>
>> With my GPIO maintainer hat on I'd say a GPIO driver would be quite interesting to look at.
>>>построчно повторяющий
> И после этого кто-то удивляется травле и глумлением над нарко..оастоманами.

Перепись "не читавших, но ценное мнение имеющих" уже есть выше.

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

226. Сообщение от Аноним (226), 21-Июл-21, 02:40   –1 +/
> j = i++ + ++i;

Если i было равно 1 до начала этой операции, то по-моему после нее будет i = 3 и j = 4
Постинкремент самая приоритетная операция за ней прединкремент, потом сложение, потом присвоение. Операция сложения работает слева направо, но выражение разбирается справа налево.

Прединкремент сработает первым, поэтому i станет сразу равным двум. Потом сработает постинкремент и вернет 2. За ним сложение 2+2=4. Потомпосле завершения присвоения результата в j постинкремент увеличит i на 1. Я где-то ошибаюсь?

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

227. Сообщение от Аноним (55), 21-Июл-21, 03:29   +3 +/
Ваша ссылка вывалила мне кучу рекламы и предложила купить какие-то курсы, а если не куплю - то и читать мне она ничего не даст. Что касается инициализации - берешь структуру (в си есть структуры) и инициализируешь, это ведь делается одинаково что в Rust, что в Си. Можно даже свой конструктор написать, где объединяется выделение памяти и инициализация, получится всё по RAII. А если надо - пишешь геттеры и сеттеры, при правильной работе с типами в Си компилятор Си тоже не даст записать в структуру мусор. Все-таки в си есть свобода - можно писать так и эдак, можно работать с типами и подсказками компилятора, а можно сказать компилятору что разберешься без него и все переменные сделать void* . В Расте же ты гвоздями прибит к его способу работы с ресурсами и данными, это может быть где-то удобно, но не везде, например что если я хочу использовать четыре разных аллокатора памяти? Или написать свой собственный? А вот как в расте написать свой Vec с ручной работой с памятью через unsafe, например хочу чтобы сначала заполнялись четные ячейки массива, а потом нечетные, или чтобы в Vec были куски, при доступе к которым вываливалась бы ошибка (в ядре такое есть, чтобы выявлять доступ куда-то не туда, т.е. баги при работе с памятью)?  На Rust я такое не смогу, а на си - достаточно просто. А Zig так вообще практически из коробки дает возможность гибкой работы с аллокаторами (функции принимают аллокатор как аргумент).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #193

228. Сообщение от Аноним (228), 21-Июл-21, 03:34   +4 +/
для склеротиков есть calloc
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #193 Ответы: #232

229. Сообщение от Аноним (55), 21-Июл-21, 03:37   –1 +/
Ну например если бы программа или игрушка при вылете написала, что она вылетела из-за недостатка вот такого конкретного количества оперативной памяти, а не просто паникнула с кашей в консоль, это было бы очень полезно знать конечному пользователю. Сразу ясно, что тут нужно освободить или докупить памяти, а не ругаться на разработчиков со словами "ваша штука сама вылетает без какой-либо вменяемой информации" и удалять эту программную гадость, неспособную даже объяснить, что конкретно ей не понравилось, в чем ошибка.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #157 Ответы: #231

230. Сообщение от Аноним (230), 21-Июл-21, 03:47   +1 +/
Альтернативно одаренные той проблемы даже не заметили. В зависимости же проблема, значит - не их.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #210

231. Сообщение от Ordu (ok), 21-Июл-21, 04:05   +/
> Ну например если бы программа или игрушка при вылете написала, что она
> вылетела из-за недостатка вот такого конкретного количества оперативной памяти, а не
> просто паникнула с кашей в консоль, это было бы очень полезно
> знать конечному пользователю.

Такого количества это какого? Программа выделяет себе хрена в ступе арену, чтобы потом не кучей общего назначения пользоваться, а чтоб побырому оттуда объекты фиксированного размера выделять? Ну дык ты эту арену всё равно будешь писать ручками, запрашивая память не у кучи, а через mmap. Вот там и обработаешь все ошибки. Вернёшь Result если хочется няшно, или прям оттуда сделаешь panic!("You have not enough memory, moron! Go buy some more of it!").

Или программа выделяет понемногу из кучи, и потом память кончается? Это закончится тем, что у тебя вся система подвиснет, и ты будешь ругаться на разработчиков, что они тебе систему повесили. Если у тебя хватит терпения дождаться, то может ты в консоли что-то и увидишь, а скорее не хватит и ты в PowerOff тыкнешь на системном блоке.

Не, я так думаю, стандартный интерфейс к памяти -- это не для игроманства, игре нужен ограниченный real-time, который может быть разломан swap'ом легко. Надо опрашивать систему на предмет того, сколько есть свободной памяти, неплохо было бы защитить страницы от свопирования (я не знаю, если честно, возможно ли это в linux без рутовских прав?), бла-бла-бла... Не, стандартная куча не для тебя. Тебе надо свой alloc писать -- реализацию кучи можно взять на стороне, но вот проверку доступной памяти, предвыделение её, прибивание гвоздями к физической раме -- это стандартная куча не умеет. Надо вручную запиливать эти возможности в кучу. Можно прям в std'шную реализацию. Можно в какую ещё по вкусу. Можно вообще выкинуть слово куча из лексикона, и заменить аренами и памятью на стеке.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #229 Ответы: #242, #258, #412

232. Сообщение от Ordu (ok), 21-Июл-21, 04:12   +/
calloc не инициализирует, а обнуляет. Разницу объяснять надо?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #228 Ответы: #283

234. Сообщение от Аноним (234), 21-Июл-21, 04:18   +2 +/
Как можно потом искать ошибки в абсолютно нечитаемой лапше из закорючек? Раст не должен восприниматься как язык, позволяющий писать корректный код
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #243

235. Сообщение от px (??), 21-Июл-21, 04:59   +1 +/
Вы, батенька, чушь сморозили. UB — это и вполне тривиальное ```int a[] = {1,2}; int b = a[2]``` и вообще до черта всего, особенно в многопоточном коде. Про статические анализаторы, то же ерунда какая-то получилась: статические анализаторы по-разным эвристикам пытаются угадать очепятки, в то время как rust имеет систему типов, которая даёт вполне определённые гарантии, без всяких вероятностных допущений (конечно опуская вероятность ошибок в самом компиляторе). Unsafe, хоть и является вынужденным злом, но позволяет локализировать наиболее опасные места, а не размазывать их по всему коду. В реальном коде unsafe используется достаточно редко. Возможно, вам было бы комфортнее комментировать что-то, в чём вы разбираетесь. Но на всякий случай, вы можете почитать https://en.wikipedia.org/wiki/Undefined_behavior — в английской версии статьи есть много менее «казуистических» примеров неопределённого поведения. Спасибо за внимание.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93 Ответы: #246, #364, #379

238. Сообщение от Аноним (139), 21-Июл-21, 06:55   +1 +/
Ну ты жжощ по детски
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #174

239. Сообщение от Аноним (239), 21-Июл-21, 07:28   –2 +/
>который в С существует...

"To compile the library, GCC 4.6+ is needed."

Ох уж эти сказочки, ох уж эти сказочники ...

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

240. Сообщение от Аноним (49), 21-Июл-21, 07:42   –1 +/
Пожалеть? Кто-то просил? Этих сумасшедших надо в поликлинику сдать для опытов. Если можно что-то написать на джаве, бейсике, расте, то это не значит что это надо тащить в ядро. Дебилы блин отборные. Есть Си и есть С++, а остальное пусть дауны на Ada, D, Rust используют. А то ща еще одни даунито прибегут и заявят что ассемблерные вставки ненужны, потому что их только старперы используют, ведь есть же божественный ска раст.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #67

242. Сообщение от Аноним (55), 21-Июл-21, 08:32   +/
вышеописанная ошибка при выделении памяти для арены не теряет свою актуальность

память можно выделять как угодно, это же си, делай как тебе надо!

своп кстати можно отключить, если при его использовании всё так виснет грустно.

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

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

243. Сообщение от OnTheEdge (??), 21-Июл-21, 08:32   +/
А зачем их искать? Можно их оставить ведь это так удобно что при обращении к разыменованному указателю приложение не падает в сегфолт, а делает ничего. А то что указатель это может быть логической ошибкой решительно ни одного хрустика не интересует.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #234

245. Сообщение от Михаил (??), 21-Июл-21, 08:33   –1 +/
Из основного я заметил использование правил ownership (проверяемых на этапе компиляции) при использовании lock-ов.
Что невозможно ни в C ни в С++.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72 Ответы: #247

246. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 09:02   +/
> В реальном коде unsafe используется достаточно редко.

Есть какая-нибудь статистика? а то походив по некоторым проектам крейтов Rust на github, увидел, что unsafe-ов используется довольно много, и даже начало складываться впечатление, что сделать что-либо нетривиальное без unsafe не очень получается.

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

247. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 09:05   –4 +/
> Что невозможно ни в C ни в С++.

Вам знаком термин "машина Тьюринга"?
Вы пытались посмотреть, на чём написан транслятор Rust?..
(изучали ли в школе или вообще логику -- не спрашиваю)

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

248. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 09:11   +2 +/
> С первого раза не соберётся никогда и ничего

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

Короче, неправда Ваша.

> C++ всё ещё не может в нормальную кросс-компиляцию [...] а что-нибудь
> типа OpenCV вы и вовсе никогда не соберёте кросс-компиляцией, только
> ставить контейнер с целевой осью и собирать в нём).

Деточка, та же ОС Эльбрус собирается именно и исключительно кроссом; libopencv там есть.

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

Это именно про Rust.  Опять же говорю как практик.

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

249. Сообщение от Аноним (12), 21-Июл-21, 09:12   +/
> сишкой

плюсы от си не отличаете

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

250. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 09:13   –1 +/
> Удивительно, у меня в системе процентов 15-20 софта собрано
> из исходников без единой проблемы. Что я делаю не так?

Собираете их локально, а не в применяемый дистрибутив.
Но это перпендикулярно. :)

PS: в альте пакеты поддерживать не так уж сложно, и по-русски подскажут (если не хватит документации на той же вики).  Ну, мало ли ;-)

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

251. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 09:15   +3 +/
>> Не знаю не С, не Rust
> Не стесняйся, большей части местных "анти" комментаторов
> это никак не мешает.

s/"анти" //

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

252. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 09:16   +/
> По сравнению с задачей "обеспечить сборку ядра clang-ом",
> которую решали лет 5 как минимум - какой-то раст - это вообще семечки.

Ему про платформы -- он про семечки.  Что за люди...

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

253. Сообщение от proninyaroslav (ok), 21-Июл-21, 09:16   –1 +/
> Меньше. С++ вполне логичный в плане синтаксиса и строгий. Раст же постоянно
> перестраивают, потому что то там то там что-то не вяжется.

Кхм, но ведь синтаксически и семантически несовместимых версий раста только две - 2015 и 2018 версии.

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

254. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 09:18   –2 +/
> Да, на C можно сделать огромный проект, где в другом языке

...написанном на C...

> это эффективнее решит одна строчка (утрирую, но мысль ясна)

Перловики это давно уж пояснили практически, не грузитесь. :)

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

255. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 09:22   –1 +/
Деточка, слова firmware или там bootloader хоть что-то говорят?

PS: очередная перепевка басни "Свинья и Дуб", ага.

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

256. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 09:28   –1 +/
> Если когда они продерутся через всё это и дождутся NULL
> в качестве результата malloc

Это вообще когда при overcommit-то?

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

258. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 09:52   +/
> неплохо было бы защитить страницы от свопирования (я не знаю, если честно, возможно ли это в linux без рутовских прав?)

man mlock

Если я правильно понял - пишут, что для непривилегированных процессов есть soft limit RLIMIT_MEMLOCK.

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

259. Сообщение от Аноним (259), 21-Июл-21, 09:56   –1 +/
Это на данном этапе не нужно, у них же нет тысяч разработчиков для переписывания миллионов строк кода, а то кол-во "хакерских оптимизаций", которое позволил всунуть Си, никаким транслятором не переведешь в другие языки. Большинство ошибок в ядре в драйверах. Достаточно всунуть в ядро возможность писАть на относительно безопасном и быстром языке - и заинтересованные производители железок со временем сами захотят писАть на нем драйвера.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #221 Ответы: #282

260. Сообщение от Moomintroll (ok), 21-Июл-21, 10:14   +5 +/
> для тех кто хочет писать драйвер на расте но умеет только на си

Не понимаю этих "тех". Умеешь С - пиши на нём.

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

261. Сообщение от Аноним (261), 21-Июл-21, 10:17   +1 +/
Стиль написания жесть..

>>

  fn ack(data: &Ref<DeviceData>, irq_data: &IrqData) {
        let mask = bit(irq_data.hwirq() % u64::from(PL061_GPIO_NR));
        let _guard = data.lock();
        if let Some(pl061) = data.resources() {
            let _ = pl061.base.try_writeb(mask.into(), GPIOIC);
        }
    }
>>

вот и гадай где data.lock() отпустят. или в какой-то из функций внутри или по выходу..

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

262. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 10:19   –1 +/
> Drew DeVault пилит подобный "секретный язык"
> https://drewdevault.com/2021/05/24/io_uring-finger-server.html

Гм, он и по обсуждаемой теме тоже высказался:

---
"Go is the result of C programmers designing a new programming language, and Rust is the result of C++ programmers designing a new programming language"
[...]
Rust is a decent C++ replacement if you have the same goals as C++, but if you don’t, the design has very similar drawbacks. Both Rust and C++ are what I like to call “kitchen sink” programming languages, with the obvious implication. These languages solve problems by adding more language features. A language like C solves problems by writing more C code.
--- http://drewdevault.com/2019/03/25/Rust-is-not-a-good-C-repla...

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

264. Сообщение от Michael Shigorinemail (ok), 21-Июл-21, 10:30   –3 +/
> Поигравшись немного с растом я пришёл к следующему выводу.

Спасибо, занятно -- и полностью бьётся с упомянутой в #262 статьёй, вот её заключение:

---
The kitchen sink approach doesn’t work. Rust will eventually fail to the “jack of all trades, master of none” problem that C++ has. Wise languages designers start small and stay small. Wise systems programmers extend this philosophy to designing entire systems, and Rust is probably not going to be invited. I understand that many people, particularly those already enamored with Rust, won’t agree with much of this article. But now you know why we are still writing C, and hopefully you’ll stop bloody bothering us about it.
--- http://drewdevault.com/2019/03/25/Rust-is-not-a-good-C-repla...

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

Делающие-то не визжат.

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

265. Сообщение от anonymous (??), 21-Июл-21, 10:34   +/
По поводу firmware можете посмотреть на oreboot, например.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #255

266. Сообщение от anonymous (??), 21-Июл-21, 10:37   +/
Внезапно работать всем вместе на одном проекте -- выгоднее, чем когда каждый пилит свой проект. Сотрудничество вместо конкуренции.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #221 Ответы: #288

267. Сообщение от anonymous (??), 21-Июл-21, 10:44   –2 +/
Да, в rust уровень вхождения сильно выше. Там требуется больше думать. И это плохо. Но это, мне кажется, недостаточная причина для reject-а. Это думание не напрасно, а на повышение safety и надёжности кода.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #113

268. Сообщение от lindevel (?), 21-Июл-21, 10:58   +/
350 строчный GPIO драйвер, нарошно искали максимально простой драйвер, вместо того, чтоб написать что-то практичное
Даже этот драйвер запороли, например "#ifdef CONFIG_PM" просто выпилили, без какой либо замены на раст код
А это что такое?
                    }
                }
            }
        }
    }
}
6 закрывающих скобок подряд
Еще глянул html файл, синий текст на черном фоне... очень удобно читать
А в html коде "<!-- HTML generated using hilite.me -->", что как бы намекает, что растоман не смог даже простейший html написать ручками
Ответить | Правка | Наверх | Cообщить модератору

269. Сообщение от Аноним (269), 21-Июл-21, 11:07   +4 +/
Ну а чего только выводы цитировать? В статье есть более интересные моменты, напр:
"Yes, Rust is more safe. I don’t really care. In light of all of these problems, I’ll take my segfaults and buffer overflows."
Собственно больше добавлять и него.

Для автора статьи портабилити, неуменее работать с карго и "C has many implementations" важнее безопасности. Ну ок. Это вполне созвучно с последними новостями с главной (очередная "21.07 Root-уязвимость в ядре Linux")

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

271. Сообщение от Аноним (271), 21-Июл-21, 11:22   –1 +/
Смузихлебы уже все Unix утилиты (ls, du, etc) на раст переписали, из полезного только ripgrep и то преимущества спорны, зато менее функционален по сравнению с grep. Теперь будут также бесполезно драйверы переписывать. Напомню, свою ос растеры не осилили, течёт как плотина весной.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #318

272. Сообщение от VladSh (?), 21-Июл-21, 11:28   +/
Видать сам женат на C?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #94

273. Сообщение от Noname (??), 21-Июл-21, 11:31   +/
Даже не представляю, как без этого все эти программисты на плюсах живут!

А, наверное, библиотеки используют.

А, для смузихлёбов это сложно.

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

275. Сообщение от Аноним (278), 21-Июл-21, 13:06   –1 +/
memset(ptr, 0, sizeof(...));
это ясен пень, и такое забывать нельзя.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #193 Ответы: #287

276. Сообщение от НяшМяш (ok), 21-Июл-21, 13:07   –1 +/

interface MyType {
    myFunction(): void
}

class MyClass implements MyType {
    constructor() {
        console.log("MyClass created")
    }

    myFunction(): void {
        console.log('myFunction called')
    }
}

const myCls = new MyClass();

myCls.myFunction();

и


trait MyTrait {
    fn my_function(&self) -> ()
}

struct MyStruct {}

impl MyStruct {
    fn new() -> Self {
        println!("MyStruct constructed")

        MyStruct{}
    }
}

impl MyTrait for MyStruct {
    fn my_function(&self) -> () {
        println("my_function called")
    }
}

let myStr = MyStruct::new()

myStr.my_function()

Разница вообще минимальна. Это не голанг писаный укурками из гулагеля, это язык, который хотя бы похож на 150 других языков.

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

277. Сообщение от Аноним (278), 21-Июл-21, 13:09   –2 +/
Это называется назло маме шапку не надену и отморожу уши. Вот и всё. Великовозрастные юноши как правило считают себя умнее своих родителей, и гордыня выше головы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #145 Ответы: #284

278. Сообщение от Аноним (278), 21-Июл-21, 13:11   +/
При чем тут Го? Не нравятся импорты, можно писать самому на чём угодно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111

279. Сообщение от Moomintroll (ok), 21-Июл-21, 13:23   –3 +/
> Колибря, Редокс, современные браузеры на плюсах?

А где можно увидеть "современные браузеры" на "Колибря, Редокс"?

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

280. Сообщение от Аноним (280), 21-Июл-21, 13:28   –1 +/
Для ядра важно, как это делает конкретно gcc.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #191

281. Сообщение от Аноним (-), 21-Июл-21, 13:36   +1 +/
>> Что невозможно ни в C ни в С++.
> Вам знаком термин "машина Тьюринга"?
> Вы пытались посмотреть, на чём написан транслятор Rust?..

И? Без ограничения семантики - будет вам задача из области NP-hard (самое то для сферическо-вакуумной недетерминированной машины Тьюринга).
Вменяемое время проверки - именно то, во что все еще упираются ЯП с попытками формальной верификации и "глубоких" проверок.

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

282. Сообщение от Аноним (280), 21-Июл-21, 13:36   –1 +/
А кто производителей железок заставляет на C писать непременно с хакирскими трюками? Пусть пишут, если им нравится, в соотвествии с MISRA.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #259

283. Сообщение от z (??), 21-Июл-21, 13:44   +2 +/
Вообще-то по стандарту именно "The space is initialized to all bits zero". Реально же есть интересные нюансы https://vorpus.org/blog/why-does-calloc-exist/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #232

284. Сообщение от Аноним (-), 21-Июл-21, 13:46   –2 +/
> Это называется назло маме шапку не надену и отморожу уши. Вот и
> всё. Великовозрастные юноши как правило считают себя умнее своих родителей, и
> гордыня выше головы.

А по существу сказать есть что, балабол? Можешь начать с перечисления "сишных браузеров", работающих в сорвеменном гуглне^W интернете.


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

285. Сообщение от Аноним (-), 21-Июл-21, 13:47   –1 +/
>> Колибря, Редокс, современные браузеры на плюсах?
> А где можно увидеть "современные браузеры" на "Колибря, Редокс"?

А где можно увидеть "современные браузеры" на Си?

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

286. Сообщение от Жироватт (ok), 21-Июл-21, 13:47   +/
2 блока unsafe. Круто, чё
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

287. Сообщение от z (??), 21-Июл-21, 13:53   +1 +/
malloc + memset != calloc см. хороший разбор на линке выше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #275 Ответы: #298, #310

288. Сообщение от user (??), 21-Июл-21, 13:55   –1 +/
Надо понимать какие цели у лидера проекта. Например, можно было бы вместе с немцами сотрудничать в годы ВОВ - это выгодно по вашему?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #266

289. Сообщение от Moomintroll (ok), 21-Июл-21, 14:02   –2 +/
> А где можно увидеть "современные браузеры" на Си?

Я не предлагал браузер на C. Я только хотел увидеть "современный браузер на плюсах" работающий в Колибри и/или Редокс.

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

290. Сообщение от Аноним (280), 21-Июл-21, 14:08   +/
Как применить операцию сравнения к нечисловому множеству?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #367

291. Сообщение от Аноним (-), 21-Июл-21, 14:08   +/
>> Колибря
> ... или там bootloader хоть что-то говорят?

Похоже, что мне - больше чем вам, "дяденька". Работающих агрузчиков для x86 на чистом асме я видел (и писал). А вот наоборот, на хваленой "чистой сишечке", что-то туговато с ними.
Так что кто тут занимается перепевом басни
> PS: очередная перепевка басни "Свинья и Дуб", ага.

еще большой вопрос.

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

292. Сообщение от Аноним (280), 21-Июл-21, 14:09   –1 +/
А на Rust что-то просто толковое сделали?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

293. Сообщение от Аноним (280), 21-Июл-21, 14:11   –1 +/
Не течёт и не падает то, чего нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73

294. Сообщение от Аноним (-), 21-Июл-21, 14:13   –1 +/
>> А где можно увидеть "современные браузеры" на Си?
> Я не предлагал браузер на C. Я только хотел увидеть "современный браузер
> на плюсах" работающий в Колибри и/или Редокс.

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


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

295. Сообщение от Ordu (ok), 21-Июл-21, 14:20   –2 +/
> вышеописанная ошибка при выделении памяти для арены не теряет свою актуальность

Возьми такой крейт с реализацией арены, который будет об этих ошибках сообщать. Проблем-то. Или напиши свой, сообщающий.

> своп кстати можно отключить, если при его использовании всё так виснет грустно.

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

> проверка доступной памяти? Мне не нужны приложения, которые выделяют память исходя из
> доступной, они должны выделять сколько им реально понадобится и в идеале
> ни битом больше. И освобождать что не используется.

Слушай, ты уж определить, что тебе нужно. Тебе хочется, чтобы программа давала диагноз твоей системе? Чтобы дать диагноз, надо собрать телеметрию.

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

296. Сообщение от Аноним (280), 21-Июл-21, 14:23   +1 +/
Наши суды не интересует, как там оно у них пишется, звучит-то как у нацистов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #192

297. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 14:46   –2 +/
Есть https://lexborisov.github.io/myhtml, не знаю, есть ли на базе его браузеры. Но вот Вы, если данный сайт посещаете с Linux/BSD/Android, то явно пользуетесь ОС написанной на C, и наверное, не смогли-бы без неё написать своё ценное мнение.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #284 Ответы: #304

298. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 14:48   –2 +/
К сожалению там почти всё "заблюрено". Единственный плюс у calloc() относительно malloc(), это защита от переполнения при умножении числа элементов на размер элемента.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #287 Ответы: #300

299. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 14:55   –2 +/
Есть на C https://lexborisov.github.io/myhtml/. А так - и на других языках нету, кроме C++, и на Rust тоже (там писали Servo, по потом всех разработчиков Мозилла выгнала).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #294 Ответы: #320

300. Сообщение от z (??), 21-Июл-21, 14:55   +2 +/
Там еще разные скорости и разные внутренние политики. Позвольте еще раз привести https://vorpus.org/blog/why-does-calloc-exist/ - последний параграф как раз об этом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #298

301. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 14:57   +/
А хоть Firmware-то на C пишут, или там может какие-то операционные системы?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #291 Ответы: #314, #390

303. Сообщение от Аноним (303), 21-Июл-21, 15:02   +2 +/
Не обращайте внимания. Шигорин сильно не любит Rust, в силу того, что Rust ВНЕЗАПНО не так уж и безнадёжен, как хотелось бы ему пропагандировать, вот и приходится с ним сталкиваться в своих линуксах и при взаимодействии с Российскими процами, где через C-транспиляцию так просто не извертеться, а АСМ там настолько страшен, что разрабы сами предпочитают избегать его насколько возможно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #291

304. Сообщение от Аноним (-), 21-Июл-21, 15:03   +/
>> с перечисления "сишных браузеров", работающих в сорвеменном гуглне^W интернете.
> Есть https://lexborisov.github.io/myhtml, не знаю, есть ли на базе его браузеры.

Угу, "и вот так - у вас все!" (с)
Сразу бы ссылку на линкс дали, что ли.

Я кстати, в курсе его существования и даже какое-то время отслеживал. Но последний коммит "4f98bb1 Nov 28, 2020" немного намекает. Впрочем, без полноценного JS движка никакой работы "в сорвеменном гуглне^W интернете" не будет.

>>> Без Си ты бы даже не смог написать это сообщение
>> Перечисление пары ОС не на си, намек на ЯП современных браузеров
> ... если данный сайт посещаете с Linux/BSD/Android, то явно пользуетесь ОС написанной на C, и наверное, не смогли-бы без неё написать своё ценное мнение.

Скилл Кэпа вы прокачали неплохо, осталось прокачать скилл чтения.


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

305. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 15:11   –3 +/
> Я кстати, в курсе его существования и даже какое-то время отслеживал. Но последний коммит
> "4f98bb1 Nov 28, 2020" немного намекает. Впрочем, без полноценного JS движка никакой работы "в
> сорвеменном гуглне^W интернете" не будет.

Т.е. Вы хотите сказать, что за прошедшие пол-года в современном интернете всё поменялось? уже там, я не знаю, HTML 6 вышел, не совместимый с HTML 5, или ещё что случилось?

> Скилл Кэпа вы прокачали неплохо, осталось прокачать скилл чтения.

Исходное сообщение было:

> Без Си ты бы даже не смог написать это сообщение. У тебя в смартфоне и компе всё провоняло,
> получается.

Или Вы уже научились запускать браузер вне каких-либо ОС?

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

306. Сообщение от Аноним (303), 21-Июл-21, 15:30   +3 +/
> A language like C solves problems by writing more C code

То есть он признаёт, что для решения задач на C надо написать тонну бойлерплейта, и при этом C всё ещё единственный самый лучший незаменимый язык? Шигорин, ты...

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

307. Сообщение от BorichL (ok), 21-Июл-21, 15:33   –2 +/
Михаил, вы такими вопросами разрушаете радужный мир розовых пони растоманов! Они привыкли, что за них Гниль думает, самим нынче думать не в моде, некогда...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #247 Ответы: #389

308. Сообщение от нах.. (?), 21-Июл-21, 15:39   +/
module_amba_driver! {
    type: PL061Device,
    name: b"pl061_gpio",
    author: b"Wedson Almeida Filho",
    license: b"GPL v2",
}

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

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

310. Сообщение от Аноним (278), 21-Июл-21, 15:46   –1 +/
В микроконтроллерах STM32 такого нет. Как и zeromem.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #287 Ответы: #312

312. Сообщение от Аноним (278), 21-Июл-21, 15:47   +/
calloc есть оказывается, попутал.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #310

313. Сообщение от Аноним (-), 21-Июл-21, 15:53   +/
>> Я кстати, в курсе его существования и даже какое-то время отслеживал. Но последний коммит
>> "4f98bb1 Nov 28, 2020" немного намекает. Впрочем, без полноценного JS движка никакой работы "в
>> сорвеменном гуглне^W интернете" не будет.
> Т.е. Вы хотите сказать, что за прошедшие пол-года в современном интернете всё
> поменялось? уже там, я не знаю, HTML 6 вышел, не совместимый
> с HTML 5, или ещё что случилось?

Т.е. я хочу скзать "где браузер, Карл!". Ну и о JS там было "вдогонку".

>> Скилл Кэпа вы прокачали неплохо, осталось прокачать скилл чтения.
> Исходное сообщение было:
>> Без Си ты бы даже не смог написать это сообщение. У тебя в смартфоне и компе всё провоняло,
>> получается.
> Или Вы уже научились запускать браузер вне каких-либо ОС?

Если вы отвечали на исходное сообщение, то ошиблись веткой. Если на мое - то неплохо бы учитывать ответы и контекст (заодно не выдирая из него цитаты), а не заниматься подменой понятий вида
>> даже не смог написать это сообщение
> если данный сайт посещаете с Linux/BSD/Android, то явно пользуетесь ОС написанной на C, и наверное, не смогли-бы без неё написать своё ценное мнение.
> Или Вы уже научились запускать браузер вне каких-либо ОС?

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

314. Сообщение от Аноним (-), 21-Июл-21, 16:03   +/
> А хоть Firmware-то на C пишут, или там может какие-то операционные системы?

Ну вы можете поискать и кинуть ссылок на фирмварь "на чистой сишкечке, совсем без асма" для устройств, с которых можно более-менее удобно запостить комментарий на опеннет, кто ж вам мешает-то?

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

315. Сообщение от Аноноша (?), 21-Июл-21, 16:12   +/
Штош:

1. Неявного конструктора в rs нет, new - просто соглашение. В js классах есть constructor.
2. self в методы явно передается, в js - неявный this (привет с++).
3. Объявленную через let в rs объект нельзя менять, обьявленный c помощью const объект в js - мутабельный.
3. Типы пишутся в конце? Дык, так много где.

Короче, все что ты описал очень поверхностное и притянутое за уши сходство.

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

316. Сообщение от Аноноша (?), 21-Июл-21, 16:26   +/
Можно почитать рассылку приведенную в посте и увидеть реальные вопросы не в пользу раста. Я пока не вижу восторженных отзывов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #219 Ответы: #340

317. Сообщение от Аноноша (?), 21-Июл-21, 16:28   +/
Предположу, что по выходу, ибо _guard никуда не передается.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #261

318. Сообщение от Аноноша (?), 21-Июл-21, 16:31   +/
fuchsia? Правда пока в дикой природе не встретишь.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #271 Ответы: #418

319. Сообщение от Кир (?), 21-Июл-21, 16:37   +/
Для неуча:

https://ru.wikipedia.org/wiki/%D0%A2%D0%...

Проблема в значительной мере устарела.

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

320. Сообщение от Аноним (-), 21-Июл-21, 16:57   +/
>> Для опеннета современный бразуер(ный движок) не нужен, если что. Что не отменяет факта отсутствия таких движков на сишечке.
> Есть на C https://lexborisov.github.io/myhtml/.

/0

> (там писали Servo, по потом всех разработчиков Мозилла выгнала).

Уровень "познаний" опеннета:
https://www.opennet.ru/opennews/art.shtml?num=45385
> Проект Mozilla представил Quantum, комбинированный браузерный движок для Firefox
> 28.10.2016 13:49
> Разработчики Mozilla представили проект Quantum, в рамках которого для Firefox началась разработка браузерного движка нового поколения, сочетающего проверенные временем наработки движка Gecko с новыми возможностями по обеспечению многопоточной обработки данных, предоставляемые языком Rust. В частности, в рамках проекта в Gecko будут перенесены некоторые компоненты из движка Servo,

---
> 25.07.2017 20:49
> В Firefox добавлен CSS-движок Stylo, написанный на языке Rust

---
> Выпуск Firefox 57 с многопоточным CSS-движком и новым оформлением
> 14.11.2017 17:33
> и новый web-движок Quantum, комбинирующий проверенные временем компоненты движка Gecko с новыми возможностями по обеспечению многопоточной обработки данных, предоставляемые языком Rust и движком Servo.

-
> 19.07.2018 20:50
> В ночные сборки Firefox, которые лягут в основу выпуска Firefox 63, в качестве временного эксперимента интегрирована система композитинга Servo WebRender
> Из ожидающих внедрения инициатив проекта Quantum также можно отметить Quantum DOM, который обеспечит распараллеливание операций с DOM (Document Object Model).
>

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

321. Сообщение от Аноним (321), 21-Июл-21, 17:02   +/
Отцы, ну вы блин развели срач …
Может пусть Торвальдс решит, является ли переписанный код драйвера полезным или нет
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #325

323. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 17:10   –2 +/
> Т.е. я хочу скзать "где браузер, Карл!". Ну и о JS там
> было "вдогонку".

Извиняюсь за вопрос на вопрос, но "где используемый ширнармассами браузер, на чём-то кроме C++, Карл", да и то там будут, скорее всего, запчасти из других языков.
JS-ов тоже куча есть, как минимум от проекта nginx (http://nginx.org/ru/docs/njs/index.html), от Фабриса Беллара (https://bellard.org/quickjs/).

> Если вы отвечали на исходное сообщение, то ошиблись веткой. Если на мое
> - то неплохо бы учитывать ответы и контекст (заодно не выдирая
> из него цитаты), а не заниматься подменой понятий вида
>>> даже не смог написать это сообщение
>> если данный сайт посещаете с Linux/BSD/Android, то явно пользуетесь ОС написанной на C, и наверное, не смогли-бы без неё написать своё ценное мнение.
>> Или Вы уже научились запускать браузер вне каких-либо ОС?

Не могли-бы Вы тогда прояснить свою мысль - что Вы хотите доказать?

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

324. Сообщение от Урри (ok), 21-Июл-21, 17:16   +/
Тот редкий случай, когда Шигорин авторитетно заявляет и прав.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #248

325. Сообщение от Урри (ok), 21-Июл-21, 17:34   –2 +/
А Торвальдс - господь бог, что ли?

У нас тоже свои мозги есть. А некоторые из нас еще и программированием на жизнь зарабатывают. И это все называется "коммьюнити".

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

328. Сообщение от Урри (ok), 21-Июл-21, 17:37   +/
> На PDP тоже так было, великий гуру?

Да. Например, можно глянуть http://mim.update.uu.se/manuals/layered/pdp11c3.pdf (PDP-11 C Guide to PDP-11 C)

Цитирую:
When using the increment and decrement operators, do not
depend on the order of evaluation of expressions. Consider
the following ambiguous expression:
k = x[j] + j++;

Is the value of variable j in x[j] evaluated before or after the
increment occurs? Do not assume which expressions the
compiler will evaluate first. To avoid ambiguity, increment
the variable in a separate statement.

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

329. Сообщение от Урри (ok), 21-Июл-21, 17:41   +/
> Для неуча:

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

> Проблема в значительной мере устарела.

Что устарело? Операторы как вычислялись в неопределенном порядке, так и вычисляются. Параметры функций как вычислялись в неопределенном порядке, так и вычисляются.

Вообще ничего не изменилось за 30 лет, прикинь?

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

330. Сообщение от Урри (ok), 21-Июл-21, 17:45   +1 +/
> Я где-то ошибаюсь?

Везде в своем комментарии.

Немножечко лонгрид, но весь по делу, без воды и с цитатами стандарта (а еще и на русском) - https://habr.com/ru/post/216189/

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

331. Сообщение от Урри (ok), 21-Июл-21, 17:49   –1 +/
>>который в С существует...
> "To compile the library, GCC 4.6+ is needed."
> Ох уж эти сказочки, ох уж эти сказочники ...

Растоманчик не видит разницу между конкретной сторонней библиотекой и всеми другими реализациями?

Впрочем, ничего удивительного. Не ты ли плакался там выше, что что не включено в STL, то у него не получается в с++ использовать?

Я писал, что конкретно эту библиотеку сейчас использую, и использую уже давно. Gcc 4.6 уже больше 10 лет.

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

332. Сообщение от Урри (ok), 21-Июл-21, 17:53   –1 +/
> ref_count существовал до всех этих ваших C, не надо его недооценивать.

Само собой существовал, еще в лиспе, например. А кто его недооценивает?

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

Цитирую тебя же:

>> Никаких фишек раста не использовано.

Ordu: > А Ref<T>, для работы с ref_count -- это не такая фишка?

Уникальная фишка раста - смарт поинтер, который минимум как 30 лет есть в С, который раст пытается заменить.

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

333. Сообщение от Урри (ok), 21-Июл-21, 17:59   –2 +/
>     name: b"pl061_gpio",
> Тоесть вот это это типа очень удобно и понятно? Ну ладно, яссно
> с вами ржавыми, как язык назовеш так и поплывет... или утонет.

Подожди, у них же аджайл, они щас еще такого наворотят...

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

Так через два месяца они добавят специальный префикс _ для идентификаторов, которые в юникоде, но надо читать не в юникоде. И _& для тех, что в юникоде, но читаются не в юникоде, а надо в расширенном юникоде. А потом и letmut &hui __go__ для тех, которые в юникоде, но надо бы изменить для совместимости с С, который вызывать через ансейф и через два месяца вместо hui утвердят jui.

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

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

334. Сообщение от Совершенно другой аноним (?), 21-Июл-21, 18:05   –2 +/
>>> Для опеннета современный бразуер(ный движок) не нужен, если что. Что не отменяет факта отсутствия таких движков на сишечке.
>> Есть на C https://lexborisov.github.io/myhtml/.
> /0

Поясните, пожалуйста, чем он вдруг не подошел?

>[оверквотинг удален]
> https://www.opennet.ru/opennews/art.shtml?num=45385
>> Проект Mozilla представил Quantum, комбинированный браузерный движок для Firefox
>> 28.10.2016 13:49
>> В Firefox добавлен CSS-движок Stylo, написанный на языке Rust
>> 25.07.2017 20:49
>> Выпуск Firefox 57 с многопоточным CSS-движком и новым оформлением
>> 14.11.2017 17:33
>> и новый web-движок Quantum, комбинирующий проверенные временем компоненты движка Gecko
>> 19.07.2018 20:50
>> В ночные сборки Firefox, которые лягут в основу выпуска Firefox 63, в качестве временного эксперимента интегрирована система композитинга Servo WebRender

Что-же с Rust-ом так всё хорошо, что его кода, судя по https://www.openhub.net/p/firefox/analyses/latest/languages_... меньше, чем C. Так-что выходит, пока на Rust-е то и браузеров нет, точнее они есть, но пока они даже больше C-шные, чем Rust-овые.

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

337. Сообщение от НяшМяш (ok), 21-Июл-21, 18:34   –2 +/
> 1. Неявного конструктора в rs нет, new - просто соглашение. В js классах есть constructor.

Да, сделал так специально для "похожести". Можно и без new.
> 2. self в методы явно передается, в js - неявный this (привет с++).

Тут согласен, но в Rust эта явность в плюс. В TypeScript тоже кстати можно this потипизировать, хотя это не нужно в 99% случаев
> 3. Объявленную через let в rs объект нельзя менять, обьявленный c помощью const объект в js - мутабельный.

И опять же это плюс. В жеесе очень часто дебажить приходится именно как раз такие объекты. Object.freeze конечно помогает, но частично - его нужно рекурсивно на вложенные объекты применять.
> 4. Типы пишутся в конце? Дык, так много где.

Это и хорошо же, не надо снова учить 139 синтаксис очередного сочинения на тему "как я писал свой яп на каникулах"


> Короче, все что ты описал очень поверхностное и притянутое за уши сходство.

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

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

338. Сообщение от Ordu (ok), 21-Июл-21, 18:35   +/
> Цитирую тебя же:
>>> Никаких фишек раста не использовано.
> Ordu: > А Ref<T>, для работы с ref_count -- это не такая
> фишка?

Ты тред читал? Человек выше задаёт вопрос, почему никаких фишек раста не использовано. Я задаю ему вопросы о том, что он подразумевает под фишками раста. Привожу потенциальные примеры, которые могут быть примерами фишек раста, спрашиваю каких других фишек раста он ждал.

Не надо выдирать цитаты из контекста. Если ты знаешь каких фишек раста не хватает в том драйвере -- я с интересом тебя выслушаю. Доказывать же мне, что Ref<T> -- это фишка раста, или что это не фишка раста бессмысленно. Не, то есть, я б выслушал твоё мнение, потому что ты меня заинтриговал реально, я не могу понять считаешь ли ты Ref<T> фишкой раста, или ты считаешь его заурядностью из середины XX века, которая настолько общее место, что не стоит упоминания. Или может ещё что?

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

Если же тебе интересно моё мнение, то сводить раст к фишкам -- плюс-минус бессмысленное занятие. Раст -- это комплексное решение, и любая фишка по отдельности не заслуживает внимания, интересно как они переплетаются во единое целое в коде.

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

339. Сообщение от Аноноша (?), 21-Июл-21, 19:18   +/
> Да, сделал так специально для "похожести". Можно и без new.

Где тут похожесть? В js нельзя классы без new звать. В rust вообще нет классов и конструкторов в понимании js, а есть просто структуры и связанные методы (как впрочем и в го). Для полноты реализуй наследование классов как в js (не интерфейсов, а именно классов).

> Тут согласен, но в Rust эта явность в плюс.

Мы не обсуждаем плюс это или нет. Мы обсуждаем похожесть. И это ни разу не похоже.

> И опять же это плюс. В жеесе очень часто дебажить приходится именно как раз такие объекты. Object.freeze конечно помогает, но частично - его нужно рекурсивно на вложенные объекты применять.

Анадлгично под видом "похожего" синтаксиса совершенно разный смысл.

> Это и хорошо же, не надо снова учить 139 синтаксис очередного сочинения на тему "как я писал свой яп на каникулах"

Эмм. Вообще распространено 2 вида: тип перед или после. Что тут учить еще?

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

Ну это же самообман.

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

340. Сообщение от Аноним (218), 21-Июл-21, 19:18   +/
Там предметный технический разговор профессионалов, а тут только байт от неучей.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #316 Ответы: #369

341. Сообщение от Аноним (239), 21-Июл-21, 20:57   +/
>Растоманчик не видит разницу между конкретной сторонней библиотекой и всеми другими реализациями?

Растоманчик видит разницу между С и GCC c кучей расширений, и даже деструкторами.

>Впрочем, ничего удивительного

Вот именно, очередной рассказыватель про прекрасную Сишку, пойман с поличным, что не сожет на чистой сишке сделать нормальные умные указатели. Только хаками и расширениями.

Зато так смело клеймит оппонентов, переходит на личности.

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

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

342. Сообщение от нах.. (?), 21-Июл-21, 21:25   –1 +/
А можно просто взять и обойтись без этой вашей ООПни.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #337

343. Сообщение от Anonymoustus (ok), 21-Июл-21, 22:11   +/
>> На PDP тоже так было, великий гуру?
> Да. Например, можно глянуть http://mim.update.uu.se/manuals/layered/pdp11c3.pdf (PDP-11
> C Guide to PDP-11 C)
> Цитирую:

Убедил.

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

344. Сообщение от Кир (?), 22-Июл-21, 00:05   +/
Полистай: https://en.cppreference.com/w/cpp/language/eval_order
Текст ты вряд ли поймешь, но комментарии к примерам типа:

i = i++ + 2; // undefined behavior until C++17

возможно, заставят заподозрить, что в C++17 что-то изменилось.

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

345. Сообщение от Кир (?), 22-Июл-21, 00:23   +/
А в целом, придирка к неопределенному порядку вычислений выражений сама по себе дурацкая донельзя: порядок вычислений не фиксировали в стандарте не потому, что нешмагли, а для того, чтобы не наступать на горло оптимизирующему компилятору, который может сгенерировать более эффективный код, изменив порядок вычислений.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #329 Ответы: #361

346. Сообщение от Ordu (ok), 22-Июл-21, 00:27   +/
> вот и гадай где data.lock() отпустят. или в какой-то из функций внутри или по выходу..

_guard начинается с подчёркивания, что является заявлением компилятору, что переменная не используется. В смысле она есть, существует, но код на неё никак не ссылается. Если программист попытается её использовать, компилятор будет ругаться -- я не знаю, не проверял, будет ли он выкидывать ошибку или варнинг, но что-нибудь такое он выкинет по-любому.

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

Но в целом, я согласен, несколько странный API. Я бы ожидал чего-нибудь в стиле:

  fn ack(data: &Ref<DeviceData>, irq_data: &IrqData) {
        let mask = bit(irq_data.hwirq() % u64::from(PL061_GPIO_NR));
        let data_ref = data.lock();
        if let Some(pl061) = data_ref.resources() {
            let _ = pl061.base.try_writeb(mask.into(), GPIOIC);
        }
    }

То как оно написано, неясно что будет, если я, не сделав data.lock(), попытаюсь вызвать data.resources(). Я получу панику? Или чтение без синхронизации? Разве не стоило бы сделать невозможным обращение к resources без синхронизации, если синхронизация нужна?

Если иногда надо с синхронизацией, а иногда можно без неё, я б пометил метод IrqData::resources как unsafe, чтоб соблазна не возникало без нужды его дёргать, а если хочешь без unsafe, то вызови IrqData::lock, получи взамен "умный указатель" IrqDataLocked, который предоставит тебе метод IrqDataLocked::resources, который уже не будет unsafe. Но с другой стороны, я ничего не знаю про этот IrqData, может и есть какое-то обоснование тому, как они сделали.

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

347. Сообщение от Аноним (347), 22-Июл-21, 00:47   –2 +/
Компилятор должен компилировать то, что дадут. А анализировать должен анализатор.

Вы же не просите сантехника вам обед гоиовить?

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

349. Сообщение от Аноним (347), 22-Июл-21, 01:14   –3 +/
Какая прекрасная логичность и целостность языка: для указания, что переменная изменятся, надо добавить отдельное слово "мут", а что она не используется - к имени пририсовать подчеркивание.

Логика уровня "раст".

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

351. Сообщение от Аноним (351), 22-Июл-21, 01:54   –1 +/
> Rust для ядра Linux, бесполезен и не решает реальных задач
> Особенностью драйвера является то, что его реализация практически построчно повторяет имеющийся драйвер GPIO на языке Си

Они решили наглядно продемонстрировать бесполезность?

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

352. Сообщение от Аноним (352), 22-Июл-21, 02:01   +/
Пусть учаться линуксята молодые.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #102

353. Сообщение от Аноним (352), 22-Июл-21, 02:02   +/
Ошиблись в слове безопастность
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #351 Ответы: #356

354. Сообщение от Аноним (352), 22-Июл-21, 02:04   +/
А что там с Radix его совсем забросили или будут что-то доделывать?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #371

355. Сообщение от Ordu (ok), 22-Июл-21, 02:12   +1 +/
> Какая прекрасная логичность и целостность языка: для указания, что переменная изменятся,
> надо добавить отдельное слово "мут", а что она не используется -
> к имени пририсовать подчеркивание.

Угу. Очень удобно. Подобные штуки часто встречаются в языках с паттерн-матчингом и деструктуризацией, потому как... ну, например...

Пускай у нас есть функция:

fn rotate_vector(x: f32, y: f32, angle: f32) -> (f32, f32) {
...
}

Она принимает координаты вектора и угол и возвращает tuple из двух флоатов, которые представляют собой координаты повёрнутого вектора. Я могу написать:

    let coords = rotate_vector(1.0, 0.0, 90.0);

и потом ссылаться на x, через coords.0, а на y через coords.1, но я могу поступить интереснее:

    let (x, y) = rotate_vector(1.0, 0.0, 90.0);

это называется деструктуризация: при присвоении я разбиваю структуру из правой части на именованные куски, в данном случае на x и y. Оно так чаще понятнее выходит.

Но что делать, если мне нужен, скажем, только x? Если я оставлю y, то раст начнёт варнинги кидать о том, что переменная y не используется. На такой случай можно написать:

    let (x, _) = rotate_vector(1.0, 0.0, 90.0);

тут _ -- это специальное имя для переменной, которая не используется, но она нужна только чтобы место занять конкретно в этом выражении. Этот _ можно читать как "пoxpeн что".

Но иногда хочется в коде оставить подсказку, что же там в _: если переменной дать название, то код будет понятнее, будет сразу понятно, какие части возвращаемого значения мы игнорим. Читать проще. И вот тут как раз можно и рыбку съесть и жoпy не ободрать:

    let (x, _y) = rotate_vector(1.0, 0.0, 90.0);

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

> Логика уровня "раст".

Ты льстишь расту. В этом нет ничего нового. Такого рода штуку я ещё в пайтоне видел. Но там, если память мне не изменяет, вместо _ используется *. И я вот не упомню точно, но, вроде, я не только в расте видел использование значка _ в смысле "пoxpeн что".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #349 Ответы: #385, #398, #414

356. Сообщение от Аноним (351), 22-Июл-21, 02:51   +1 +/
Да какая там в пень безопасность, один к одному конвертнули сишный код и в unsafe все обернули.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #353

357. Сообщение от Кир (?), 22-Июл-21, 03:25   +/
Откуда ж вы лезете, знатоки C++ по учебникам C лохматых 90-х?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #328 Ответы: #372

358. Сообщение от Аноним (-), 22-Июл-21, 03:27   +1 +/
> Какая прекрасная логичность и целостность языка: для указания, что переменная изменятся,
> надо добавить отдельное слово "мут", а что она не используется - к имени пририсовать подчеркивание.
> Логика уровня "раст".

http://www.cse.unsw.edu.au/~billw/dictionaries/prolog/
>> the appearance of the same variable in two (or more places) in effect says that when the variable is bound to a value, it must be bound to the same value in all the places that it appears in a given rule.
>> The Prolog variable _ (underscore) is a "don't-care" variable, which will match anything (atom, number, structure, …). For example, the rule
>>  In Prolog interpreters that report singleton variables (variables that are only used once in a rule - often these are caused by typographical errors in the code, which is why Prolog warns you about them) do not report singleton variables that begin with _

Какой прекрасный парад невежества уровня "опеннетный антирастовый комментарий".  

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #349 Ответы: #365, #366, #374

359. Сообщение от Аноним (359), 22-Июл-21, 04:38   –2 +/
Почему просто не забанить всех растоманов? Все равно у них интеллект как у js разработчиков и они не смогут ничего путного сказать по определению
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #252

360. Сообщение от Аноним31 (?), 22-Июл-21, 06:37   +/
Ну дада... Давайте тогда и на yoptascript дрова писать :) Удобно же, одна строчка.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80

361. Сообщение от freecoder (?), 22-Июл-21, 08:10   +/
Ага, в этом автомобиле нет ремней безопасности да и вообще нет кресел не потому, что "не шмогли", а потому, что лишний вес мешает разгоняться.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #345 Ответы: #363, #373

362. Сообщение от freecoder (?), 22-Июл-21, 08:11   +/
Нет, не так. Что спросить-то хотел?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #197

363. Сообщение от Совершенно другой аноним (?), 22-Июл-21, 09:15   +1 +/
Вы, как мне кажется, забываете контекст, в каких условиях создавался и стандартизировался C, а в каких - Rust. То, что там машины были на порядки медленее, это пол беды, а то, что в комитет входили разные корпорации, производящие аппаратное обеспечение, которые тянули в свою сторону - это совсем беда. Думаю поэтому в стандарте C куча UB, которые кажутся странными - зартачилась какая-нибудь Sun, или там DEC - вот у нас в процессоре это сделано не так, как у всех остальных, давайте сделаем это UB, чтобы мы там по месту сами разбирались, как это делать. Тем более, что тогда в C, не так как сейчас в Rust - куча аппаратных контор писала свои компиляторы для C для своих аппаратных архитектур.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #361

364. Сообщение от Anonimus (??), 22-Июл-21, 09:17   +/
```int a[] = {1,2}; int b = a[2]```

Умышленно выходить за пределы выделенного массива. В чем смысл такого "тривиального" кода?

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

365. Сообщение от Совершенно другой аноним (?), 22-Июл-21, 09:37   –1 +/
как я понимаю претензия была не к переменной "_", а к тому, что к префиксу "_" привязали какой-то функционал/ограничение. Правда я не понял, это так на уровне языка потребовали (в каких-нибудь официальных документах), и я уже не имею права называть свои переменные с символом подчёркивания в начале, или это такая негласная, но широко распространённая договорённость.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #358 Ответы: #386

366. Сообщение от Совершенно другой аноним (?), 22-Июл-21, 09:57   +/
Впрочем, перечитал Ordu - если действительно компилятор на это подчёркивание смотрит, решение довольно странное, более логично было-бы его подкрашивать через ключевое слово, имхо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #358 Ответы: #378

367. Сообщение от Аноним (30), 22-Июл-21, 10:24   +/
Не очень понятен вопрос
- Что подразумевается под "операцией сравнения"?
- Что подразумевается под "нечисловое множество"?

Если принять, что операция сравнения это, например, проверка вложенности,
а нечисловое множесто (фундаментально компьютеры оперируют только числами), это просто
упорядоченые "атомные" литералы, то так
https://play.nim-lang.org/#ix=3tFN

так же см.
https://nim-by-example.github.io/bitsets/

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

368. Сообщение от Аноним (30), 22-Июл-21, 10:29   +/
Если речь идет о трансляции в машинный код, так для это Nim пользует компилятор C/C++.
Зачем изобретать Nim'у велосипеды и привязка к конкретной платформе?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69

369. Сообщение от Аноним (-), 22-Июл-21, 11:01   –2 +/
Годный байт от неучей. Раст - не нужен, Чистый Си - вечен.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #340

370. Сообщение от Аноним (370), 22-Июл-21, 11:02   +/
Вот чем go не зашёл - требование открывающую скобку фигачить в конце строки и никак иначе.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #143

371. Сообщение от Аноним (-), 22-Июл-21, 11:09   +/
Не зннаю.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #354

372. Сообщение от adolfus (ok), 22-Июл-21, 13:20   +/
А причем тут C++? Речь идет о C, который очень жестко стандартизован и, кстати, именно в 90-х, вернее, в 1998. Просто почитайте стандарт ISO/IEC 9899 и сравните с "учебниками лохматых 90-х". Ну и последний 2011-го года гляньте. А потом сравните с ISO/IEC 14882 -- откроете много удивительного.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #357

373. Сообщение от Кир (?), 22-Июл-21, 13:47   +/
Дело даже не в древних архитектурах, как раз наоборот. Простой пример: вполне можно представить себе гипотетическую ситуацию, когда компилятор, обнаружив, что вычисление аргументов функции не требует синхронизации, на современном многоядерном процессоре запустит оное в параллельных потоках по числу аргументов. Порядок вычисления не определен в принципе? Да. Это ускорит выполнение? Да. Противоречит это стандарту? Нет, всё в порядке. Если вспомнить про транспьютерные архитектуры, то там это тем более актуально.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #361 Ответы: #397

374. Сообщение от Ordu (ok), 22-Июл-21, 13:58   +/
> http://www.cse.unsw.edu.au/~billw/dictionaries/prolog/

О, точно же, в прологе так было!

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

375. Сообщение от n00by (ok), 22-Июл-21, 14:19   +/
> дефолт пакетного менеджера
> дефолт системы сборки
> дефолт стайл гайдов

Дефолт случился в 1998 году. Делаем выводы.

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

376. Сообщение от Аноним (376), 22-Июл-21, 14:23   +/
Думаю он спрашивает про то, как применить сравнение для языков.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #367 Ответы: #381

377. Сообщение от Аноним (377), 22-Июл-21, 14:28   +/
>> http://www.cse.unsw.edu.au/~billw/dictionaries/prolog/
> О, точно же, в прологе так было!

Ну да, правда в раст оно скорее всего из хаскеля попало:
https://typeclasses.com/underscore
> When the underscore appears alone in a pattern,This is perhaps the most common use of an underscore. it is a reserved identifier that acts as a wildcard: a pattern that matches anything A pattern that always succeeds is called an irrefutable pattern. but does not introduce a new variable.
> Beginning a name with an underscore is sometimes used to name variables we will not use – and thus don’t really care about – but care just enough about to give it a name to remind ourselves of what is being discarded.

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

378. Сообщение от Ordu (ok), 22-Июл-21, 14:36   +1 +/
> Впрочем, перечитал Ordu - если действительно компилятор на это подчёркивание смотрит, решение
> довольно странное, более логично было-бы его подкрашивать через ключевое слово, имхо.

Это могло бы быть логичным в C или в C++. Поэтому в них есть __attribute__((unused)). В расте это не логично. Потому как:

1. Раст настаивает на том, чтобы неиспользуемые переменные были бы помечены как неиспользуемые. Местами он задалбывает этим хуже некуда, когда у тебя неиспользуемость временна, и ты компиляцию используешь только чтобы проверить наполовину написанный кусок кода. Или если ты закомментировал половину кода, чтобы посмотреть на то как будет работать без неё. Писать __attribute__((unused)) к каждой переменной, которая не используется, бррр

А как насчёт такого (допустим, что open там возвращает не -1 в случае ошибки, а очень по растовому Err(some_error), а в случае успеха -- Ok(file_descriptor)):

let filedesc = match open(file_name, O_APPEND) {
     Ok(fd) => fd,
     Err(_) => panic!("I cannot open file {:?}. I'm panicking now and going to die soon.", file_name),
};

Видишь там Err(_)? Это тоже деструктуризация, на этот раз в процессе паттерн-матчинга, и это тоже объявление неиспользуемой переменной. можно было бы написать Err(_error) например. Если ты там не обозначишь переменную как неиспользуемую, то раст начнёт тебя клевать, мол, "переменная не используется". И что, ещё туда вставлять __attribute__((unused))? Как ты потом читать будешь всё это?

2. Компилятор раста, хоть и любит заклёвывать своим перфекционизмом, очень заботливый, и если ты, читая RustBook не обратил внимания на _ или обратил, но забыл потом, то он по-ходу дела объяснит тебе, как и когда его использовать. Если б он не был таким заботливым, я подозреваю, растоманов было бы в разы меньше, потому как через несколько часов возни с компилятором, ведущим себя как дятел-перфекционист, они бы разбили бы себе мониторы и растоптали бы свои клавиатуры. С рядах растоманов остались бы только 100% флегматики, абсолютно неспособные к эмоциям.

А, и ещё, ежели тебе кажется, что трактовать имена переменных с определённым префиксом специальным образом, это изобретение rust'а, то опять это не так. В Common Lisp'е имена символов начинающиеся с : в начале автоматически имеют себя в качестве своего значения, их поэтому можно использовать как символические ключи в парах (ключ значение), не парясь о том, чтобы квотировать их дописывая ' в начале. То есть это вроде как и переменная, но сколько бы раз в процессе вычислений на эту переменную не выполнялся бы eval, она от этого не изменится. Очень удобно. Можно было бы ключами использовать строки, типа ("ключ" значение), но там ряд неудобств возникает: кавычек много писать надо, и :ключ будет иметь ровно одну копию в памяти, в то время как строк "ключ" может быть создано сколько угодно, и хоть они и будут равны друг-другу, но они будут разными объектами, занимающими память, и проверять на равенство их каждый раз придётся посимвольно, то есть со сложностью O(N), вместо O(1).

Тоже кстати дискриминация: почему я не могу называть свои переменные с именем, начинающимся с двоеточия? =)

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

379. Сообщение от Кир (?), 22-Июл-21, 14:39   +/
Для начала, при попытке скомпилировать


int a[] = {1,2}; int b = a[2];

g++, к примеру, вываливает кучу предупреждений о выходе за пределы массива, однако все же не считает это ошибкой. Банальный cppcheck находит эту ошибку на счет раз.

Во-вторых, на актуальном C++ такое пишется так:


array a = {1, 2}; auto b = a.at(2);

и приводит к выбросу исключения с внятным сообщением о причине ошибки. Не уверен -- не обгоняй ;)

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

380. Сообщение от Аноним 80_уровня (ok), 22-Июл-21, 15:33   +2 +/
Посмотрел бы я на тех людей, которые умеют писать драйверы на Си, но при этом хотят писать драйверы на Расте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #224

381. Сообщение от Аноним (30), 22-Июл-21, 17:38   +/
> Думаю он спрашивает про то, как применить сравнение для языков.

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


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

382. Сообщение от freecoder (?), 22-Июл-21, 20:56   +1 +/
Вот читаю ваш отзыв и офигеваю, как же я ухитряюсь на стабильном расте уже 3 года писать в прод и не испытывать проблем? Мистика какая-то..
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #183

383. Сообщение от Аноним зеленый (?), 22-Июл-21, 21:12   +/
Тут это пруф отсутствия ошибок работы с памятью.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

384. Сообщение от Аноним зеленый (?), 22-Июл-21, 21:16   +/
Они не просто так "выбраны". Они были обсуждены сообществом - https://habr.com/ru/post/532660/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #213

385. Сообщение от freecoder (?), 22-Июл-21, 21:18   +/
Вообще-то _ и _y - это принципиально разные вещи. Просто подчеркивание - это вообще не имя, а служебное слово языка, которое в паттерне обозначает игнорирование. Это важно понимать, так как в этом случае никакого связывания вообще не происходит, в отличии от варианта _y, где используется уже действительно имя и оно связывается со значением.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #355 Ответы: #387

386. Сообщение от freecoder (?), 22-Июл-21, 21:23   +/
Неиспользуемая переменная - это ворнинг компилятора. Несколько раз меня спасал от досадных логических ошибок.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #365

387. Сообщение от Ordu (ok), 22-Июл-21, 21:40   –1 +/
> Вообще-то _ и _y - это принципиально разные вещи. Просто подчеркивание -
> это вообще не имя, а служебное слово языка, которое в паттерне
> обозначает игнорирование.

Ты говоришь, что это принципиально разные вещи, в чём "принципиальность" разницы? Что ты называешь принципиальной разницей? Чем принципиальная разница отличается от непринципиальной?

Тебе не кажется, что синтаксис языка определяет, что принципиально разные вещи в этом языке, а что нет? Мне кажется, что именно так. Если синтаксис языка говорит, что if принципиально отличается от foo, потому что if -- это ключевое слово, то значит это принципиальное отличие. Вот lisp, например, не говорит, что if -- это что-то принципиально отличающееся от foo, if -- это просто ещё один символ, и действие его ты можешь повторить, реализовав if как макрос. Ты можешь присвоить значение if'у, или сделать его функцией. В лиспе эта разница непринципиальна. В лиспе просто принято использовать if, как if. В C же if -- это ключевое слово, его поведение невоспроизводимо средствами языка, ты не можешь средствами языка переопределить if и научить его танцевать польку.

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

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

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

388. Сообщение от Аноним (388), 22-Июл-21, 21:53   +1 +/
от ваших растов, тошнит уже даже больше чем от опеннета.
Ответить | Правка | Наверх | Cообщить модератору

389. Сообщение от yet another anonymous (?), 22-Июл-21, 23:29   +/
Не, не разрушает. Тьюринг свою машину возле них не парковал.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #307

390. Сообщение от yet another anonymous (?), 22-Июл-21, 23:46   +1 +/
> А хоть Firmware-то на C пишут, или там может какие-то операционные системы?

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

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

391. Сообщение от yet another anonymous (?), 23-Июл-21, 00:05   –1 +/
> Для автора статьи портабилити, неуменее работать с карго

про засаду с cargo автор всё понял.

> и "C has many implementations" важнее безопасности.

О. Вот тут вы и вскрылись: надо отдаться попечительскому совету, который обеспечит подгрузку необходимого кода (с нужными "решениями") прямо в любой проект. Следующий уровень: надо не внедряться в 100500 проектов, а контролировать подкачиваемые бинари.

> Ну ок. Это вполне созвучно с последними новостями
> с главной (очередная "21.07 Root-уязвимость в ядре Linux")

Ээээ, а откуда у нас там eBPF завёлся, не поясните? Следом за rust с cargo ядро будет подгружать что-то вроде eBPF-байткода исключительно из "проверенных" источников?

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

392. Сообщение от gogo (?), 23-Июл-21, 02:51   +/
Именно. Линус говорил, что мол ничего полезного не написано. А они не новое написали, а ПЕРЕписали.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #351

393. Сообщение от Растофиля (?), 23-Июл-21, 02:55   +/
RUST безоп-а-а-а-сный, ко-ко-ко!!1!


https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=rust

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

394. Сообщение от СССР (?), 23-Июл-21, 06:50   –1 +/
ну преобразуйте на java, преобразуйте на pascal? питон, и что? уже противно читать про про всякое дерьмо позволяющее улучшить код при помощи языка. может программисты начнут хоть немного втыкать что они пишут?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #399

395. Сообщение от СССР (?), 23-Июл-21, 06:54   –1 +/
вы своей комьюнити перепишите линукс на раст и будет вам счатье, и пихайте в него хоть что, ок? а продукт и человека который этому продукту жизнь посвятил, не нужно затрагивать , зопли еще не высохли у тебя под носом. комюнити покемонов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #325

396. Сообщение от СССР (?), 23-Июл-21, 06:57   –1 +/
йобу дался чтоль?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

397. Сообщение от n00by (ok), 23-Июл-21, 06:57   –1 +/
> Дело даже не в древних архитектурах, как раз наоборот. Простой пример: вполне
> можно представить себе гипотетическую ситуацию, когда компилятор, обнаружив, что вычисление
> аргументов функции не требует синхронизации, на современном многоядерном процессоре запустит
> оное в параллельных потоках по числу аргументов.

И у этих параллельных потоков будет общий стек. Ага. Представил. =)

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

398. Сообщение от n00by (ok), 23-Июл-21, 07:23   +/
> вроде, я не только в расте видел использование значка _ в
> смысле "пoxpeн что".

В паттерн-матчинге _ используется именно в таком смысле, вот пример на OCaml:


let fib n =
  let rec fib_aux m a b =
    match m with
    | 0 -> a
    | _ -> fib_aux (m - 1) b (a + b)
  in fib_aux n 0 1

в данном случае из-за вывода типов возможные значения _ сужены до "любое целое".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #355

399. Сообщение от Ordu (ok), 23-Июл-21, 15:41   –1 +/
> может программисты начнут хоть немного втыкать что они пишут?

Программированию скоро уже век исполнится. До сих пор не научились. Сколько ты считаешь возможным ждать у моря погоды?

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

400. Сообщение от Вадим (??), 23-Июл-21, 16:56   +3 +/
Да вы там гении самые настоящие, раз переписание драйвера на другой язык вызывает у вас приступы хохота. Наверно это очень простая задача для вас, киньте ссылку на какой-нибудь ваш "нормальный" проект на гитхабе, оценим. Постараемся не ржать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #203 Ответы: #401

401. Сообщение от n00by (ok), 23-Июл-21, 17:19   +/
Вот специально написанный для поржать драйвер: https://github.com/icestudent/ontl/blob/master/samples/zenad...

Это не GPIO, он всего лишь ловил известные на тот момент ядрёные руткиты для Виндос (включая недетектируемые альтернативами). Написан как раз на "другом языке", на котором тогда нельзя было писать драйвера, да ещё и с использованием стандартной библиотеки, которая в ядре не работала. И Билл Гейтса никто джва года не спрашивал.

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

402. Сообщение от Аноним (402), 23-Июл-21, 19:47   +1 +/
Нет никакой засады. Обычный make и rustc спасет отца русской демократии. Правда будут такие портянки Makefile как и для си.
Плюс сам карго можно локально развернуть - это совсем не сложно. Просто читайте маны https://doc.rust-lang.org/cargo/reference/specifying-depende... и все будет свое локальное.

> надо отдаться попечительскому совету

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

А там не в eBPF дело. Просто очередной выход за границы буфера, дело-то житейское.

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

403. Сообщение от yet another anonymous (?), 23-Июл-21, 21:52   –1 +/
> Правда будут такие портянки Makefile как и для си.

Вы уж как-то аккуратней мемы с такой коннотацией пользуйте, если не хотите про методичку услышать.

> Плюс сам карго можно локально развернуть - это совсем не сложно. Просто читайте маны ...

Ни разу не видел развернувших "своё, локальное" для ... ну, скажем, мнэ...,  node.js.
Зато мемы про результат этой продвинутой стратегии --- на этом ресурсе в избытке.

> нужно отдать комитету по стандартизации wg14... оу щи, это же совсем другое!

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

> а вообще это круто когда разные компиляторы дают разный результат. это так стабильно и надежно. у нас же есть целый стандарт! правда там часть вещей отданы на откуп разрабам компиляторов... но зато стандарт и множество реализаций.

Тут комментировать нечего: один из методов "к победе в дискуссии".

> А там не в eBPF дело.

Да так, оно там чуть более, чем существенно.

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

404. Сообщение от px (??), 23-Июл-21, 22:11   +/
Можно выходить и неумышленно, к примеру аллоцировав буфер, и взяв смещение в нём из какого-нибудь заголовка кого-нибудь пакета не проверив...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #364

405. Сообщение от Аноним (405), 23-Июл-21, 22:56   +/
> Программированию скоро уже век исполнится.

Какой век?! Пневмо-гидро-логические программируемые элементы были уже в Древней Греции. Не говоря уж про механику программируемую (вал, штыри, верёвка).

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

406. Сообщение от Аноним (405), 23-Июл-21, 22:57   –1 +/
Но, как показала практика, древние программисты были умнее современных растаманов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #405

407. Сообщение от Аноньимъ (ok), 24-Июл-21, 03:47   +/
Не понял шутки, это же сипипишка, стандартная для шиндовс штука.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #401 Ответы: #415

408. Сообщение от Аноньимъ (ok), 24-Июл-21, 03:53   +/
Оно синтаксически сиподобное, или скорее сипипи подобное.
Что конечно ужасно, но видимо время забыть этот жуткий пережиток прошлого навязанный корпорастами ещё не пришло.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

409. Сообщение от Аноньимъ (ok), 24-Июл-21, 03:54   +/
Проще чем у лиспа синтаксиса уже быть не может.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

410. Сообщение от Аноньимъ (ok), 24-Июл-21, 03:56   +/
Выжили, родили сыновей, внуков и правнуков. И теперь передают правнукам искусство лиспа, оружие для более цивилизованного будущего века.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115

411. Сообщение от Аноньимъ (ok), 24-Июл-21, 03:59   +/
>На С можно написать абсолютно любой код.

А нужно работающий.

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

412. Сообщение от Аноньимъ (ok), 24-Июл-21, 04:07   +/
В линуксе даже кеш фс не могут от свопа защитить...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #231 Ответы: #416

413. Сообщение от Аноньимъ (ok), 24-Июл-21, 04:20   +/
А потом пацаны одевают на себя пушистые костюмы с хвостмками и ушками и едут на фурфест.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #211 Ответы: #424

414. Сообщение от Аноньимъ (ok), 24-Июл-21, 04:31   +/
Это ещё в лиспе было в бородатые года когда сишка была бредовой фантазией в головах корпорастов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #355

415. Сообщение от n00by (ok), 24-Июл-21, 07:30   +/
Далеко не стандартная, поскольку стандартная библиотека официально отсутствует. Тем более на момент публикации драйвера (2007-й год). Вот ситуация на тот момент http://www.osronline.com/article.cfm%5Earticle%3D4...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #407

416. Сообщение от n00by (ok), 24-Июл-21, 07:35   +/
А зачем? Когда юзеры добровольно организуют своп в zRAM))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #412 Ответы: #417

417. Сообщение от Аноньимъ (ok), 24-Июл-21, 08:44   +/
> А зачем? Когда юзеры добровольно организуют своп в zRAM))

Тем более за этим.

Но да, одно изобретение линукса чудесатее другого.

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

418. Сообщение от protonessoemail (?), 24-Июл-21, 14:02   +/
Ядро всё ещё на C++
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #318 Ответы: #423

419. Сообщение от СССР (?), 24-Июл-21, 23:50   +/
они есть, просто от той масса новых, которая зашла в отрасль, не требуется разрабатывать структуры данных, оптимизировать. Требуется создавать контент либо решать бизнес-логику котораю уже завтра изменится и потребует переписки уже кода. А сейчас эта масса быдлокодеров считает себя как класс, заявляет свои права на переписку частей ядра (как пример) на модный язык.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #399 Ответы: #420

420. Сообщение от Ordu (ok), 25-Июл-21, 13:56   +/
> они есть, просто от той масса новых, которая зашла в отрасль, не
> требуется разрабатывать структуры данных, оптимизировать. Требуется создавать контент
> либо решать бизнес-логику котораю уже завтра изменится и потребует переписки уже
> кода. А сейчас эта масса быдлокодеров считает себя как класс, заявляет
> свои права на переписку частей ядра (как пример) на модный язык.

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

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

421. Сообщение от freecoder (?), 25-Июл-21, 18:24   +/
> Ты говоришь, что это принципиально разные вещи, в чём "принципиальность" разницы?
> Связывание происходит в обоих случаях, только в первом с безымянной переменной, во
> второй с переменной имеющей имя. В любом случае значение будет существовать
> до выхода переменной из области видимости.

Разница принципиальная, так как в случае использования _ нет никакого байндинга и нет передачи владения (потому что подчеркивание - это не имя). А вот в случае использования имен _x - байндинг есть и передача владения есть. Вот этот код скомпилируется:

let string = Some("foo".to_string());
if let Some(_) = string {
}
println!("{:?}", string);

Но если ты заменишь _ на _x - то не скомпилируется.

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

422. Сообщение от Ordu (ok), 25-Июл-21, 18:59   +/
> вот в случае использования имен _x - байндинг есть и передача
> владения есть. Вот этот код скомпилируется:
> let string = Some("foo".to_string());
> if let Some(_) = string {
> }
> println!("{:?}", string);
> Но если ты заменишь _ на _x - то не скомпилируется.

Хм. Да, действительно.

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

423. Сообщение от Аноноша (?), 25-Июл-21, 21:51   +/
> Ядро всё ещё на C++

Спасибо! Просмотрел этот момент.

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

424. Сообщение от Аноноша (?), 25-Июл-21, 21:52   +1 +/
> А потом пацаны одевают на себя пушистые костюмы с хвостмками и ушками
> и едут на фурфест.

Вы про растоманов их мурзиллы?

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

425. Сообщение от Аноним (425), 25-Июл-21, 22:00   +/
Вам знаком термин сложность алгоритма? Вы пытались написать проверку во всех местах, где это делает Rust-компилятор? Изучали ли в университете дискретную математику или вообще математику - не спрашиваю)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #247

426. Сообщение от Аноньимъ (ok), 25-Июл-21, 22:24   –1 +/
Ну к чему это притворство. Я про С++ пацанов.
Про растенианцев ничего не знаю, в близи не видел. А про кресты все давно знают что там к чему.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #424

427. Сообщение от Аноним (427), 02-Авг-21, 23:08   +/
> Вам знаком термин "машина Тьюринга"?

Хм, но ведь и CSS считается Тьюринг-полным языком, однако никтопочему-то там не пытается накостылять ownership.

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

428. Сообщение от _kp (ok), 10-Авг-21, 13:43   +/
> Вот, типичнейшая иллюстрация к тезису о дремучести критиканов C++. Человек застрял на
> уровне C и по нему судит о C++.

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

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

Да всякий несовместимый код можно обложить обёртками, что б включить в более свежий проект, но, лучше подобной радости по минимуму.

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


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

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




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

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