Состоялся (https://blog.rust-lang.org/2019/05/23/Rust-1.35.0.html) релиз языка системного программирования Rust 1.35 (http://www.rust-lang.org), развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.Автоматическое управление памятью в Rust избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo (http://blog.rust-lang.org/2014/11/20/Cargo.html), позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек поддерживается репозиторий crates.io (https://crates.io/).
Основные новшества (https://github.com/rust-lang/rust/blob/master/RELEASES.md#ve...):- Типажи (trait) FnOnce (https://doc.rust-lang.org/core/ops/trait.FnOnce.html), FnMut (https://doc.rust-lang.org/core/ops/trait.FnMut.html) и Fn (https://doc.rust-lang.org/core/ops/trait.Fn.html) реализованы для размещаемых в куче boxed-типов (https://doc.rust-lang.org/1.34.0/std/boxed/) Box‹dyn FnOnce›, Box‹dyn FnMut› и Box‹dyn Fn›;
- Добавлена возможность (https://github.com/rust-lang/rust/pull/59580/) приведения замыканий к небезопасным указателям на функции (unsafe fn);
- Реализована возможность вызова макроса "dbg!" без аргументов для отображения в stderr имени файла и номера строки без инспектирования переменной, что удобно для отладки срабатывания условных выражений;- В типы для чисел с плавающей запятой f32 и f64 добавлен метод "copysign (https://doc.rust-lang.org/stable/std/primitive.f64.html#meth...)" для копирования знака из одного числа в другое;
- В типы Range* добавлен метод "contains (https://doc.rust-lang.org/std/ops/struct.Range.html#method.c...)", позволяющий проверить попадание указанного значения в диапазон;
- Добавлен метод Ref:Cell:map_split (https://doc.rust-lang.org/stable/std/cell/struct.RefCell.htm...), позволяющие отразить и разделить заимствованное значение RefCell для разных компонентов заимствованных данных;
- Добавлен метод RefCell::replace_with (https://doc.rust-lang.org/stable/std/cell/struct.RefCell.htm...) для замены текущего значения RefCell и возвращения старого значения в качестве результата;
- Добавлен метод ptr::hash (https://doc.rust-lang.org/stable/std/ptr/fn.hash.html) для хэширования указателя или ссылки по адресу, а не адресуемому значению;
- Добавлен метод Option::copied (https://doc.rust-lang.org/std/option/enum.Option.html#method...) для копирования содержимого опций Option‹&T› или Option‹&mut T›;- В разряд стабильных переведена новая порция API, в том числе стабилизированы методы
f32::copysign,
f64::copysign,
RefCell::replace_with,
RefCell::map_split,
ptr::hash,
Range::contains,
RangeFrom::contains,
RangeTo::contains,
RangeInclusive::contains,
RangeToInclusive::contains и
Option::copied;- В clippy (linter) добавлена проверка drop_bounds, срабатывающая при добавлении привязки "T: Drop" в функцию;
- В компилятор добавлена поддержка новой целевой платформы
wasm32-unknown-wasi (интерфейс WASI (https://www.opennet.dev/opennews/art.shtml?num=50406) для использования WebAssembly вне браузера);- Инструментарий Rust адаптирован для дистрибутивов на основе стандартной Си-библиотеки Musl.
URL: https://blog.rust-lang.org/2019/05/23/Rust-1.35.0.html
Новость: https://www.opennet.dev/opennews/art.shtml?num=50736
Смотришь его синтаксис и будто наматываешься на колючую проволоку.
Ко всему можно привыкнуть
После js, уже ничего не страшно :)
Что страшного в современном js?
все та же шляпа, которая пришла из "несовременного"
Юзай TypeScript
> Юзай TypeScriptОчередной костыль для JS. В котором один хрен нет нормального ООП.
Если всё равно транспайлить, то может лучще с Java или C#?
А не с этого недо-языка...
Этих самых ООПов вагон и маленькая тележка. По каким критериям определять "нормальный"?Почему сразу Java? А вот в Perl -- нормальный или нет? А что на счёт CLOS? Может быть в OCaml нормальный ООП? А нормальный ли он в C++?
Но в любом случае последует вопрос -- чем, блин, подход JS хуже всего вышеперечисленного? ООПов много, и все они разные, иногда чуть ли не на 100% разные. Медленно двигайтесь к фазе принятия. А то глядишь -- все поголовно в отрицании зависли.
> Что страшного в современном js?ООП!
class Foo extends Bar {}ECMAScript 2015? Не, не слышал?
> class Foo extends Bar {}
> ECMAScript 2015? Не, не слышал?шлак для веб-макак
> class Foo extends Bar {}
> ECMAScript 2015? Не, не слышал?Я его куего хучу лет ждал, думал с ним ООП будет, хотя бы как в PHP (TypeScript появился позже), но ничего хорошего не произошло! Как было ООП в JS через говно-обёртку, так и осталось. :-(
> Смотришь его синтаксис и будто наматываешься на колючую проволоку.Для таких как ты придумали гвидобейсик прочие хомячковые жавоскрипты.
А для таких как ты -- brainfuck
То есть языки с нормальными синтаксисом только для хомячков?
"""
- На что только люди не идут, лишь бы vim не использовать.
- Нормальные люди на многое пойдут, лишь бы vim не использовать.
""" (c)
Нормальным людям vim не нужен. Vim нужен нормальным разработчикам.
Я так понимаю, разработчики не люди?
Люди, но не нормальные. Читай внимательнее.
/me переодевается в ненормального разработчика, садится на коня и скачет через опеннет с боевым кличем "емааааааааакс"!
В каждой новости нытьё про синтаксис. Что там уродливого, объясните, а то я постоянно упускаю возможность пострадать всласть, когда пишу на Rust.
Ну мне например непонятно, зачем они поддерживают вот такую::нотацию.
Можно же просто через точку все записывать.Так же все эти многоэтажные arc<mutex<option<T>>>> и .unwrap().unwrap().unwrap()
Сигнатуры методов, вывернутые наизнанку, с кучей дженериковых ограничений и явными определениями времени жизни ссылок.
Match как вещь в себе.
Модули называются через-дефис, функции и переменные через_плинтус, структуры ПаскальКейсом,
Навязчивое желание добавить await, голосования о том, как он будет выглядеть без внятного объяснения, зачем он вообще нужен
> arc<mutex<option<T>>>>так какая альтернатива, вроде все популярные языки используют тот же самый синтаксис
для generic/template: C++/Java/C# ?> Сигнатуры методов, вывернутые наизнанку,
в смысле имя аргумента вначале, а тип в конце?
Так вроде и авторы языка С и C++ согласились что это была их ошибка
в выборе такого синтаксиса и должно быть наоборот> Match как вещь в себе
Почему в себе, ведь часть синтаксиса используемого в match доступна и в if и while и просто
при распаковки структур/tuple?> Модули называются через-дефис, функции и переменные через_плинтус, структуры ПаскальКейсом,
в самом языке дефис это ошибка компиляции, вы Rust с Toml не путаете?
ну, а все остальное это coding style, как его можно ставить в вину языку?
> без внятного объяснения, зачем он вообще нужен
Так poll/select существуют десятилетиями и "callback hell" тоже перевалил планку многолетнего,
разве любому опытному программисту непонятно зачем оно нужно и как это упростит жизнь?Но насчет без внятного объяснения вы не правы, любое выступление по поводу Rust/async
начинается с описания зачем это нужно, например
https://www.youtube.com/watch?v=skos4B5x7qE
Видео, серьёзно?
Ютуб забанили?
То, что я перечислил - это только моё мнение, оно спорное. Но хочу обратить внимание на общее ощущение после прочтения кода на расте: он тяжёлый и многословный. Нет, я не хейтер раста, он мне очень нравится. Но часто я читаю на нём будто вымученный код. Знаете, как будто люди борются часами с боров-чекером, а потом забивают болт и пушат как есть.Вы правда смотрите видео по программированию? Я слышал, что это моветон делиться ссылками на видео по программированию, и, скорее всего, вы конченый
> Вы правда смотрите видео по программированию?Да, под них отлично засыпать. И еще подкасты слушаю,
под них тоже неплохо спится.> и, скорее всего, вы конченый
Ну а вы идиот, хотя вам конечно сложно понять,
до идиотов долго доходит.
Зачем нужен await и почему выбрали такую нотацию уже миллион раз объяснили. Читай r/rust.
Хорошо зашло?)
Ну теперь можно и F* пробовать.
глубоко зашло*
Fust?
Fist.
>>В каждой новости нытьё про синтаксис. Что там уродливого, объясните, а то я постоянно упускаю возможность пострадать всласть, когда пишу на Rust.C#, Java, etc - почему выбрали с - like syntax ? Думайте на досуге..
Так ведь другого и нет. Не силайк синтаксис только в скриптовых языках, да и то не всех!
> C#, Java, etc - почему выбрали с - like syntax ? Думайте на досуге..Ну да, не понять молодежи всю красоту и законченность
volatile const static signed long int* const restrict borsch = {(const volatile void*)0};
не понять! :-(
> RibiKukan
> Клоун, к чему ты выклал эту херню?
> [что-то про фекалии]
> static int64_t borsch;//вот всё, что есть в твоём говне.const выкинул, long int с минимальным диапазоном -(2^31-1), 2^31 - 1 превратил в -(2^63-1), 2^63 - 1
o_O
Неплохо, мой (не очень) дорогой и (примерно так же) уважаемый косплейщик Царя, манеру общения ты перенял очень хорошо, осталось перенять знание матчасти.
"А Царь-то ненастоящий!"(с)> А знаешь почему ты, убогий, альтерантивы не привёл? Потому что ты а) трепло, б) альтернативы нет. Унижено.
В ржавчине нет альтернативы static int64_t borsch? О вей … да вы, батенька, Знаток!
> манеру общения ты перенял очень хорошо, осталось перенять знание матчасти.Но Царь же не знает матчасть
Это какой-то особый талант - отвечать не на тот вопрос, который был задан.
Есть определённая доля людей, которые считают свою ограниченность и неспособность к восприятию нового достоинством, которое надо обязательно продемонстрировать миру.
эх, молодость килограмм времени туда, центнер сюда...
Ага, а есть еще ВРЕМЯ и лишние усилия прикладывать после работы по синтаксису... - лучше потратить время и усилиия на семью, отдых, и т.д.
Как раз для молодости характерна уверенность в том, что знакомое - это единственно правильное. Иначе это называют "синдром утёнка" - какой язык первым узнал, того языка синтаксис и есть единственно верный.
Понимание того, что языки разные, потому что задачи разные, а потому и синтаксис у них разный, и это нормально, приходит как раз с возрастом и с числом изученных языков.
А можете привести пару коротких примеров, где под определённую задачу удобен определённый синтаксис?
> лучше потратить время и усилиия на семью, отдых, и т.д.Это подмена понятий. Попытка скрыть свою лень за указанным. Профессионал не должен сильно обращать на синтаксис, ведь суть раста не в нем. Возможно где-то он странно выглядит, но это все не важно.
>Профессионал не должен сильно обращать на синтаксисХерня нелепая. Грамматика является основой языка. Она определяет возможности, она определяет то, как ты будешь читать и писать.
>ведь суть раста не в нем.Суть этого говна не в том, в чём оно является говном? Типичный сектант с убогой методичкой.
Но я тебе помогу. Это говно говно во всём.
>Возможно где-то он странно выглядит
Говно выглядит как говно - это не странно.
>но это все не важно.А что важно, клоун?
> эх, молодость килограмм времени туда, центнер сюда...Слова не мальчика, но ремесленника. Это не комплимент.
> ...Ага, люди видать не ездили (не работали, etc.) по "мегаполису" - где одновременно лево- и право- стороннeе движение
Не надо позиционировать C, C++ killer - убрав "killer" feature в виде syntax
P.S.:
Лично, против rust`a негатива нет
А я что-то слишком старый стал, чтобы тратить дни на сидение в отладчике внутри кода на божественной сишечке.
После нескольких месяцев программирования на нём, Раст читается так же легко, как Питон. Поначалу было сложно читать только декларации типов. Просто потому, что непривычно и знакомство с традиционными C/C++/Java вообще не помогает. Но быстро привыкаешь. К няшной сишечке тоже надо было когда-то привыкать. Только не говорите, что char *(*(**foo[][8])())[] все научились парсить с первого раза. Типы - это вообще сложно. Многие думают, что изучение языка - это запомнить, как там пишется if/for/while. Но это только украшение на торте, а внутри каждый язык на 95% состоит из системы типов. Даже Яваскрипт, даже Питон. Вот систему типов и нужно изучать.
> а внутри каждый язык на 95% состоит из системы типовPHP :-D Хотя типы там, конечно, есть.
Постоянно пишу и читаю исходники на Расте. Никаких проблем с синтаксисом не испытываю.
Мой самый первый комент, про "да начнеться срачь" зря удалили. Весь я в крадце описал всю суть комментов про все новости касающиеся раста....
> Мой самый первый комент, про "да начнеться срачь" зря удалилиНе зря:
> комент
> начнеться
> срачь
> весь я
> в крадце
Ты уделал его граммар ты наш
Пхахахпха
Для полноценного <кидания этим самым> и накала страстей нужно было добавить пункт про тесную интегрировацию с Vue и Angular, позволяющую сразу генерировать юнитфайлы для systemd в Docker под Kubernetes на Electron, запущенный в GNOME на Kali-Black-Arch-Linux в линуксуляторе FreeBSD с новейшим CoC и профинансированную Microsoft, Google и Oracle.
блин круто написано, но меня после прочтения стошнило ((
Ааааа, чувак, ещё девяти часов нет, а ты уже сделал мой день!
Всё как и обещали на 2019[1]. Стабилизация долгостроев, подчистка технического долга.
> Всё как и обещали на 2019[1].Погоди. Это что же получается... разрабы держат слово? Так вот что вызывает всю эту фанатичную ненависть, большей частью к форме (см. мантры "уродский синтаксис"). Будто их палкой бьют, заставляя на нём писать.
Это групповая динамика на опеннете. К синтаксису раста или к его разработчикам это не имеет никакого отношения. В смысле, есть связь, но она не причинно-следственная.
Мне религия не позволяет придерживаться гипотезы "люди внезапно коллективно сошли с ума". У всего есть причины. За что-либо отвечать -- в принципе несвойственно разработчикам программного обеспечения, как касте (о чём свидетельствует "WITHOUT WARRANTY" во всякой лицензии, в отличии от гарантийных талонов или паспортов качества на любую другую продукцию). Тут есть нюансы, и я прошу прощения у тех, кто задумывается о последствиях и доказывает корректность, или просто старается выполнить работу качественно. Вот такие "ненормальные" с точки зрения большинства разработчики распознаются групповым разумом и срабатывает защитный рефлекс, транспортирующийся в стадный. Синтаксис -- лишь повод зацепиться. Причины, безусловно, глубже и на первый взгляд далеко не очевидны.
трансформирующийся... грамотей))) Фрейдисты остались довольны.
> За что-либо отвечать -- в принципе несвойственно разработчикам программного обеспечения, как касте (о чём свидетельствует "WITHOUT WARRANTY"
> во всякой лицензии, в отличии от гарантийных талонов или паспортов качества на любую другую продукцию).За что либо платить разработчикам (тем более за доказательство корректности, во время которого тоже хочется кушать и спать в тепле) в принципе не свойственно домашним пользователям, как касте …
Потом еще удивляются, что это обратка такая прилетает …Кстати, попробуйте потребовать ремонт по гарантии стыренного телевизора (или пару лет после истечения гарантийного срока) или доказать, что из-за поломки телевизора вы пропустили очередную серию Дом Х и получили моральную травму или упустили прибыль (на а че - ведь там нет "WITHOUT WARRANTY") -- очень удивитесь.
>> За что-либо отвечать -- в принципе несвойственно разработчикам программного обеспечения, как касте (о чём свидетельствует "WITHOUT WARRANTY"
>> во всякой лицензии, в отличии от гарантийных талонов или паспортов качества на любую другую продукцию).
> За что либо платить разработчикам (тем более за доказательство корректности, во время
> которого тоже хочется кушать и спать в тепле) в принципе не
> свойственно домашним пользователям, как касте …
> Потом еще удивляются, что это обратка такая прилетает …Давайте пока забудем о домашних пользователях и попробуем утрировать в другом ключе. Так или иначе платить в итоге приходится. При этом одни "разработчики" имитируют бурную деятельность, перетягивая на себя финансирование, а у других на это нет времени, потому что они-то как раз производством и заняты.
> Кстати, попробуйте потребовать ремонт по гарантии стыренного телевизора (или пару лет после
> истечения гарантийного срока) или доказать, что из-за поломки телевизора вы
> пропустили очередную серию Дом Х и получили моральную травму или упустили
> прибыль (на а че - ведь там нет "WITHOUT WARRANTY") --
> очень удивитесь.Как раз я много чего пробовал, и не выходя за рамки. До сих пор помню метаморфозы орущей физиономии тётеньки, когда мы извлекли из "сейчас же замените ваш брак!" видеоплеера кухонный нож.)) Мне даже известен случай, когда потребитель купил диск с игрой, поиграл, она -- это ключевой момент -- ему не понравилась, а потом через суд расторг договор купли-продажи, получив компенсацию за моральный ущерб. Формальная причина, разумеется, была иной -- несоответствие товара описанию (теперь попробуйте представить ход мысли судьи при чтении доводов "это не RPG, а аркада"). Заодно получил зачёт автоматом.))) Просто обычно людям недосуг заниматься подобным.
> Как раз я много чего пробовал, и не выходя за рамки. До
> сих пор помню метаморфозы орущей физиономии тётеньки, когда мы извлекли из
> "сейчас же замените ваш брак!" видеоплеера кухонный нож.))Очень круто и все такое - но каким боком оно к (уходу от) темы?
Гарантии для софта вполне есть, но там и цены соответсвующие.
Гарантия для "материального" товара обеспечивается соотв. частью цены/наценкой. У тех же бизнес-линеек ноутов обычно можно приобрести доп. гарантию на 3-5 лет, но обойдется это дополнительно в цену не очень плохенького консумерского ноутбука. И домашних пользователей, готовых платить такую цену, как-то не очень много.
А у вас получается именно что классическое "хотим гарантии, бесплатно!" или максимум "приобретем лицензию только когда понадобится гарантия" - но так это не работает, увы.
Плюс, какие-то нереальные запросы "гарантий для софта", где-то на уровне требований компенсации упущенной выгоды с производителя часов/радио (прочей настольной лабуды), потому что там сломался будильник и вы из-за этого опоздали на деловую встречу для заключения многомиллионного контракта, кхех.
У ябла, кстати, заминки с будильником бывали пару раз, причем массово, но что-то многомиллионными исками их не завалили.
> Мне даже известен случай, когда потребитель купил диск с игрой, поиграл, она -- это
> ключевой момент -- ему не понравилась, а потом через суд расторг
> договор купли-продажи, получив компенсацию за моральный ущерб. Формальная причина, разумеется,
> была иной -- несоответствие товара описанию (теперь попробуйте представить ход мысли
> судьи при чтении доводов "это не RPG, а аркада").Мне не нужно представлять "ход мысли", я вполне в курсе существования соотв. параграфов в законодательстве ряда стран.
Вот только про "компенсацию морального ущерба" в контексте "несоотвествия товара описанию" и "расторжения договора купли-продаажи", очень смахивает на обычную прохладную былину.
>> Как раз я много чего пробовал, и не выходя за рамки. До
>> сих пор помню метаморфозы орущей физиономии тётеньки, когда мы извлекли из
>> "сейчас же замените ваш брак!" видеоплеера кухонный нож.))
> Очень круто и все такое - но каким боком оно к (уходу
> от) темы?Примерно тем же, что и предложение попробовать ремонт краденого, но не столь далёким.
> Гарантии для софта вполне есть, но там и цены соответсвующие.
Заметьте: у меня там было про нюансы и далее "прошу прощения...". Не рассчитывал, что кого-то так зацепит.
> Вот только про "компенсацию морального ущерба" в контексте "несоотвествия товара описанию"
> и "расторжения договора купли-продаажи", очень смахивает на обычную прохладную былину.Обычное дело для тех, кто судит об окружающих по себе.
> Примерно тем же, что и предложение попробовать ремонт краденого, но не столь
> далёким.Ну, это вы привели в качестве примера-аналогии "в отличии от гарантийных талонов или паспортов качества на любую другую продукцию".
Скромно "забыв" упомянуть "нюансик" -- что все они стоят определенную сумму денег, в отличие от.>> Вот только про "компенсацию морального ущерба" в контексте "несоотвествия товара описанию"
>> и "расторжения договора купли-продаажи", очень смахивает на обычную прохладную былину.
> Обычное дело для тех, кто судит об окружающих по себе.Обычный опыт опеннета, особенно в отношении безликого Анонима.
Я Вам даже выделил в кавычках формулировки, которые (в сочетании) и вызвали недоверие.
Вы были вольны просто и обличающе предоставить пруфы, но предпочли почему-то беспроигрышное "сам такой!", что увы, не подтверждает, а совсем наоборот … *пожимает плечами*
> Мне религия не позволяет придерживаться гипотезы "люди внезапно коллективно сошли с ума".Они не сходили коллективно с ума. Это групповая динамика, многократно описанная психологами тренерами, многократно наблюдаемая ими, и даже многократно наблюдаемая непсихологами, просто непсихологи не выпендриваются и не придумывают для этого всяких умных названий.
> У всего есть причины. За что-либо отвечать -- в принципе несвойственно
> разработчикам программного обеспечения, как касте (о чём свидетельствует "WITHOUT WARRANTY"
> во всякой лицензии, в отличии от гарантийных талонов или паспортов качества
> на любую другую продукцию). Тут есть нюансы, и я прошу прощения
> у тех, кто задумывается о последствиях и доказывает корректность, или просто
> старается выполнить работу качественно. Вот такие "ненормальные" с точки зрения большинства
> разработчики распознаются групповым разумом и срабатывает защитный рефлекс, транспортирующийся
> в стадный. Синтаксис -- лишь повод зацепиться. Причины, безусловно, глубже и
> на первый взгляд далеко не очевидны.Можно и так описать, но причины лучше выкинуть из описания. Они может быть и были поначалу, но там были разные причины, которые тянули ситуацию в разные стороны. То, что ты назвал стадным инстинктом, затем сделало их нерелевантными.
надо sysvinit на rust переписать и вернуть в ubuntu/debian
Возьми и перепиши.Или только предлагать всякий бред горазд?
а почему переписать часть удобной и важной подсистемы на современный быстрый и безопасный язык является бред? Может эти ваши С с С++ в 2019 это уже бред?
Потому что удобная и важная подсистема работает и без этого переписывания.
Да не нужно обращать внимание на консерваторов.
Вперед, делайте форк и переписывайте.
А у серьезных людей есть другие занятия.
потому-что есть не только язык но и компилятор...
>Инструментарий Rust адаптирован для дистрибутивов на основе стандартной Си-библиотеки Musl.
>Си-библиотекиИ зачем тогда Rust?
Это для интеропа с системой и другими языками. Для всего остального и используется Rust.
Раньше я думал, что C++ уродливый, закостыленный язык. Но потом я познакомился с Rust
...И ещё больше укрепился в своём мнении
тот неловкий момент когда читаешь новость из за комментариев :)
>тот неловкий момент когда читаешь новость из за комментариев :)не читай а изучай растаманм будешь