The OpenNET Project / Index page

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



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

"Выпуск Rust 1.93. Проекты Rex, Fjall 3 и Arti 1.9.0"  +/
Сообщение от opennews (?), 23-Янв-26, 00:05 
Опубликован релиз языка программирования  Rust 1.93, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки)...

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

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

Оглавление

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

2. Сообщение от Карлос Сношайтилис (ok), 23-Янв-26, 00:19   +2 +/
Скромный релиз
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #63, #66

6. Сообщение от Аноним (6), 23-Янв-26, 00:30   –4 +/
Чё там какие-нибудь подвижки по асинхронным генераторам? Сабж даже питон неспособен заменить из-за этого. Релизы ради релизов тоже странная практика, в прошлый раз пришлось 10 раз подряд скомпилировать тулчейн раста и буквально ничего полезного не добавили.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #12, #24, #27, #30, #34

12. Сообщение от Аноним (12), 23-Янв-26, 00:41   +/
> Чё там какие-нибудь подвижки по асинхронным генераторам?

https://docs.rs/async-gen

> Сабж даже питон неспособен заменить из-за этого.

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

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

Очередной кексперт всё подряд компилирующий. Между прочим, официальные тулчейны с PGO собирают, а онанимы всё пытаются что-то кому-то доказать.

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

