The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Rust 1.54, opennews (??), 29-Июл-21, (0) [смотреть все]

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


4. "Выпуск языка программирования Rust 1.54"  +7 +/
Сообщение от FortyTwo (ok), 29-Июл-21, 22:20 
> В разряд стабильных переведена новая порция API

Счачстье то какое!

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

11. "Выпуск языка программирования Rust 1.54"  +14 +/
Сообщение от НяшМяш (ok), 29-Июл-21, 22:36 
Где бы взять запасную печень, что не релиз, так праздник.
Ответить | Правка | Наверх | Cообщить модератору

293. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от trdm (ok), 30-Июл-21, 09:45 
Сколько весит хелло ворд на русте с зависимостями?
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

296. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (296), 30-Июл-21, 09:57 
Не помню точно, но вроде около метра.
Ответить | Правка | Наверх | Cообщить модератору

302. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним зеленый (?), 30-Июл-21, 10:21 
Какие у хелловорлда зависимости? 250кб без отладочных символов.
Ответить | Правка | К родителю #293 | Наверх | Cообщить модератору

372. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Хан (?), 30-Июл-21, 17:10 
Как минимум либа для работы с пайпами, тот же printf это замаскированный IPC
Ответить | Правка | Наверх | Cообщить модератору

313. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (313), 30-Июл-21, 11:37 
$ rustc -C opt-level=z -C lto -C codegen-units=1 -C panic=abort -Z strip=symbols hello.rs
$ du -h hello
224K    hello
Ответить | Правка | К родителю #293 | Наверх | Cообщить модератору

319. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 12:31 
> $ rustc -C opt-level=z -C lto -C codegen-units=1 -C panic=abort -Z strip=symbols
> hello.rs
> $ du -h hello
> 224K hello

-C prefer-dynamic
6,5K


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

322. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (-), 30-Июл-21, 12:44 
> Сколько весит хелло ворд на русте с зависимостями?

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 {}
}


$ ./hello
Hello World

$ ll hello
-rwxr-x---   496B 30 Jul. 12:41 hello*
$  readelf -d hello  
There is no dynamic section in this file.
$ objdump -d  hello


Disassembly of section .text:

00000000004000b0 <.text>:
  4000b0:    55                       push   %rbp
  4000b1:    48 89 e5                 mov    %rsp,%rbp
  4000b4:    6a 04                    pushq  $0x4
  4000b6:    58                       pop    %rax
  4000b7:    6a 09                    pushq  $0x9
  4000b9:    5a                       pop    %rdx
  4000ba:    be cc 00 40 00           mov    $0x4000cc,%esi
  4000bf:    31 ff                    xor    %edi,%edi
  4000c1:    0f 05                    syscall
  4000c3:    6a 01                    pushq  $0x1
  4000c5:    58                       pop    %rax
  4000c6:    31 ff                    xor    %edi,%edi
  4000c8:    0f 05                    syscall
  4000ca:    eb fe                    jmp    0x4000ca

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

331. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от n00by (ok), 30-Июл-21, 13:41 
Интересный листинг.

00000000004000b0 <.text>:
  4000b0:    55                       push   %rbp
  4000b1:    48 89 e5                 mov    %rsp,%rbp
  4000b4:    6a 04                    pushq  $0x4           ; #define __NR_stat 4
  4000b6:    58                       pop    %rax
  4000b7:    6a 09                    pushq  $0x9           ; строка Hello World занимает 11 байт.
  4000b9:    5a                       pop    %rdx
  4000ba:    be cc 00 40 00           mov    $0x4000cc,%esi
  4000bf:    31 ff                    xor    %edi,%edi
  4000c1:    0f 05                    syscall
  4000c3:    6a 01                    pushq  $0x1           ; #define __NR_write 1
  4000c5:    58                       pop    %rax
  4000c6:    31 ff                    xor    %edi,%edi
  4000c8:    0f 05                    syscall
  4000ca:    eb fe                    jmp    0x4000ca

#define __NR_exit 60

Вот как выглядит корректный и с претензией минимальность


; fasm demonstration of writing 64-bit ELF executable
; (thanks to Franti.ek G.bri.)

; syscall numbers: /usr/src/linux/include/asm-x86_64/unistd.h
; parameters order:
; r9    ; 6th param
; r8    ; 5th param
; r10   ; 4th param
; rdx   ; 3rd param
; rsi   ; 2nd param
; rdi   ; 1st param
; eax   ; syscall_number
; syscall

