Опубликован релиз языка программирования общего назначения Rust 1.63, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки)...Подробнее: https://www.opennet.me/opennews/art.shtml?num=57816
>> GCC 13
>> 13No way.
Суеверный?
Хотим еще раз похвастаться своей блестящей операцией по саботажу разработки браузера фаерфокс. Вместо улучшения браузера мы их заставили разрабатывать никому не нужный переусложненный язык с ненужными фичами с целью написать движек Servo, что заняло у них столько времени что их браузер полностью стагнировал. А язык по итогу они еще и выкинули, а движек Servo не написали. Мы считаем что это замечательно.
Интересно, у хейтеров будут ещё какие-то фактологические замечания кроме Servo, который уже на зубах навяз?
Не переписали фарефокс на раст? Да вы растфанатики везде облажались, что ты врешь как Песков?
> браузер полностью стагнировалКак минимум многопроцессность запилили.
В рендере каскадных таблиц? Ахаха
Ну человеку, ходящему только на опеннет, это преимущество не кажется очевидным. Тем временем лиса просто уничтожает хром по скорости на тяжёлых сайтах при наличии ядер больше двух.
Это относительно правда, но я теперь из-за этого не могу использовать cuda и игры (особенно, с physx) одновременно с браузером. А софрендер такое ощущение намного хуже того старого кода (cairo там было или что).
За софтрендер не скажу (там разве не убогий angle от гугла сейчас?) - не пользовался ни на одном совместимом компьютере ещё со времён 4 версии. А вот нвидияпроблемы меня так достали, что я просто поступил радикально - собрал компьютер на AMD и ноут с нвидией больше не включал. И браузер ни при чём - у меня на ноутбуке вся система подвисала на пару секунд при создании вайн префикса, если загружен нвидия блоб. Благо мне куда не нужна.
Движок Servo частично написали и частично интегрировали в браузер Firefox. После команду Rust частично бросили на произвол Rust Foundation, частично финансируемой Meta (организация запрещёна в РФ). В результате всего работа над движком Servo ведётся, но частично.
Ничего там не интегрировано Webrender и Stylo это отдельные продукты.
>команду Rust частично бросили на произвол Rust Foundation, частично финансируемойА, так Rust частично безопасный?
Если втаскивание раста в файерфокс это саботаж, то советую посмотреть на свежие ветки chromium.
А именно на папочку third_party/rust. Эта папочка там как минимум с января этого года, а может и раньше.
И вот еще на ознакомление: https://chromium.googlesource.com/chromium/src/+/refs/heads/...
> any experiments must be reversible (you may have to write a C++ equivalent in order to ship)
> Rust code must not affect production Chrome binaries nor be shipped to Chrome usersИнтересные ограничения
Это ограничение на время эксперимента
И с января ничего не написано. Ты вот сам думаешь перед тем как такие ссылки постить?
Ну определенный резон в словах чела есть. Пока мозилловцы работали над Servo работы над Gecko в целом свелить к поддержке и закрытию явных багов. Дескать "какой смысл инвестироватьв разработку Гекко, если Серво вот вот?".
> В сборке компилятора rust для платформы Windows задействованы PGO-оптимизации (profile-guided optimization), позволившие поднять производительность компиляции кода на 10-20%.А вот за это спасибо!
Хороший безопасный язык, переписал на него мою программу, и она стала безопасной, хотя до этого была небезопасной. Я думаю, это благодаря безопасной работе с памятью, с целью исключить небезопасность при работе с памятью. Благодаря этому достигается безопасность. А небезопасность там отлавливается на этапе компиляции, так что небезопасности во время выполнения нет, только безопасность остается. А небезопасность, выходит, исключается.
Всё так в этом вся магия языка. Почти тоже самое как магия эпл.
А внутре у нея неонка?
нет, неонку из macbook уже давно вытащили. Говорят, слишком много энергии потребляет. Дорого...
Молодец! Повторяй это 108 раз в позе лотоса и твоя программа будет безопасной.
Исключается только определенный класс ошибок, а не в целом "стало безопасно". Если бы ты не строил из себя шута - знал бы об этом.
> Если бы ты не строил из себя шута - знал бы об этом.что за бред? где хоть какая-то логика?
Не понял, безопасный язык не безопасный?
Объясняю, ибо мало шансов, что сам поймёшь. Rust обеспечивает безопасность только при работе с памятью. В остальном он такой же, как и другие языки.
> Объясняю, ибо мало шансов, что сам поймёшь. Rust обеспечивает безопасность только при
> работе с памятью. В остальном он такой же, как и другие
> языки.Но это не точно
В 1000 раз полезнее повторять на ночь молитву "Отче наш", сын мой!
...и безопаснее!
Блин, а я свою не смог переписать. Пока писал, мне стало так безопасно, что я подумал, а нафиг мне сдалось это программирование? Я ведь и код-то писал из-за опасности, а теперь безопасно и код писать не надо.
Ты если что и способен переписать, так это свои петросянские комменты.
Отбезопасил ты свою программу по самые помидоры! )
> независимой некоммерческой организации Rust FoundationПервое предложение и уже наврали. Организация как минимум зависит от гугла и майкрософта.
Ты про спонсорство Microsoft, Meta, Oracle, Huawei?
Кто платит, то и женщину танцует.
Опеннет экспертов не попадешь, они за милю чувствуют ложь.
Если конечно смогут понять написанное
Ну конечно эти организации ну никак нах них не влияют. А деньги у них с доната на патроне, ага.
Влияют, примерно на одну десятую каждая
Это собственно и называется независимая некоммерческая организация
Скорее, на бонгакамс.
И снова три абзаца подряд мантры про безопасность.
Это уже вопрос к автору новости - зачем копипастить это из предыдущей?
В оригинале всего этого нет https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html
Зачем нужен rust, когда есть быстрый, надёжный и безопасный ANSI C
Настоящему программисту все эти проверки не нужны, ему достаточно Тьюринг-полного языка
> ему достаточно Тьюринг-полного языкаТоже люблю писать приложения на CSS
Обожаю мантру про "настоящего программиста". А как только он опять запутается в вычислении смещения и получит out-of-bounds, оказывается что он лoшара, а вот настоящий программист™ такого бы никогда не допустил)))
Обожаю мантру настоящего джаваскриптизера, что программисту нет смысла напрямую работать с памятью.
Ну для формошлепства действительно нет смысла.
> Методы работы с памятью в Rust избавляют разработчикаНичего плохого не могу сказать про раст (по той простой причине, что не пишу на нём) но эта реклама утомляет.
Я таки почитал доку
ИМХО:
Быстрее сишки оно не будет, но почти
С версии 1.0 там много чего поменялось, уже вроде можно в прод
Реклама не реклама, действительно решает 99%
Есть косяк - на си можно всё, совсем всё; на ржавом тебе спецификацией языка рельсы делают и после си это напрягает. Вот прям бесит. Причём понимаешь, что вроде всё разумно, но бесит и всё)
Вседозволенность заменили на "осознонную необходимость"...Сижу, учу
Быстрее сишки оно не будет, но почти - смотрел disasm сгенерированного на rust- хорошего мало. Уйма вызовов и копирований на ровном месте. В любом случае быстрее чем python или javа.
Есть косяк - на си можно всё, совсем всё - многие вещи на C делать пытка. На asm в разы проще.
спецификацией языка рельсы делают - стандартной библиотекой, скорее. Так-то кроме отсутвия битовых полей(есть полное дерьмо макросы для этого), чистых функций(выпилили), функций-констант, отсутствия стандартизированного abi, мягко говоря какой-то поддержки платформ и отсутствия нормальных средств наследования данных особых ограничений нет.Причём понимаешь, что вроде всё разумно - как и в большинстве ЯП, психбольницей правят пациенты. ИМХО по моему опыту в rust бредятины хватает с хорошим запасом.
> смотрел disasm сгенерированного на rust- хорошего мало. Уйма вызовов и копирований на ровном месте.Пробовал смотреть с уровнем оптимизаций release вместо debug?
Очевидно да.
Пробовал думать, перед тем как писать?
Почему разработчики Golang смогли добиться того, что бинарники занимают меньше места и при этом
> а ядра Linux c версии 2.6.32 до 3.2поддерживают более старые ядра, чем сейчас раст? Неужели среди всех раст разумистов способных овладевать сложными концепциями овладевания не нашлось того кто бы сказал, что для системного вызова вместо линковки к libc достаточно написать несколько строчек на ассемблере?
> Linux Kernel 2.6.32 LTS Reaches End of Life In February 2016Некрофилы могут и сами поддержать.
Даже если бы там было пару строчек написать, зачем отвлекать хотя бы одного программиста на это?А там не пару строчек добавить: нужно поддерживать все для тестирования этого хлама - сервера или виртуалки, гонять на них тесты, исправлять если бажина ядро-специфическия и т.д Кому это надо?
Хрустики отжигают:
"Даже если бы там было пару строчек написать, зачем отвлекать хотя бы одного программиста на это?"В золотой фонд цитат опеннета.
--
Как будто там есть программисты :)
Смешно слышать это от тебя.
Ты вроде как программист. По идее должен был слышать про приоритезацию задач, про целесообразность и тд.> Как будто там есть программисты :)
Хаха. Получается в ядро линукса добавлять новый язык Торвальдс разрешил непрограммистам))
В соседней новости местные эксперты обзывали Линуса всякими нехорошими словами. Торвальд для них не аргумент, ведь эксперты знают как на самом деле надо было делать программы, на чём писать и кто настоящий программист
> Ты вроде как программист. По идее должен был слышать про приоритезацию задач,Слышал. Поэтому и ржу с фразы про "пару строк" вкупе с "отвлекать программистов".
Что ещё ожидать от строящих из себя программистов ростоманив которые пишут фреймворк стоящий из себя язык программирования 🐽
В отличии от всех опеннетовских экспертов (кроме 3х человек), ТАМ действительно есть программисты
Кто эти 3-е?
https://www.opennet.me/~n00by
https://www.opennet.me/~burjuiИ ещё кто-то показывал программы на react-native
Есть еще Ivan_83, где-то выкладывал свой github, что-то для потокового вещания.
Кстати, он в том треде доказывал, что Rust не нужен, и самодисциплина позволяет писать корректный сишный код, и у меня первый же запуск его потоковой вещалки printfнул мусор. Ну да ладно, все мы грешны. Он хотя бы код пишет, а не только фантазирует в комментариях :)
> нужно поддерживать все для тестирования этого хлама - сервера или виртуалки, гонять на них тестыНу, конечно, когда компилятор жирно-переусложнённый да ещё и с зависимостью от llvm. Не то что go - минута - и компилятор вместе со стандартной библиотекой собрались, причём ещё за минуту - для другой платформы, и т.д.
Только вот Go - далеко не Rust по возможностям. Но быстрее всех компилится ассемблер. Только вот почему-то на нём писать сложный софт никто не хочет - а жаль, ведь тогда бы можно было собрать мир за две минуты. Главное же в программировании - скорость компиляции, а не поддерживаемость и надёжность работы кода.
Догоняют Boost
Чо у вас в голове новости творится? Так что вышло, 1.63 или 1.64? Определитесь плз с показаниями.
У них просто есть график ̶п̶о̶д̶ж̶и̶г̶а̶н̶и̶я̶ ̶п̶е̶р̶д̶а̶к̶о̶в̶ ̶н̶а̶ ̶о̶п̶е̶н̶ь̶к̶е̶ релизов - каждые шесть недель.
Видать, мощно у тебя полыхает, если ты способен писать только о горящем выхлопном патрубке.
Проецируете, уважаемый.
> Проецируете, уважаемый.Диагнозы ставить у тебя тоже получается хреново.
Успехов Расту, но до Си ему далеко.
А ты попроси разрабов ещё UB добавить и фичи подрезать — тогда догонит.
Просто очередная обёртка для работы с С-библиотеками. При чём не самая лучшая.
А какая лучше?
Смотря для чего. Для ядра, пожалуй, лучшим был бы V. А для юзеррспейса много чего придумали: D, Haxe, OCaml, недавний Carbon.
V течёт же.
Это ты сейчас из пальца высосал. Освобождать память не пробовал? Или включать при сборке бинаря GC?
Лучший для ядра Оберон. Максимум стандартной переносимости, минимум прямой работы с железом
Вместо V надежнее будет взять даже VasyanoLang
Это он и есть.
Вот скажите мне. Вот эти вот :::::::::::::::::::::::::::: - это нормально?
Ещё вот это напиши пару раз -- точно будет ненормально.
В С++ так же:
awaitable<void> echo(tcp::socket socket)
{
try
{
char data[1024];
for (;;)
{
std::size_t n = co_await socket.async_read_some(boost::asio::buffer(data), use_awaitable);
co_await async_write(socket, boost::asio::buffer(data, n), use_awaitable);
}
}
catch (std::exception& e)
{
std::printf("echo Exception: %s\n", e.what());
}
}
Нормально. В коде ты можешь сокращать пути импорта (некий аналог using в c++)use deeply::nested::function as my_function;
fn main() {
my_function();
}
Нет конечно. Тебе могут привести Си++ или Котлин с его доступом к свойствам через :: но в нормальных языках, таких как ANSI C, такого нет
Гробят Linux скопом
А в чём вообще проблема? Почему у Сишников так рвёт жопу?
У меня кстати вопрос к Сишникам за жирный бинарь "Привет_мир
pupa@lupa:~$ mkdir test && cd test
pupa@lupa:~/test$ cargo new hello_world
Created binary (application) `hello_world` package
pupa@lupa:~/test$ cd hello_world/
pupa@lupa:~/test/hello_world$ cargo rustc --release -- -C prefer-dynamic
Compiling hello_world v0.1.0 (/home/pupa/test/hello_world)
Finished release [optimized] target(s) in 1.14s
pupa@lupa:~/test/hello_world$ du -h target/release/hello_world
20K target/release/hello_world
pupa@lupa:~/test/hello_world$ strip target/release/hello_world
pupa@lupa:~/test/hello_world$ du -h target/release/hello_world
16K target/release/hello_world
pupa@lupa:~/test/hello_world$ ./target/release/hello_world
Hello, world!
pupa@lupa:~/test/hello_world$ mkdir ../hello_world_c && cd ../hello_world_c
pupa@lupa:~/test/hello_world_c$ cat main.c
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
pupa@lupa:~/test/hello_world_c$ gcc -Wall main.c -o hello
pupa@lupa:~/test/hello_world_c$ du -h hello
20K hello
pupa@lupa:~/test/hello_world_c$ strip hello
pupa@lupa:~/test/hello_world_c$ du -h hello
16K helloЧё с лицом пацаны, мать жива?
> А в чём вообще проблема? Почему у Сишников так рвёт жопу?Си хорошо зарекомендовал себя в качестве языка для системного программирования.
В нем нет ни каких наворотов.
Синтаксис его прост, поэтому код на нем readable.
Rust этих качеств не имеет
Читаемость и простота никак не связаны.
Вот простой пример это показывающий:
for i in (0..100).enumerate()
.step_by(4)
.map(|(ind, x)| x.pow(2))
.skip(20).take(50) {
println!("{} {}", ind, i);
}
for (int ind = 0; ind<100; ind++) {
if ind < 20 || ind % 4 == 0 {continue;}
if ind >= 70 {break;}
int i = ind * ind;
printf("%d %d \%i", ind, i);
}
Как то так. Если кто из "суперпогроммистов" будет недоволен кодом, пускай покажет как нужно.
Так что правильные "навороты" улучшают читаемость.
>>Finished release [optimized] target(s) in 1.14sза такое время он должен был до 10ти байт его соптимизировать ))
>Почему у Сишников так рвёт жопу?Это не сишники. И вообще не программисты
Да тут только маркетологи раст сидят.
>> Почему у Сишников так рвёт жопу?As for me
на си можно всё, совсем всё; на ржавом тебе спецификацией языка рельсы делают и после си это напрягает. Вот прям бесит. Причём понимаешь, что вроде всё разумно, но бесит и всё)
Вседозволенность заменили на "осознонную необходимость"...
os::unix::process::CommandExt::process_group
os::windows::fs::FileTypeExt::is_symlink_dir
os::windows::fs::FileTypeExt::is_symlink_file
Агаблин, вот вам и стдлибы для блага портабельного кода...
Ну а как ты предлагаешь писать платформозависивый код?
Городить #ifdef __linux__ #elif _WIN32 везде? Или оформить это в виде отдельного модуля?
Что удобнее? Потому что платформозависимость никуда не денется.
Если изначально предполагается писать под разные платформы, то очевидно что б не загаживать исходники #ifdef'ами, не вызывать напрямую, функции ОС, которых нет в другой, или работающие иначе.Я пишу в основном встраиваемое ПО, под самые разные микроконтроллеры.
Но обычно пишу сперва кроссплатформенное ПО на десктопе, тестирую, и потом просто запускаю на контроллере, еще тестирую, и готово.Использую модули реализующие какой то класс операций под платформу в отдельных модулях. Что заворачивается в функции, а что то реализуется h файлами.
Для запуска ПО на каком нибудь очередном китайском контроллере, приходится не каджое ПО перелопачивать, а портировать только библиотеки, или наклепать оберток, над тем, что уже есть.Идея заимствована.. с Ардуино.
Там же практически не требуются #ifdef под каждую платформу, которых уже никто не знает сколько.
> Ну а как ты предлагаешь писать платформозависивый код?
> Городить #ifdef __linux__ #elif _WIN32 везде? Или оформить это в виде отдельного
> модуля?
> Что удобнее? Потому что платформозависимость никуда не денется.И как на *nix сработает конструкция вида os::windows::fs::FileTypeExt::is_symlink_dir интересно, ежели без условной сборки то? Где оно имплементацию то возьмет?
Изучающие и изучившие, как вы это применяете, если он постоянно меняется?
Там в комплекте cargo
Контроль версий всего
И уже только добавляют, обратная совместимость
За последние годы он больше прирастал фичами, чем вот именно менялся. Лет пять назад да, иное дело, но не сейчас уже
7 лет назад. После v1.0 все обратно совместимо.
Сколько анонимов, и ни один в чейнджлог не смотрел.
https://github.com/rust-lang/rust/blob/master/RELEASES.mdНаслаждайтесь, читать под "Compatibility Notes". В каждом релизе пачка.
> Сколько анонимов, и ни один в чейнджлог не смотрел.
> https://github.com/rust-lang/rust/blob/master/RELEASES.md
>> impl Trait was accidentally accepted as the associated type value of return-position impl Trait, without fulfilling all the trait bounds of that associated type, as long as the hidden type satisfies said bounds. This has been fixed.
>> Add assertion that transmute_copy's U is not larger than T
>> A soundness bug in BTreeMap was fixed that allowed data it was borrowing to be dropped before the container.Сам-то смотрел? А точно глазками?
Создатели языка хорошо заботятся обратной совместимости. Заявлется что после версии 1.0 можно писать код без проблем и это выполняется. То что у него частые обновления - так это же хорошо, фичи настаиваются в найтли и бета и потом стабилизируются. Процесс разработки выстроен отлично.
И чем это лучше Rust 1.63?
Async await
> упоминаются ограниченные ресурсы по продолжению сопровождения совместимости со старыми окружениямиА, ну тогда - не, не, не, не надо этого. Если на старте сил уже нет.
То есть драйвера на расте больше не будут работать с выходом новой версии ядра?
> То есть драйвера на расте больше не будут работать с выходом новой
> версии ядра?Смотри шире - они перестанут собираться с выходом новой версии компилятора. Каждых полгода, приблизительно.
С помощью слотов можно сделать разные редакции, так что не самая большая проблема на самом деле.
В тугие годы у меня в системе стояло 4 версии питона, тк. софт использовал разные почему-то версии интерпретатора.
Все никак не стабилизируется, не то что божественная сишечка
Сишка гамно как и все языки со скобками. Ada, бейсик, паскал - лучшие.
(Ты (на (LISP (бочку (не кати!)))))
Лисп не осилил, слишком какой-то математический
Ничего математического там нет с точки зрения разработки, только основная идея. В Lisp'ах вообще ничего нет, даже вменяемого синтаксиса, поэтому всё делается на синей изоленте, т.е. макросах, и это и есть главный их недостаток.
In Rust We Trust
А Rust на чём написан?
На русте. Написать компилятор\интерпретатор - не самая сложная задача.
> Написать компилятор\интерпретатор - не самая сложная задача.Оно и понятно, почему растопроги - тормознутые и жрущие память.
Пруфов конечно же не будет?
> Пруфов конечно же не будет?"Мы все так говорим, а значит это правда!"©
Да вообще плёвое дело. Здесь так вообще рассадник экспертов по компиляторам, каждый по десятку написал в уме.
Ни в коем случае не пишите своё, а то вдруг случится непоправимое и вы действительно чему-то научитесь.
Подняли требования к ядру Linux.. Ну давайте уже, поднимайте до уровня last linux version + 1.
https://www.opennet.me/opennews/art.shtml?num=44919
>> Релиз системной библиотеки Glibc 2.24
>> 05.08.2016 08:46
>> Для работы Glibc на архитектурах, отличных от x86 и x86_64 теперь требуется ядро Linux 3.2...
> Подняли требования к ядру Linux.. Ну давайте уже, поднимайте до уровня last linux version + 1.Уточни: ты очередной "совсем не паляшийся" вендузятник или просто закинулся Этодругином™®?
Он просто сидит на втором пне
>язык системного программирования
>требует особую версию ведра linuxМам, я сейчас буду писать свою ОС, только линукс три и два поставлю!
Лулз в том, что версию ведра на самом деле требует glibc, которую требует gcc из crosstool-ng.
Казалось бы, зачем убийце Си ГлибСи?
> Казалось бы, зачем убийце Си ГлибСи?Потому что кросскомпиляторы, которыми кросскомпилируется llvm,требуют glibc?..
>>> The minimum required versions for all -linux-gnu targets are now at least kernel 3.2
>>язык системного программирования
>>требует особую версию ведра linux
> Мам, я сейчас буду писать свою ОС, только линукс три и два поставлю!Опеннетная Экспертиза, аз из!
Типажи :) Только мне кажется что слишком уж перегруженная скрипта выходит, не лучше уж ли по старому со стекоподобным апи - шлеп шелп, и соседа алкоголика за стограм десятьтышстрок на луа или чемпопало еще нанять чем вот это вот все ?
> Повышены требования к окружению Linux в компиляторе, пакетном менеджере Cargo и стандартной библиотеке libstd - минимальные требования к GlibcАхахахаха, кучка неосиляторов. Ну никуда без тех людей которые действительно что-то умеют
Стандарт где? Через 20 лет нынешний код скомпилируется?
Можно указать edition.
А MIDP какой указывать? А манифест писать надо? А как же в jar упаковать?
стандарта нет by-design
>После интеграции фронтэнда штатный инструментарий GCC сможет использоваться для компиляции программ на языке Rust без необходимости установки компилятора rustc, построенного с использованием наработок LLVM.Угадайте, почему "может" не превратится в "будет", а потом заглохнет, как gcj.
Там выше кто-то запостил пример плохого нипанятного кода:
for (int ind = 0; ind<100; ind++)
{
if ind < 20 || ind % 4 == 0 {continue;}
if ind >= 70 {break;}
int i = ind * ind;
printf("%d %d \%i", ind, i);
}Ловите рерайт:
for (int ind = 0; ind < 100; ind+=4)
{
if ((ind < 20) || (ind >= 70)) continue;
int i = ind * ind;
printf("%d %d \%i", ind, i);
}Цепочки вызовов функций для быдла.
for (int ind = 20; ind < 71; ind += 4) {
int i = ind * ind;
printf("%d %d \%i", ind, i);
}