13. Сообщение от Аноним (13), 23-Янв-26, 01:07   +2 +/
>asm!(

если это асм то о какой безопасной работе с памятью речь? а если там работа с памятью безопасная тогда какой это к чёрту асм...

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

14. Сообщение от Аноним (115), 23-Янв-26, 01:14   –1 +/
Что почитать по теме управления памятью? Типа как устроена память в java, регионы и так далее, не про статические проверик, при этом не на уровне hello world
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19

16. Сообщение от Аноним (6), 23-Янв-26, 01:54   +/
Ну, это костыли. Что это нигде? Асинхронный код использует не блокирующиеся интерфейсы ядра. То что находятся люди, до сих пор пишущие не масштабирующийся код с блокировками -- только их проблема. Программисты в курсе, где можно получить эффективное масштабирование с минимумом затрат.

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

И доверять официальным тулчейнам не стоит, у раста они особенно кривые всегда. Постоянно линковку ломают тоже, но это к llvm больше. Между прочим.

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

19. Сообщение от Rev (ok), 23-Янв-26, 02:18   –1 +/
Тебя забанили в больших нейронках?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #39, #46, #134

20. Сообщение от Аноним (20), 23-Янв-26, 02:33   –1 +/
>Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей,

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

> выход за границы буфера и т.п.

А как выход за границы защищен? Всегда таскают размер в ссылке, всегда делают проверку индекса, и если что не так, то паника?

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

21. Сообщение от Аноним (21), 23-Янв-26, 02:49   +/
Новая итерация бутстрапа подъехала.
Ответить | Правка | Наверх | Cообщить модератору

22. Сообщение от Карлос Сношайтилис (ok), 23-Янв-26, 02:58   +/
> обычный сборщик мусора тоже защищает от этих проблем

А ещё он мусор собирает.
И пусть весь мир подождёт

> Всегда таскают размер в ссылке...?

Периодически.
Или в объекте.
И плюс кучка мелких оптимизаций

> и если что не так, то паника?

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

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

23. Сообщение от Аноним (23), 23-Янв-26, 03:02   +/
>В Rex-программах допускается использование подмножества языка Rust, предоставляющего гарантии безопасности.

unwrap допускается?
>легковесный Runtime

Прямо даже легче С?

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

24. Сообщение от Карлос Сношайтилис (ok), 23-Янв-26, 03:02   +2 +/
> Чё там какие-нибудь подвижки по асинхронным генераторам?

Нет, хватает того что есть

> в прошлый раз пришлось 10 раз подряд скомпилировать тулчейн раста

"Я три дня гналась за вами, чтобы сказать как вы мне безразличны!"

> и буквально ничего полезного не добавили

Для этого достаточно прочитать анонс. Буквально пара минут

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

25. Сообщение от Аноним (6), 23-Янв-26, 03:06   +/
Кому хватает? Я конечно понимаю, что на расте программы не пишут, но всё же.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #61

26. Сообщение от Имя (?), 23-Янв-26, 03:07   +1 +/
Я разочарован полным отсутствием новых применений признака const в этом релизе.
Ответить | Правка | Наверх | Cообщить модератору

27. Сообщение от Аноним (27), 23-Янв-26, 03:38   +1 +/
>Чё там какие-нибудь подвижки по асинхронным генераторам?

А что это такое?

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

28. Сообщение от Аноним (27), 23-Янв-26, 03:44   +/
>Есть ссылки и подсчет ссылок, но и обычный сборщик мусора тоже защищает от этих проблем

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

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

29. Сообщение от morphe (?), 23-Янв-26, 04:04   +/
> Прямо даже легче С?

Учитывая что у C есть только BPF со стрёмным верификатором и JIT - да

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

30. Сообщение от morphe (?), 23-Янв-26, 04:08   +/
> Чё там какие-нибудь подвижки по асинхронным генераторам? Сабж даже питон неспособен заменить из-за этого.

У тебя X-Y проблема, сначала скажи зачем они тебе нужны, и какие проблемы нельзя решить уже сейчас

У асинхронных генераторов есть сложности с правильным дизайном, в Rust подобные вещи не делают хуяк-хуяк, если бы делалось так - то Future так и требовали бы аллокации. Если есть желание решить вопросы с ними - то вперёд в RFC/issues, а пока есть https://docs.rs/async-gen/latest/async_gen/index.html который ничуть не костыль, а библиотечная реализация того же самого функционала, которая немногим хуже того что будет в самом Rust.

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

34. Сообщение от Хрю (?), 23-Янв-26, 06:22   +1 +/
>Сабж даже питон неспособен заменить

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

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

39. Сообщение от Аноним (39), 23-Янв-26, 07:23   +3 +/
О, пользуясь случаем хотел бы спросить. Как бы мне сделать так, чтобы меня забанили в нейронках, больших и малых? Чтобы вот прям ни в каком виде им было нельзя со мной соприкасаться?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #52, #107, #133

43. Сообщение от Анонимусс (-), 23-Янв-26, 08:46   +/
> а если там работа с памятью безопасная тогда какой это к чёрту асм...

Жаль что вы не в курсе, что asm! можно использовать только в unsafe блоках.
Могу только предложить почитать доку перед тем как задавать вопросы doc.rust-lang.org/reference/inline-assembly.html

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

45. Сообщение от Проходил мимо (?), 23-Янв-26, 09:16   +/
В Rust есть такое волшебное слово unsafe и где начинается unsafe - там заканчивается безопасность.
Предполагается, что пишущий unsafe блок программист знает и понимает, что делает. А если не знает - то это уже не проблема Rust-а.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #77, #101, #120

46. Сообщение от Аноним (46), 23-Янв-26, 09:19   +1 +/
Это в которых, что бы получить правильный детальный ответ надо знать этот ответ. Ибо пока не спросишь про конкретные исключения и конкретные детали он их даже ну упомянет и не упомянет их возможность существования. Типа догадайся, что такое может быть и спроси.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #53

48. Сообщение от КО (?), 23-Янв-26, 09:31   –2 +/
Да в Ржавом каждый чих надо делать в unsafe блоках. Писать в union - safe, читать unsafe и т.п.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43 Ответы: #55, #73

49. Сообщение от Проходил мимо (?), 23-Янв-26, 09:40   +/
По поводу выхода за границы буфера скажу так - можно написать паникующий код а можно такой, который будет эту ситуацию штатно разруливать. Вот пример паникующего кода:
//-----------------------------------------------
fn  main()
{
    //  Породим тестовый вектор
    let v: Vec::<u32> = Vec::from(&[1,2,3,4,5]);
    //  Индекс для доступа к элементам вектора
    let mut idx: usize = 0;
    println!("Попытка обращения к данным за границей буфера");
    while idx <= v.len()
    {
        println!("v[{}] = {}", idx, v[idx]);
        idx += 1;
    }
}
//-----------------------------------------------
Результат работы:
$ ./target/debug/rust_badindex
Попытка обращения к данным за границей буфера
v[0] = 1
v[1] = 2
v[2] = 3
v[3] = 4
v[4] = 5
thread 'main' panicked at src/main.rs:10:38:
index out of bounds: the len is 5 but the index is 5

А вот пример штатной обработки ситуации:
//-----------------------------------------------
fn  main()
{
    //  Породим тестовый вектор
    let v: Vec::<u32> = Vec::from(&[1,2,3,4,5]);
    //  Индекс для доступа к элементам вектора
    let mut idx: usize = 0;
    println!("Попытка обращения к данным за границей буфера");
    while idx <= v.len()
    {
        match   v.get(idx)
        {
            Some(n) => { println!("v[{}] = {}", idx, n); },
            None => { println!("Индекс за пределами вектора"); },
        }
        idx += 1;
    }
}
//-----------------------------------------------
Результат работы:
Попытка обращения к данным за границей буфера
v[0] = 1
v[1] = 2
v[2] = 3
v[3] = 4
v[4] = 5
Индекс за пределами вектора

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

50. Сообщение от КО (?), 23-Янв-26, 09:42   –1 +/
Не "не нужен", а не подходит.
Ибо системному программисту в отличии от прикладного важно сколько времени отрабатывает, например, следующая конструкция языка:

}

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

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

51. Сообщение от КО (?), 23-Янв-26, 09:50   –1 +/
>А как выход за границы защищен? Всегда таскают размер в ссылке, всегда делают проверку индекса, и если что не так, то паника?

Ну почему сразу паника? Можно и управляемо к делу подходить. :)

fn main() {
    union MyUnion {
      f1: [f32;2],
      f2: [f32;3]
    }

    const U : MyUnion = MyUnion { f2: [0.0,1.0,2.0] };


    for i in 0..=4 {
         print!(" {} ", i);
         let f1 = unsafe{U.f1};
         let f2 = unsafe{U.f2};
        
         println!("{:?}",  match f1.get(i) {
             Some(n) => n,
             None => match f2.get(i) {
             Some(_) => &f32::NAN,
             None => break
           }
         } );
    }
    
}

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

52. Сообщение от Аноним (52), 23-Янв-26, 09:56   +/
Уезжай жить в лес.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

53. Сообщение от Аноним (52), 23-Янв-26, 09:57   –1 +/
Это которыми ты не умеешь пользоваться.      
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #126, #129