format ELF64 executable 3

segment readable executable

entry $

           mov     edx,msg_size    ; CPU zero extends 32-bit operation to 64-bit
                                   ; we can use less bytes than in case mov rdx,...
           lea     rsi,[msg]
           mov     edi,1           ; STDOUT
           mov     eax,1           ; sys_write
           syscall

           xor     edi,edi         ; exit code 0
           mov     eax,60          ; sys_exit
           syscall

segment readable writeable

msg db 'Hello 64-bit world!',0xA
msg_size = $-msg


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

333. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Владимирemail (??), 30-Июл-21, 14:12 
push 1 / pop edi занимает меньше байт, чем mov edi, 1. mov eax, 1 то же самое. Да и mov eax, 60.
Ответить | Правка | Наверх | Cообщить модератору

336. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 14:34 
Речь не об опкодах, а о номерах системных вызовов. См. комментарии в первом листинге.
Ответить | Правка | Наверх | Cообщить модератору

346. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 15:04 
> Интересный листинг.
>
 
>     pushq  $0x4    
>       ; #define __NR_stat 4
>     pushq  $0x1    
>       ; #define __NR_write 1

> #define __NR_exit 60
> Вот как выглядит корректный и с претензией минимальность

Вы там поаккуратнее с ярлыками и суждениями о "корректности":


head -14 /usr/src/sys/sys/syscall.h
/*
* System call numbers.
*
* DO NOT EDIT-- this file is automatically @generated.
* $FreeBSD$
*/

#define    SYS_syscall    0
#define    SYS_exit    1
#define    SYS_fork    2
#define    SYS_read    3
#define    SYS_write    4
#define    SYS_open    5
#define    SYS_close    6

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

355. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 16:07 
>[оверквотинг удален]
>  * $FreeBSD$
>  */
> #define SYS_syscall 0
> #define SYS_exit 1
> #define SYS_fork 2
> #define SYS_read 3
> #define SYS_write 4
> #define SYS_open 5
> #define SYS_close 6
>

Да, это получился зачётный конфуз.

Тем не менее вопрос по размеру строки в силе. "Hello World\n" 12 байт без терминатора, а в листинге 9. В оригинале было "Hello BSD"?

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

358. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 16:16 
> Тем не менее вопрос по размеру строки в силе. "Hello World\n" 12
> байт без терминатора, а в листинге 9. В оригинале было "Hello BSD"?

Подловил. Просто "sometext\n"

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

409. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 18:59 
Это ещё кто кого подловил. Если бы не эта разница в длине, я бы не обратил внимания, или может даже догадался про другую систему подумать. А так нашёл лишнее подтверждение, что код какой-то "не тот". :)
Ответить | Правка | Наверх | Cообщить модератору

432. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним зеленый (?), 30-Июл-21, 19:56 
Нужно понимать, что минимальный не значит быстрый. Он может быть сильно медленней при исполнении.
Ответить | Правка | К родителю #346 | Наверх | Cообщить модератору

345. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (345), 30-Июл-21, 15:01 
Можно ссылку на собираемый проектик?
Ответить | Правка | К родителю #322 | Наверх | Cообщить модератору

424. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Аноним (-), 30-Июл-21, 19:44 
10 лет назад хелло_ворд весил 5 мегабайт. 7 лет назад хелло_ворд весил 3 мегабайта. 4 года назад хелло_ворд весил 1 мегабайт. Сейчас хелло ворд весит около 100 Килобайт.

Растаманы стыдятся отвечать на этот вопрос. Больше не задавай такие вопросы.

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

448. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 21:53 
> 10 лет назад хелло_ворд весил 5 мегабайт. 7 лет назад хелло_ворд весил
> 3 мегабайта. 4 года назад хелло_ворд весил 1 мегабайт.

У вас, криворуких - возможно все. И 100 мб.
> Сейчас хелло ворд весит около 100 Килобайт.

Врешь и не краснеешь.


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

494. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 31-Июл-21, 06:14 
>Врешь и не краснеешь.

Извини, сейчас helloworld на Расте весит 200-ти с чем-то килобайт.

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

506. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 31-Июл-21, 08:51 
>>Врешь и не краснеешь.
> Извини, сейчас helloworld на Расте весит 200-ти с чем-то килобайт.

