10 мегабайт по-умолчанию. В эти 10 мегабайт я бы уместил какой-нибудь самописный движок на ассемблере, внутри которого ещё будет блекджек.
раст написан на спп?
Ага)) точнее, С++ основной стал. Первые версии на С++ были. Или С. Но у С++ они заимствовали функции, влияние всё равно есть.
в 10мб можно линукс с базовыми пакетами и утилитами засунуть
то есть, чтоб доказать, что раст является убийцей спп, разработчики пишут его самого на объекте их убийства?
Туда можно дос и весь мой инструментарий запихать. А до кучи сектор - два использовать для красивого экрана загрузки😂)))
Rust то ничего не доказывают, вроде. А вот такие фанатики непонятные - да. Это как с Intel и AMD. Компании сотрудничают, но фанатики AMD, либо Intel - ссорятся.
можно сделать меньше C
первая версия была на ocaml)
А в списках к "благодарностям" то всё равно С++ есть, вон сколько функций то "позаимствовали", живи с этим, гыгы))
Фу, 356 килобайт. Я бы в эти 356 килобайт уместил целое микроядро.
почему не полноразмерное ядро
там и монолит хорошо вписывается со стопкой дров и парой прог :)
Можно и полноразмерное. Но много времени понадобится (а нейросеть вообще никогда в жизни не напишет, гыгы 😁).
оно стока весит из-за эксепшенов
Ну, значит в скорость ему не светит никогда, увы. Я слышал, он там для каждой библиотеки по 1000 проверок делает. Печалька.
356k многовато. у какие ухищрения есть чтоб уменьшить все это дело хотяб до 50 (у сишки можно до 11-20 уменьшить, точно не помню)?
у сишки нету исключений, у обоих раста и плюсов именно они так раздувают бинарники
Скорость исполнения ужасная будет со всеми этими проверками. Либо безопасность, либо скорость. Значит С++ быстрее Rust.
какая-то спекуляция
исключения обычно как обработчик прерывания вешается
Что такое спекуляция?
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B5%D0%BA%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_(%D1%84%D0%B8%D0%BB%D0%BE%D1%81%D0%BE%D1%84%D0%B8%D1%8F)
Не, тут как с assert в С. Или ещё хуже.
там есть флаги для сборки под продакшен , вроде бы
И причём тут это? 356 килобайт физически не сможет исполниться быстрее 1 килобайта. Если только там не 355 килобайт символов (нет). Думай сам, а не у нейросети спрашивай.
могут
могут, если там остальные функции не используются. мы же не включаем в исполнение процесс загрузки
значит грош цена такому инчтрументу который мусор в бинарник сует, который даже при старет ниразу не исполнится
Всё равно в ОЗУ будет загружаться такая программа быстрее. Я всё ещё прав))
знаешь что такое кешмиссы?
нет, расскажешь?
Только давай без нейросети.
У процессора есть кеш памяти, которую он загружает из ОЗУ, доступ к этой памяти гораздо быстрее чем по материнке идти до оперативки. Он выполняет инструкции из этого самого кеша и чтоб выполнить функцию её надо загрузить. Любой jmp/call инвалидиует текущий кеш процессора, из-за чего нужен очередной цикл загрузки инструкций из озу. Самый простой способ это избежать - вместо call по статичному адресу заинлайнить контент функции прямо тут. Это раздувает бинарник, но ускоряет исполнение.
Смешно. Процессор из ОЗУ грузит в кэш в любом случае. Так он будет грузить только больше.
он будет грузить меньше, потому что весь код уже в кеше
Тогда возвращаемся - процессор грузит в кэш 356 килобайт ненужной ерунды, вместо 1 килобайта. Ещё раз - в чём преимущества?)
откуда кстати у тебя программы на 1 кб взялись
Да, ошибся. Не 1 килобайт, а 85 байт.
он просто грузит какой-то фиксированный размер типа ~50 кб
грузится размер, кратный линии кэша, это вроде как 64 байта когда-то было, если код большой, то большая часть возможно будет сидеть в l2 а в l1 только пару линий
Тут дед цена вопроса - trade off между безопасностью браузера (и ваших денег) и тем сколько % или сколько флопов мы готовы за это отдать. В вопросах денег я думаю ответ ясен.
Браузер? Проценты? Флопы? Ничего не понял.
Тыж толковал про скорость исполнения. А я говорю что во главе угла стоит безопасность. И обсуждать Rust в отрыве от этого нет смысла. Язык создавался с целью быть безопасным. А перформанс - по остаточному принципу. Хотя он выше чем у java/.net если делать бенчмарки.
Да обычный Hello World там. Случайно разговор завязался. Rust умудрился Hello World выдать на 350 килобайт. Вот говорят, там какие-то backtrace и проверки на то, является ли терминал - терминалом. Бр)
Да он параноидален. Я видел код, который открывает файл на rust. Чуть позже покажу если найду у себя. Там запихнули опционал типа Either.
Да если бы эта паранойя была в рамках разумного. Я понимаю, если в С там всякие канарейки в код пихаются - ещё прилично выглядит. Но настоооолько... Чтобы прямо так глубоко лезть. И напрашивается вопрос - если уж так глубоко залез, почему дальше то не лезешь? А верны тогда твои проверки на верность среды будут? backtrace я ни разу не писал, даже не знаю, что это (но знакомое слово). Если это трассировка - значит я знаю, как это писать, и напишу, @s54820. Но в язык это зачем пихать? И как программисту потом расширять эти проверки? Если ему надо будет проверить на правильность этих проверок, или изменить их как-то, добавить своё что-то, причём посреди какой-то этой шаблонной проверки? Там есть такая возможность?
Бэктрейс — это когда ты упал, идёшь вверх по кадрам стека и (в данном случае) выводишь адреса, названия функций, имена файлов, номера строк. Чтобы видеть, где упало. А не как некоторые программы, где «что-то пошло не так». Для этого тебе нужно, например, иметь отладочную инфу, и её парсер такскать с собой (в основном бинаре или в либе). Вот и набирается. Но выполняться-то всё это будет только при ошибке. И в памяти окажется только при ошибке, у нас страницы по требованию подкачиваются обычно. Да, там жирная стандартная либа, она делает очень много «ненужного» для безопасности и надёжности, но альтернатива этому — небезопасность и ненадёжность :) И я кстати не предлагал проверять диск или не диск. Это просто мем такой, что в хелловорлдах тоже есть ошибки. Он периодически всплывает. Нужно проверять хотя бы результат write(), но не очень ясно, что делать дальше :)
Про диск это я дополнил от себя. Потому что непонятно, кто устанавливает "нужность" этих проверок. Гарантий то никаких никогда нет. Вообще, нет бы на С или С++ написать такую библиотеку времени исполнения с backtrace и прочим. Обязательно было для этого язык создавать?
Так раст — это про проверку владения и прочих границ. Бектрейсы-то много где есть. Даже в Си: # tcc -b -run bt.c Runtime error: division by zero bt.c:2: at 0064E05B foo() bt.c:7: by 0064E084 main() by 0064E188 _runmain()
Обсуждают сегодня