URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 127209
[ Назад ]

Исходное сообщение
"Выпуск языка программирования Rust 1.60"

Отправлено opennews , 07-Апр-22 21:12 
Опубликован релиз языка программирования общего назначения Rust 1.60, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки)...

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


Содержание

Сообщения в этом обсуждении
"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 21:16 
Все таки использование ini-подобных структур файлов (что toml в конфигах карго, что конфигов systemd) всегда фиговая идея. Они нормально работают только для двухуровневых структур данных. Чтобы прикрутить большие уровни, начинаются пляски с костылями. И понаплодили 100500 немного различающихся синтаксисов, несовместимых между собой.

Любой другой формат (ямл, джейсон, да даже многословный xml) лучше по большинству параметров.


"Выпуск языка программирования Rust 1.60"
Отправлено Shatur , 07-Апр-22 23:30 
Так TOML тоже многоуровневый как и YAML.

"Выпуск языка программирования Rust 1.60"
Отправлено qetuo , 08-Апр-22 03:21 
А ты писал TOML на 3+ уровня, чтобы еще и с массивами? Я писал, и никому не желаю.

"Выпуск языка программирования Rust 1.60"
Отправлено Shatur , 08-Апр-22 09:08 
Так а что тут такого?

[first.second.third]
value = []


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 21:05 
Я иногда делаю связки по имени что бы развернуть в одноуровневый структуры для совместимости с INI, но сейчас TOML уже повсеместно стандартом стал, так что это все уже LEGACY какой-то.

```
[service]
nodes = ['node-a', 'node-b', 'node-c']

[node-a]
host=127.0.0.1
port=10000

[node-b]
host=127.0.0.1
port=10001

[node-c]
host=127.0.0.1
port=10001
```

А в YAML так выше двух уровней не возникает.
Да, правда нужно знание по файлу и его настройкам, но тут возможна помощь в виде комментариев.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 07:17 
Да ладно, ямл - худший формат для чтения и для написания человеком.  Томл на его фоне - подарок от бога.

Джейсон - вообще не для людей.

Лучший же формат из тех что я видел - хокон.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 21:07 
Чего еще за "хокон"?

"Выпуск языка программирования Rust 1.60"
Отправлено morphe , 08-Апр-22 23:16 
hocon тоже немного не для людей, имхо если для задачи подходит hocon - то подойдёт и jsonnet

Синтаксис там похожий, но ближе к json, + есть куча полезных вещей вроде функций и миксинов (mixin в jsonnet - не просто сложение объектов)


"Выпуск языка программирования Rust 1.60"
Отправлено sigprof , 09-Апр-22 17:01 
> Джейсон - вообще не для людей.

Правильно — для людей есть HJSON: https://hjson.github.io/syntax.html


"Выпуск языка программирования Rust 1.60"
Отправлено Fracta1L , 08-Апр-22 07:24 
> Чтобы прикрутить большие уровни, начинаются пляски с костылями

Кривоголовым не дают переусложнять сущности на ровном месте, удар в спину.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 21:07 
А на Lua можно и математику в конфигах B-)

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 11-Апр-22 12:08 
key=value - лучший формат.
Другой лучший формат - s-выражения.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 22:48 
> под покровительством независимой некоммерческой организации Rust Foundation

Amazon, Google, Microsoft... Хоть бы честно писали, кто там в эту фаюндэшын входит.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 22:54 
>> под покровительством независимой некоммерческой организации Rust Foundation
> Amazon, Google, Microsoft... Хоть бы честно писали, кто там в эту фаюндэшын входит.

Надеюсь, ты написал этот коммент из под Hurd/HaikuOS/OpenBSD?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 05:13 
А что такое, зайка?

OS: OpenBSD 7.1 amd64
Host: SAMSUNG ELECTRONICS CO., LTD. DP700A3D/DM700A3D/DB701A3D/DP700A7D
Uptime: 1 hour, 44 mins
Packages: 420 (pkg_info)
Shell: ksh v5.2.14 99/07/13.2
Resolution: 1920x1080
DE: MATE 1.26.0
WM: Metacity (Marco)
Theme: Menta [GTK2/3]
Icons: menta [GTK2/3]
Terminal: mate-terminal
Terminal Font: Monospace 10
CPU: Intel i5-3470T (4) @ 1.600GHz
GPU: AMD TURKS (DRM 2.50.0 / 7.1, LLVM 13.0.0)
Memory: 1166MiB / 8127MiB


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 09:05 
> SAMSUNG

Это УберСмартТВ или планшет? Если планшет, то как работает тачскрин?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 09:24 
>> SAMSUNG
> Это УберСмартТВ или планшет? Если планшет, то как работает тачскрин?

Моноблок.

Хороший вопрос, сейчас проверил. Тачскрин на любое нажатие тыкает в правый нижний угол :) В linux он работает из коробки без калибровки.

wsconsctl
...
mouse2.type=touch-panel
mouse2.rawmode=1
mouse2.scale=0,11388,0,6272,0,0,0
mouse2.reverse_scrolling=0
mouse3.type=touch-panel
mouse3.rawmode=1
mouse3.scale=0,11388,0,6272,0,0,0
mouse3.reverse_scrolling=0
...

dmesg
...
uhidev4 at uhub5 port 6 configuration 1 interface 0 "ILITEK ILITEK Multi-Touch" rev 1.10/0.02 addr 3
uhidev4: iclass 3/0, 6 report ids
uhid4 at uhidev4 reportid 2: input=0, output=0, feature=1
uhid5 at uhidev4 reportid 3: input=63, output=63, feature=0
ums2 at uhidev4 reportid 4: 1 button, tip
wsmouse2 at ums2 mux 0
ums3 at uhidev4 reportid 6: 0 buttons
wsmouse3 at ums3 mux 0
...


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 09:32 
>>> SAMSUNG
>> Это УберСмартТВ или планшет? Если планшет, то как работает тачскрин?
> Моноблок.
> Хороший вопрос, сейчас проверил. Тачскрин на любое нажатие тыкает в правый нижний
> угол :) В linux он работает из коробки без калибровки.

Ага, это с правами был затуп. Дал доступ всем /dev/wsmouse и /dev/wskbd, сейчас тачскрин нормально работает.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 11:05 
> Дал доступ всем /dev/wsmouse и /dev/wskbd

чтоб легче было телеметрировать? :)

Продолжая троллинг: это потому что systemd нету, который даст любому нужные права, в том числе Xorg


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 11:07 
>> Дал доступ всем /dev/wsmouse и /dev/wskbd
> чтоб легче было телеметрировать? :)
> Продолжая троллинг: это потому что systemd нету, который даст любому нужные права,
> в том числе Xorg

Не знаю, но если набрать wsconsctl от юзера, то видит только первую мышь, а на три остальные не хватает прав. Видимо, чтобы 4 мыши поддерживались, нужно OpenBSD Enterprise покупать. Но я грязным хаком получил доступ ко всем 4-м мышам.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 11:02 
> А что такое, зайка?

То, что у пянгвинчико-фаундейшона - все то же самое, пративный.
> Shell: ksh v5.2.14 99/07/13.2

Не пались так больше.



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 11:05 
>> Shell: ksh v5.2.14 99/07/13.2
> Не пались так больше.

Ну, спалился здесь только ты. :)


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 11:46 
> Хороший вопрос, сейчас проверил. Тачскрин на любое нажатие тыкает в правый нижний угол :) В linux он работает из коробки без калибровки.
> Ну, спалился здесь только ты. :)

Ну-да, ну-да.



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 11:48 
>> Хороший вопрос, сейчас проверил. Тачскрин на любое нажатие тыкает в правый нижний угол :) В linux он работает из коробки без калибровки.
>> Ну, спалился здесь только ты. :)
> Ну-да, ну-да.

парусски переведи


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 13:25 
>>> Хороший вопрос, сейчас проверил. Тачскрин на любое нажатие тыкает в правый нижний угол :) В linux он работает из коробки без калибровки.
>>> Ну, спалился здесь только ты. :)
>> Ну-да, ну-да.
> парусски переведи

Не делай вид, что ты такой крутой опенбздшник, что не знал, работает ли тачскрин в твоем _моноблоке_. Все равно никто не поверит.



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 13:30 
> Не делай вид, что ты такой крутой опенбздшник, что не знал, работает
> ли тачскрин в твоем _моноблоке_. Все равно никто не поверит.

Первое. Как "ты написал этот комментарий из OpenBSD" доросло до "делай вид, что ты такой крутой OpenBSD-шник"?

Второе. А зачем мне знать, если я до него руками не дотягиваюсь? :) Только если пяткой комментарии дизлайкать, но там ещё попасть надо.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 13:39 
>> Не делай вид, что ты такой крутой опенбздшник, что не знал, работает
>> ли тачскрин в твоем _моноблоке_. Все равно никто не поверит.
> Первое. Как "ты написал этот комментарий из OpenBSD" доросло до "делай вид,
> что ты такой крутой OpenBSD-шник"?

Наверное так же, как ты стал тем самым комментатором, к которому обращались?
Если уж посчитал, что подразумевалсь под "написал из под ..." не использование в качестве основной ОСи, а лишь "смотрите-смотрите как я могу!".

> Второе. А зачем мне знать, если я до него руками не дотягиваюсь?
> :) Только если пяткой комментарии дизлайкать, но там ещё попасть надо.

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



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 13:48 
>> Второе. А зачем мне знать, если я до него руками не дотягиваюсь?
>> :) Только если пяткой комментарии дизлайкать, но там ещё попасть надо.
> Но то, что в пингвиниксе оно "работает из коробки без калибровки", ты почему-то знаешь ...

оно даже в винде работает, я тоже знаю :) то ли 8.0, то ли 8.1, уже не помню, такая фигня с плитками, кстати я так и не понял, как там меню с помощью тачскрина вызвать :)


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 23:04 
А ещё Mozilla и Huawei

Они же в linux foundation, кроме mozilla


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 23:35 
Мозила тут номинально, из неё их как раз и выгнали, чтобы FF меньше портили.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 23:46 
> чтобы FF меньше портили.

Занятная опеннетная оналитека. Расскажи поподробнее, чем именно развитие/написание компилятора "портит FF".

> Мозила тут номинально, из неё их как раз и выгнали,

А ты явно не бедствуешь, если для тебя полляма на старте и (минимум) $300 000 в год за платиновый статус - "номинальность".
Странно, с такими-то "оналитическими" способностями.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 23:39 
> А ещё Mozilla и Huawei
> Они же в linux foundation, кроме mozilla

Вот взял и всю интригу испортил!
> кроме mozilla

IBM c ораклем за нее. Впрочем, достаточно было бы уже и Сары из МС в списке директоров.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 22:49 
Самокомпилируемый компилятор это очень круто и вообще все молодцы.

"Выпуск языка программирования Rust 1.60"
Отправлено pashev.ru , 07-Апр-22 23:05 
Паскаль, например 😏

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 08-Апр-22 07:58 
Паскаль, Модула, Модула-2 (Нью Паскаль) , Оберон-2 (Супер Паскаль) , Оберон-7 (Ультра Паскаль). И всё это один человек, и всё это методом самораскрутки.
Медаль Тьюринга (которая раз в жизни вручается), почётный доктор половины универов мира (и в России тоже), всемирное признание. Что он сделал не так? Или ты умнее его?

"Выпуск языка программирования Rust 1.60"
Отправлено ANANAS , 08-Апр-22 09:05 
Товарищ, на ваш оберон-7 есть современные компиляторы и критичные либы?

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 08-Апр-22 09:18 
> Товарищ, на ваш оберон-7 есть современные компиляторы и критичные либы?

Скажем так: графика под Линуксом и на stm32 работает. Сеть -- это большой вопрос, но если использовать сисколы от линукса -- вопрос вполне решаем. Есть компилятор multioberon (используется в атомной промышленности, исходники открыты) -- там с высокой вероятностью есть всё минимально-необходимое.

А современными компиляторами -- дело обстоит не дурно:
https://github.com/lboasso/oberonc -- Oberon to Java
https://github.com/kekcleader/FreeOberon -- native Oberon for Win/Lin
https://github.com/bbcb/bbcp -- BlackBox Component Builder for Windows, GNU/Linux, OpenBSD, FreeBSD (ready production)
https://github.com/AntKrotov/oberon-07-compiler -- Oberon-07 compiler for x64 (Windows, Linux), x86 (Windows, Linux, KolibriOS), MSP430x{1,2}xx, STM32 Cortex-M3 (ready production)