Байт, без кило. 500 байтный пример https://www.opennet.ru/openforum/vsluhforumID3/124921.html#322 для FreeBSD можно ещё сократить, если рихтануть ELF, но это уже не относится к языку.
В других системах будет примерно так же, только некоторые параметры (номера сисколов) поменяются. Сравните с вариантом на ассемблере в моём ответе.

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

517. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 31-Июл-21, 13:17 
>>Врешь и не краснеешь.
> Извини, сейчас helloworld на Расте весит 200-ти с чем-то килобайт.

Как мило, очередной болту^W Экспердус опеннета.


cat hello.rs &&  rustc -O -C prefer-dynamic hello.rs && strip hello &&  wc -c ./hello                                                                          
fn main() {
  println!("Hello World!");
}
    6608 ./hello

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

572. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 01-Авг-21, 11:27 
> prefer-dynamic
> 6608 ./hello

Хитрозадый очень, да?
Статику давай, или считай все те либы, которые тащит за собой этот ваш раст.

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

573. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от anonymous (??), 01-Авг-21, 12:30 
151 байт, статика: https://github.com/kmcallister/tiny-rust-demo
Ответить | Правка | Наверх | Cообщить модератору

575. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 01-Авг-21, 12:55 
>> prefer-dynamic
>> 6608 ./hello
> Хитрозадый очень, да?

Если очередной опеннетный "антирастовец" не владеет предметом, то кто ему ССЗБ?

> Статику давай,

Тебе воон выше дали - с ходу 500 байт, без каких-то извращений с линковщиком.

> или считай все те либы, которые тащит за собой этот ваш раст.

Эталон давай, на труЪ языке, плюс как правильно собирать и что, как и где считать. А то знаю я вас - "тут считаем, тут ... не считаем! Не считаем, я скозал!"


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

625. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 13:04 
> Если очередной опеннетный "антирастовец" не владеет предметом, то кто ему ССЗБ?

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

> Тебе воон выше дали - с ходу 500 байт, без каких-то извращений с линковщиком

Это не "Hello, World" на расте, это не кроссплатформенная хрень на сисколах.

"Hello, World" на расте выглядит вот так и никак иначе:
----
fn main() {
    println!("Hello, world!");
}
----

> плюс как правильно собирать и что, как и где считать.

В Си статическая сборка делается просто ключом "-static" у gcc.
В расте, начиная с версии 1.48+ должно быть с ключом: '-C target-feature=+crt-static'. Но не факт, что это будет работать.
Проверять статичность линковки нужно выхлопом ldd - он должен быть пустым.


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

627. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 02-Авг-21, 13:25 
>> Тебе воон выше дали - с ходу 500 байт, без каких-то извращений с линковщиком
> Это не "Hello, World" на расте, это не кроссплатформенная хрень на сисколах.

Опечатка то по Фрейду. Действительно, не какая-то хрень, кросплатформенная, а, внезапно, пример системного программирования. Но тут же некоторым главное передёрнуть. Если слинковаться с libc, тогда бы он написал: "глядите, у Rust есть рантайм!"

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

631. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 14:53 
> внезапно, пример системного программирования.

Мы в этой подветке обсуждали размер бинаря "стандартного" helloworld-а со всеми его зависимостями, а не системное программирование на расте.
helloworld - это ни разу не системное программирование.

> Но тут же некоторым главное передёрнуть.

Вот подсовывание хрени на сисколах вместо "стандартного" helloworld-а и было передёргиванием.
Во-первых, вместо "стандартного" хотели подсунуть совсем другое, а, во-вторых, пытались увести дискуссию с неприятной для вас темы в сторону.

> Если слинковаться с libc, тогда бы он написал: "глядите, у Rust есть рантайм!"

Кто "он"? Разверни мысль.

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

634. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 02-Авг-21, 15:27 
>> внезапно, пример системного программирования.
> Мы в этой подветке обсуждали размер бинаря "стандартного" helloworld-а со всеми его
> зависимостями, а не системное программирование на расте.

Нет никакого стандарта на helloworld-ы. Вы это прекрасно понимаете, потому и закавычили. Исходный вопрос "Сколько весит хелло ворд на русте с зависимостями?"
https://www.opennet.ru/openforum/vsluhforumID3/124921.html#293
Пример показывает, что из зависимостей достаточно ядра. Наблюдаемый результат соответствует. Задача решена.

> helloworld - это ни разу не системное программирование.

helloworld и системное программирование ортогональны и не исключают друг друга.

>> Но тут же некоторым главное передёрнуть.
> Вот подсовывание хрени на сисколах вместо "стандартного" helloworld-а и было передёргиванием.