55. Сообщение от Проходил мимо (?), 23-Янв-26, 10:10   –2 +/
Если попробовать немного осмыслить ситуацию, то внезапно окажется что unsafe в union действительно необходим в силу его природы. Другое дело, что необходимость в самом union возникает ужасно редко.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48 Ответы: #58, #59, #128

56. Сообщение от Аноним (96), 23-Янв-26, 10:29   +/
Как раст в бэкендах по сравнению с гошечкой? Есть от раста вау-вау эффект по производительности?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #67, #80, #143

57. Сообщение от Аноним (115), 23-Янв-26, 10:37   +/
>А ещё он мусор собирает.
>И пусть весь мир подождёт

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

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

58. Сообщение от КО (?), 23-Янв-26, 11:14   +1 +/
Union это простая абстракция, которая нужна в первую очередь, когда надо меганакрученную структуру передать как набор байтиков, не заморачиваясь с ее логическими свойствами.
Но сделать компилятор, который проверяет каким образом ты инициализировал union (положим первым, а не вторым) и при этом считает, что читать тем же способом эти данные unsafe - явная лень создателей.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #70, #71

59. Сообщение от КО (?), 23-Янв-26, 11:15   +1 +/
И вообще вопрос привычки - чем чаще надо делать unsafe, тем меньше ты заморачиваешься с тем, а стоит ли делать safe.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55

60. Сообщение от Аноним (60), 23-Янв-26, 11:28   –1 +/
> Постоянно линковку ломают тоже, но это к llvm больше.

Багрепорт ты конечно же не отправил.

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

61. Сообщение от Fyjy (?), 23-Янв-26, 11:34   +/
Вот именно!
Ты даже не сказал какую ты программу пишешь, что тебе не хватает асинхронных генераторов, а сразу ныть начал.
А то складывается впечатление что никакую.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #62

62. Сообщение от Аноним (6), 23-Янв-26, 11:45   +/
Любую, мне надо, чтобы треды 2x числа ядер исполнялись параллельно с минимумом затрат и асинхронные генераторы годятся для этого как нельзя лучше. Допустим, я хочу использовать io_uring.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #61 Ответы: #72, #76

63. Сообщение от Аноним (63), 23-Янв-26, 11:49   +3 +/
Паскаль изначально умел безопасно работать с памятью.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #106, #115, #142

64. Сообщение от Аноним (63), 23-Янв-26, 11:59   +/
> Встроенная в поставку Rust стандартная си-библиотека Musl

Обёртки вокруг си генерировать научились, что ещё можно на расте сделать, кроме обёрток?

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

66. Сообщение от Аноним (63), 23-Янв-26, 12:07   +2 +/
Есть существенные подвижки:

"riscv64 ... второй уровень поддержки, который подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора"

отсутствие гарантий при прохождении тестового набора - это как так? Неужели компилятор может выдать неправильный код?

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

67. Сообщение от Аноним (67), 23-Янв-26, 12:20   +2 +/
конечно есть, быстрее падает в паники и утекает память
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56

68. Сообщение от Анонимусс (?), 23-Янв-26, 12:35   +2 +/
> отсутствие гарантий при прохождении тестового набора - это как так?

Просто тесты не гоняют.
А раз не гоняют, то "гарантий прохождении тестового набора" дать не могу.

> Неужели компилятор может выдать неправильный код?

Конечно.
В любом компиляторе (что в rustc, что в llvm, что в gcc) могут быть баги.
Вот напр:
  rustc - github.com/rust-embedded/wg/issues/361
  llvm - github.com/llvm/llvm-project/issues/176001
  gcc - github.com/riscvarchive/riscv-gcc/issues/378

> Неужели компилятор может выдать неправильный код?

Разумеется!)) А еще тесты не гарантия правильной работы.
Они гарантируют только то, что ими покрыто при условии что в самих тестах нет багов))

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

69. Сообщение от Аноним (20), 23-Янв-26, 12:47   +/
>Есть системные языки для которых сборщик мусора не нужен, принципиально.

Даже для С есть сборщики мусора. Подсчет ссылок это тоже не зеро кост, и оно не хендлит циклические ссылки, так что для раста не помешает опциональная полноценная сборка мусора для некоторых данных. Наверняка крейты есть уже.

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

70. Сообщение от Анонимусс (?), 23-Янв-26, 12:48   +4 +/
> проверяет каким образом

Вся суть юниона - не хранить как он был инициализирован.

> ты инициализировал union

А если это был не я?
А юнион прилетел из сторонней либы или вообще сишного кода?

> явная лень создателей.

Показали бы мастеркласс этим неучам и сделали бы как надо))

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

71. Сообщение от Проходил мимо (?), 23-Янв-26, 12:49   +/
Поясните пожалуйста, какой смысл вы вкладываете в слово "передать"?
Передать в функцию, передать по сети или еще что-то?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #74

72. Сообщение от Аноним (115), 23-Янв-26, 13:08   +/
Значит вы берёте язык с gil и рассказываете, как он подходит лучше чем rust?
>и асинхронные генераторы годятся для этого как нельзя лучше

Асинхронность - это одно единственное ядро.

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

73. Сообщение от Аноним (115), 23-Янв-26, 13:09   –2 +/
Вы не сишник случаем? Зачем вам union, почему не взять ADT?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48 Ответы: #98, #164

74. Сообщение от КО (?), 23-Янв-26, 13:09   +/
По сети, в файлик, в функцию щифрования или проверки контрольной суммы - т.е. выполнить операции которым неважна логическая структура.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71