https://github.com/Vostok-space/vostok -- The translator is written in its own input language - Oberon. Generates code for:
A common subset of C and C++ compatible with gcc, clang, tcc and CompCert.
Java 1.7
JavaScript compatible with ECMAScript 5
Oberon-07, Active Oberon and Component Pascal
License is LGPL for translator's code and Apache for libraries, tests and examples.

https://github.com/aixp/O7 -- Oberon → ARMv{6,7E}-M compiler, based on N. Wirth Project Oberon Oberon → RISC compiler (ready production)

https://github.com/dvdagaev/Mob -- MultiOberon is an Oberon Compiler with 3 different backends:
BlackBox Native x86 code Generator (1.7, version 1.6 with partial support)
Ofront Generated C-Language Code Translator;
LLVM representation Generator.
MultiOberon is Cross-Platform Compiler with supported platforms:

Windows X86;
Windows X64;
Linux X86;
Linux X64;
Raspberry Pi OS ArmV71;
Linux Ubuntu Arm64.

Ready production (with requerements nuclear power)

Хватит, или ещё погуглить в пользу забанненого в гугле?


"Выпуск языка программирования Rust 1.60"
Отправлено Ананас , 08-Апр-22 20:10 
Т.е. готовой инфраструктуры нет и нужно дёргать вызовы каждый раз руками и писать обёртки самому?
Хорошо, а детям хоть преподавать можно? Хотя бы некий условный GraphABC (или что там в паскале было) есть?

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 09-Апр-22 10:49 
> Т.е. готовой инфраструктуры нет и нужно дёргать вызовы каждый раз руками и
> писать обёртки самому?

Т.е. вы читать не умеете. Берёте BlackBox Component Builder -- там всё есть.

> Хорошо, а детям хоть преподавать можно? Хотя бы некий условный GraphABC (или
> что там в паскале было) есть?

Ещё раз внимательно читайте выше. Если вам действительно нужно преподавать детям -- давно бы уже нагуглили BlackBox Component Builder Школьный. Там вам и черепашка, и готовая программа обучения, и задания для проверки пройденного материала. В подмосковном Троицке и в Новосибирске учебная программа обкатана и более чем успешно преподаётся уже с десяток лет. Если вы не в курсе, то в Троицке расположен Всеросийский ядерный научный центр. И такая научная проблема, как "дефект массы нейтрино" была решена именно на Обероне. Целый пакет символьной математики, если вы понимаете что это такое. Это есть инфраструктура или её нету?))

Нужен пакет для работы? Качаете BlackBox Component Bulder для Win/Lin/FreeBSD и работаете. Не хватает компонентов? Идёте на oberon.org и качаете что вам надо. Хотите работать с мобильного телефона? Идёте на тот же oberon.org, регистриуетесь и прям в браузере пишете код, тут же видите результат.

Что вам ещё не хватает для полного счастья?


"Выпуск языка программирования Rust 1.60"
Отправлено ANANAS , 10-Апр-22 19:39 
Хорошо, чем blackbox.oberon.org отличается от blackboxframework.org и на что лучше ориентироваться?

"Выпуск языка программирования Rust 1.60"
Отправлено PnD , 08-Апр-22 12:59 
Go рассматривают как "идеологического наследника".
Убрали самое одиозное (BEGIN, END, PROCEDURE) и развили работу с типами.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 19:17 
> Го
> Типы

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 21:13 
Если бы убрать каналы (травят производительность), выполнение в пулах потоков,
то выйдет современный и удобный C, а не то что там сейчас получилось.

Вся надежда на то что кто-то может допилит или стандартную библиотеку расширив до нормальных современных типов (Map, BTree, List и т.д.), базовых функций (поиск, сортировки и т.д.), кросплатформенных часов, потоков и т.д.

А то современные приемники в виде Rust и Golang это какие-то комбайны жалеко ушедшие в свою философию.

Так и выходит, что Си устарел, а  Rust и Golang слишком раздутые. А место между ними занимает сейчас динмическая Java которая из-за своего JVM многим очень не по вкусу.


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 09-Апр-22 10:56 
> Если бы убрать каналы (травят производительность), выполнение в пулах потоков,
> то выйдет современный и удобный C, а не то что там сейчас
> получилось.

Нет. Это получится классический Оберон в нотации Си.

> Вся надежда на то что кто-то может допилит или стандартную библиотеку расширив
> до нормальных современных типов (Map, BTree, List и т.д.), базовых функций
> (поиск, сортировки и т.д.), кросплатформенных часов, потоков и т.д.

В си такого не будет. Си был сочинён для PDP-11. И это первородный грех.

> А то современные приемники в виде Rust и Golang это какие-то комбайны
> жалеко ушедшие в свою философию.

Rust нечитаем. Go -- инженерный компромисс. Далеко не идеален, но явно лучше потому что явно проще.

> Так и выходит, что Си устарел, а  Rust и Golang слишком
> раздутые. А место между ними занимает сейчас динмическая Java которая из-за
> своего JVM многим очень не по вкусу.

Golang по сравнению с Rust -- проще раза в три. Не выдумывайте.


"Выпуск языка программирования Rust 1.60"
Отправлено name , 11-Апр-22 10:22 
Как ты сетью работать собрался из go? С raw сокетами, tcp пакетами?

"Выпуск языка программирования Rust 1.60"
Отправлено PnD , 11-Апр-22 12:26 
> Как ты сетью работать собрался из go? С raw сокетами, tcp пакетами?

Не совсем понял в чём трагедия?
Для tcp/udp есть вполне рабочая библиотека "net". Битовая арифметика — считается не хуже чем с C. Вот например обработка кусочка сетевого пакета:
"""
    crc32_bytes := BUFFER.data[length-4 :]
    crc32_frame := uint32(crc32_bytes[0])
    crc32_frame |= uint32(crc32_bytes[1]) << 8
    crc32_frame |= uint32(crc32_bytes[2]) << 16
    crc32_frame |= uint32(crc32_bytes[3]) << 24
    if crc32.ChecksumIEEE(BUFFER.data[:length - 4]) != crc32_frame { // Invalid CRC
        if *DEBUG { xl.Debug("Invalid CRC") }
        return
    }
"""
* Как видим, "в лоб" (как на C) у меня перекастовать не вышло и пришлось "запинать ногами".
Но это как раз наименее удачное место обработчика (зато пример хороший). И я не специализируюсь как программист (есть же варианты пролезть через unsafe).

Для raw нету готового? А вот уже́ и есть https://github.com/golang/net/blob/master/internal/socket/ra...


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 09:07 
Поддержу троллинг.

Тем временем компилятор Си в лице gcc уже так не умеет.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:10 
Что он не умеет? GCC можно собрать предыдущей версией собранного GCC.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:19 
Ну, он уже как бы написал, что поддерживает троллинг. Поэтому отвечать на его вброс не нужно.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:37 
Ладно, разжую троллинг. Для сборки gcc нужен С++.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 13:42 
, который есть в пакете GCC. Проблемы нет, и C, и C++ поставляются вместе одним пакетом.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 13:56 
Но компилятор C не собрать компилятором C.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 21:16 
Так, погодите, а RUST разве можно без LLVM (C++) собрать самим RUST-ом?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 22:01 
> Так, погодите, а RUST разве можно без LLVM (C++) собрать самим RUST-ом?

Можно, разрешаю!
https://github.com/bjorn3/rustc_codegen_cranelift/blob/53bfc...

https://github.com/rust-lang/rust/pull/81594
> When the LLVM backend is disabled, the llvm-project submodule is not checked out by default. This breaks the bootstrap test for cg_clif. As cg_clif doesn't support split debuginfo anyway llvm-dwp is not necessary. Other backends would likely not want to build LLVM just for llvm-dwp either.


"Выпуск языка программирования Rust 1.60"
Отправлено YetAnotherOnanym , 07-Апр-22 23:01 
> В пакетном менеджере cargo стабилизирована поддержка флага "--timings", включающего формирование детального отчёта о ходе сборки и времени выполнения каждого шага. Отчёт может оказаться полезен для оптимизации производительности сборочного процесса.

Телеметрия - наше всё, да.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 23:05 
Надо бороться, но не с rust что кгб не освоила и кидает в массы чттоб вы раньше их этим не занимались.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 23:06 
Это плохо что cargo формирует детальный отчёт о сборке?
Чем?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 15:32 
Если ты не сказал явно это делать - всем.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 11-Апр-22 02:43 
Чем конкретно? Перечисляйте

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 01:34 
>> В пакетном менеджере cargo стабилизирована поддержка флага "--timings", включающего формирование детального отчёта о ходе сборки и времени выполнения каждого шага. Отчёт может оказаться полезен для оптимизации производительности сборочного процесса.
> Телеметрия - наше всё, да.

Где именно там телеметрия?



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 12-Апр-22 11:23 
Тебе в рифму ответить или сам поймёшь?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 12-Апр-22 11:54 
>> Cargo has stabilized support for collecting information on build with the --timings flag.
>> The report is also copied to target/cargo-timings/cargo-timing.html
> Тебе в рифму ответить или сам поймёшь?

Т.е. конкретики не будет, будут попукивания "в рифму" и заверения, что "это не лужа! Это такая грязевая ванна"?



"Выпуск языка программирования Rust 1.60"
Отправлено burjui , 08-Апр-22 09:50 
Боже мой, докатились... Уже по названию флага понятно, что это такое. Для обделённых природой: это не телеметрия, а ровно то, что написано в описании флага. Отчёт сохраняется в HTML файл, а не отправляется рептилоидам на Нибиру. Такое ощущение, что местных хейтерков набирают принципиально только из детсада и реабилитационного центра для инсультников.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 07-Апр-22 23:51 
>> В пакетном менеджере cargo предложен новый синтаксис

Играть синтаксисом у них модно?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 00:05 
>>> You can now use the dep: prefix in the [features] table to explicitly refer to an optional dependency without implicitly exposing it as a feature.
> Играть синтаксисом у них модно?

— Вы любите Битлз?
— Да ничего особенного! Фальшивят, голоса противные...
— А что вы слушали?
— Я — ничего, но мне Рабинович напел!


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 10:00 
Я понимаю, что сейчас просто добавили возможностей

— Вы любите Битлз?
— Да, потрясающе! При каждом исполнении к песне добавляется куплет!


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:17 
>> Я понимаю, что сейчас просто добавили возможностей
> — Вы любите Битлз?
> — Да, потрясающе! При каждом исполнении к песне добавляется куплет!

А если кто-то вставил песню в свое произведение не расчитывая на этот куплет?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:38 
>>> Я понимаю, что сейчас просто добавили возможностей
>> — Вы любите Битлз?
>> — Да, потрясающе! При каждом исполнении к песне добавляется куплет!
> А если кто-то вставил песню в свое произведение не расчитывая на этот
> куплет?

Расскажи поподробнее, что именно (и зачем) этот кто-то вставил, что оно теперь конфликтует с префиксом?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:17 
> — Вы любите Битлз?
> — Да, потрясающе! При каждом исполнении к песне добавляется куплет!

Сейчас в тренде Пинк Флойд.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 07:35 
> Играть синтаксисом у них модно?

Получается, что да.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 00:01 
Стоит ли учить сабж как хобби, для написания небольших утилит и программирования микроконтроллеров? Имею опыт только с Си. Или лучше в сторону Zig смотреть? Не знаю, что легче/приятнее использовать?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 00:16 
Написал несколько тысяч строк кода на Zig (пишу базу данных).

Zig - это лучшее что случалось в системном программировании за много лет. Намного лучше С и C++.

Опыта на Rust не имею, кроме чтения критики / хвальбы и туториалов. Но он мне совсем не понравился (но лучше С и С++).

Rust скорее замена С++, Zig - замена С.


"Выпуск языка программирования Rust 1.60"
Отправлено А где же каменты , 08-Апр-22 00:33 
Поделитесь в чем прелесть zig?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 02:32 
В принципе в том как позиционируется язык всё уже описано.

