The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.73. Аудит RustVMM. Переписывание  Binder на Rust, opennews (?), 17-Ноя-23, (0) [смотреть все]

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


50. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Анонин (?), 17-Ноя-23, 15:58 
Э... ну как бы это уже есть
cargo rustc --release -- --emit asm
и смотри на ассемблерный код
Ответить | Правка | Наверх | Cообщить модератору

78. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +1 +/
Сообщение от Пряник (?), 17-Ноя-23, 16:42 
rustc --emit asm test1.rs

Ужас, сколько кода нужно для обычного Hello World!

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

85. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +1 +/
Сообщение от Аноним (49), 17-Ноя-23, 16:49 
Надеюсь ты не в дебаге смотришь?
А то есть тут особо одуренные...

500 байт хелло ворд весит

$ cat hello.rs
#![no_std]
#![no_main]
use core::panic::PanicInfo;
use syscall::syscall;

#[panic_handler]
fn panic(_info: &PanicInfo) -> ! { loop {} }

#[no_mangle]
pub extern fn _start() -> ! {
    let message = "Hello World\n".as_bytes();
    unsafe {
        syscall!(WRITE, 0, message.as_ptr(), message.len());
        syscall!(EXIT,0);
    }
    loop {}
}

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

111. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +6 +/
Сообщение от Аноним (111), 17-Ноя-23, 18:13 
Капец сколько бойлерплейта
Ответить | Правка | Наверх | Cообщить модератору

117. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  –3 +/
Сообщение от Аноним (49), 17-Ноя-23, 18:48 
Неужели тебе строчек кода жалко)?
Все равно лучше чем в дыряшке код вида
  *((char*)0)=null
или
  printf("%d", *((char*)ptr+4));
Ответить | Правка | Наверх | Cообщить модератору

159. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +4 +/
Сообщение от _kp (ok), 17-Ноя-23, 23:23 
Оба примера- го́вноко́д, за который на работе получили бы по затылку.
Ответить | Правка | Наверх | Cообщить модератору

161. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Аноним (161), 17-Ноя-23, 23:29 
это оптимизации)
Ответить | Правка | К родителю #111 | Наверх | Cообщить модератору

126. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Аноним (122), 17-Ноя-23, 19:06 
А ты можешь не дёргать сисколы, а честно вызывать функции и чтоб так же 500 байт было?

Так-то и я на Си могу сисколами в 500 байт уложиться, а на асме и того меньше.

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

287. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Аноним (153), 20-Ноя-23, 01:31 
> а на асме и того меньше.

Ну да, ну да

Disassembly of section .text:

00000000004000b0 <.text>:
  4000b0:    b8 04 00 00 00           mov    $0x4,%eax
  4000b5:    be d2 00 40 00           mov    $0x4000d2,%esi
  4000ba:    ba 0c 00 00 00           mov    $0xc,%edx
  4000bf:    31 ff                    xor    %edi,%edi
  4000c1:    0f 05                    syscall
  4000c3:    b8 01 00 00 00           mov    $0x1,%eax
  4000c8:    31 ff                    xor    %edi,%edi
  4000ca:    0f 05                    syscall
  4000cc:    0f 1f 40 00              nopl   0x0(%rax)
  4000d0:    eb fe                    jmp    0x4000d0

Contents of section .rodata:
4000d2 48656c6c 6f20576f 726c640a           Hello World.  


Это - весь код, остальную кучу байтиков в принципе можно и убрать, хорошенько поигравшись с опциями линковки ...
Ответить | Правка | Наверх | Cообщить модератору

295. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от fidoman (ok), 24-Ноя-23, 00:56 
Это не hello world, это hello i'm heater
hello world должен штатно завершаться, а не требовать срубить его киллом или через таск менеджер.
Ответить | Правка | Наверх | Cообщить модератору

296. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от ХрюХрю (?), 24-Ноя-23, 14:26 
#include <stdio.h>
struct {
    int (*printf)(const char* format, ...);
} fmt = {printf};
int main(void) {
    fmt.printf("hello");
}
Ответить | Правка | Наверх | Cообщить модератору

131. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +2 +/
Сообщение от Аноним (122), 17-Ноя-23, 19:13 
Hello world с unsafe, серьёзно?
Ответить | Правка | К родителю #85 | Наверх | Cообщить модератору

270. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +1 +/
Сообщение от Прохожий (??), 18-Ноя-23, 23:55 
А как ещё дёргать системные вызовы? Это не то, за что компилятор может отвечать.

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

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

133. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Аноним (6), 17-Ноя-23, 19:24 
С таким убогим синтаксисом он всегда будет местечковым язычком. Что печально, со своей концепцией он мог занять ниши от системного, до серверного программирования. Но сейчас проще брать жс, писать на нем фронт, бэк, электрон, и реакт натив. Потому что бойлерплейта как в питоне, а не как в расте.
Ответить | Правка | К родителю #85 | Наверх | Cообщить модератору

138. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Аноним (122), 17-Ноя-23, 19:36 
Можно вопрос? Зачем loop {} в конце?
Ответить | Правка | К родителю #85 | Наверх | Cообщить модератору

160. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +2 +/
Сообщение от _kp (ok), 17-Ноя-23, 23:27 
Что бы безопасно зависнуть при ошибке хелловорда.
Ответить | Правка | Наверх | Cообщить модератору

184. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +3 +/
Сообщение от Аноним (122), 18-Ноя-23, 02:43 
Там у него unsafe в хеллоуин уорлде, безопасностью тут даже не пахнет
Ответить | Правка | Наверх | Cообщить модератору

237. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от freecoder (ok), 18-Ноя-23, 14:47 
Unsafe говорит не об отсутствии безопасности, а о том, что обеспечение безопасности берёт на себя программист, а не компилятор.
Ответить | Правка | Наверх | Cообщить модератору

242. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Аноним (122), 18-Ноя-23, 16:03 
Да я понял. Это безопасность кого надо безопасность. Не то что в Си.
Ответить | Правка | Наверх | Cообщить модератору

279. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от _kp (ok), 19-Ноя-23, 20:37 
> Unsafe говорит не об отсутствии безопасности, а о том, что обеспечение безопасности
> берёт на себя программист, а не компилятор.

В двух местах по тупому завесить процесс при ошибке.
Не велика ответственность.

Кстати, если при вызове фукнции write и произойдет ошибка, то или и так получим сообщение об ошибке в консоли.
Если же ошибка будет на стороне драйвера не вернет управление, то от обмазывания unsafe пользы не больше чем от бубна.

Но помощь системе зависнуть при ошибке, прямо в хелооворде, вместо возврата кода ошибки, ставит под сомнение квалификацию автора.

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

286. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Аноним (153), 20-Ноя-23, 01:19 
>> Unsafe говорит не об отсутствии безопасности, а о том, что обеспечение безопасности
>> берёт на себя программист, а не компилятор.
> В двух местах по тупому завесить процесс при ошибке.
> Не велика ответственность.

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

> Кстати, если при вызове фукнции write и произойдет ошибка, то или и
> так получим сообщение об ошибке в консоли.

Чегось?

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

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

> Но помощь системе зависнуть при ошибке, прямо в хелооворде, вместо возврата кода
> ошибки, ставит под сомнение квалификацию автора.

Пока что лишь Воены своми "смелыми" выскзываниями ставят свою квалификацию под сомнение.


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

165. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +1 +/
Сообщение от warlock66613 (ok), 18-Ноя-23, 00:22 
> Можно вопрос? Зачем loop {} в конце?

Это на случай если exit не сработает как должен.

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

178. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Аноним (178), 18-Ноя-23, 01:47 
Хм... а на Википедии хелловорлд на расте по-другому выглядит. Можете заменить нынешний пример вашим здесь: https://en.m.wikipedia.org/wiki/Rust_(programming_language)#Hello_World_program ?
Ответить | Правка | К родителю #85 | Наверх | Cообщить модератору

228. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +2 +/
Сообщение от Аноним (51), 18-Ноя-23, 10:21 
Там врут опять, вот каноничный привет мир на расте

https://github.com/mTvare6/hello-world.rs

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

280. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от _kp (ok), 19-Ноя-23, 20:47 
> Там врут опять, вот каноничный привет мир на расте

"Канноничность",точнее параноидальность, зашкаливает.

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


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

88. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  +/
Сообщение от Анонин (?), 17-Ноя-23, 16:51 
Ты опцию --release специально пропусти?
А так... да, кода побольше чем в тупом как валенок си. А тут и ошибки нормальны выдавать будет.
Ответить | Правка | К родителю #78 | Наверх | Cообщить модератору

213. "Выпуск языка программирования Rust 1.74. Аудит RustVMM. Пере..."  –1 +/
Сообщение от Аноним (198), 18-Ноя-23, 05:22 
>Ужас, сколько кода нужно для обычного Hello World!

Первое знакомство с Растом и сразу такое столкновение с реальностью.
А знатоки --release пусть добавят аналогичную оптимизацию и в хеллоуворлд на Си.

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

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

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




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

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