Это хороший, годный минимальный пример. Он показывает, что сам язык в какой-то мере самодостаточен и пригоден для написания системного ПО (я не говорю, что он является заменой императивному Си -- как выяснилось, Rust исходно функциональный язык).

С другой стороны вот здесь https://www.opennet.ru/openforum/vsluhforumID3/124921.html#588
пишут, что к программе на Rust проблематично прилинковать статично его стандартную библиотеку. Вот это уже звоночек. Похоже, вокруг языка крутятся посторонние люди, которые плохо понимают требования.

> Во-первых, вместо "стандартного" хотели подсунуть совсем другое, а, во-вторых, пытались
> увести дискуссию с неприятной для вас темы в сторону.

Вопрос надо формулировать соответствующим образом, или не додумывать условия за автора. Может это он и опубликовал решение с сисколами. =)

>> Если слинковаться с libc, тогда бы он написал: "глядите, у Rust есть рантайм!"
> Кто "он"? Разверни мысль.

Да хоть кто. Тема рантайма идёт рефреном под каждой новостью.

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

635. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 16:08 
> из зависимостей достаточно ядра

Тю, спалил.
Кстати, как тут некоторые умники собрались линковать статику под венду - вопрос.
Раньше там вообще бинарник без импортов не считался валидным.

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

Помимо того, что требовать беспроблемную _статическую_ линковку с любой, даже "хитровывернутой", либой на _другом_ как-то странно, glibC - ни разу не "стандартная библиотека" раста.
Но тоже очень удобная для местных:
https://man7.org/linux/man-pages/man2/syscalls.2.html
> System calls are generally not invoked directly, but rather via
> wrapper functions in glibc (or perhaps some other library).

Сделали свой дубль - "тащин ненужный рантайм", используют системную либу "Фе, зависят от сишного рантайма!". Было уже с аллокатором, тащили jemalloc - "блоатварь тащит свой велосипед!", перешли по умолчанию на системный - "фу, не осилили свой аллокатор, используют сишрный, зачем раст вообще нужен!".
Кстати, растовская стат. либа вполне себе нормально линкуется с сишными.


#[no_mangle]
pub extern "C" fn main() {
    println!("Hell world");
}
gcc -static rstest/target/release/libstatictest.a -lpthread

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

637. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 16:47 

> либой на _другом_ как-то странно

на _другом_ ЯП
//fix

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

643. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 20:44 
> как тут некоторые умники собрались линковать статику под венду - вопрос.

Ты всё перепутал. Я тебе предлагал просто собрать сискольно-растовый helloworld под винду, не обязательно в статике, но без модификаций исходника. И показать нам что у тебя получилось.

Я и под Бздю предлагал его тебе собрать, ибо чел выше написал, что он переделывал сискольно-растовый исходник под Линь. А я, не вдаваясь в подробности его модификаций, посчитал, что без них у него что-то не собиралось или не работало.
Но ты тут же прибежал и начал кричать что я дико обглюкался, показывая мне строчку "$FreeBSD$".

Мда уж... молодец.

> glibC - ни разу не "стандартная библиотека" раста.

Ага. Это системная библиотека на подавляющем большинстве GNU/Linux-ов.
Через неё ваш Раст и работает, если верить выхлопу ldd. И нет никаких оснований этому выхлопу не верить.

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

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

646. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 21:49 
>> как тут некоторые умники собрались линковать статику под венду - вопрос.
> Ты всё перепутал. Я тебе предлагал просто собрать сискольно-растовый helloworld под винду,
> не обязательно в статике, но без модификаций исходника. И показать нам
> что у тебя получилось.

Хорошая отмазка но нет. У тебя претензии были 1) "не кроссплатформенно" 2) "собери статику".
Получается как обычно: "там считаем, там ... ты все перепутал!"

> Я и под Бздю предлагал его тебе собрать, ибо чел выше написал,
> что он переделывал сискольно-растовый исходник под Линь. А я, не вдаваясь
> в подробности его модификаций, посчитал, что без них у него что-то
> не собиралось или не работало.
> Но ты тут же прибежал и начал кричать что я дико обглюкался,
> показывая мне строчку "$FreeBSD$".

Конечно же обглюкался - потому что оригинал дампа и был собран под "бздю"


wc -c nostd && file nostd      
     496 nostd
nostd: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), statically linked, stripped