1. No hidden control flow. Т.е. нет exception. Нет переопределения методов. Нет конструкторов и деструкторов.
2. Error это отдельный тип и ошибки обрабатывать придётся (что-то типа Maybe / Optional, но в процедурном стиле), иначе не скомпилипуется.
3. В тестах и дебаге тебе выдадут дательный пошаговый путь где возникла ошибка и весь её путь - это ОЧЕНЬ круто, такого нигде не видел. И это не stacktrace, а error trace.
4. Тесты пишутся прямо в файле как test {...zig code...} и сразу запускаются командной zig test - ничего делать не надо. Очень поощряет test-driven программирование. Я ещё ни разу не собирал проект и не разбирался как это делать детально, а уже несколько тысяч строк работающего кода с тестами.
5. Тесты можно дебажить и все breakpoint работают в VS Code.
6. Билд система тоже на Zig, не надо учить отдельный язык синтаксис (cmake/Gradle).
7. Максимальная безопасность - все значения по умолчанию const (настоящий, а не как константная ссылка), проверки выхода за границы, и т.д. и т.п. Т.е. в отличие от Rust много проверок в runtime в Debug режиме, вместо статического доказывания системе типов, как в Rust - притом что многие проверки можно реально выполнить только в runtime.
8. Аллокатор передаётся как параметр - никаких скрытых аллокаций памяти.
9. Аллокатор std.testing.allocator отлавливает утечки - очень круто, использую в тестах
10. Отличная интероперабельность с С (не тестировал сам)

defer / errdefer - крутейшая фича.

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

Я очень доволен. Скажу честно, расчитывал что он быстро начнёт разваливаться и я его выкину как "не смогла".

Но он превзошёл все мои ожидания даже в версии 0.10.0-dev.

Ребята очень заточены на безопасность, но в меру, без фанатизма, и на performance.

Уже добавили переносимые SIMD в язык (тип @Vector())


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 02:33 
Это только часть, не рассказал про дженерики и вычисления в compile time.

Язык очень самобытный.


"Выпуск языка программирования Rust 1.60"
Отправлено qew , 08-Апр-22 05:20 
Спасибо за описание!

"Выпуск языка программирования Rust 1.60"
Отправлено Someone , 08-Апр-22 06:59 
Если по уровню обработки ошибок, их детальность и понятности, то лучше раста ничего нет. Только Elm может сравниться.

Блин, да он даже в большинстве случаев показывает как исправить ошибку.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:13 
> Zig самый низкоуровневый из всех.

Я не понял, это фронтенд над LLVM?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:15 
Это действительно круто. Потому что + на типе "вектор" или "массив" может быть в тысячу / миллион раз медленее чем + над обычным integer.

По сути это тот самый hidden control flow, когда стоимость операции предполагается такой же или сопоставимой.

Тут ты точно знаешь что + это дёшево и только для integer и float с аппаратной поддержкой.

И потом это переопределение операторов. Его тоже нет.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:29 
А как быстро делать + на массиве, например? Не троллю, просто не разбираюсь.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:44 
Быстро не сделать. Лучшее что можно сделать - использовать SIMD инструкции. В зависимости от разрядности элементов массива от 2х до 8х можно получить.

Но всё равно O(N).


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:40 
Да, использует backend LLVM для оптимизации и генерации кода.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:59 
Эх! Но все равно круто, надо пристальней изучить

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:20 
>Нет переопределения методов.

Т.е., нельзя определить операции "+", "-", "=" для своего типа? Ну "круто", чё.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 18:00 
Ну как тебе сказать. Оверлоад операторов хитрож@пым програмером - даст фору любому obfuscated C code contest'у. И это вовсе даже и не фича когда охота вдуплить в логику чужого кода.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:43 
интересно, что большая часть этих пунктов есть и в rust

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:39 
Много чего в Rust нет и неизвестно когда будет.

Zig опережает Rust по многим пунктам. Просто не стал касаться этой темы.

В Rust основное преимущество, и оно же - недостаток, их система типов с borrow checking.

Про её ограниченность можно почитать в интернете, неплохо разбиралось. Там что-то про слабость и ограниченность аффинной системы типов.

Именно поэтому сравнивая языки, я выбрал Zig. Он более низкоуровневый. Это то что нужно для системного программирования.

Rust тоже хороший язык, по сравнению с C++. Он он как раз замена С++, и какие концепции оттуда стащили - Clone, Copy, конструкторы, деструкторы и вот это вот всё.

В Zig этого нет и не нужно. В Zig даже нет типа "строка".


"Выпуск языка программирования Rust 1.60"
Отправлено Анимус , 08-Апр-22 22:08 
> Zig опережает Rust по многим пунктам. Просто не стал касаться этой темы.

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


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 12:19 
>> Zig опережает Rust по многим пунктам. Просто не стал касаться этой темы.
> А было бы интересно, если бы коснулся. Согласен с предыдущим комментатором, почти
> все плюсы Zig ты расписываешь, как будто Раст расхваливаешь.

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


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 13:08 
> А меня позабавило как он в одном пункте пишет что Зиг самый
> низкоуровневый из всех, когда в пункте выше написал что у Зиг
> больше проверок времени исполнения чем в Раст.

А чего там забавного? "Сложная" система типов, те же владения, как раз позволяет более продвинутые проверки времени компиляции.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 13:28 
Это в теории, притом гипотетической. На практике самый быстрый код генерирует C, а не Rust.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 14:01 
>> больше проверок времени исполнения чем в Раст.
> Это в теории, притом гипотетической.

Ты хочешь сказать, что на самом деле владения и ссылки не проверяются? От оно че ...
> На практике самый быстрый код генерирует C, а не Rust.

Разве что код для очередного микробенча (что не факт https://benchmarksgame-team.pages.debian.net/benchmarksgame/... )
с гарантиями и проверками вида "Соколиный глаз посмотрел код" и "зуб даю".


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 15:07 
Я хочу сказать то, что сказал.

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

Но Zig это же делает лучше C.

Все просто поверили в мантру чёрного ящика "оптимизирующего компилятора". Однако современные компиляторы достаточно слабы.

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

Поэтому "вот сейчас компилятор проверит всё в compile-time" и сгенерирует оптимальный код - лучше чем С - сказки это всё. Практика и куча тестов показала что это не так.

Обещали "Rust быстрее С", но не случилось.

Это факт, который глупо отрицать.

Насчёт проверок - я хочу сказать что система типов очень ограниченна.

Это круто, это лучше чем ничего, это значительно лучше чем было "до".

Zig пошёл другим путём - он делает максимальное количество проверок в runtime. Система типов значительно проще (но всё равно очень продвинутая по сравнению с С и С++). Код читать и понимать значительно легче.

И как на системе типов Rust ты докажешь что нет утечек памяти? Или что вектор содержит ровно N элементов? Или ...


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 15:44 
> Я хочу сказать то, что сказал.
> Эквивалентный код на С работает быстрее чем на Rust. Оптимизируется современными компиляторами
> лучше, ассемблерный код генерирует лучше.

Ты просто смешал в кучу _проверки_ времени компиляции и оптимизацию - и оспорил какие-то, выдуманные тобой же, якобы мои "утверждения".
> Но Zig это же делает лучше C.
> Все просто поверили в мантру чёрного ящика "оптимизирующего компилятора". Однако современные
> компиляторы достаточно слабы.

Опять сам придумал, сам опроверг. Попробуй использовать gcc 3.x и потом порассуждать еще раз про "слабость".

> Ну умеют даже SIMD использовать, нужно ручками.
> Поэтому "вот сейчас компилятор проверит всё в compile-time" и сгенерирует оптимальный код
> - лучше чем С - сказки это всё. Практика и куча тестов показала что это не так.

...
Я ж говорю - "смешались в кучу кони, люди". Извини, но мне лень спорить с твоими фантазиями и додумками.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 23:58 
> Но Zig это же делает лучше C.

Нельзя ли примеры с конкретными асмовыми листингами?

> Все просто поверили в мантру чёрного ящика "оптимизирующего компилятора". Однако современные
> компиляторы достаточно слабы.

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

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

А он не у всех таргетов есть, увеличивает в разы контекст, использование стэка и времена переключений, так что в системном программировании, где зачастую надо работать с минимальными допущениями это скорее дурной тон. Или premature optimization, который root of all evil. К тому же там все не так просто и у simd обычно есть специфичные требования (например выравнивание). Их выполнения и подготовка окружения к соответствю им не бесплатны: больше RAM жрется и если то что есть сразу в требования не лезло надо дополнительный код, жирнее и медленнее оригинала. Сетап этого может иногда отыграть взад. А настоящие гуру - те кто без всякого SIMD может в скорость железа упереться, как LZ4 например.

Есть вещи на которые это не распостраняется. Но их немного. Типа memcpy в стандартной либе. Но даже там переросточный glibc в сях например - да, быстрый, но если размер кода интересовал, эта быстрота дорого обходится: большая платформозависимая функция. Много кода разом. А если было много мелких операций оно еще и проиграть более простым может.

> Обещали "Rust быстрее С", но не случилось.

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

> Это факт, который глупо отрицать.

А они что, волшебники?

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

Тут можно поспорить. Хруст пытается рыбку съесть и на ... сесть ценой заставления кодера все нудно аннотировать. Это не имеет костов в ран тайм но не дает кодеру забить на явный баг.

> Zig пошёл другим путём - он делает максимальное количество проверок в runtime.

К сожалению в отличие от того что делает Rust это отливается в более жирный и медленный код. А без этого - отпадают гарантии.

> Система типов значительно проще (но всё равно очень продвинутая по сравнению
> с С и С++). Код читать и понимать значительно легче.
> И как на системе типов Rust ты докажешь что нет утечек памяти?
> Или что вектор содержит ровно N элементов? Или ...

Они решая одни проблемы изобрели много новых. А си хорош тем что проблем относительно немного и они хорошо известны.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним215 , 10-Апр-22 00:27 
>> Ну умеют даже SIMD использовать, нужно ручками.
> А он не у всех таргетов есть, увеличивает в разы контекст, использование

Не, это конечно забавно, когда один любитель приписывания своих фантазий решил поспорить с другим (надо было запастись попкорном). Но лично у меня еще gcc5 -O3 для amd64 разворачивал


int vec1[100];
int vec2[100];
...
for(int i=0;i<100;i++) vec2[i]=vec1[i]+vec2[i];

в

.L3:
        movdqa  xmm0, XMMWORD PTR [rbp+0+rax]
        paddd   xmm0, XMMWORD PTR [rbx+rax]
        movaps  XMMWORD PTR [rbx+rax], xmm0
        add     rax, 16
        cmp     rax, 400
        jne     .L3

И это, подписывайся как нибудь, если уж тоже влезаешь в обсуждение с таким же ником.



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 01:02 
Да, только все библиотеки высокопроизводительные используют ручные компиляторно-специфичные интрисинки.

Так почему же? Может потому что SIMD он впихнет в самых примитивных случаях? И шаг вправо, шаг влево и компилятор уже того... сложил ручки.

Ваш пример тому не опровержение, а доказательство. Это всё на просторах интернета неплохо разобрано.

Увы, магией, компиляторы не обладают.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 13-Апр-22 08:31 
>> А он не у всех таргетов есть, увеличивает в разы контекст, использование
> Не, это конечно забавно, когда один любитель приписывания своих фантазий решил поспорить
> с другим (надо было запастись попкорном). Но лично у меня еще
> gcc5 -O3 для amd64 разворачивал

А теперь смотрим во что разворачивается сохранение подобных контекстов при случае. При переключении задач тоже придется. Как и регистры FPU еще. Посмотрим на размер контекста задачи и подхоренеем. А если захочется low latency кернел - тыщу раз в секунду такие блоки таскать уже и не нулевой оверхед. Это же актуально при вызове множества функций и т.п..

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

А тот код - прям так может и работать, а попробуйте это указателем сделать (вы же не собираетесь int[100] передавать дальше значением, задвигая про эффективность?!) - и узнаете много нового и интересного про simd, alignment и в чем там прикол. У simd есть довольно специфичные требования к выравниванию адресов и веселые приколы если это не выполняется.

>

 
> int vec1[100];
> int vec2[100];
> ...
> for(int i=0;i<100;i++) vec2[i]=vec1[i]+vec2[i];
>

Ну да, ну да, только отложенных грабель в этом коде около дюжины разложено. На всех уровнях. Шажок в сторону и бомбанет этот код, там или тут. И с точки зрения статического анализа и декларации намерений такой код - дно. Начиная прямо с (signed) индекса массива.

> И это, подписывайся как нибудь, если уж тоже влезаешь в обсуждение с таким же ником.

А нафига? Есть некие мысли, их и обсуждаем.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним215 , 13-Апр-22 11:54 
> А теперь смотрим во что разворачивается сохранение подобных контекстов при случае. При
> переключении задач тоже придется. Как и регистры FPU еще. Посмотрим на

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

> А тот код - прям так может и работать, а попробуйте это
> указателем сделать (вы же не собираетесь int[100] передавать дальше значением, задвигая
> про эффективность?!) - и узнаете много нового и интересного про simd,
> alignment и в чем там прикол. У simd есть довольно специфичные
> требования к выравниванию адресов и веселые приколы если это не выполняется.

Особо забавно оспаривание своих же фантазий анонимом в контексте опыта написания нехилых кусков SIMD еще ручками, в асме ...

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

А то, что до #215 Аноним(-) был другой ... ну да, я и забыл - 294й считает нетикет глупым предрассудком.



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 01:57 
Все листинги есть в GitHub Issues, и их довольно много. "Навскидку" я их не приведу, они мне попадались случайно.

Одна из заявленных главных целей - быть быстрее С. Поэтому performance на втором месте.

Например, все значения по умолчанию константы - это позволяет производить дополнительные оптимизации.

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

@Vector для SIMD, а если SIMD не поддерживаются то будет fallback на обычный вектор, т.е. поэлементное сравнение.

inline for, calling conventions можно выбирать для каждой функции.

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

Про то что SIMD что-то там увеличивает...это конечно требует серьезных пруфов. Жду.

Но никто не заставляет их использовать. Не хочешь - не используй.

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

Архитектур которые поддерживает Zig куча. Спасибо LLVM. И нет, это не делает язык более "системным", как вы сказали.

Может для какого-то embedded, и плат нужны отдельные подархитектуры и компиляторы, которых нет в LLVM. Возможно, не знаю. Я не железячник.

Но это либо совсем никому не нужно, либо вопросы к вендору. Архитектуру в LLVM можно добавить, и это делали не раз.

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

Rust проверяет корректность некоторых конструкций, довольно ограниченную. Просто из "у Rust такая крутая система типов, что он теоретически МОЖЕТ делать более продвинутые оптимизации" это превратилось на просторах интернета в факт, бездоказательный.

Или Rust умеет проверять переполнение float?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 13-Апр-22 09:10 
> Все листинги есть в GitHub Issues, и их довольно много. "Навскидку" я
> их не приведу, они мне попадались случайно.

И даже ссылки на гитхаб не дадите? А так - алгоритмов и процовых архитектур много и вот так огульно утверждать что X быстрее Y и это цель - ну, так себе затея. Разве что чисто статистически в совсем явных случаях, типа сказав что "си быстрее питона" вы врядли особо соврете. И то ярый питонист в пику накопает краевые случаи, они ничего не доказывают, но все же так бывает.

> Одна из заявленных главных целей - быть быстрее С. Поэтому performance на втором месте.

Быстрее чем си - ну, очень абстрактно. Особенно когда кодеген у обоих на одном и том же LLVM, а если параллельность хотелось и проч, сишники нынче могут OpenMP поюзать одной pragma-ой, например.

> Например, все значения по умолчанию константы - это позволяет производить дополнительные
> оптимизации.

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

> Параметры функции могут быть значениями или ссылками - это выбирает оптимизирующий
> компилятор компилятор.

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

> @Vector для SIMD, а если SIMD не поддерживаются то будет fallback на
> обычный вектор, т.е. поэлементное сравнение.

Да так то на самом деле неплохо, но у simd есть не совсем очевидные но отличные от ноля требования и side effects. И чем больше таких грабель тем хуже оно как именно системный тул.

> inline for, calling conventions можно выбирать для каждой функции.

Инлайн и в сях можно выбирать для каждой функции есчо.

> Там куча всего есть, что делает его именно системным низкоуровневым, чего С
> и в помине не может.

Например, чего?

> Про то что SIMD что-то там увеличивает...это конечно требует серьезных пруфов. Жду.

Чем больше регистров используется тем больше регистров сохранять. Особенно при полном переключении контекста, типа переключения задачи/сохранения состояния потока и проч. А, представляете, си достаточно низкоуровневый для того чтобы на нем например корутины самому сделать было?!

> Но никто не заставляет их использовать. Не хочешь - не используй.

Вопрос не в том - а в количестве грабель которые вылезут. И в реюзабельности кода, особенно, вот именно в системных вещах. У сей очень удобно что многий код можно оттестить на писюке а потом в какой мелкий мк запихнуть. Где с инструментацией все же хуже и кривее (супротив perf/gdb/asan/ubsan/etc). Хотя, знаете, по минимуму сделать ubsan можно даже на мк. Только ваши любимые проверки индексов и математики не халявные. А в ubsan таки сделали ультралайт версию, когда при завале проверки случается всего лишь bad opcode например. Дешево, сердито, и вот именно системный обработчик исключения в мелочи таки заметит что шит произошел. А в этом зигхайле так вообще можно в системные вещи вклиниться?

> И нет, конструкции языка переводятся в инструкции процессору. Если у процессора есть
> SIMD, который может делать до 8х ускорения, а язык программирования не
> знает об этом без хаков, для конкретного компилятора... скажем мягко...нет, это
> не преимущество.

Он может дать до 8x ускорения. А может дать до нескольких раз торможения. Характерный пример будет glibc'шный memcpy. Да, он на вот этом вот выезжает в разы - если условия подошли. А если caller его абы как на куче мелочи дернет с абы какими указателями, копируя по 10 байтов за вызов, оно там будет в рантайме дольше одуплять - можно ли с данным адресом SIMD вообще, или это нарушает constraints. Единственный вариант как-то это гарантировать - прибить форсированый align все и вся на гвозди, но будет другая проблема: RAM и стэка больше жрать будет. Чисто на округление адресации.

> Архитектур которые поддерживает Zig куча. Спасибо LLVM. И нет, это не делает
> язык более "системным", как вы сказали.

Вообще-то LLVM поддерживает не так уж и много архитектур. По сравнению с тем же GCC например. И оптимизация у него хороша только под 1-2, на остальные они просто положили.

> Может для какого-то embedded, и плат нужны отдельные подархитектуры и компиляторы, которых
> нет в LLVM. Возможно, не знаю. Я не железячник.

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

> Но это либо совсем никому не нужно, либо вопросы к вендору. Архитектуру
> в LLVM можно добавить, и это делали не раз.

Да как-то не особо эффективно делали. Реально живое там x86-64. Ну ARM'ы еще слегка. Остальное постольку-поскольку, спущено на тормозах. Да даже с ARM оно прикалываться умеет если тематически форумы именно системной направленности почитать.

> Про то что Rust не имеет якобы костов в runtime из-за якобы
> крутых проверок - я хотел бы увидеть доказательства.

Я так понимаю что он с своим borrow checker ухитряется часть проверок доказать в компил тайме и тогда выкинуть их все из кода с чистой совестью. Да что там, оптимизеры типа LTO и сами этим грешат, только уровнем пониже и наружу интерфейс в случае си не вывешивают. Но выпилить к черту проверки, доказав "always true" может на раз. Торвальдс очень ругался - в кернеле компилятор некоторые использования не видит :). И если кто заикается про системность - ему потом эти оптимизации с другого бока очень жестко вылезут так то.