75. Сообщение от Аноним (75), 23-Янв-26, 13:17   +1 +/
>   gcc - github.com/riscvarchive/riscv-gcc/issues/378

Там и поинтереснее примеры были - сам фин ругался, т.к. ловили их уже в ядре:
https://lkml.org/lkml/2014/7/24/584
https://gcc.gnu.org/legacy-ml/gcc/2012-02/msg00027.html
https://gcc.gnu.org/legacy-ml/gcc/2009-11/msg00505.html

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

76. Сообщение от Аноним (106), 23-Янв-26, 13:27   +/
> исполнялись параллельно ... асинхронные генераторы

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


> с минимумом затрат

Минимум затрат со statefull асинхронностью в питоне?
Ты уж либо крестик сними...

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

77. Сообщение от Аноним (106), 23-Янв-26, 13:34   +1 +/
> там заканчивается безопасность

Не заканчивается.
Все гарантии работают. Добавляется возможность операций с сырыми указателями, некорректное обращение с ними вызовет панику, а не поведение "мне повезёт", как в С/С++

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

78. Сообщение от Аноним (-), 23-Янв-26, 13:37   +1 +/
> <[MaybeUninit<T>]>::write_copy_of_slice

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

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

79. Сообщение от Аноним (6), 23-Янв-26, 13:37   +/
Это кооперативная многозадачность и параллельное исполнение в первую очередь. Если это бизилуп, то ограничение 1 ядро, конечно. Но в таком случае экономия тредов и памяти остаётся. Прелесть такого кода в том, что ты добавляешь ядер и производительность автоматически масштабируется под доступные ресурсы.

Что до gil, проблема ортогональна. Главное преимущество это отсутствие блокировок и простота работы с подобной архитектурой.

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

80. Сообщение от Аноним (-), 23-Янв-26, 13:38   +/
> Как раст в бэкендах по сравнению с гошечкой? Есть от раста вау-вау эффект по производительности?

У гошечки GC видите ли. А это penalty и по производительности и по жору памяти. В этом смысле Rust скорее с C/C++ по скорости уместнее сравнивать.

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

81. Сообщение от Аноним (106), 23-Янв-26, 13:39   +/
> в огромном количестве мест

Это огромное количество мест сейчас с нами, в одной комнате?

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

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

82. Сообщение от Аноним (85), 23-Янв-26, 13:41   +2 +/
> Учитывая что у C есть только BPF со стрёмным верификатором и JIT - да

Я таки рантайм верификатору поверю больше чем каким-то гарантиям какого-то компилера - когда потом хаксор, извините, пропихнет asm! или что там вон те забудут или "забудут" - или просто бинарь хексэдитором пропатчит для обхода выдачи компилера - и любители гарантий удивленно так - "а что, так можно было?!". С eBPF то - и такое худо-бедно придушится верификатором. А с вон тем что?? Сразу бац и в кернелмод чтоли?

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

83. Сообщение от Аноним (6), 23-Янв-26, 13:42   +1 +/
у тебя не будет код исполняться без ожидания, это время можно замечательно использовать вместо блокировки в синхронном коде
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76

84. Сообщение от Аноним (6), 23-Янв-26, 13:44   +/
другой вариант это зелёные треды, т.е. stackless python и прочее, вот это уже затраты
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76