(к чему и были "претензии" - мол, чей это у вас номера сисколов странные, не порядок!).
Но ты читал афедроном - понял что-то совершенно свое и выдвинул соотв. претензии, причем в соотв. тоне.


>> glibC - ни разу не "стандартная библиотека" раста.
> Ага. Это системная библиотека на подавляющем большинстве GNU/Linux-ов.
> Через неё ваш Раст и работает, если верить выхлопу ldd. И нет никаких оснований этому выхлопу не верить.

Ну т.е. ты не знаешь разницы между системной и стандартной библиотекой.
Или же, я правильно понимаю, что (условная) "kernel32.dll" или "winnt" - стандартная библиотека сишки, плюсов (и еще кучи языков), потому что на венде "через нее ваш X и работает", если цитировать тебя же?
Или кто-то запутался в своей демагогии?

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

648. Скрыто модератором  +/
Сообщение от Растофиля (?), 03-Авг-21, 02:12 
Ответить | Правка | К родителю #646 | Наверх | Cообщить модератору

653. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 03-Авг-21, 14:12 
Сисколы в Виндосе, насколько помню, меняются в пределах версии ОС. Никто в здравом уме их там не использует. Если кто-то предлагает обойтись без ntdll.dll (а в случае вывода на консоль наверняка потребуется и WriteConsoleW из kernel32.dll) -- он либо не владеет предметом, либо намеренно пытается свести дискуссию к священной войне.
Ответить | Правка | К родителю #635 | Наверх | Cообщить модератору

638. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 17:39 
> Нет никакого стандарта на helloworld-ы

Вообще-то растовский "стандартный" helloworld есть прямо в главной книжке по расту:
https://doc.rust-lang.org/book/ch01-02-hello-world.html

> Пример показывает, что из зависимостей достаточно ядра.

Практически любую прикладную программу можно написать на один только сисколах. Но так никто не делает. И этому есть много разных причин.

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

> helloworld и системное программирование ортогональны и не исключают друг друга

Это не совсем так. За helloworld-ом уже давно закрепился особый смысл.
Вот, например, его описание на Wiki: https://ru.wikipedia.org/wiki/Hello,_world!

> Это хороший, годный минимальный пример.

Возможно. Но к размеру бинаря классического helloworld-а имеет весьма далёкое отношение.

> Вопрос надо формулировать соответствующим образом, или не додумывать условия за автора.

Нормально там был сформулирован вопрос: "Сколько весит хелло ворд на русте с зависимостями?".

Но вместо прямого ответа последовали всякие плутовства. Тут тебе и сисколы, тут тебе и prefer-dynamic.  Всё это бросается в глаза.

Вы, ребята, этими своими хитростями создаёте своему любимому Расту плохую репутацию. Этот язык прямо на глазах становится "токсичным".
Я это и по буржуским форумам вижу, кстати. К RUST-евангелистам ведь не только на опеннете многие негативно относятся. Это уже общемировая тенденция, можно сказать.
Многих вы уже утомили своим Растом, да.


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

652. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 03-Авг-21, 14:07 
>> Нет никакого стандарта на helloworld-ы
> Вообще-то растовский "стандартный" helloworld есть прямо в главной книжке по расту:
> https://doc.rust-lang.org/book/ch01-02-hello-world.html

По ссылке насчитал 4 вхождения слова "standard":

"12.6. Writing Error Messages to Standard Error Instead of Standard Output

"If you want to stick to a standard style across Rust projects

"with the standard Rust distribution"

потому дальнейшую часть сообщения читать не буду, вряд ли она имеет смысл.

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

633. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 15:05 
> Опечатка то по Фрейду. Действительно, не какая-то хрень, кросплатформенная, а, внезапно, пример системного программирования.

Ты и в этом случае, кстати, выдернул одну фразу из контекста. Такое "хитроумное" выборочное цитирование.

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

636. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 16:45 
>> Если очередной опеннетный "антирастовец" не владеет предметом, то кто ему ССЗБ?
> Ты не умеешь в статическую сборку, а не владею предметом оказывается я.

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

>> плюс как правильно собирать и что, как и где считать.
> В Си статическая сборка делается просто ключом "-static" у gcc.

В последний раз:
давай полный пример, чтобы не было потом "Ты не так понял и вообще я не я и мопедолошадь - не моя!"

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

639. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 18:18 
>> В Си статическая сборка делается просто ключом "-static" у gcc.
> ... для тебя стат. сборка "ух какой крутой скилл"

Да, знание ключа "-static" я считаю крутым скиллом. (facepalm.jpg) [нет, конечно]