> Например, как он делает проверки выхода за границы массива? Вы опять это пишите, а
> доказательства где?

Как я понимаю - таки в compile time просчитывает большую часть этого. Хотя рантайм panic() у него таки тоже есть. И можете зазырить в рассялке ядра что Торвальдс про такие вещи в СИСТЕМНЫХ вещах думает.

> Rust проверяет корректность некоторых конструкций, довольно ограниченную. Просто из "у
> Rust такая крутая система типов, что он теоретически МОЖЕТ делать более
> продвинутые оптимизации" это превратилось на просторах интернета в факт, бездоказательный.

И как я понял - это заодно и делает синтаксис довольно закорючным.

> Или Rust умеет проверять переполнение float?

Да без понятия, я не растаман так то. Но float вообще большая проблема с точки зрения надежности и предсказуемости всего этого. Более того - чтобы все это было, надо хотя-бы какие-то жесткие стандарты определить, для всех краевых случаев, гарантированной точности и проч. Что начинает клещиться с умениями разнообразного железа. С точки зрения системщины и надежности плавучка проблемный топик. Ряд стандартов безопасности типа MISRA прямым текстом запрещает использование таковой по этим причиным.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 13:25 
Как это связано с низкоуровневостью?

Можно собрать с отключенными проверками, есть Release и Release Safe.

Низкоуровневый он по совершенно другим причинам.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:35 
> Можно собрать с отключенными проверками, есть Release и Release Safe.

К сожалению оно дает риск про@#$ться - или оверхед в рантайм.

> Низкоуровневый он по совершенно другим причинам.

Из которых ни 1 не перечислена...


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 19:03 
А зачем?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 00:00 
> А зачем?

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


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 00:51 
Меня выше спросили - я ответил.
А распинаться и пытаться что-то доказать непонятно зачем анониму...

Всё есть в Issue на GitHub, и коммитах.

А ты умеешь делать проверки выхода за границы массива не в runtime? Или так умеет делать Rust? Может он умеет доказывать в compile time?

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

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


"Выпуск языка программирования Rust 1.60"
Отправлено А где же каменты , 08-Апр-22 23:54 
Какие книги почитать чтобы понять что ты написал? Про хидден флоу итд

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 02:17 
Вот этого достаточно https://ziglang.org/learn/why_zig_rust_d_cpp

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:32 
> 1. No hidden control flow. Т.е. нет exception. Нет переопределения методов. Нет
> конструкторов и деструкторов.

А как же panic содраный из хруста и вычисления в compile time?

> 2. Error это отдельный тип и ошибки обрабатывать придётся (что-то типа Maybe
> / Optional, но в процедурном стиле), иначе не скомпилипуется.

При том вот именно это - вызывает вопросы какими веществами они пользовались. Хотя выглядит забавно.

> 4. Тесты пишутся прямо в файле как test {...zig code...} и сразу
> запускаются командной zig test - ничего делать не надо. Очень поощряет
> test-driven программирование.

С другой стороны, прелесть сей в отсутствии hardwired допущений прибитых на гвозди. Нравится тестить так - берем то. Эдак - берем это. Либ для тестов - есть.

> 5. Тесты можно дебажить и все breakpoint работают в VS Code.

Вы перепутали вебмакак с системщиками.

> 6. Билд система тоже на Zig, не надо учить отдельный язык синтаксис
> (cmake/Gradle).

С другой стороны - см выше про прибито на гвозди. Единственный Правильный Путь - это не путь сишника.

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

Только стоит уточнить что оно либо с пеналти в рантайме - либо без некоторых проверок.

> Т.е. в отличие от Rust много проверок в runtime в Debug
> режиме, вместо статического доказывания системе типов, как в Rust -

ЧСХ спорный вопрос что это фича. Хруст в этом пожалуй имеет преимущество: с одной стороны хоть какие-то проверки-гарантии, с другой - это не портит код в ран тайм.

> притом что многие проверки можно реально выполнить только в runtime.

Оно как бы не бесплатно по размеру кода и его скорости.

> 8. Аллокатор передаётся как параметр - никаких скрытых аллокаций памяти.

А вот это прикольно придумано. С другой стороны - кодить аллокатор в bare metal ну так себе, знаете ли. А без аллокатора оно вообще способно жить?

> 10. Отличная интероперабельность с С (не тестировал сам)

И вообще вроде можно постепенно сишный сорц до этого заапгрейдить.

> defer / errdefer - крутейшая фича.

Вообще забавно сделано.

> Вообще ощущение что пишешь на высокоуровневом языке, хотя Zig самый низкоуровневый из всех.

Да ну ща. Си низкоуровнее некуда. А как на этом оформить помещение числа 0x20 в адрес 0x80000?

> Я очень доволен. Скажу честно, расчитывал что он быстро начнёт разваливаться и
> я его выкину как "не смогла".

На самом деле забавная штука. Более логичный чем хруст на вид.

> Но он превзошёл все мои ожидания даже в версии 0.10.0-dev.

Да? А как насчет поддержки в GCC? Надоели уже с шлангом гребаным, половину архитектур он тупо не умеет, что как бы аргумент если вы что-то там про системное программирование :P

> Ребята очень заточены на безопасность, но в меру, без фанатизма, и на performance.

Вообще они адекватнее раста с их оголтелым маркетинговым булшитом и пиханием во все дыры на кривой козе. И с сями оно менее дурно стыкуется на вид.

