The OpenNET Project / Index page

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



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

Оглавление

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

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


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ообщить модератору

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

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




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

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