LINUX.ORG.RU

Ответ на: комментарий от Deleted

Не уверен насчет «во многом», но такие люди, естественно, есть. И... что это доказывает?

А должно доказывать? Не думаю.

Я так и думал, что это не доказывает ровно ничего.

А вообще я рассчитываю на появление subset от Go без GC

Продолжай рассчитывать.

либо некоего языка inspired by Rust, но с более человеческим дизайном.

У языка, решающего задачи, которые решает Rust, будет ровно такой же дизайн. И просто для протокола: перестань путать дизайн и синтаксис. Да, ты их путаешь.

tailgunner ★★★★★
() автор топика
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Да пусть пишут. Мне что жалко. Пусть только не лезут в раст-темы со своим тупняком.

Сначала блещет своей некомпетентностью про ELF и линковку, а потом чьи-то слова еще называет тупняком. Ну ну.

Deleted
()
Ответ на: комментарий от tailgunner

У языка, решающего задачи, которые решает Rust, будет ровно такой же дизайн.

Какое-то слишком возведенное в абсолют фанбойство.

И просто для протокола: перестань путать дизайн и синтаксис. Да, ты их путаешь.

Нет, не путаю.

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

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

У языка, решающего задачи, которые решает Rust, будет ровно такой же дизайн.

Какое-то слишком возведенное в абсолют фанбойство.

Учи матчасть. Ключевые слова: region-based memory management, Cyclone, BitC.

И просто для протокола: перестань путать дизайн и синтаксис. Да, ты их путаешь.

Нет, не путаю.

Значит, ты их просто не различаешь.

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

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

tailgunner ★★★★★
() автор топика
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

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

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

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

Deleted
()
Ответ на: комментарий от Deleted

Если ты не способен понять, что никакого идеального решения не существует

Пошла ахинея. Какое еще идеальное решение, о чем ты вообще и зачем.

и решать задачи можно разным способом

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

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

Если ты неправильно понимаешь

Я понимаю буквально. То, что это не соответствует тому, что ты хотел сказать - твоя проблема.

tailgunner ★★★★★
() автор топика
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Пошла ахинея. Какое еще идеальное решение, о чем ты вообще и зачем.

О, виляние из стороны в сторону. Узнаю хвостострела.

Я понимаю буквально.

Шизофрения?

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

В том случае, если не понимаешь ты, а для меня это проблемы никакой не составляет — то это скорее твоя проблема.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Я понимаю буквально.

Шизофрения?

Опять ахинея, да что ж такое.

В том случае, если не понимаешь ты, а для меня это проблемы никакой не составляет — то это скорее твоя проблема.

Ну, это ты пришел в топик о Rust что-то объяснять - наверное, тебе не всё равно.

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Я понимаю буквально.

Шизофрения?

Опять ахинея, да что ж такое.

А зря ты считаешь это ахинеей. Если ты все понимаешь буквально, то это тревожный звоночек — очень похоже на шизофрению.

Ну, это ты пришел в топик о Rust что-то объяснять - наверное, тебе не всё равно.

Я не приходил в топик о Rust что-то объяснять.

Но уже после того, как фанатики набросились — дискуссия завязалась.

Deleted
()
Ответ на: комментарий от RazrFalcon

Hello world на Rust - 174KiB.

Hello world на C++ - 1.2MiB.

Когда фанатикам нечем заняться, они размеры Hello world сравнивают.

i-rinat ★★★★★
()
Ответ на: комментарий от Deleted

Если ты все понимаешь буквально, то это тревожный звоночек — очень похоже на шизофрению.

Да ты еще и психиатр.

Я не приходил в топик о Rust что-то объяснять.

Я вижу.

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Если ты все понимаешь буквально, то это тревожный звоночек — очень похоже на шизофрению.

Да ты еще и психиатр.

Нет, конечно. Я могу только сказать, что звоночек тревожный.

Deleted
()
Ответ на: комментарий от RazrFalcon

Всё ещё бессмысленное сравнение Hello world'ов.

Ты там раньше спрашивал, сколько будет библиотека занимать на Rust'е. Этот пример — иллюстрация к вопросу? Если да, то как он его иллюстрирует?

i-rinat ★★★★★
()
Ответ на: комментарий от RazrFalcon

В упор не понимаю, как этот пример хоть что-то объясняет.

i-rinat ★★★★★
()
Ответ на: комментарий от RazrFalcon

Для моего текущего проекта мне нужно: дешёвый FFI в обе стороны, отсутствие GC, маленький размер бинаря, статический бинарь.

По-настоящему статический, т.е. с musl? (А как там под виндой с этим?) В Debian rust ставится не по-умолчанию, но это ладно. А пакета rust+musl нет вообще.

GC мешает так что заметно на глаз (что же это за задача тогда?) или только в бенче, или профайлинга и не было?

Ну и хотелось бы: cargo,..

cargo стало уже именем нарицательным?

gag ★★★★★
()
Ответ на: комментарий от Deleted

О, все веселее! У библиотеки тоже может быть «подобный main» entry point, как, например — у glibc.

Точно:

__attribute__((constructor)) void foo_constructor(void) { ... }
И не только, есть ещё и «точка выхода»:
__attribute__((destructor)) void foo_destructor(void) { ... }

gag ★★★★★
()
Ответ на: комментарий от gag

Что уже с cargo не так?

Я кстати нагородил себе docker build base image с musl и rust. Но пришлось собирать LibreSSL руками

У меня ещё дополнительные прыжки с препятствиями, я этом сделал для armv7l

Оно того стоило, серваки с вебней жрут по 5 МБ памяти и работают со скоростью nginx

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Ответ на: комментарий от Deleted

У меня статические бинарники с веб-фреймворком на Rust (Actix) с musl и LibreSSL занимают от 4 до 7 МБ. Stripped, armv7l. Очень хорошо, учитывая что они лежат в голом докер контейнере в котором только CA сертификаты для https клиента

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Ответ на: комментарий от Deleted

Обоснуй получше почему фанбойство. Приведи примеры языка без рантайма и без gc с такими же гарантиями работы с памятью и многопоточных кодом и с zero cost abstractions.

vertexua ★★★★★
()
Ответ на: комментарий от RazrFalcon

Я думаю там что-то не так и это будет сразу видно в выхлопах двух утилит - file и ldd

Так как генерируемый код почти не отличается, я бы ожидал похожие числа . Вся польза от Rust во время компиляции, а потом это тот же C++

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

Оно того стоило, серваки с вебней жрут по 5 МБ памяти и работают со скоростью nginx

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

bread
()
Ответ на: комментарий от Deleted

очень похоже на шизофрению

Не очень. Это «тупой доцент». Или поциент косит под него.

bread
()
Ответ на: комментарий от bread

Намекаешь, что

Я бы сказал, на что намекаю, но со своей чувствительной натурой ты будешь много плакать.

tailgunner ★★★★★
() автор топика
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от gag

По-настоящему статический, т.е. с musl?

Читайте ветку. Имелось ввиду отсутствие внешнего рантайма, как у Java/C#.

А как там под виндой с этим?

С MinGW норм. MSVC - хз.

А пакета rust+musl нет вообще.

А он и не нужен.

GC мешает так что заметно на глаз

См. первый пункт: «дешёвый FFI в обе стороны». Тут GC только мешать будет. Ну и из нормальных языков с GC, которые не тянут рантайм, я знаю только D.

cargo стало уже именем нарицательным?

В околосистемщине - да.

RazrFalcon ★★★★★
()
Ответ на: комментарий от vertexua

Что не так? Код:

#include <iostream>

int main()
{
    std::cout << "Hello World!" << std::endl;
    return 0;
}
> g++ -c -static-libstdc++ -O2 -std=gnu++11 -o main.o main.cpp
> g++ -static-libstdc++ -Wl,-O1 -o test main.o
> strip -s test
> du -h test
1.3M    test
RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Hello world на Rust - 174KiB.

Hello world на C++ - 1.2MiB.

Rust со статическим Runtime’ом подсчитан, как и C++?

EXL ★★★★★
()
Ответ на: комментарий от Deleted

Ядро ОС? Простой ответ - нет. Но если подумать, то это только используя существующую реализацию.

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

И/или

Можно написать аналог trusted computing base как здесь https://en.wikipedia.org/wiki/Verve_(operating_system) на unsafe rust, а поверх этого написать все остальное без unsafe и назвать это остальное ядром. Тогда да.

vlad9486
()
Ответ на: комментарий от vertexua

C++

        linux-vdso.so.1 (0x00007fff3b1cd000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fafe1fd5000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/libgcc_s.so.1 (0x00007fafe1dbe000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fafe19f6000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fafe26aa000)
Rust

        linux-vdso.so.1 (0x00007ffe9b7b4000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f68af09e000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f68aee7e000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/libgcc_s.so.1 (0x00007f68aec67000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f68ae89f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f68af4ce000)

Речь шла про статическую линковку std, если что.

RazrFalcon ★★★★★
()
Ответ на: комментарий от vlad9486

Ядро ОС? Простой ответ - нет.

Почему нет? Простой ответ - «если на Си можно, то можно и на Rust». Нельзя написать ОС целиком на Safe Rust.

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Почему нет? Нельзя написать ОС целиком на Safe Rust.

потому, что вы своего собеседника не читаете:

И/или можно написать аналог trusted computing base как здесь на unsafe rust, а поверх этого написать все остальное без unsafe и назвать это остальное ядром

next_time ★★★★★
()
Ответ на: комментарий от next_time

Собеседник сначала сказал «нет», а потом дал длгое объяснение, которое сводилось к «да, но не на Safe Rust». Я предложил так отвечать сразу, потому что unsafe Rust - это тоже Rust.

tailgunner ★★★★★
() автор топика
Последнее исправление: tailgunner (всего исправлений: 1)

Синтаксис у Раста с одной стороны трудночитаемый, но с другой стороны - очень информативный и компактный. Так что проблема непосредственно чтения компенсируется быстрым вниканием в то, что происходит в коде. Так что я проблем при чтении чужого кода на Rust не испытываю.

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

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

freecoder
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.