85. Сообщение от Аноним (85), 23-Янв-26, 13:44   +/

    {
        match   v.get(idx)
        {
            Some(n) => { println!("v[{}] = {}", idx, n); },
            None => { println!("Индекс за пределами вектора"); },

И как сий финт ушами по скорости? Этот "match" с несколькими значениями - сильно тяжелый цикл нагнет? По сравнению с if (i >= ARRAY_SIZE(x)) { // опчки, out of bounds }
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #87, #91, #102, #139, #175

86. Сообщение от Аноним (86), 23-Янв-26, 13:50   +1 +/
> Неужели компилятор может выдать неправильный код?

Зато безопастный.

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

87. Сообщение от КО (?), 23-Янв-26, 13:51   +/
Если на то пошло, для немутирующих слайсов достаточно 1 раз проверить len(), чем в каждой итерации
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85

89. Сообщение от Facemakeremail (?), 23-Янв-26, 13:55   +/
Узнать об этом -- тебе в качестве домашнего задания.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64

90. Сообщение от Аноним (106), 23-Янв-26, 14:06   +/
Я не понимаю, ты сравниваешь асинк с питоне и асинк в расте или ты пытаешься продать нам асинхронный подход в принципе? Никто, в здравом уме, не будет спорить, что iobound задачи должны быть асинхронными.
Такое впечатление, что ты недавно познакомился с асинхронщиной в питоне и его сахар тебя очаровал.

> Но в таком случае экономия тредов и памяти остаётся

Потребление ресурсов cpu и ram увеличивается, асинк не бесплатен, тем более, если сравнивать асинк в питоне и расте.

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

91. Сообщение от Аноним (-), 23-Янв-26, 14:06   +/
Во-первых ты докопался до просто примера.
В реальности в зависимости от того оно мутирующее или нет можно len() проверить 1 раз.

> И как сий финт ушами по скорости? Этот "match" с несколькими значениями - сильно тяжелый цикл нагнет?

Зависти от того что такое "тяжелый цикл")

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

92. Сообщение от Аноним (92), 23-Янв-26, 14:10   –1 +/
>             Some(n) => n,
>             None => match f2.get(i) {

УЖАС! В этом расте хотя бы ифы есть?

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

93. Сообщение от Аноним (106), 23-Янв-26, 14:15   +/
Время работы сборщика мусора недетерминировано, в отличии от подсчёта ссылок.
Это принципиальное различие, которое не позволяет называть подсчёт ссылок сборкой мусора.
Иначе можно сказать, что вызов free это тоже сборка мусора и это понятие потеряет всякий смысл.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69 Ответы: #99

94. Сообщение от Аноним (6), 23-Янв-26, 14:20   +/
Спасибо, я в курсе. В типичной программе абсолютно всё IO и генераторы это эффективная абстракция замечательно ложащаяся на асинхронность. Так почему бы не сравнивать? Какие у тебя с этим проблемы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #90 Ответы: #104

95. Сообщение от Аноним (63), 23-Янв-26, 14:35   +/
Если специалисты не могут написать компилятор без ошибок, как можно доверять высказываниям этих же спецов о "безопасной работе с памятью"?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #103, #117

96. Сообщение от Аноним (96), 23-Янв-26, 14:37   +/
Не обязательно. Вон в ноде рантайм - однопоточный, а ивент луп (который крутит вертит очередью выполнением тасков) - многопоточный.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72

97. Сообщение от КО (?), 23-Янв-26, 14:41   +/
С ифами и дурак напишет. :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #92

98. Сообщение от Проходил мимо (?), 23-Янв-26, 14:44   +/
Для Си-шника естественно было бы получить указатель на экземпляр структуры и ее размер при помощи sizeof(). Использование для этих целей union для Си-шника выглядит как несусветная дичь.
Попытка реализации этого подхода в Rust натыкается на сложности с приведением типа указателей.

PS Вообще же кидать в сеть бинарные структуры - это к потенциальному огребанию проблем.

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

99. Сообщение от КО (?), 23-Янв-26, 14:50   +/
Сборка мусора через подсчет ссылок - это тоже сборка мусора.
И она так же недетерминирована - ибо высвобождение корня дрема может вызвать каскад высвобождений и далее понеслось.
Другое дело, что подсчет ссылок более менее тривиален для однопоточного приложения.

free - это управляемая программой сборка мусора.

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

101. Сообщение от Аноним (101), 23-Янв-26, 14:55   +2 +/
>то это уже не проблема Rust-а.

а проблема пользователя

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

102. Сообщение от Проходил мимо (?), 23-Янв-26, 14:56   +1 +/
Со скоростью там все нормально, сам по себе match - это что-то типа switch с очень расширенными возможностями, но при этом работает он очень быстро.

Вообще же, с точки зрения скорости у программ на Rust очень важен режим компиляции. По умолчанию компиляция идет в режиме для отладки и в таком вот виде программа может выполняться не очень быстро (по сравнению с кодом на чистом Си/Си++). Но вот когда собираешь ее с ключиком --release то все начинает просто летать. Прирост скорости, по ощущениям, гораздо выше, чем когда компилируешь программу на Си в режиме для отладки и в режиме максимальной оптимизации.

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

103. Сообщение от Аноним (103), 23-Янв-26, 15:12   +/
Если врачи не научились лечить все виды рака, то давай твой аппендицит тоже оставим как есть?

Ошибки будут всегда.
Даже для верифиции кода используется программа в которой тоже могут быть ошибки.
Но каждый уровень добавляет проверки и уменьшает вероятность ошибки.

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

104. Сообщение от Аноним (106), 23-Янв-26, 15:15   +/
> IO и генераторы это эффективная абстракция

Зачем опять эта теория? Кто с тобой в этой части спорит?

> Какие у тебя с этим проблемы.

У меня нет, я сравнил, меня всё устраивает. Если кому-то нужен синтаксический сахар генераторов как в питоне, есть async-gen

> Так почему бы не сравнивать?

Что с чем?
Stateless конечный автомат в расте и stateful подход в питоне?
И что лучше, на твой взгляд?
И по какому критерию ты сравниваешь?

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

105. Сообщение от Аноним (106), 23-Янв-26, 15:20   +2 +/
> free - это управляемая программой сборка мусора.

Чем отличается понятие "сборка мусора" от "освобожение памяти"?

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

106. Сообщение от Аноним (106), 23-Янв-26, 15:28   +1 +/
И бэйсик.
И куча всего чего, и сейчас, работает безопасно с памятью.
Какие ещё инсайты будут?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #63 Ответы: #110

107. Сообщение от Аноним (107), 23-Янв-26, 15:28   –1 +/
Отрезать интернет-кабель. Больше никак.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

108. Сообщение от Аноним (6), 23-Янв-26, 15:29   +/
Я просто вижу, у тебя какие-то сложности с пониманием асинхронности. Вот я хочу создавать пулы обработчиков и бросать их на ивент луп, всё остальное меня не заботит. Если мне придётся вручную закатывать солнце, то зачем мне асинхронность? А ещё я вижу, что используются блокирующиеся интерфейсы и это очень субоптимально в плане менеджмента ресурсов. Ну и да, хочу писать без tokio.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #104 Ответы: #113

110. Сообщение от Аноним (110), 23-Янв-26, 15:49   +/
Какой ты ненасытный
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #106

111. Сообщение от Аноним (111), 23-Янв-26, 15:52   +1 +/
"Поздно пить Боржоми!") Раст опоздал на пару десятков лет. Теперь ИИ будет анализировать и исправлять уязвимости в Си коде. И это будет намного проще и прозрачнее, чем перелопачивать дебри Раста.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #167

112. Сообщение от Аноним (110), 23-Янв-26, 15:53   +/
> Если хирург не умеет ровно сделать разрез, не задев другие органы, давай не будем доверять ему оперировать твой аппендицит?

Поправил. А то твоя аналогия слишком уж кривая была.

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

113. Сообщение от Аноним (106), 23-Янв-26, 15:55   +/
> Я просто вижу, у тебя какие-то сложности с пониманием асинхронности.

А-а-а-а, так ты для меня стараешься и пишешь банальности!
Спасибо, это очень мило ❤️

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

Прекрасно!
Сахар генераторов для этого не нужен.

> Если мне придётся вручную закатывать солнце, то зачем мне асинхронность?

А зачем ты тогда используешь питон? У него асинк заразный. Юзай гошку, там всё максимально просто.

> Ну и да, хочу писать без tokio.

Пиши без него, в чём проблема? Это не единственный рантайм.
А в питоне ты тоже пишешь без asyncio?

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

114. Сообщение от Феникс123 (?), 23-Янв-26, 15:58   +/
Мне кажется вы тут сами себе противоречите, с одной стороны ратуете за масштабирование, а с другой стороны и с гилом сойдет. На rust уже несколько лет как асинхронность с async/await - вот вам полная масштабируемость на все ядра. Для чего нужны именно генераторы непонятно, но изначально async/await были реализованы через генераторы, просто их синтаксис был не стабилизирован. Из фьючей легким движением руки получаются генераторы, но не так чтобы это было особо востребовано.

Мне async/await если честно не очень, но в расте по другому очень сложно - если программировать колбеки то будут большие проблемы с боровом.

Синхронный IO тоже не слишком проблема кстати, если у клиента одно соединение с сервером масштабирование не требуется.

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

115. Сообщение от Аноним (115), 23-Янв-26, 16:03   +1 +/
Паскаль не имеет достаточно продвинутой системы типов, для безопасной работы с памятью.
Паскалисты это латентные сишники
https://wiki.freepascal.org/Memory_Management#Dangling_Pointers
https://wiki.freepascal.org/Memory_Management#Memory_Managem...
https://wiki.freepascal.org/Memory_Management#Don't_Free
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #63

116. Сообщение от КО (?), 23-Янв-26, 16:03   +1 +/
Уговорил - если нет поиска того, что надо освободить - то просто освобождение памяти
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #105

117. Сообщение от Аноним (115), 23-Янв-26, 16:04   +1 +/
А вы на адрес обратите внимание. Ошибки в кодогенераторе llvm/gcc, совершенно внезапно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #95 Ответы: #151

118. Сообщение от cheburnator9000 (ok), 23-Янв-26, 16:05   +1 +/
На Горе2Дуба работает? Или уже deprecated?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #130

119. Сообщение от Аноним (115), 23-Янв-26, 16:15   +/
>Что до gil, проблема ортогональна.

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

Этого банально не произойдёт. Вы не по ядрам раскидываете, а по процессам.
>Главное преимущество это отсутствие блокировок

GIL - это буквально наличие блокировки. Послать хоть 10 хоть 100 запросов серверу вы сможете, может быть даже качать параллельно, но вот обрабатывать 10 ответов от сервера - нет, пока один ответ не обработается, остальные будут висеть.
>Это кооперативная многозадачность и параллельное исполнение в первую очередь.

Для параллельного исполнения нужна многоядерность.

python - асинхронный, одноядерный
go - асинхронный, многоядерный
rust - асинхронный, многоядерный

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

120. Сообщение от Аноним (120), 23-Янв-26, 16:21   +2 +/
А как только в C-коде дыра, связанная с памятью (хотя такое довольно редко происходит), то сразу у растеров язык C виноват.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #123

121. Сообщение от Аноним (115), 23-Янв-26, 16:23   +/
>Гошка заняла прочное место в инфраструктурных приложениях, почти успешно заменив баш и питон.

Зато раньше почти весь этот софт писали на си. Оказывается, если написать тот же docker на go, небосвод на землю не рухнет.
>В остальных местах - постольку-поскольку, ибо задержки и жор памяти, при повышении нагрузки, непредсказуемые и болезненные.

Тем временем куча IDE почему-то на java, Elisp, и даже в neovim пробрался lua. Вот как-то не наблюдается почему-то таких программ на c/c++. Даже тот же MS VS почему-то с крестов на c# переводят. Тоже небосвод не рухнул.

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

122. Сообщение от Аноним (115), 23-Янв-26, 16:26   +2 +/
Вам дали улучшенную версию if-ов, с проверками времени компиляции на полноту вариантов, а вы обратно в каменный век засобирались.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #92 Ответы: #125

123. Сообщение от Аноним (-), 23-Янв-26, 16:31   +1 +/
> А как только в C-коде дыра, связанная с памятью (хотя такое довольно редко происходит),

хахаха, редкая?
Ну посмотри сколько дыр в ядре из-за Memory Corruption
cvedetails.com/vendor/33/Linux.html

> то сразу у растеров язык C виноват.

Конечно нет!
Виноваты погромисты, которые из-за своей лyддuтности до сих пор каменным топором работают.


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

125. Сообщение от КО (?), 23-Янв-26, 16:43   +/
Ну если придираться, то это скорее аналог ()?():()
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #122

126. Сообщение от Аноним (126), 23-Янв-26, 17:00   +2 +/
Очевидно, что умею, раз получил в итоге полный правильный ответ. Вот только без знания того, что должно быть, нельзя гарантированно получить ответ о том что должно быть.

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

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

128. Сообщение от Аноним (128), 23-Янв-26, 17:05   +1 +/
>возникает ужасно редко.

IPv4,IPv6 - внезапно обрабатываются как union  

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

129. Сообщение от Аноним (128), 23-Янв-26, 17:11   +1 +/
>Это которыми ты не умеешь пользоваться.  

Потребитель не дорос? Новая философия услуг нейросетей.

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

130. Сообщение от Аноним (130), 23-Янв-26, 17:12   +/
> На Горе2Дуба работает? Или уже deprecated?

Обижаете! Оно еще и более древние древности поддерживает на уровне Tier2.

i586-unknown-linux-gnu    ✓    32-bit Linux (kernel 3.2+, glibc 2.17, original Pentium) 3
i586-unknown-linux-musl    ✓    32-bit Linux (musl 1.2.5, original Pentium) 3

А i686-unknown-linux-gnu 32-bit Linux (kernel 3.2+, glibc 2.17+, Pentium 4) вообще в Tier 1 значится.

doc.rust-lang.org/beta/rustc/platform-support.html#tier-1-with-host-tools

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

131. Сообщение от Аноним (128), 23-Янв-26, 17:14   –1 +/
ИИ не "живет с Вами в одной реальности", а воспитан на объеме данных в лаборатории и общался с тренерами.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #126 Ответы: #132, #153

132. Сообщение от Аноним (128), 23-Янв-26, 17:16   +/
По сути это игрушка, которая нравится тренерскому коллективу и которую хотят подороже продать спонсоры.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #131

133. Сообщение от Аноним (128), 23-Янв-26, 17:19   –1 +/
Почитай литературу на тему "нелегальная жизнь" )
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

134. Сообщение от Аноним (128), 23-Янв-26, 17:21   +/
Опа, литературу и тематические сайты уже отменили?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

135. Сообщение от Аноним (128), 23-Янв-26, 17:37   +/
Для этого есть безопасный тип - срез.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

136. Сообщение от Аноним (6), 23-Янв-26, 17:51   +/
Чего? Многопроцессный код будет использовать сколько угодно ядер в питоне… Ты имел в виду многопоточный, в таком случае, ограничение по числу субинтерпретаторов и тому, насколько смогут запараллелить исполнение нативные библиотеки, освобождающие гил. На практике обработка в 1 потоке очень редко проблема. А вот постоянно блокирующиеся интерфейсы большая беда. Ну и для параллельного исполнения, конечно же, никаким образом не нужна многоядерность -- одноядерные процессоры вполне исполняют код параллельно, но это не имеет отношения к GIL.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #119

137. Сообщение от Аноним (6), 23-Янв-26, 17:56   +/
После питоножс хочется, чтобы было привычно и удобно, со всем сахаром. У меня подгорает уже на чтении бесконечно дописываемых файлов в расте, хотя казалось бы, что может быть проще. Спавнить тысячи тысяч тредов не вариант.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #113

138. Сообщение от Аноним (128), 23-Янв-26, 18:02   –1 +/
>Прирост скорости, по ощущениям, гораздо выше,

Учитывая больший оверхэд. Но в заслугу подчеркнуть надо. )

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