> Уже добавили переносимые SIMD в язык (тип @Vector())

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


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 02:05 
Никакого panic в Zig нет.

Вычисления в comptime - это одна из ключевых фич и особенностей языка.

Врядли оно взято из Rust, потому что сделано гораздо, на порядок лучше.

В Rust это какой-то язык макросов над AST, который несколько раз переписывался и был unstable.

В Zig - это обычный код на Zig.
comptime {
...zig code
}

Что может быть проще.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 12:08 
> Вычисления в comptime - это одна из ключевых фич и особенностей языка.
> В Rust это какой-то язык макросов над AST, который несколько раз переписывался и был unstable.

Ну-ну.

const fn foo()
https://doc.rust-lang.org/reference/const_eval.html


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 14:39 
Ну-ну. А println как там имплементирован?)))

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 14:51 
А, так вы вообще не понимаете и не разбираетесь о чём пишете.

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

Сравнивать надо с этим убожеством в виде макросов https://doc.rust-lang.org/src/std/macros.rs.html#96-101.

Что-то на нормальный Rust совсем не похоже.

Вот это сделать на Rust слабо?

https://github.com/ziglang/zig/blob/master/lib/std/comptime_...

Да, все generic, и comptime полиморфизм сделано в Zig гораздо лучше чем в Rust.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 21:44 
> А, так вы вообще не понимаете и не разбираетесь о чём пишете.
> comptime используется гораздо шире, чем вычисление констант. Вы вообще не о том.  
> вычисление констант

"Свои недостатки мы очень любим приписывать другим"(с)

> Сравнивать надо с этим убожеством в виде макросов https://doc.rust-lang.org/src/std/macros.rs.html#96-101.
> Что-то на нормальный Rust совсем не похоже.

Опять что-то придумал и оспорил. Молодец, так держать!

> Вот это сделать на Rust слабо?
> https://github.com/ziglang/zig/blob/master/lib/std/comptime_...

Надул щечки, будто сам лично писал.
Погоди, шнурки поглажу ...


#![allow(unused)]
#![feature(const_for)]
#![feature(const_fn_trait_bound)]
#![feature(const_mut_refs)]


struct KV<'a,T> {key:&'a str,val:T}
struct MyMap<'a,T> {kvs:&'a [KV<'a,T>]}

const fn get<T:Copy>(key:&'static str, map:MyMap<T>) -> Option<T> {
  
   for kv in map.kvs.into_iter() {
     if (kv.key == key) {return Some(kv.val)}
   }
   return None;
}


fn main() {
const a:KV<i32> = KV {key: "hello", val: 1};
const b:KV<i32> = KV {key: "foo", val: 2};
const c:KV<i32> = KV {key: "bar", val:100500};
const map:MyMap<i32> = MyMap{kvs: &[a,b,c]};
println!("foo = {}, bar = {}", get("foo",map).unwrap(), get("bar",map).unwrap_or(42));
}


Да, оно проверяет все _полностью_ в компайлтайме.

% rustc -O -Zunleash-the-miri-inside-of-you=yes const.rs
% ./const
foo = 2, bar = 100500

_ZN5const4main17hf11e025cf5259379E:
        .cfi_startproc
        sub     rsp, 88
        .cfi_def_cfa_offset 96
        mov     dword ptr [rsp], 2
        mov     dword ptr [rsp + 4], 100500
        mov     rax, rsp
        mov     qword ptr [rsp + 8], rax
        mov     rax, qword ptr [rip + _ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h3319aa4b4b98306eE@GOTPCREL]
        mov     qword ptr [rsp + 16], rax
        lea     rcx, [rsp + 4]
        mov     qword ptr [rsp + 24], rcx
        mov     qword ptr [rsp + 32], rax
        lea     rax, [rip + .L__unnamed_1]
        mov     qword ptr [rsp + 40], rax
        mov     qword ptr [rsp + 48], 3
        mov     qword ptr [rsp + 56], 0
        lea     rax, [rsp + 8]
        mov     qword ptr [rsp + 72], rax
        mov     qword ptr [rsp + 80], 2
        lea     rdi, [rsp + 40]
        call    qword ptr [rip + _ZN3std2io5stdio6_print17h07b90b286b5e6a91E@GOTPCREL]
        add     rsp, 88
        .cfi_def_cfa_offset 8
        ret



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 11-Апр-22 03:36 
Код делает немного не то, что по ссылке. Точнее совсем не то.

Предположу что ещё с парой включенных фич можно сделать что нужно.

Неплохо для языка, в который влили тонну бабла. Правда в 1.0 это не вошло, как я понял.

Через 5 лет после появления умеет то что сделал бывший студент-программист из Орегона, по вечерам после работы в версии 0.6.0.

А теперь мы подошли к главной фиче Zig. Как из const fn вернуть тип? Например для параметра 1 (Mac OS) я хочу получить одну структуру (с одними полями и их типами), а для 2 (Linux) другую структуру (другие поля. Ну и пусть методы будут одинаковыми.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 15-Апр-22 13:21 
О! Это то что я давно хотел получить от растоманов. Но они какой-то хней отмазывались.

Может я не туда смотрел. Можно ли пример, как подобное делается в zig?

Достаточно ссылочку и пару поясняющих фраз.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 02:42 
Из интересного - alignment вшит в систему типов (указателя), поэтому туда-сюда указатели с разными alignment таскать не получится, только в безопасную сторону.

Я работаю с Direct I/O и там специальные требования к памяти.

Минус целый класс ошибок.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 00:37 
Нет, выходные бинарники разгромные по размеру, а сборка ужасно медленная

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 01:27 
> Нет, выходные бинарники разгромные по размеру, а сборка ужасно медленная

А еще волосы на ладошках вырастут!


% rustc -O -C prefer-dynamic -C strip=symbols hello.rs && ll hello                
-rwxr-x---  1 аноним  аноним   6,4K  8 Apr. 07:26 hello


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 03:23 
Жырнота-то какая... это чтобы одну функцию вызвать?!

"Выпуск языка программирования Rust 1.60"
Отправлено Бывалый смузихлёб , 08-Апр-22 05:18 
А сборка точно статическая, со всем необходимым растохламом под капотом ?

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

Да и 6 кб для вывода фразы в консоль в отсутствие либ под капотом - это тоже очень много

В былые времена когда тестировал раст, статическая сборка хэллоуворда весила сотни килобайт и это при максимальных оптимизациях и вырезании всевозможного мусора. А как только требовалось что-то бОльшее вывода в консоль - сборка жирела в разы
Что.. едва ли похоже на «суперЯП без издержек»


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 08:41 
> А сборка точно статическая, со всем необходимым растохламом под капотом ?

Glibc умеет в статическую сборку? Разве что musl.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 09:33 
Умеет, чего ему не?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 10:12 
Года два назад, вроде, прекратили поддержку статической сборки glibc.
Из-за лицензии и некоторых библиотек (libnss и тп).

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 11:39 
> А сборка точно статическая, со всем необходимым растохламом под капотом ?

А ты давно собирал статический хелловрот с стандартной либой?


% gcc -static -O2  -s  helloc.c && ls -lh a.out
-rwxr-x---  1 анон  анон   566K  8 Apr. 12:34 a.out

> А то ведь прошивка под мк - штука такая. И места немного
> и памяти немного и полноценной оси где бы можно было раскидать
> те либы - тоже часто нет
> Да и 6 кб для вывода фразы в консоль в отсутствие либ
> под капотом - это тоже очень много

Стандартный бинарь под амд64, с pie и кучей секций по умолчанию-то? Не смеши мои тапки. Нолики выравнивания там, по большей части.

Idx Name          Size      VMA               LMA               File off  Algn
12 .text         000003c6  00000000002017b0  00000000002017b0  000007b0  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
13 .init         00000013  0000000000201b78  0000000000201b78  00000b78  2**2

% rustc -O -C prefer-dynamic -C strip=symbols -C relocation-model=static -C opt-level=s hello.rs && ll hello
-rwxr-x---  1 анон  анон   5,6K  8 Apr. 12:34 hello*
% gcc -O2  -s helloc.c && ls -lh a.out
-rwxr-x---  1 анон  анон   4,8K  8 Apr. 12:34 a.out*

> В былые времена когда тестировал раст, статическая сборка хэллоуворда весила сотни килобайт

Плохо набрас^W тестировал.
https://www.opennet.dev/openforum/vsluhforumID3/124921.html#322
$ ll hello
-rwxr-x---   496B 30 Jul. 12:41 hello*


"Выпуск языка программирования Rust 1.60"
Отправлено Бывалый смузихлёб , 08-Апр-22 15:42 
так сколько в итоге весит хеллоуворд со статической типизацией ?
ну так, к слову о микроконтроллерах..

"Выпуск языка программирования Rust 1.60"
Отправлено Бывалый смузихлёб , 08-Апр-22 15:44 
> типизацией

не типизацией разумеется


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 15:52 
> так сколько в итоге весит хеллоуворд со статической типизацией ?
> ну так, к слову о микроконтроллерах..

Какие цифры в 496B тебе не понятны? B=Byte, если что.


RUSTFLAGS="-O  -C relocation-model=static -C strip=symbols -C linker=ld.bfd" cargo build --release && ll target/release/hello
    Finished release [optimized] target(s) in 0.03s
-rwxr-x---  2 анон  анон   504B  8 Apr. 15:52 target/release/hello*



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 15:54 

 
% RUSTFLAGS="-O  -C relocation-model=static -C strip=symbols -C linker=ld.bfd" cargo build
--release && ll target/release/hello
     Finished release [optimized] target(s) in 0.03s
-rwxr-x---  2 анон  анон   504B  8 Apr.
15:52 target/release/hello*

% ldd target/release/hello ; target/release/hello                                
ldd: target/release/hello: not a dynamic ELF executable
Hello World



"Выпуск языка программирования Rust 1.60"
Отправлено Бывалый смузихлёб , 08-Апр-22 18:05 
> Какие цифры в 496B тебе не понятны? B=Byte, если что.
>
 
> RUSTFLAGS="-O  -C relocation-model=static -C strip=symbols -C linker=ld.bfd" cargo build
> --release && ll target/release/hello
>     Finished release [optimized] target(s) in 0.03s
> -rwxr-x---  2 анон  анон   504B  8 Apr.
> 15:52 target/release/hello*
>

Если итог статической столько - то уже весьма годно, да


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 00:49 
> микроконтроллеров

Вот уж где раст не валялся.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 09:32 
Валялся, но не слишком успешно. Он даже в кернеле линукса кусок проблем и костыле, а там и подавно.

"Выпуск языка программирования Rust 1.60"
Отправлено burjui , 08-Апр-22 09:56 
Бред сивой кобылы. Cortex M0 и M3 точно работают, и для кучи отладочных плат есть отдельные либы поверх базовых типа cortex-m. К слову, для STM32 либы генерятся автоматически по предоставляемым производителям файлам с описанием периферии. Но раз ты не слышал, как в лесу упало дерево, значит, дерева не существует, так ведь?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:41 
А зачем? Ардуина тоже поверх. А потом видим, как идиот крутит Cortex M7 для того, чтобы пошимить светодиодиком.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:51 
Учится же. Все же когда-то с азов начинали. Потом, глядишь, ЦОС на нём организует.

"Выпуск языка программирования Rust 1.60"
Отправлено burjui , 08-Апр-22 19:02 
Это чтобы юному падавану наговнять что-то по-быстрому. А настоящий джедай использует Силу - RTIC, ранее известный как RTFM: https://crates.io/crates/cortex-m-rtic
С этой штукой можно быстро сделать ОСРВ под конкретную плату, но регистры периферии придётся дёргать самому. RTIC только проследит, чтобы ты дёргал без гонок и только те, которые требуются конкретной задаче (task).

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:42 
> Бред сивой кобылы. Cortex M0 и M3 точно работают,

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

> Но раз ты не слышал, как в лесу упало дерево, значит, дерева не существует, так ведь?

side-effects отсутствуют - optimized out.
  


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 02:09 
С учётом того, что по ходу миру потреб..дства приходит конец, идите в пень со своими NodeMCU, всрастами и прочими микропитонами в школу, тут все на Си и будет на Си, кроме как у любителей светодиодных лент и прочих пятиминутных ютубоваупоказалок.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:26 
Приходит, разве что, только в Скрепной. И то, по причине санкций со всех сторон.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:38 
Когда заводы остановятся, тогда увидим.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:48 
Ну опять же, остановятся у нас.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:40 
Если блеф перейдет в действия, то заводам не выгодно и не на чем будет работать. Вы не понимаете, что владельцы шведских столов готовы сократить бесконтрольное потребление ограниченных ресурсов планеты.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 15:16 
Так давно уже понятно, что самое действенное, чтобы сократить потребление ресурсов планеты - сократить скорость размножения потребителей ресурсов.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:47 
> Приходит, разве что, только в Скрепной. И то, по причине санкций со всех сторон.

А что, у остальных память бесплатной стала и жирные микроконтроллеры раздают по ценам тощих? Невзирая на более крупный кристалл и меньший выход с вафли? А то при сколь-нибудь ощутимом тираже жаба таки задушит. Даже за 1 доллар.


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 08-Апр-22 08:02 
> Стоит ли учить сабж как хобби, для написания небольших утилит и программирования
> микроконтроллеров? Имею опыт только с Си. Или лучше в сторону Zig
> смотреть? Не знаю, что легче/приятнее использовать?

Смотрите в сторону Оберон-7. Учится за неделю. Многие вещи вам покажутся тупыми, но эта простота, которая даёт управляемость сложностью. А это выходит на первый план в текущей ситуации. Победят самые мелкие, А значит самые приспосабливаемые.
В конце-концов -- хелло ворлд на Оберон-7 имеет 2-6 кБ на больших железках и 2..3 сотни байт для микроконтроллеров. Переносимость софта снизу вверх абсолютная а задача бекпортирования на две платформы вниз практически никогда в чистом виде не возникает.


"Выпуск языка программирования Rust 1.60"
Отправлено kitoboec , 08-Апр-22 10:16 
Интересно, на лекциях по языкам программирования нам Паскаль разжевывали.
Синтаксис Оберона, объявление модулей констант похожи..

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:37 
Да какой-то он не такой активный. Вон Zig сначала один человек писал, затем двое. Проект с нативной компиляцией, поддерживает гораздо больше архитектур и ОС, чем у текущих рабочих реализаций Оберона. Более того, собирается отказываться от llvm, насколько знаю.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:52 
Нет, не собирается. LLVM останется, как я понял. Просто сейчас компилятор написан на C++, будет написан self-hosted компилятор на Zig.

И как я понял можно будет отказаться / заменить LLVM. Но это для тестов или чего то ещё.

Для production отказываться от 15 лет инвестиций в оптимизации LLVM никто не собирается. Более того они активно пушат изменения обратно в LLVM, расширяя его границы и возможности.


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 08-Апр-22 16:51 
> Да какой-то он не такой активный. Вон Zig сначала один человек писал,
> затем двое. Проект с нативной компиляцией, поддерживает гораздо больше архитектур и
> ОС, чем у текущих рабочих реализаций Оберона. Более того, собирается отказываться
> от llvm, насколько знаю.

Если вы считаете, что Оберон представлен недостаточным числом платформ -- то я недоумеваю.
Если Zig только собирается отказываться от LLVM, то Оберон с самого начала мог собирать сам себя, а остальные компиляторы, трансляторы и траспиляторы прикручены были позже. Так что этого фатального недостатка - оберон точно лишён))

