LINUX.ORG.RU

Rust is not safe!

 ,


1

7

https://youtu.be/vfMpIsJwpjU

Для Ъ: в этом вашем Rust с 2015 года существует уязвимость, позволяющая неограниченно расширить время жизни любой переменной и воспроизвести любые уязвимости, связанные с памятью.

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

А Linux тут при том, что и на нём эти уязвимости прекрасно воспроизведутся.

★★★★★

Последнее исправление: Dimez (всего исправлений: 3)

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

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

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

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

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

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

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

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

hateyoufeel ★★★★★
()

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

Во-вторых, этот баг компилятора же можно исправить?

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

Например, пакетного менеджера и общего репозитария библиотек.

Уже кто-то из итальянского универа запилил alire.

А.. ну, возрадуемся же! Когда я раньше интересовался, этого не было.

Хотя там меньше 400 библиотек и они довольно мелкие все. Для языка с 40-летней историей как-то уныленько.

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

Даже если бы была экосистема, ну не будут люди писать:

fn func(i: i32) -> i32
{
...
}

Вместо:

f i = ...

Починил, не благодари.

Но вообще, синтаксис – это далеко не самая хорошая и годная часть в Rust. Когда дело доходит до типов с двумя-тремя параметрами, на которые ещё ограничения есть, это просто дикий ужас!

Хотя, я тут глянул как в Ada пишутся параметрические типы, и мне что-то COBOL вспомнился.

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

До сих пор не понимаю, почему столько желающих писать на rust и так мало на ada и spark?

А вообще, на них пишут. Из последнего крутого, что я находил, есть Muen.

https://muen.codelabs.ch/

Muen is an Open Source separation kernel (SK) for the Intel x86/64 architecture that has been formally proven to contain no runtime errors at the source code level.

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

Починил, не благодари.

И ещё: в Аде нет анонимных функций. Чисто ООП язык с параллелизмом и модулями из коробки, без каких либо, даже минимальных шажков в сторону гудисов. Нет даже арифметического оператора ++. Нельзя даже написать «i += 1», только «i = i + 1».

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

И ещё: в Аде нет анонимных функций.

Да, это неприятно. Хотя тем же сишникам это вот вообще не мешает.

Чисто ООП язык с параллелизмом и модулями из коробки,

Восьмидесятые – они такие.

Нет даже арифметического оператора ++. Нельзя даже написать «i += 1», только «i = i + 1».

Вот на это вообще насрать.

Я тут могу заявить, что в Rust нельзя новые операторы создавать. Даже в Scala можно, а в Rust – нет.

Но это всё реально мелочи. С Ada гораздо хуже то, что большая часть интересного тулинга напрочь проприетарна. Если помимо компилятора ты хочешь каких-то плюшек, изволь платить бабла. Ada Core хотят бабла за свои приблуды и абсолютно не стесняются этого: у них прямо на сцайте жырная кнопка Request Pricing, прям на главной.

А почему так вышло? Потому что основной пользователь Ada сегодня – американская военка и около. Потому что они её и заказывали 40 лет назад, и теперь вокруг них эти конторки и пляшут.

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

Видел клон Ады (Ада++) с Си-подобным синтаксисом, но с каких-то пор их сайт у меня почему-то не открывается. Да и судя по репозиторию проект помер.

https://www.phoronix.com/news/Ada-Plus-Plus-Language

https://github.com/AdaPlusPlus/gcc

P. S. Я так понимаю инкременты/декременты не стали вводить в синтаксис дабы лишний раз избежать ошибок с опечатками и привести весь код к единому стилю.

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

А почему так вышло? Потому что основной пользователь Ada сегодня – американская военка и около. Потому что они её и заказывали 40 лет назад, и теперь вокруг них эти конторки и пляшут.

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

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

давно изобретен Modula-2

MODULE hello ;

FROM StrIO IMPORT WriteString, WriteLn ;

BEGIN
   WriteString ('hello world') ; WriteLn
END hello.

Ну не знаю…

The following data types are supported: INTEGER, LONGINT, SHORTINT, CARDINAL, LONGCARD, SHORTCARD, BOOLEAN, REAL, LONGREAL, SHORTREAL, COMPLEX, LONGCOMPLEX, SHORTCOMPLEX and CHAR.

An equivalence table is given below:

GNU Modula-2              GNU C
======================================
INTEGER                   int
LONGINT                   long long int
SHORTINT                  short int
CARDINAL                  unsigned int
LONGCARD                  long long unsigned int
SHORTCARD                 short unsigned int
BOOLEAN                   bool
REAL                      double
LONGREAL                  long double
SHORTREAL                 float
CHAR                      char
SHORTCOMPLEX              complex float
COMPLEX                   complex double
LONGCOMPLEX               complex long double

Лонги, шорты, кардиналы…

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

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

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

Известный кому?

Комплекс стандартного пилотажно-навигационного и связного оборудования для российского самолета-амфибии Бериев Бе-200.

Достаточно известный самолёт? Нет? Тогда возьмём Boeing-777.

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

grem ★★★★★
()