139. Сообщение от Аноним (128), 23-Янв-26, 18:24   +/
>По сравнению с if

здесь главное, что происходит оценка (сопоставление) значения и ветвление в зависимости от значения.

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

140. Сообщение от Аноним (128), 23-Янв-26, 18:25   +/
универсальный подход не связанный с индексом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #139

141. Сообщение от morphe (?), 23-Янв-26, 19:01   +/
Так я так понял что там идея что ты передаёшь привилегированному процессу исходный код, а он уже его линтит, компилирует, и грузит

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

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

142. Сообщение от Аноним (142), 23-Янв-26, 19:09   +/
Никогда не умел, даже намёков на это не было.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #63

143. Сообщение от Аноним (142), 23-Янв-26, 19:13   +/
Ну по RPS не 10x как на том что я переписывал с питона, но 2x стабильно есть. При этом код понятнее получился и тестировать сильно проще.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56 Ответы: #150, #161

145. Сообщение от Аноним (63), 23-Янв-26, 19:26   +1 +/
> на уровне Tier2.

Это когда результат не гарантируется?

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

147. Сообщение от Аноним (63), 23-Янв-26, 19:40   +/
> Rust скорее с C/C++ по скорости уместнее сравнивать.

Естественно, сравнение не в пользу первого.

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