Может ли Zig похвалиться тем, что сначала был написан он, а потом -- процессор под него? Как у Оберона?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 17:17 
> Если вы считаете, что Оберон представлен недостаточным числом платформ -- то я недоумеваю.

Хочу прогать esp32. Подойдёт?
> Может ли Zig похвалиться тем, что сначала был написан он, а потом -- процессор под него?

А где можно этот процессор получить/купить?


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 09-Апр-22 10:39 
> Хочу прогать esp32. Подойдёт?
>> Может ли Zig похвалиться тем, что сначала был написан он, а потом -- процессор под него?

На счёт esp32 -- не уверен. Надо смотреть бекэнды в компиляторе aix -- сам давно туда не лазил, может быть и есть. Также есть варианты написать прошивку на Обероне для транслятора "Восток" или SDCS. Оба умеют в Си.

> А где можно этот процессор получить/купить?

Покупаете плату FPGA Spartan-4 или старше (от 200 баксов), прошиваете схему (доступна на Project Oberon), подключаете клаву, мышу, VGA-монитор через штатные разъёмы и вуаля. Как вариант -- можете посмотреть на дальнего древнего родственника -- эмулятор "Кронос" (далеко не тупая машина была). Даёт хорошее представление о том, каким мог бы стать массовым 2х процессорный "ВоркСтейшн мейд ин ЮССаР" ещё в 1989 г. Если бы всё не пошло прахом.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:51 
Ну вы сравнили 200 баксовый спартан с ESP за десятку. К тому же мышь, клава и HDMI какой на одноплатнике за ту же десятку будут сильно лучше, если нужно было именно это и не хотелось именно самому, именно VGA реализовывать (очень нишевое удовольствие).

> Если бы всё не пошло прахом.

Когда некто предлагает тул за 200 баксов вместо тула за 10 баксов, кто угодно прахом пойдет.


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 09-Апр-22 22:07 
Тот, кто хочет -- ищет возможности.
Кто не хочет -- ищет причины.



"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 00:14 
Верно. Я хочу делать решения которые используются, с разумными параметрами на выходе. А вон то - очень узкоспециализированное. Самоцель "программить на чем-то" очень странная. Она не решает ни одной проблемы человечества, ни одной задачи. Ну карьера и заканчивается тремя странными конторами на выбор. А мир в целом пишет критичные системы, на сях, в многократно большем количестве. Конечно используя специфичные субдиалекты, правила и - главное - используя специфичные подходы к разработке. Вообще, там главное общие подходы, они от ЯП не сильно зависят. А верификаторы дополнительных критериев могут и внешними быть. В таком процессе все равно на каждое изменение гоняется куча верификаций, анализов и тестов чтобы любые отклонения от идеала ловить ДО того как что-то упадет, взорвется или въедет в стену.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:39 
Ты из секты Информатика-21. Бывал на вашем форуме, там  пасутся скушные тошнотворные зануды. Если у пацана нет высшего образования, то он не человек. Все сидят на Виндовсе, о Линуксах никто не шарит. Потопахин всё рыщет по интернету, угрожая судом всем, кто будет бесплатно раздавать его книги. Там какой-то Денис есть который не может осилить GTK+ для Blackbox. Унылое зрелище.

Посмотрел исходники на Обероне, ключевые слова языка пишутся ьлдбко большими буквами. Сам Никлаус даже не удосужился выпусть компилятор и библиотеки для GNU/Linux. Оберон создавался на платформа для OS Windows. ну он сейчас на пенсии, ему ничего не надо, благо когда-то полетал на российских МиГ-ах.

Скажи на бортовом оборудовании российских беспилотников и истребителей исходники на Обероне?


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 08-Апр-22 14:30 
> Скажи на бортовом оборудовании российских беспилотников и истребителей исходники на Обероне?

В одной Новосибирской конторе софт для спутников пишут на Модуле-2.


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 08-Апр-22 16:53 
>> Скажи на бортовом оборудовании российских беспилотников и истребителей исходники на Обероне?
> В одной Новосибирской конторе софт для спутников пишут на Модуле-2.

И в одной московской, если что. И эта московская контора -- прям контора контора.
https://ru.wikipedia.org/wiki/%D0%98%D0%...


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 08-Апр-22 20:18 
Не спорю, я слышал только про новосибирцев.
Ещё знаю что на BBCB написана система управления каскадом ГЭС на Амазонке.  

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 09-Апр-22 10:42 
> Не спорю, я слышал только про новосибирцев.
> Ещё знаю что на BBCB написана система управления каскадом ГЭС на Амазонке.

И процессинговый софт Дойче Банка. Тоже норм так нагрузка и требования к надёжности. А если немного погуглить -- можно найти сайт одной голландской компании которая делает заказные SCADA-системы со всеми требованиями критической надёжности.


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 09-Апр-22 20:06 
О как!
Кстати, раз ты в теме.
Давно не был на форуме оберонкоре.
Как в ВВСВ обстоят дела с многопотоком?

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 09-Апр-22 22:15 
> О как!
> Кстати, раз ты в теме.
> Давно не был на форуме оберонкоре.
> Как в ВВСВ обстоят дела с многопотоком?

Прямо здесь и сейчас -- Дагаев реализовал очень грамотный кооперативный планировщик (в одном потоке). От орловской группы уже довольно давно есть компромисс в виде запуска нескольких BB в разных процессах с общением через шаред мемори. Есть решение однозначно рабочее от красноярцев с запуском ВВ на кластере.

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


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 10-Апр-22 10:03 
Ок, почти ничего не поменялось за 15+ лет.
Полазил по oberon.org, у bbcb какой-то разброд версий: чисто под винду - 1.7, кроссплатформ - 1.8, 2.0.
Какая из них является production ready  ?
У кроссплатформ GUI на чем ?

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 10-Апр-22 11:41 
> Ок, почти ничего не поменялось за 15+ лет.

Когда я вижу комментарий в духе "Ок, почти ничего не поменялось за 15+ лет." -- я только рад. Это значит технологии совершенны, не требуют доработок, смузихлёбы не понабежали.

> Полазил по oberon.org, у bbcb какой-то разброд версий: чисто под винду -
> 1.7, кроссплатформ - 1.8, 2.0.
> Какая из них является production ready  ?
> У кроссплатформ GUI на чем ?

Берите свеженькую -- не ошибётесь. Практически все версии production ready -- в этом главный смысл. Смена номера версии вызвана изменениями в Kernel, которые разумеется -- несовместимы. Если бы вы знали как работают Обероны, то знали бы, что вообще всё на Оберонах стараются делать ни на чём. Т.е. на Обероне. BBCB, Active Oberon и т. п. -- это полноценные (мини) операционные системы, замыкающая всё необходимое на себя -- принцип герметизации (буквально, как на подводной лодке). Разумеется, есть выходы на внешнюю систему (лично довелось подключать виндовую DLL -- работает идеально), но в мире Оберонов не рекомендуется так делать по причине снятия почти всех гарантий. Именно так достигается максимальная переносимость и надёжность.


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 11-Апр-22 16:36 
> Это значит технологии совершенны

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

> Если бы вы знали как работают Обероны, то знали бы, что вообще всё на Оберонах стараются делать ни на чём.

Я ими интересовался в 2005 +/- год.
Я имел ввиду как в Линукс версии BBCB отрисовывается графика - GTK, QT, SDL … ?


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 12-Апр-22 07:48 
>> Это значит технологии совершенны
> Кооперативная многозадачность это совершенная технология?

В ряде задач -- это идеальное решение. Я только не понял, какое это имеет отношение к Оберону?

>> Если бы вы знали как работают Обероны, то знали бы, что вообще всё на Оберонах стараются делать ни на чём.
> Я ими интересовался в 2005 +/- год.
> Я имел ввиду как в Линукс версии BBCB отрисовывается графика - GTK,
> QT, SDL … ?

Признайтесь, вы мой ответ не читали. Я вроде ясно дал понять: никак. Если захотите -- есть вариант SDL, если захотите -- GTK. Но в мире Оберонов так не принято.


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 12-Апр-22 20:27 
> В ряде задач -- это идеальное решение.

Например?

> Я только не понял, какое это имеет отношение к Оберону?

Непосредственно к оберону никакого.
Мне интересно как писать многопоточку в ВВСВ.
А да, ещё забыл, х64 поддерживается или только х32?

> Признайтесь, вы мой ответ не читали. Я вроде ясно дал понять: никак. Если захотите -- есть вариант SDL, если захотите -- GTK. Но в мире Оберонов так не принято.

Пардон, Вы дурачком прикидываетесь?
Повторю простой вопрос: как в Линукс  версии ВВСВ выводится графика?


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 13-Апр-22 10:23 
>> В ряде задач -- это идеальное решение.
> Например?

Последовательный однотипный перебор входов датчиков.

>> Я только не понял, какое это имеет отношение к Оберону?
> Непосредственно к оберону никакого.
> Мне интересно как писать многопоточку в ВВСВ.
> А да, ещё забыл, х64 поддерживается или только х32?

Берёте OpenMP (привязки есть) и пишите.
Я правильно понимаю, что вам лишь бы языком потрепаться? Потому что, если бы вы хотели, то давно бы знали, что существует компилятор х64 -- об этом на сайте написано большими буквами.

>> Признайтесь, вы мой ответ не читали. Я вроде ясно дал понять: никак. Если захотите -- есть вариант SDL, если захотите -- GTK. Но в мире Оберонов так не принято.
> Пардон, Вы дурачком прикидываетесь?
> Повторю простой вопрос: как в Линукс  версии ВВСВ выводится графика?