> предыдущим (к сожалению, удаленным) перлам - не владеешь.

Ты свои перлы до сих пор продолжаешь извергать:

> как-то странно, glibC - ни разу не "стандартная библиотека" раста.

Собери свой растовский helloworld и посмотри наконец выхлоп ldd, что ли. Может поймёшь как оно у тебя работает. Я тебе писал это ночью, но всё потёрли.

> давай полный пример

Я не должен давать тебе никакой примеров.
Это ведь ты доказываешь крутизну Раста, а не я доказываю крутизну Си.
Есть такое общепринятое правило: "Бремя доказательства лежит на утверждающем".
Ты утверждаешь - ты и доказывай.

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

645. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 21:27 
>> как-то странно, glibC - ни разу не "стандартная библиотека" раста.
> Собери свой растовский helloworld и посмотри наконец выхлоп ldd, что ли. Может поймёшь как оно у тебя работает. Я тебе писал это ночью, но всё потёрли.

Я то в курсе (и у меня оно ни разу не зависит от glibc),


rustc -O hello.rs && ldd hello
hello:
    libthr.so.3 => /lib/libthr.so.3 (0x8010af000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x8010dc000)
    libc.so.7 => /lib/libc.so.7 (0x8010f3000)

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

>> давай полный пример
> Я не должен давать тебе никакой примеров.
> Это ведь ты доказываешь крутизну Раста, а не я доказываю крутизну Си.

Ссылку на "ты доказываешь крутизну Раста" или балабол?


> Есть такое общепринятое правило: "Бремя доказательства лежит на утверждающем".
> Ты утверждаешь - ты и доказывай.

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


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

647. Скрыто модератором  +/
Сообщение от Растофиля (?), 02-Авг-21, 23:21 
Ответить | Правка | Наверх | Cообщить модератору

651. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Котофалк (?), 03-Авг-21, 13:34 
извините, что прерываю, но откуда вообще появилось требование статической линковки? тем паче для helloworld?
Ответить | Правка | К родителю #625 | Наверх | Cообщить модератору

542. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (542), 31-Июл-21, 19:46 
Всего лишь 200+ килобайт. А какой вес у ноды? А какой у джавы? У дотнета? У питона?

А у C++? Тоже со стандартной либой?

#include <iostream>

int main() {
    std::cout << "hello world" << std::endl;
    return 0;
}

$ g++ hello.cpp -O2 -static-libstdc++

$ du -sh ./a.out
1.3M    ./a.out

$ strip a.out
$ du -sh ./a.out
948K    ./a.out

(и 880K если Clang)

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

588. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (588), 01-Авг-21, 22:20 
В Расте так вообще не получится.
Нужно специально устанавливать MUSL libc и выбирать соответствующий target, чтобы получить на 100% статический бинарник.
Ответить | Правка | Наверх | Cообщить модератору

590. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 01-Авг-21, 23:26 
> $ g++ hello.cpp -O2 -static-libstdc++

У мну без доп. -static ldd ругается на зависимости.
А полностью стат., "пострипаный" плюсовой бинарь выходит в 1.4МБ (1.1 для шланга).

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

552. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (552), 01-Авг-21, 00:27 
В любом случае меньше любого интерпретируемого языка,
а с учетом засилья PHP, Python, Ruby для сайтов (коих у каждой компании),
то не думаю, что это как-то сильно кого-то беспокоит.

А тебе рекомендую уже дойти до магазина и купить себе новый диск.
Сейчас уже SSD стали вполне доступными, а порнуху можно и в облако загрузить.

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

555. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 01-Авг-21, 00:46 
> В любом случае меньше любого интерпретируемого языка,
> а с учетом засилья PHP, Python, Ruby для сайтов (коих у каждой
> компании),
> то не думаю, что это как-то сильно кого-то беспокоит.

Ты его лучше спроси, как он вообще зависимости считает.
И пусть "эталонный" пример, с эталонными опциями сборки (и пояснением за эталонне окружение выполнения) на труЪ ЯП кинет, для начала.
Охренее^W Узнаешь много "нового".

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

596. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 00:00 
> Узнаешь много "нового".

Уже узнали, что Раст не умеет в статическую линковку с glibc.
Для статической линковки ему нужна MUSL.

Это просто "праздник" какой-то.

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

626. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 13:08 
Вроде в новых версиях линковать статически с glibc они уже научились. Но это всё нужно проверять. У них там есть оговорки.
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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