149. Сообщение от Аноним (149), 23-Янв-26, 19:53   +1 +/
> Это когда результат не гарантируется?

Это когда "запустите на своем хламе и расскажите как оно".

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

150. Сообщение от Аноним (96), 23-Янв-26, 19:57   +/
А какой фреймворк, какая БД, какой ORM?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #143

151. Сообщение от Аноним (63), 23-Янв-26, 19:59   +/
> Ошибки в кодогенераторе llvm

Дай угадаю, rust что использует?

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

152. Сообщение от 12yoexpert (ok), 23-Янв-26, 20:32   +/
> PS Вообще же кидать в сеть бинарные структуры - это к потенциальному огребанию проблем.

гораздо чаще данные текстом банально не влазят в канал, чем влазят

если мы, конечно, не перекладывание json-ов тут обсуждаем

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

153. Сообщение от 12yoexpert (ok), 23-Янв-26, 20:36   +1 +/
ИИ нигде не живёт, его нет и не будет ещё очень-очень долго, а то, что ты покупаешь, называется товар
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #131

154. Сообщение от 12yoexpert (ok), 23-Янв-26, 20:36   +/
просто твоя вера слаба
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #129

155. Сообщение от Карлос Сношайтилис (ok), 23-Янв-26, 20:53   +/
Чувствуется опыт разработки на С, когда перестаешь доверять всем, даже себе.