Пардон, вы дурачок. Я вам третий раз пишу: в Обероне принято всё делать силами самого Оберона.
Не желаете герметизации, нет проблем: можете взять SDL 1/2, можете взять GTK, можете взять Cairo. Вариантов тонны. Как захотите -- так и будет.


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 14-Апр-22 09:46 
Ок. Вы сами нифига не знаете.

"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 09-Апр-22 21:15 
А вот по поводу критической надежности.
В соседей теме чел про SPARK задвигает.
Сталкивался с этим языком?

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 09-Апр-22 22:19 
> А вот по поводу критической надежности.
> В соседей теме чел про SPARK задвигает.
> Сталкивался с этим языком?

Я даже могу предположить фамилию этого чела. Рыбин.

Всегда по СПАРКу два вопроса и на один из них ответ уже печальный:
1) Что будет, если вдруг запретят экспорт технологии в Россию?
2) Всё у вас сертифицированное и куча тестов. А кто сертифицировал gcc, в который вы транслируете код? Какие гарантии, что ваш танк надёжности не провалится сквозь тонкий лёд инфраструктуры?

А так СПАРК сам по себе не дурён, толковые ребята делают. Но, политика, жирнючий всё такое. Тут перспективы далеко не радужные.

Для атомной промышленности -- вопрос когнитивной управляемости, зависимость от вендоринга -- это вопрос жизни и второй Фукусимы. Оберон здесь явно выигрывает.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 00:25 
> 2) Всё у вас сертифицированное и куча тестов. А кто сертифицировал gcc,
> в который вы транслируете код? Какие гарантии, что ваш танк надёжности
> не провалится сквозь тонкий лёд инфраструктуры?

Тот же кто сертифицировал ваш здоровенный спартан с черти-чем залитым в него.

> Оберон здесь явно выигрывает.

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


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 10-Апр-22 11:31 
> Тот же кто сертифицировал ваш здоровенный спартан с черти-чем залитым в него.

Сернтифицированных спартанов в России не существует. Спартан-4 может купить студент в любой стране мира, по нынешним меркам -- это крайне слабая железка. Не нравится отсутствие сертификации спартана-4 -- скачайте эмулятор Project Oberon и можете самостоятельно проверить исходники -- всё доступно, и что важно в наших условия -- бесплатно. Так что, вы что-то перепутали.

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

Определялось очень просто: способность в одну голову написать компилятор. Чем проще -- тем надёжней, повторимей, переносимей. Победят в ближайшем будущем те языки, у которых минимальное количество грамматик РБНФ, максимум структурированности, максимум гарантий, минимальное число возможностей позволить программисту сделать глупость. Это Оберон, в существенно меньшей степени Go, и живой труп Rust.
Серебряная пуля существует, но кроме неё есть и калибр, и условия стрельбы и тот кто такой пулей стреляет. Все эти вопросы на 80% сейчас решены. Для оставшихся 20% -- специальные приспособы для аппарата стрельбы и прокачка скилов у стреляющего.

Невозможно создать более прочную цепь, чем самое слабое звено в ней. Здесь вы точно не правы.


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 11-Апр-22 16:51 
> максимум гарантий,

Гарантий чего?

> минимальное число возможностей позволить программисту сделать глупость. Это Оберон, в существенно меньшей степени Go, и живой труп Rust.

Rust по этому критерию на 1 месте.


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 12-Апр-22 07:51 
>> максимум гарантий,
> Гарантий чего?

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

>> минимальное число возможностей позволить программисту сделать глупость. Это Оберон, в существенно меньшей степени Go, и живой труп Rust.
> Rust по этому критерию на 1 месте.

Нет, на последнем. Сначала напишите компилятор Раста своими руками -- потом мы вернёмся к этому разговору.


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 12-Апр-22 20:12 
Нет, на первом.
Зачем мне писать компилятор раста?
Он уже написан и отлично бьет по рукам не давая писать хрень.

// сколько компиляторов оберона вы написали?


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 13-Апр-22 10:19 
> Нет, на первом.
> Зачем мне писать компилятор раста?
> Он уже написан и отлично бьет по рукам не давая писать хрень.

Затем, что то, что нельзя повторить самому -- неповторяемо.

> // сколько компиляторов оберона вы написали?

Ни одного. Но если потребуется -- будьте спокойны.


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 14-Апр-22 09:43 
> Затем, что то, что нельзя повторить самому -- неповторяемо.

Замечательная логика.
Может мне ещё процессор свой забуилдить?

> Ни одного. Но если потребуется -- будьте спокойны.

Ну понятно.


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 14-Апр-22 13:20 
> Может мне ещё процессор свой забуилдить?

Ты так это написал, как-будто в этом есть что-то плохое.

>> Ни одного. Но если потребуется -- будьте спокойны.
> Ну понятно.

Зачем мне лично писать компилятор, если реализаций в одно лицо и так уже достаточно.
Но если потребуется -- напишу. Оберон не Раст. 70к строк вполне одолеть можно.


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 10-Апр-22 09:40 
Аргументы понятны.
Про Фукусиму не понял, там же землетрясение было причиной.

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 10-Апр-22 11:33 
> Аргументы понятны.
> Про Фукусиму не понял, там же землетрясение было причиной.

Ну конечно землетрясение. Правда, рядом в 8 км есть ещё одна атомная станция. Там всё норм, но вы не понимаете -- это другое. Ну, правда, Фукусиму строили американцы на отъ... побыстрее сдать ,а вторую станцию строили японцы, в полной мере понимая, каким фейерверком может всё это закончиться. Годы примерно одинаковые, технология строительства примерно одинаковая.

А когда цены вверх растут -- оно тоже само. И когда пенсионный возраст повышают -- оно тоже само. И когда спецоперация на Украине -- ну конечно это было неизбежно. Вложить 240 подаренных миллиардов в виде скидок на газ Украине в агитацию дружбы народов? Не, бред какой-то! Конечно спецоперация!

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


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 11-Апр-22 17:08 
>> Аргументы понятны.
>> Про Фукусиму не понял, там же землетрясение было причиной.
> Ну конечно землетрясение. Правда, рядом в 8 км есть ещё одна атомная
> станция. Там всё норм, но вы не понимаете -- это другое.
> Ну, правда, Фукусиму строили американцы на отъ... побыстрее сдать ,а вторую
> станцию строили японцы, в полной мере понимая, каким фейерверком может всё
> это закончиться. Годы примерно одинаковые, технология строительства примерно одинаковая.

То есть конструкция хреновая и виноваты сша. А зачем вы ее помянули в контексте софта?
Я уж думал там софт кривой и его надо было на Оберон написать 😏

> А когда цены вверх растут -- оно тоже само. И когда пенсионный
> возраст повышают -- оно тоже само. И когда спецоперация на Украине
> -- ну конечно это было неизбежно. Вложить 240 подаренных миллиардов в
> виде скидок на газ Украине в агитацию дружбы народов? Не, бред
> какой-то! Конечно спецоперация!

Смешались в кучу люди, кони…
Какое отношение все это имеет к ЯП?

> Землетрясение -- это внешний прогнозируемый фактор. И то, что станция не устояла
> -- это жадность капитала, а не землетресение. Не путайте тёплое с
> мягким.

Точно прогнозируемое и жадность капитала виновата?
А если в результате землетрясения часть суши уйдёт под воду это тоже жадность чья-то будет виновата?


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 12-Апр-22 08:59 
>  То есть конструкция хреновая и виноваты сша. А зачем вы ее
> помянули в контексте софта?
> Я уж думал там софт кривой и его надо было на Оберон
> написать 😏

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

> Смешались в кучу люди, кони…
> Какое отношение все это имеет к ЯП?

Ещё раз внимательно читайте: причиной всему -- капитал. ЯП в мейнстриме в текущий момент -- те, которые поднял капитал, а не те, которые должны быть подняты по справедливости.


> Точно прогнозируемое и жадность капитала виновата?

Точно прогнозируемое и точно жадность капитала виновта. Ещё раз: в 8 км рядом есть по классу такая же атомная станция.

> А если в результате землетрясения часть суши уйдёт под воду это тоже
> жадность чья-то будет виновата?

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


"Выпуск языка программирования Rust 1.60"
Отправлено Someone , 11-Апр-22 04:45 
Zig не взлетит)).

Zig конечно можно изучить для интереса, но смысла в этом думаю нет.

Основная проблема Zig в том что **он не имеет особых преимуществ перед C**.

Да он чуть более безопасен, но именно что чуть. А из-за небольших изменений в гарантиях безопасности при переходе с языка C на язык Zig никто ***не будет переписывать сотни тысяч legacy кода***. Мож все также писать на C.

То есть его судьба уже предрешена -- это стать забытым языком, хотя он этого пока не знает)).

Что касается скорости, то C, C++, Rust и Zig обладают одинаковым потенциалом вплоть до переписывания всего на чистый ассемблер)). Так что и в этом Zig-у крыть нечем.

Все таки основная причина того что Rust взлетел -- это его гарантии безопасности. Реально доставляет удовольствие, что то что скомпилировалось, с 90 процентным успехом будет делать то что должно)).

Да эти гарантии безопасности можно обойти, но зачем? Можно чуть подумать и вдруг окажется что и unsave не нужен.

Да бог с ним с однопоточным кодом. Так то можно наверное и не париться с более сложным синтаксисом Rust. Но вот где ему нет равных -- **это асинхронный и многопоточный код**!

То как Rust не дает сделать ошибку в многопотоке и асинхронке не передать)). Если что не так, то он просто не скомпилируется, в отличии от C, C++, Zig, где компиляция еще не гарантия успеха, а нахождение места где засела ощибка сродни танцам с бубном.

Так что да, сравнивать Zig с Rust просто смешно 😅


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 00:36 
Лично мне не особо rust нравится, но кто мы такие, чтобы выбирать, если глобальные "корпорации добра" даже опенсурс взяли за сами знаете что. Сидите и не рыпайтесь пользуйтесь rust,mono,chromium, github и т.д. Вот и приходится пользоваться тем, что есть. Один человек не способен написать/переписать тонны кода под себя, только если он не миллиардер либо бессмерный с кучей времени. Я люблю лпенсурс, но что с ним творится в последние годы категорически не приветсвую.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 00:47 
> приходится пользоваться

А можно взять - и не пользоваться этим. Кто заставляет, например, делать сайты только под растаманьского фурифокса?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 02:22 
> Я люблю опенсурс, но что с ним творится в последние годы категорически не приветствую

Истину глаголишь.
Стэковерфлоу-программирование забыл упомянуть.
С учётом текущих событий с Firefox, Qt, дистрибутивами, СПО показало свою свободную шизоидную подчинённость. Ибо когда мальчик считает себя девочкой это не свобода мысли, это шизофрения, синоним либерализма.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 03:28 
> когда мальчик считает себя девочкой

Это одна из форм анархизма.


"Выпуск языка программирования Rust 1.60"
Отправлено Бывалый смузихлёб , 08-Апр-22 05:20 
*это лишь косвенное следствие невозможности устроиться в обществе с нынешним полом
Что едва ли похоже на нормальное общество «без сексизма»

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 08-Апр-22 08:06 
>> когда мальчик считает себя девочкой
> Это одна из форм анархизма.

Покажите мне, где такое написано у Кропоткина?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 09:31 
У него что, монополия на анархизм?

"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 08-Апр-22 16:47 
> У него что, монополия на анархизм?

В сущности -- да. В России другие варианты анархизма  в силу национального менталита не приживутся.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:53 
> В сущности -- да. В России другие варианты анархизма  в силу
> национального менталита не приживутся.

Ух, какой запущенный случай...


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 23:12 
> у Кропоткина

Он - единственный анархист в мире?! Ну тогда я тебя удивлю, что и зелёные, и феминистки - это тоже варианты анархизма.


"Выпуск языка программирования Rust 1.60"
Отправлено qwe , 08-Апр-22 05:59 
Кто платит тот и танцует. Мир там же где и был всегда.

"Выпуск языка программирования Rust 1.60"
Отправлено ryoken , 08-Апр-22 07:55 
>>Мир там же где и был всегда.

Чушь. Даже если не учитывать вращение Земли по орбите вокрус Солнца - есть ещё и вращение Галактики (период примерно 220-250 миллионов лет, точнее не помню). Да и во Вселенной нет ничего неподвижного.


"Выпуск языка программирования Rust 1.60"
Отправлено Брат Анон , 08-Апр-22 08:07 
>>>Мир там же где и был всегда.
> Чушь. Даже если не учитывать вращение Земли по орбите вокрус Солнца -
> есть ещё и вращение Галактики (период примерно 220-250 миллионов лет, точнее
> не помню). Да и во Вселенной нет ничего неподвижного.

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


"Выпуск языка программирования Rust 1.60"
Отправлено ryoken , 08-Апр-22 08:09 
> Кто гравитацию обеспечивает, тот звёзды со скоплениями и крутит.

И кто же этим занимается в межгалактическом пространстве?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 08:51 
Ньютон, с поправками от Эйнштейна

"Выпуск языка программирования Rust 1.60"
Отправлено ryoken , 08-Апр-22 12:22 
> Ньютон, с поправками от Эйнштейна

Прям лично? Хотел бы я это увидеть :). Сэр Айзек в межгалактическом пространстве. Холст, масло :).


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 23:09 
Тёмная материя/энергия вертели ОТО в прямом смысле.

"Выпуск языка программирования Rust 1.60"
Отправлено kitoboec , 08-Апр-22 09:53 
А кто же все-таки свет включил?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:42 
Ильич

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 23:06 
Популист. Кабельные заводы уже были, когда он под столом ползал.

"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 11-Апр-22 17:14 
> Популист. Кабельные заводы уже были, когда он под столом ползал.

Были, но не для крестьян и рабочих.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 12-Апр-22 11:26 
в деревнях свет где-то в 50-х только появился, а при Ленине (и чуть далее) с лучиной так и сидели.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 13:49 
>Ибо когда мальчик считает себя девочкой это не свобода мысли, это шизофрения

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


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 16:36 
Какие преимущества?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 23:08 
Занять должность по квоте, а не по навыкам.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 09:30 
> независимой некоммерческой организации Rust Foundation.

Независимая? Некоммерческая?! А что насчет директоров в совете от Microsoft, Google и AWS?!?


"Выпуск языка программирования Rust 1.60"
Отправлено Янис , 08-Апр-22 11:37 
По ходу хотят прибрать под контроль Линукс. Надеюсь, найдется сообщество, которое будет развивать свою версию ядра Линукс, без Раста.

"Выпуск языка программирования Rust 1.60"
Отправлено Анонн , 08-Апр-22 11:45 
Хаха, не смеши мои тапочки.
Нынешнее "сообщество" даже этот линукс развивать не в состоянии. Почитай отчеты Linux Foundation - сколько у них разрабов на зарплате корпов, а сколько "общественников"

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 12:46 
Ну если из ядра повыкидывать многого, нужного корпам. Останется не сильно больше, чем у xBSD, не считая драйверов.

"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 08-Апр-22 14:45 
Если из ядра повыкидывать все что туда накодили корпорации, останется первоначальная студподелка Линуса.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 15:07 
Например, планировщики и сетевой стек выкидывать нет небходимости, они нужны.

"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 08-Апр-22 20:15 
> Например, планировщики и сетевой стек выкидывать нет небходимости, они нужны.

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


"Выпуск языка программирования Rust 1.60"
Отправлено Янис , 08-Апр-22 13:31 
Есть версия ядра Linux-libre, от куда повыкидывали все несвободное.

"Выпуск языка программирования Rust 1.60"
Отправлено Анонн , 08-Апр-22 13:39 
Я не про свободное/закрытое. Если сидит чел на зарплате AMD и пилит GPUOpen-Drivers - то не важно открытые они или нет, важно что на бабло "злой корпорации AMD". И без них этих дров не было бы. Может были бы другие - скорее всего за чужие деньги и явно в другом объеме.
И так с большинством вещей, не только с дровами. Посмотришь кто что пилит - а там практически одни люди на зарплате Intel, AMD, Oracle, RedHat и т.д.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 00:33 
> GPUOpen-Drivers - то не важно открытые они или нет, важно что
> на бабло "злой корпорации AMD".

Это может говорить только человек совершенно не разбирающийся в Linux и процессах вокруг. Так, поржать, АМД забило на свои потуги блобмейкерства, ВЗЯЛИ ОТКРЫТЫЙ РЕВЕРСНУТЫЙ RADEON, форкнули его, переобозвали регистры железа так как их называет HW TEAM наконец, и вот это вот - и есть amdgpu. А кодеры "radeon" были наняты в "amd" делать то что и делали. Только им теперь HW TEAM стал доступен и вот прямо сразу из сорцов железа хидеры с регистрами на автомате генерит.

Без комьюнити радеона - это было бы невозможно. А так вон интеловский Daniel Vetter, стоило ему только захотеть, не только покинул интел в момент - но и тут же получил предложение "работа мечты". Из другой фирмы но он продолжит заниматься тем чем занимался. Т.е. графической подсистемой и драйверами GPU. А то что в его жизни будет чуть меньше интела вообще не баг а фича. Интел для линуксоидов - так себе фирма.


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:55 
> Foundation - сколько у них разрабов на зарплате корпов, а сколько
> "общественников"

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


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 11:48 
> По ходу хотят прибрать под контроль Линукс.

Давно в совет директоров Linux Foundation заглядывал?


"Выпуск языка программирования Rust 1.60"
Отправлено Янис , 08-Апр-22 11:35 
Не хорошо все это выглядит со стороны. Какой там безопасный язык? Какие там драйвера на нем? Шутите что-ли?

"Выпуск языка программирования Rust 1.60"
Отправлено burjui , 08-Апр-22 19:11 
Вот он, типичный хейтер - демагог: комментарий написал, но, по сути, ничего не сказал. Хоть бы писать научился, если так хочется обгадить ЯП, на котором не пишешь.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 14:37 
Чет уже плюсы по сложности переплюнул

"Выпуск языка программирования Rust 1.60"
Отправлено ilowry , 09-Апр-22 09:47 
И это ещё только начало.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 06:06 
Это такая стратегия, чтобы бесконечно задрать порог вхождения.

"Выпуск языка программирования Rust 1.60"
Отправлено InuYasha , 08-Апр-22 15:04 
Пришёл за листингом LibSrutch. Почти собралось )

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 16:13 
Хочу собрать zola. Что он от меня хочет?

   Compiling csv-core v0.1.10
   Compiling num_cpus v1.13.1
   Compiling time v0.1.43
   Compiling getrandom v0.2.4
   Compiling time v0.3.6
   Compiling filetime v0.2.15
   Compiling socket2 v0.4.3
error[E0412]: cannot find type `ip_mreqn` in crate `libc`
    --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/socket2-0.4.3/src/sys/unix.rs:1013:12
     |
1013 |   ) -> libc::ip_mreqn {
     |              ^^^^^^^^ help: a struct with a similar name exists: `ip_mreq`
     |
    ::: /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.113/src/unix/bsd/netbsdlike/openbsd/mod.rs:50:1
     |
50   | / s! {
51   | |     pub struct glob_t {
52   | |         pub gl_pathc:   ::size_t,
53   | |         pub gl_matchc:  ::size_t,
...    |
419  | |     }
420  | | }
     | |_- similarly named struct `ip_mreq` defined here

error[E0422]: cannot find struct, variant or union type `ip_mreqn` in crate `libc`
    --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/socket2-0.4.3/src/sys/unix.rs:1015:75
     |
1015 |           crate::socket::InterfaceIndexOrAddress::Index(interface) => libc::ip_mreqn {
     |                                                                             ^^^^^^^^ help: a struct with a similar name exists: `ip_mreq`
     |
    ::: /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.113/src/unix/bsd/netbsdlike/openbsd/mod.rs:50:1
     |
50   | / s! {
51   | |     pub struct glob_t {
52   | |         pub gl_pathc:   ::size_t,
53   | |         pub gl_matchc:  ::size_t,
...    |
419  | |     }
420  | | }
     | |_- similarly named struct `ip_mreq` defined here

error[E0422]: cannot find struct, variant or union type `ip_mreqn` in crate `libc`
    --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/socket2-0.4.3/src/sys/unix.rs:1020:77
     |
1020 |           crate::socket::InterfaceIndexOrAddress::Address(interface) => libc::ip_mreqn {
     |                                                                               ^^^^^^^^ help: a struct with a similar name exists: `ip_mreq`
     |
    ::: /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.113/src/unix/bsd/netbsdlike/openbsd/mod.rs:50:1
     |
50   | / s! {
51   | |     pub struct glob_t {
52   | |         pub gl_pathc:   ::size_t,
53   | |         pub gl_matchc:  ::size_t,
...    |
419  | |     }
420  | | }
     | |_- similarly named struct `ip_mreq` defined here

Some errors have detailed explanations: E0412, E0422.
For more information about an error, try `rustc --explain E0412`.
error: could not compile `socket2` due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
error: build failed


"Выпуск языка программирования Rust 1.60"
Отправлено Анонн , 08-Апр-22 17:46 
Ты бы хоть версии раста, системы написал.
У них есть инструкция по сборке из сорцов, может стоит заглянуть туда https://www.getzola.org/documentation/getting-started/instal...

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 20:38 
rust 1.59, openbsd snapshots amd64, по этой инструкции и собирал. собирается, собирается, доходит до sockets и не собирается. кстати, мне встроенный сервер и не нужен, как его сборку отключить?

"Выпуск языка программирования Rust 1.60"
Отправлено Анонн , 09-Апр-22 23:40 
По openbsd не подскажу, сори.
А почему именно из исходников? Там что-то исправлялось?
Просто есть же OpenBSD офф пакет:
$ doas pkg_add zola
(https://www.getzola.org/documentation/getting-started/instal...)

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 06:05 
> есть же OpenBSD офф пакет

А вот тут вопрос: как его собирали, и его ли собирали, если он не собирается?


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 12:18 
>> есть же OpenBSD офф пакет
> А вот тут вопрос: как его собирали, и его ли собирали, если он не собирается?

Не, тут вопрос: зачем ты решил метанизировать лужу, абсолютно не разбираясь в теме?
https://openports.se/www/zola


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 11-Апр-22 01:42 
> По openbsd не подскажу, сори.
> А почему именно из исходников? Там что-то исправлялось?
> Просто есть же OpenBSD офф пакет:
> $ doas pkg_add zola
> (https://www.getzola.org/documentation/getting-started/instal...)

оф пакет версия 0.10, а сейчас уже 0.15

тема с офсайта у меня не подключилась


"Выпуск языка программирования Rust 1.60"
Отправлено Минона , 08-Апр-22 22:30 
« Согласно данным «Лаборатории Касперского», новая группировка уже атаковала значительное число компаний по всему миру. В своей работе BlackCat используют малораспространенный язык программирования Rust, что серьезно замедляет разработку «противоядий» от заражений. »
https://m.lenta.ru/news/2022/04/08/meow/

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 11-Апр-22 12:06 
Для того, чтобы эту группировку поймать, достаточно вместо слива яндекс.еды использовать слив продаж дилдо.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 08-Апр-22 22:33 
curl|sh - это безопасно.

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 08:22 
да это просто шедевр от растамагов!

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 10:32 
Предлагаешь сверять pgp-подпись?

"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 17:57 
> Предлагаешь сверять pgp-подпись?

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


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 00:39 
> Предлагаешь сверять pgp-подпись?

Да ты просто кэп!


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 10-Апр-22 00:54 
>> Предлагаешь сверять pgp-подпись?
> Да ты просто кэп!

Ты решил повторно пyкнуть в лужу?


Each of these binaries is signed with the Rust signing key, which is available on keybase.io, by the Rust build infrastructure, with GPG. In the tables below, the .asc files are the signatures.

platform    stable (1.60.0)    beta    nightly
aarch64-apple-darwin    pkg
pkg.asc    pkg
pkg.asc    pkg
pkg.asc
aarch64-pc-windows-msvc    msi
msi.asc    msi
msi.asc    msi
msi.asc
aarch64-unknown-linux-gnu    tar.gz
tar.gz.asc    tar.gz
tar.gz.asc    tar.gz
tar.gz.asc


"Выпуск языка программирования Rust 1.60"
Отправлено Аноним , 09-Апр-22 23:44 
https://forge.rust-lang.org/infra/other-installation-methods...
Там есть отдельный шел скрипт и отдельные уже собранные архивы с подписями pgp

Но местные анонимные эксперты даже не в состоянии нажать кнопку Other installation methods