Попробуй Раст, тебе понравится

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

158. Сообщение от Аноним (75), 23-Янв-26, 22:04   +2 +/
>> Ошибки в кодогенераторе llvm
> Дай угадаю, rust что использует?

Ошибки в gcc, но виноват опять раст ...

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

159. Сообщение от Аноним (115), 23-Янв-26, 22:08   +/
Совершенно внезапно, но это решается ADT, при этом типобезопасно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #128

160. Сообщение от Аноним (75), 23-Янв-26, 22:11   +/
>> Rust скорее с C/C++ по скорости уместнее сравнивать.
> Естественно, сравнение не в пользу первого.

Сказал, как в̵ ̵л̵у̵ж̵у̵?
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
Странно. Видать опять неправильные тесты от неправильный погроммистов ...


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

161. Сообщение от Аноним (115), 23-Янв-26, 23:00   +/
>Ну по RPS не 10x как на том что я переписывал с питона, но 2x стабильно есть.

Как-то подозрительно мало.

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

164. Сообщение от _kp (ok), 24-Янв-26, 01:51   +/
>>Зачем вам union

Не Питонист случаем? На иных языках о "железе" имеют представление.

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

ADT - чисто абстракция. Её в "железо не скормить. Кстати, в C++ оно есть.

Что использовать, зависит от того с придется работать.


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

165. Сообщение от Аноним (115), 24-Янв-26, 02:26   +/
>Не Питонист случаем?

Не угадали.
>ADT - чисто абстракция. Её в "железо не скормить.

Зато, если приклеить к какждому union свой тег, то можно безопасно обращаться к этому самому union.
>union - описание физического размещения.

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

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

166. Сообщение от Аноним (115), 24-Янв-26, 02:27   +/
>хахаха, редкая?

Последняя с конца, да.

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

167. Сообщение от Vorobej (?), 24-Янв-26, 02:35   +/
Наоборот, хотят заставить ИИ переписать Сишный код в Раст
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111

168. Сообщение от laindono (ok), 24-Янв-26, 03:48   +/
С другой стороны аж второй уровень поддержки для игрушечной архитектуры.

Кстати, а у GCC есть какие-то документы на тему того, в каком статусе поддержка всяких исторических, игрушечных и прочих "поддерживаемых" архитектур? Есть какие-то гарантии на, скажем, epiphany (первый раз слышу)?

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

169. Сообщение от Аноним (-), 24-Янв-26, 05:41   +/
В твоей аналогии кто будет вырезать аппендикс? Мясник на базаре? Дворник?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #112

171. Сообщение от Ivan_S (?), 24-Янв-26, 11:39   +/
-> Сначала хотели сделать как в сях - при выходе за границы, делать вид, что ничего не происходит и работать дальше.

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

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

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

172. Сообщение от MaxT (?), 24-Янв-26, 13:32   +1 +/
какой! классный! синтаксис!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #174

173. Сообщение от Аноним (75), 24-Янв-26, 15:18   +/
> Вообще-то центральный процессор следит за тем, был ли в программе выход за
> границу массива, и генерирует внутренние прерывание, если такое было, после чего
> программа снимается с выполнения уже средствами ОС. Язык Си или любой
> другой сдесь вообще не при чём.

Если речь о к̵о̵с̵т̵ы̵л̵е̵ Guard Pages, то поинтересуйся подводными камнями этого способа. Если грубо: память вполне безнаказанно можно портить от границы массива и до "охранной" страницы памяти. Поэтому-то и существуют другие костыли (уже не такие "бесплатные"), в виде проверок целостности, "канареек" и прочего.

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

174. Сообщение от Аноним (63), 24-Янв-26, 20:28   +/
!"понятный[!(#очень,главное!не)]
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #172

175. Сообщение от Аноним (175), 25-Янв-26, 09:54   +/
> И как сий финт ушами по скорости? Этот "match" с несколькими значениями - сильно тяжелый цикл нагнет? По сравнению с if (i >= ARRAY_SIZE(x)

пезразницы. Vec::get заинлайнится, а потом оптимизатор сведёт всё это синтаксическое многообразие к сравнению целых и условному переходу. Промежуточное значение Option<u32>, которое возвращается из get будет выкинуто за ненадобностью.

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

> "match" с несколькими значениями

Это ветвление по результатам патеррн матчинга, и то что перед => стоит -- это не значения, а паттерны. По первому это лучше видно: Some(n) декларирует переменную n, которая будет содержать значение из Some. Я думаю, что в контексте вашего предложения может и "бранчи" были бы уместны, но не "значения".

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


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

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




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

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