Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.
async/await наконец-то в стабильной версии!
ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
>>1539868 Вот поэтому у Раста коммьюнити лучше, у нас нубу прямо со входа в лицо пихают Code of Conduct, в котором белым по красному написано: "Не будь мудаком, сука!". Тебя же уже тёрли, веб-макака, одного раза не хватило?
>>1540469 язык то ахуенный, но тут две причины: 1) дизель сырое говно, не могущее в сабселекты, скл функции, футурки, да даже чистый скл код (слишком долго серилизируется через query_row, и то там хуйня) 2) макакам проще взять какой нить go/свифт/шарпапарашу/жабапарашу, потому что мол там либ больше, а еще модно а вот на фочанах не особо умные доебываются до синтаксиса и идиом
>>1540578 >дизель сырое говно А с постгрестным крейтом как дела обстоят не знаешь? Пока хеллоуворлды шлепаю вроде проблем не заметил, но ни в какие тонкости не вникал
>>1540600 ну типо ты конечно можешь юзать сырую либу без дизеля (там даже ассинк вроде есть, но лично мне не удобно, лучше бы все это завезли в дизель)
>>1540700 >Больше либ вообще довольно странный аргумент. С чего бы? Если тебя либы не интересуют, возьми Standard ML, прекрасный язык, но либ для веба там почти нет.
>>1540716 Язык без либ - ну тип хеллоуворлды на нём писать и одноклассникам на переменке хвастаться. Я бы не стал (и не стал до 2019) в раст вкатываться без либ.
>>1540724 Кек. C++ с auto тогда тоже динамически типизированный? У тебя пример выглядит не так, как оно выглядит в динамической типизации. Вот если бы раст позволял тебе сделать так:
let mut foo = 12; foo = "bar";
то он был бы динамически типизированным. А ты просто создал и инициализировал новую переменную, скрыв старую.
>>1540716 > но либ для веба Если для твоей конкретной задачи нет либы, то проблема и тогда не вариант. А если есть хоть одна подходящая, то нахуя еще 20 таких же надо?
Больше всего либ для веба написано на пхп, так что надо на нём.
Кто в 16 лет не мечтал запилить свой язык программирования, который наконец-то позволит писать всё и сразу, у того нет сердца. А кто и в 40 лет продолжает этим заниматься — у того нет мозгов.
>>1541438 У тебя детектор сломался, я всю жизнь в России живу, беги чинить свой гаджет. >>1541299 Но мы не пилим язык, мы пилим программы на уже готовом языке, разве нет?
Я правильно понимаю что runtime постоянно запускает поочередно .poll на всех футурках с определенным блочащим интервалом скажем N футурок раз в 5ms. Или там что-то серьезнее? Хочу вкатится в tokio
>>1544841 те кто пишут футурку обязаны её разбудить по какому-либо событию. Это может быть как повтор через определенное время как ты описал, а может быть что-то завзяанное на ОС. В токио пробуждение ведется через мио, что по сути евент луп с оберткой над сискалами epoll / kqueue / IOCP на разных ОС, т.е. ОС уведомляет тебя о приходе новых байт. Таймер в токио вроде бы сделан на отдельном потоке.
гуглеш прожекты на рокете @ выскакиевает обоссаный блокнот из индуских хеллоуворлодов ака реалворлд ехампле @ смотришь код @ адекватное мвс @ с тестами @ смотришь на автора
>>1544983 Как родная асинхронность меняет поведение, которое описал я? Никак, это просто синтаксический сахар над футурками и вместо my_future.and_then() теперь будет две строчки с .await?, под капотом все тоже самое. Вообще сильно смущает уровень растопогромистов, среди них к тому же полно джаваскриптеров.
>>1546115 > Как родная асинхронность меняет поведение, которое описал я? Используются системные асинхронные методы вместо костылей. > Вообще сильно смущает уровень растопогромистов, среди них к тому же полно джаваскриптеров. Двачую. Пишут на Расте, а не знают как работает асинхронность в нём.
>>1547312 Рантайма нет в std либе, потому что когда его туда добавят, удалять его оттуда будет невозможно. Будет какая-то ебля, как с Infallible типом, который почти невозможно теперь поменять из инариативного енама в синоним "!", потому что на этом инфоллибле уже код понаписан; уже джва раза отменяли стабилизацию этого never-type. Разрабы не хотят такого ещё раз, поэтому и не пихают рантайм футурок в стд либу. В стандарте только await есть. Но авейтить можно только в асинхронных функциях и блоках. В итоге последнюю футурку надо как-то самому авейтить, потому что мейн функцию нельзя делать асинхронной. Так что рантайма футурок в стд либе нет.
Туплы ведь как и в остальных языках просто вручную вговнокоженные структуры с прикрученым сахаром изкоропки? Можно как-нибудь навелосипедеть для 13+ элементов свою сохраняя синтаксис и деструктуризацию?
>>1549867 Таплы — это просто безымянные структуры со всеми полями в pub виде и номерами вместо имён. Если тебе надо что-то сложнее — сделай не безымянную структуру.
напоминаю, что создатель языка - обосранный самоучка без формального образования, гордо называющий себя "инженером по призванию", который пару лет поигрался со своим язычком, потом решил что выгорел, пару лет еще поболтался как говно в проруби в мозилле, занимаясь непойми чем, а потом и вообще свалил в эйпл делать свифт
>>1551229 > напоминаю, что создатель языка - обосранный самоучка без формального образования > РЯЯЯ, НУЖНА КОРАЧКА, БЕЗ КОРАЧКИ ТЫ НИХТО И БЫДЛА КОДИР!1!1!1! ЫЫЫЫЫ, ЧТО БЫ СДЕЛАТЬ СВОЙ ЯЗЫК НУЖНО ЗНАТЬ ВЫСШИЙ МАТАН!1 дай угадаю, ты пишешь на говне, которое создавалось быдлокодером за неделю, а потом "улучшалось" в течение несколько десятилетий?js
>>1551229 Что лишь в очередной раз подтверждает, что образование в классическом понимании этого слова - переоценено. Тем более образование компьютер сайнтиста или софтваре инженера.
чуваки, вы понимаете что раст для него был лишь ебаным пет-проектом, хитрым планом по сути, как получить известность и устроится уже на нормальные бабки в топовую фирму потому что без образования по специальности хуй бы его куда взяли а так да, челик роботает час в эйпл, мечта сбылась, хули
>>1551523 > хайповый хипсторский проэкт с веселыми ребятами любящими переписывать мир заново может комуто смешно, но так оно и есть лол, и в этом нет ничего плохого, так как раст является абсолютно новым уникальным языком, дада я про Borrow Checker
>>1551526 >раст является абсолютно новым уникальным языком, дада я про Borrow Checker я конечно понимаю что ты жирнишь и троллишь, но, к примеру, еще/даже в, прости господи, borland builder 3 можно было подрубить (одной галочкой) адресс санитайзер и чекер массивов и он неплохо работал да че там говорить, в сях подобным утилиткам сколько уже лет? 30? 40?
хз я пишу мне по кайфу балдежные структуры с енумами которые крути хоть в ооп хоть в адт абстракции к боровам которые дают писать имутабельно понимая во что оно скомплюктируется со всеми движениями в памяти еще и скорость околосишная и биндов уже миллиард с развивающимся васмом меня еще ни один язык так не доставлял советую попробовать перед тем как тут срать ребята
>>1551550 потому что ты не осилил шедовинг и пытаешься воевать с компелятором переменные идут %кей<тип>% -> /валуе/ если %кей<т1>% не совпадает с такимже %кей% но %<т2>% старый %кей% дропается и создается новая переменная
let foo = 1; let foo = "bar"; println!("{}", foo); foo<string> это отдельная переменная никак не относящаяся к первой ну и плюс у тебя foo<number> никак не используется и откинулось бы в любом случае
let foo = 1; println!("{}", foo + 1); let foo = "bar"; println!("{}", foo); тут просто 2 разные переменные никак не относящиеся друг к другу
let foo = 1; let foo = "bar"; println!("{}", foo + 1); println!("{}", foo); тут просто кто-то насрал себе в штаны
если совпадает и новое /валуе/ ты просто перезаписываешь переменнную (очевидно если ты пишешь имутабельно на момент компеляции оно оптимизирует в мутацею)
let foo = "oaeu"; println!("{}", foo); let foo = "bar"; println!("{}", foo); у тя одна мутирующая переменная
>>1551650 Я вот кстати думаю, что мнение про системщину не случайно появилось. Главная страница сайта раста поддерживает это. И вопрос: насколько это соответствует действительности? Firefox вот к системщине не относится.
>>1551650 Ну подожди. Вот смотри - сетевые приложения на нем писать - это постоянная анальная боль, т.к. разработчики полтора фреймворка постоянно меняют весь API при каждой минорной версии. Всякие веб-сервисы и прочий энтерпрайз тоже не тянет - нет библиотек да и писать на таком низкоуровневом языке тот еще квест. Остается какие-нибудь низкоуровневые демоны и прочая системщина, которая не ходит в сеть и не работает с многопоточностью. Но тут мы узнаем, что писать многопоток на русте - это снова анальная боль, т.к. стандартная библиотека не предлагает ничего, чтобы уняло эту боль. Это я еще не говорю о поддержке со стороны IDE. На данный момент, "лучшая" поддержка - это плагин от Jetbrains для Intellij IDEA. Но там тоже не все так гладко.
>>1551659 > Ну подожди. Вот смотри - сетевые приложения на нем писать - это постоянная анальная боль, т.к. разработчики полтора фреймворка постоянно меняют весь API при каждой минорной версии. юзай стейбл версии, хотя отчастимогу согласиться, не слабо препекло когда актикс решили на async/await перенести
> Всякие веб-сервисы и прочий энтерпрайз тоже не тянет - нет библиотек есть
> низкоуровневом языке значение знаешь?
> Остается какие-нибудь низкоуровневые демоны и прочая системщина, которая не ходит в сеть и не работает с многопоточностью. ???
> Но тут мы узнаем, что писать многопоток на русте - это снова анальная боль, т.к. стандартная библиотека не предлагает ничего, чтобы уняло эту боль. ты си описываешь? в расте изподкоробки есть Arc, Mutex, Atomic, Rc, RefCell, Weak etc..
> Это я еще не говорю о поддержке со стороны IDE. IDE - нинужно, есть сублайм с rust enchancment
> На данный момент, "лучшая" поддержка - это плагин от Jetbrains для Intellij IDEA. Но там тоже не все так гладко. сорта говна
>>1551669 К чему все эти отрицания? Ведь библиотек нет, а те что есть не позволяют писать типичные проекты с той же скоростью, которые предоставляют мейнстримовые языки. На счет IDE ты зря. Ты же не малолетний дебил, который пишет на джаваскрипте? Rust - язык со строгой статической типизацией. Тут IDE как раз нужна с хорошей поддержкой все языковых конструкций и фишками присущими любой нормально IDE - автокомплит, подсветка некорректного кода, дебаг и еще много чего. Т.е. область применения этого Раста довольно узкая. На сайте пишут о встроенных проектах, сетевых сервисах и консольных утилит, но здесь он начисто сливает какого-нибудь Python или Go. Ну и хваленная производительность достигается через unsafe, который превращает твой надежный Rust в какую-нибудь сишку.
>>1551674 > К чему все эти отрицания? Ведь библиотек нет, а те что есть не позволяют писать типичные проекты с той же скоростью, которые предоставляют мейнстримовые языки. ты тот самый долбаеб который подключает всякие крудопомои типо restdjango или как его там?
> На счет IDE ты зря. Ты же не малолетний дебил, который пишет на джаваскрипте? на этой параше тоже приходитсья писать, но только для браузера
> Rust - язык со строгой статической типизацией. Тут IDE как раз нужна с хорошей поддержкой все языковых конструкций и фишками присущими любой нормально IDE - автокомплит, подсветка некорректного кода, дебаг и еще много чего. в сублайме есть все кроме дебаггера, для дебага есть RR в терминале
> Ну и хваленная производительность достигается через unsafe, который превращает твой надежный Rust в какую-нибудь сишку. весь сейв код это ансейв, следовательно что тебе мешает использовать ансейв код если оно нужно? но поверь, твое веб говно будет и без ансейф кода работать в пять раз быстрее аналогичного пиздоно говна
>>1551676 Предметная область раста так и не определена. Попытка усидеть на нескольких стульях ни к чему не приведет. Веб пишут на гоу, питоне, джава, сишарпе, скала. Распределенные системы - эрланг, скала (акка), джава. Сетевые демоны - гоу, питон. Консольщина - питон, гоу. Системщина и ебмеддед - си и плюсы. Одно радует, что в расте очень дружелюбная атмосфера и принят CoC, если вы понимаете о чем я.
>>1551716 > Веб пишут на >гоу, питоне, сишарпе медленная параша >джава, скал нет, на этой параше пишут 40 летние долбаебы, работающие в 100летней шааге и которые ничего кроме жвм говна в своей жизни не видели
> Системщина и ебмеддед - плюсы. пиздеж, плюсы нужны только для десктопа и игрулек
>>1551745 Ребята не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не Чикатило и даже не архивы спецслужб. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте что тут писалось. Я вполне понимаю что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут.
типо двачую, но с одной закрытой мелкоборды для прогеров
>>1551743 >медленная параша >>1551743 >нет, на этой параше пишут 40 летние долбаебы, работающие в 100летней шааге и которые ничего кроме жвм говна в своей жизни не видели Лол, чего ты сразу не сказал, что ты никогда не работал программистом. Гоу с питоном у него медленные, лiл! На скале у него никто не пишет!
>>1551780 Ты такой странный. Ты же понимаешь, что удел раста - это ебать байты за мелкий прайс? Т.е. ничего полезного ты не делаешь. Пилишь поди какие-нибудь никому ненужные сетевые сервисы, которые гоняют байты туда-сюда.
пиздуй уже денечку зарабатывать, зачем ты тратишь время на каких то задротов, которые учат расты/си? не забудь еще семью зависти, так как так проще, а потом на свою жалкую 100тысяс рублей жс макакой платить за детей
>>1552139 на этапе компиляции в крестах и си (в отладочной версии) программы тулза динамического анализа кода (которая в том числе будет делать проверки границ, другие проверки неправильной работы с дин памятью) будет делать свои интристики в исходный код, так же возможно придется линковаться со специализированной отладочной версией стандартной библиотеки далее чтобы проверить работу естественно приходится запускать программу, в идеале прогонять ее через тесты блядь, а как еще можно проверить работу с динамическим (заранее неизвестным на этапе компиляции, как по размеру так и где и как будет выделено) выделением памяти? чудес не бывает другое дело что утилиты статического анализа тоже могут поймать часть ошибок работы с теми же самыми массивами выделяемыми на стеке (тк размер их известен на этапе компиляции, утилита стат анализа просто может это посчитать), так же на этапе статического анализа можно отловить и часть явных ошибок работы с памятью - к примеру отсутствие пары new-delete или перепутанные delete и delete[]
что поражает в раст-коммьюнити (если смотреть со стороны) - это их заносчивая самоуверенность что они делают какие-то вещи в первый раз хотя в экосистемах других языков этот инструментарий уже существует не десятилетиями, а поколениями даже
>>1552221 >что поражает в раст-коммьюнити (если смотреть со стороны) - это их заносчивая самоуверенность что они делают какие-то вещи в первый раз >хотя в экосистемах других языков этот инструментарий уже существует не десятилетиями, а поколениями даже
Си\С++ - это стандарт в вакууме. Настроить среду для разработки - работа для отдельного плачиваемого специально обученного айтишника.
Раст объединяет в одном цельном проекте накопленный десятилетиями опыт.
Си - суперсложное говно которое вне огромной корпоративной инфраструктуры не поддерживаемо.
С темже успехом можно сказать что С# ничего нового не делает.
Ничто е ново под лучной. Хорошо делай хорошо будет.
>>1551784 я-то на расте продолжаю делать формочки и чуствую себя замечательно кто вообще в 2020 учит языки че сложного в наченании писать на расте?? ты или тролб или совсем тупой не осилятор бро
>>1552345 >наченании писать на расте Подобные языки изучаются минимум год до момента, когда ты сможешь написать какую-нибудь незамысловатую консольную утилиту. Ну и формочки клепать на расте - это такое. Быстрее всего это делается на питоне, плюсах (кьют) или каком-нибудь сишарпе.
>>1552348 ну если ты тут будешь неделями срать так не прочитав 4 главу гайда для груднечков о том почему foo = 1 и foo = "foo" две разные переменные может и год
>>1552353 Причем тут 4 глава каких-то грудничков? Такие языки как Haskell, Rust, Scala, Clojure, Erlang - изучаются годами. Т.е. ты тратишь буквально минимум год на изучение языка, перед тем как написать хоть что-нибудь удобавримое. А ведь для работы нужно еще знать такие вещи как систему сборки, библиотеки и фреймворки. В итоге ты гробишь несколько лет, а потом обнаруживаешь, что работы на этих языках или нет, или нужны матерые спецы с минимум 3 годами коммерческого опыта в этих языках и фреймворках.
>>1552360 >Такие языки как Haskell, Rust, Scala, Clojure, Erlang - изучаются годами >Т.е. ты тратишь буквально минимум год на изучение языка т.е. ты сделал вывод из своего же никак не обоснованого пука
>>1551554 > let foo = "oaeu"; > println!("{}", foo); > let foo = "bar"; > println!("{}", foo); > у тя одна мутирующая переменная ты забыл про bounds/scoped упомянуть
>>1552759 >>1552743 да и сообственно вопрос, что это за хуйню ты высрал?
никакие мутабельные переменные там не появляются, а уж тем более &str и String, так как первое это просто референс, а второе хуита из std, которая никаких магических типажей не умеет, что бы прямо во время комплементации чето там мутить, статичная параша заменится другой, но не перезапишется
>>1552813 > Почему компелюктуор не может перевести это в мутацию потому что на это могут ссылаеться референсы и никто всерьез не будет задумываться о том что, какой нить вася сдумает в одном и том же скоупе создавать переменную с одинаковым именем, и одинаковым типом, если можно просто перезапистью
>>1552221 Мимо, я крестопетушок. Разница в том что твой баунд чекер в быдлере покажет тебе проблему только когда она случится в рантайме, в русте борочекер на этапе компиляции вроде как должен не допускать юз афтре фри, дабол фри и т.д., границы динамических массивов проверяются так же в рантайме.
>>1553537 Что ты там мутатить собрался? Закидывается переменная куда надо, вызывается call, хуита твоя выводится, закидывается следующая и ещё раз проход. Попробуй цикл какой-нибудь высрать, может найдешь что тебе надо.
Начал ради интереса читать про раст-бук на оф. сайте. С первых страниц начал охуевать от того, что они там всё предлагают делать в командной строке. Есть ли под раст нормальная IDE уровня Visual Studio, внутри которой и компиляция и отладка, и выделение ошибок?
>>1553794 Наоборот, в консоли намного удобнее и быстрее же. Пока неповоротливая IDE запустится и прогрузится, пока найдёшь, где в менюшках скрыты нужные кнопки, успел бы 10 раз в виме написать код, ввести нужные команды, исправить ошибки в коде и перейти к следующей главе. Большие проекты в консоли писать тяжело, но для обучения - самое то.
>>1553190 >охуел сука как уебу, куда проще си то? Чисто синтаксис например ублюдочный. Сколь ни будь сложная программа - сплошной ад и баги уровня переполнение стека\буфера, которые почему-то необнаруженные по 20 лет остаются, несмотря на все "крутые" анализаторы кода и прочий "инструментарий".
Речь идёт о процессе создания и поддержки ПО.
А чисто синтаксически и семантически, тот же паскаль проще например. Я уже не говорю про лисп.
Может есть какая-нибудь удобная либа для контроля I/O? Хотелось бы чтобы был threadDelay(100) параллельно ему читался инпут Если инпут вошел за 53мс, threadDelay ждал бы еще 47
>>1553853 Чтобы ввести нужные команды, сначала надо изучить команды командной строки. Порог входа повышается. А ещё там в оф. книге про баш-скрипты упоминают сходу... Выглядит как этакий фейс контроль на входе в илитный руст-клуб, обычных людей отпугивают сразу одним своим видом, макакам типа меня дают постоять в очереди, потратить часы своего времени, но внутрь всё равно не пускают. Просочиться дают лишь ноулайферам миллениалам-красноглазикам. Обучение без точек останова, без мгновенного подчёркивания ошибок - это развлечение для тех, у кого дохуя времени.
>неповоротливая IDE запустится и прогрузится VS с решарпером действительно грузится долго. Только нахуя мне её закрывать. Я комп раз в 2 месяца перезагружаю. VS висит себе открытой всё время.
>>1553930 А никак, лол. В крестах сборка проекта и управление зависимостями - полный пиздец. Один из старейших языков, а ничего толкового до сих пор нет.
>>1553912 >Если он такой ублюдочный, почему тогда куча других языков его переняла? А? А?! Потому что Си продвигала Американская Радиотехническая Корпорация? На своих дексах, после чего интел был "вынужден" переобуться и начать выпускать Си процессоры, которые теперь везде.
Потому же, почему и виндовс такая популярная.
Кроме очевидных империалистических интересов американской промышленности, есть мнение, что си продвигался именно в виду своей ублюдочности, чтобы только крупные корпорации могли осиливать сложные проекты.
Так например первый 32хбытных процессор интела был заточен под модулу и аду, заточен для работы с объектами, умел безопасно управлять памятью, и имел функционал позволяющий минимумом усилий реализовывать ОС.
>Не в синтаксисе дело, а в том, что сишка слишком много вещей не проверяет, а молча разрешает Дело в том, что сишка говно. И синтаксически, и семантически. И Си процессоры RISC(ARM RISC-V) x86(который внутри тот же риск) - говно. А С++ - это говно в кубе.
>>1554234 Любопытно. Маркетинг, в общем. А почему тогда возможно написать компилятор модулы/ады для x86, если он "си процессор"? Синтаксис - это ведь всего лишь про то, ставить фигурные скобки или begin/end, например. А то, на какой архитектуре будет крутиться полученная программа - другой вопрос. Сишка ведь не прибита гвоздями к x86. Если бы была архитектура, скажем, с аппаратной сборкой мусора, то ничего не мешало бы написать компилятор сишки и для неё. Или нет?
>>1554298 >А почему тогда возможно написать компилятор модулы/ады для x86, если он "си процессор"? Потому что Тьюринг Полная архитектура?
>Синтаксис - это ведь всего лишь про то, ставить фигурные скобки или begin/end, например. А то, на какой архитектуре будет крутиться полученная программа - другой вопрос. Сишка ведь не прибита гвоздями к x86 Еще как прибита.
Да, чисто теоретически любой тьюринг полный ЯП можно "скомпилировать" для любой тьюринг полной системы, но это зачастую непрактично.
>Если бы была архитектура, скажем, с аппаратной сборкой мусора, то ничего не мешало бы написать компилятор сишки и для неё. Или нет? Зависит от архитектуры. У Си программ, чисто синтаксически, есть требование доступа ко всему объёму памяти. А без указателей это уже не Си. Но ты конечно можешь эмулировать любой код. Но как бы, вся суть Си в том, что это такой продвинутый ассемблер, причём очень конкретный ассемблер.
>>1554234 > Американская Радиотехническая Корпорация шо? каво?
> Си процессоры Я конечно НЕ УВЕРЕН, но вроде бы процессоров, для которых C является аппаратным языком - нет, как-то обычно C в какой-нибудь язык ассемблера компилируется.
> Кроме очевидных империалистических интересов американской промышленности, есть мнение, что си продвигался именно в виду своей ублюдочности, чтобы только крупные корпорации могли осиливать сложные проекты. А, кхм, ясно. Нам нужна своя, революционная и контримпериалестическая индустрия ПеКа.
> первый 32хбытных процессор интела умел безопасно управлять памятью Опять же, Я МОГУ ОШИБАТЬСЯ, но первым 32-битным CPU от интел был 80386, который (как и современные процессоры) x86?
Короче, ты какой-то вообще больной, не пиши сюда больше.
>>1554354 > Я конечно НЕ УВЕРЕН, но вроде бы процессоров, для которых C является аппаратным языком - нет, как-то обычно C в какой-нибудь язык ассемблера компилируется. Где-то я слышал, что современные процессоры затачивают именно для эффективного выполнения кода, скомпиленного из C. Наверное, речь про это, но я не до конца понимаю, как это вообще возможно, может, речь про соглашения о вызовах функций, которые как-то аппаратно оптимизируются.
>>1554366 >Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров.
В принципе, если бы Си в свое время догадался забанить невыровненный доступ к памяти (ну или разрешил только через костыли), то наши процы были бы в пару раз проще.
>>1554366 >Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров. В мире победивших Си процессоров на рынке массового компьютинга - да. А вообще, нет. У тебя есть задачи которые нужно решать, под них разрабатывается железо.
>>1554366 >Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров У нас точно системного программирование тред? В котором знатокки сишки и аппаратных архитектур? https://en.wikipedia.org/wiki/Reduced_instruction_set_computer >In the mid-1970s, researchers (particularly John Cocke) at IBM (and similar projects elsewhere) demonstrated that the majority of combinations of these orthogonal addressing modes and instructions were not used by most programs generated by compilers available at the time. >Some aspects attributed to the first RISC-labeled designs around 1975 include the observations that the memory-restricted compilers of the time were often unable to take advantage of features intended to facilitate manual assembly coding, and that complex addressing modes take many cycles to perform due to the required additional memory accesses. Для тех кто в танке, речь идёт о Си компиляторах.
>>1554434 В Си нету никакого управления памятью и контроля доступа как явлений. В Си и Си процессорах ограниченная поддержка рекурсии. Это так, с ходу, самое очевидное.
Как именно, и зачем, ты собираешься писать на си под стековые процы или тегированную память вообще непонятно.
Си имеет смысл только как обёртка над очень конкретным и очень скудным набором команд. Си код a = c + b буквально означает захуярить b и c в регистры, послать команду ADD, и результат захуярить в память по конкретному адресу.
>>1552813 Потому что у тебя там константы. Ты хоть через жопу переподвыподвернись, но константы не перезаписываются, потому что они — константы. Вот если ты напишешь так:
let mut a = 5; a += 1; let a = a + 1; То конпель тебе просто замутирует уже существующую переменную в последнем let.
>>1554360 Процессоры не затачивают под языки выше уровня 10101010010111100. Даже асм для процессора высокоуровневый, ему сразу байты подавай, а в асме ты сперва строчки пишешь, чтобы в байты потом превратить. Сишка так быстра только из-за gcc, где оптимизации под каждый отдельный процессор. Тогда почему же почти все языки кроме си и крестов юзают LLVM, спросишь ты? Потому что удобнее. Выбирая между микрооптимизациями GCC и удобством LLVM, где и относительная простота написания компилятора, и кроссплатформенность без ебли, ленивые людишки выбирают последнее. К тому же, новые версии раста выходят каждые шесть недель, там просто времени нет на каждый плюх в код компилятора ебаться с GCC. Мы же не каждые три года новую версию выпускаем, как некоторые.
>>1554693 >В Си и Си процессорах ограниченная поддержка рекурсии.
У тебя есть запеченный процессор с конкретным количеством регистров, ограниченным количеством памяти и ограниченным размером стека. Как ты некую неограниченную рекурсию собрался делать?
>ты собираешься писать на си под стековые процы
Также, как работают компиляторы Си на существующих стековых процессорах.
> тегированную память
А это вообще вредная херня. Динамик диспатч на уровне примитивных команд, вообще офигеть. Ты как это конвееризировать собрался, если не знаешь, какую операцию выполняешь на каждом шаге?
>>1555310 Вкатываюсь в хеллоуворлды на ассемблере чтобы понять че происходит Мне все еще кажется что после всех оптимизаций мутеть одну фегню эффективнее чем двигать поинторы но хз
>>1555360 Смотри, есть такая строчка: `let s = "qwerty";`. Теперь давай посмотрим на тип переменной `s`. Она имеет тип `&'static str`. Эта ссылка состоит из двух usize переменных — указателя и длины. А теперь следи за руками: те данные, на которые указывает эта ссылка, являются константой. Они хардкорно записаны в исполняемый файл (например, .exe) и подгружаются в кеш при запуске программы. Ты не можешь их поменять, потому что не можешь. Поменять ты можешь только саму ссылку, чтобы она указывала на какую-то другую строку с другими длиной и адресом. Но откуда ты узнаешь адрес и длину? Тебе их надо либо прочитать, либо посчитать. А потом куда-нибудь записать. Но чтобы записать эти два новых usize элемента в твою f, тебе надо помнить положение f в стеке. Так что там почти похуй, перезаписывать старое или пихать новое.
>>1555463 длинуто ты откудо берешь? на сколько я помню &str указывает на саму строку, а не ее длину, соотвественно что-бы подсчитать длину, тебе нужно пройтись по всей строке в поисках '\0'
>>1555465 Нет, size_of::<&str>() выдаст тебе в два раза больше, чем size_of::<usize>(). Говорю же, длина с указателем там хранится. А вот как оно считается при загрузке в кеш — хуй знает. Но вроде должно тоже по длине брать данные. >>1555466 Пожалуйста.
Не понимаю как до 0.5 обновить поменял инит и вызов нью на простое импл дефолт и поменял билд на билдер и финиш рун на билд енд старт Оно работает но какие-то лаги на драг енд дропе чяднт
Крайне сложно представить себе реальный проект в котором писать Rust было бы экономически оправдано. Вся структура языка заточена на то, чтобы вынуждать человека указывать достаточно низкоуровневые подробности не тогда, когда это действительно нужно, а ПОСТОЯННО. Исключение где Rust может быть реально полезен могут составлять только Embedded и hard real-time системы. Однако это капля в море разрабатываемого софта. На Rust нельзя написать ни одной программы, не имея хорошего понимания lifetime & ownership. Это автоматически делает его очень сложным. Так же стоит отметить очень свобразный апострофо-кавычечный синтаксис Rust значительно усложняющий написание кода. D в этом отношении гораздо проще и универсальнее. К тому же в D есть режим betterC позволяющий использовать ручное управление памятью и сводящий 80% преимуществ Rust к нулю.
Что значит слово Rust?
коррозия; ржавчина моральное разложение; коррупция, продажность вредное влияние безделья, бездеятельности (на характер, способности) ухудшаться, портиться, притупляться, вырождаться (от бездействия) притуплять, ослаблять (память, ум) томиться от безделья портить, развращать, разлагать
>>1556347 > Крайне сложно представить себе реальный проект в котором писать Rust было бы экономически оправдано. с чего бы? представь себе такой хайлоад сервер, где каждая наносекунда важна, и всякая поебот на типо жаба с ее конченым GC там нн будут даже рассматривать. из вариантов: С - неподойдет, nuff said. C++ - у него был шанс, но изза ебаннутых бесполезных абстракций, отсуствия нормального ADT и прочей непродуманной хуйни он не подошел. Rust - имеет хороший рантайм футурок от tokio, нормальный ADT изподкоробки, удобный и продуманный std, идеальная парадигма контроля памяти ownership, скорость исполнения иногда превосходит си, при том на си нет допустим веб говна, а на расте как нехуй делать, вывод: раст является САМЫМ ОПТИМАЛЬНЫМ РЕШЕНИЕМ ДЛЯ ВЕБ СЕРВИСА
пруф в виде актикса загуглите сами web frameworks benchmark
>>1556347 Спорить с жирной пастой бессмысленно, но всё же я скажу, что любой убогий язык, на котором есть куча либ, в миллионы раз лучше прекраснейшего языка, на котором нет ничего. Где хотя бы D-тред?
>>1556402 >Где хотя бы D-тред? Ультра годноту прилюдно обычно не обсуждают. В sn, например, одни графоманские пасты. В sci нет тредов про эфир. В math нет арийской математики. В spc нет тредов про лунный заговор. В ra нет тредов про БТГ. В re нет треда про реализм.
>>1539530 (OP) Так, блять. Ржавчина же заявлена как системный язык. Какого хуя это говно не компиляет нормально под Win XP? Это просто ебень какая-то. И нахуй он нужен, если требования к ОС жёстче, чем у какого-нибудь дотнета?
>>1562684 > нормальную ос Ну и нахуй тогда все эти "системные языки" нужны? Можно сразу брать какой-нибудь "нормальный язык", которому нужно "нормальное железо", например жаба или питон. Системные языки на то и есть, что должны быть максимально неприхотливыми, как сишка. Тогда при чём тут вообще сабж? Получается, раз он не решает свои задачи, у нет нет области применения?
>>1562917 >Системные языки на то и есть, что должны быть максимально неприхотливыми Ну так он максимально неприхотлив — к железу, что от системного языка и нужно. А нахуя кому-то допиливать компилятор и рантайм ради депрекейтед даже самим микрософтом системы — я хз.
>Получается, раз он не решает свои задачи, у нет нет области применения? Кстати, а последний сишный компилер от майкрософта хотя бы поддерживает эту XP? (нет) Вот и подумай что ты сам сейчас высрал.
>>1562953 Разумеется, легче думать, что раз кто-то что-то там задепрекейтил, то сразу же у всех волшебным образом апгрейднется железо. И нечего поддерживать не надо, 100% пользователей - айтишники, которые могут с этим справиться сами. И кроссплатформенность никому не нужна, одни проблемы от неё, пусть все на винде 10 сидят.
>>1562953 > А нахуя кому-то допиливать компилятор и рантайм ради депрекейтед даже самим микрософтом системы — я хз. Вот с таким отношением энтерпрайз никогда на это не перейдет. Проще писать на нормальном языке, чем апгрейдить ОС и железо ради ржавчины, лол. А это говно только и будет использоваться анальными корпорациями, которым надо продавать новый продукт, а не поддерживать старый. Раст даже в опенсорсе не в почёте, его из libre-систем выпиливают как блоб, ведь карго не умеет в офлайне собирать и тянет с проприетарных серверов неизвестно что. Разве что в бсд напердолили груду костылей, чтоб заставить это говно собираться без интернета. > Кстати, а последний сишный компилер от майкрософта хотя бы поддерживает эту XP? (нет) Предпоследний поддерживает в 2017 студии. Раст никогда не поддерживал. Да это и не только на Винде, например ржавчина не поддерживает на Линуксе ядра ниже 3.9. Никто не будет тратить кучу денег ради апгрейда под какой-то там ЯП. Вот тот анон правильно написал, это ничем не отличается от апгрейда железа под жабу. Тот же сегмент POS до сих пор на половину работает на Windows XP Embedded или даже старше. Если у кого-то есть хотя бы какая-то часть таких машин, то Раст сразу автоматом идёт нахуй.
>>1563012 что ты несешь содомит? растодевы не будут тратить время и силы на поддержку старой параши, ибо на старом железе оно будет овердолго компилиться.
Что не так с обSerde? Делаю структуру с вектором других структур, в поле с вектором толкаю вектор из пары элементов и что я вижу? В жсон-выхлопе только первая структура. При этом в консоли компилятор ничего не говорит, ему норм. Неужели постоянно в этой кривой поделке такое будет? И как мне накостылить нормальную сериализацию?
>>1562985 Так, а как связана поддержка и написание нового софта, мань? Сиди меси своё легаси на сях старых стандартов, нахуя тебе там раст? Для софта, юзаемого офисным планктоном, он действительно нахуй не нужен, а на сервере шиндовс используют только те, кто повёлся на хайп с дотнетом, и у них там свой мир, где мс пилит свой раст, лол.
>Разумеется, легче думать, что раз кто-то что-то там задепрекейтил, то сразу же у всех волшебным образом апгрейднется железо Ну так у этих оставшихся за бортом пользователей и нет выбора, кроме как обновляться или идти нахуй. Поддержка XP дропнута больше 5 лет назад, любая уязвимость и все дружно идут нахуй в случае отказа от обновления.
>>1563012 >Вот с таким отношением энтерпрайз никогда на это не перейдет А нахуй энтерпрайзу раст-то, додик? Много системных штук твой энтерпрайз делает? Я что-то ни одной не видел.
>Проще писать на нормальном языке, чем апгрейдить ОС и железо ради ржавчины, лол. Ещё раз — это нихуя не добровольный процесс, вот прям совсем. То, что на твоём заводе юзают XP — не от адекватности явно.
>А это говно только и будет использоваться анальными корпорациями, которым надо продавать новый продукт В случае с сишным софтом почти всегда легче выкинуть нахуй и переписать с чистого листа, чем ебаться с поддержкой костылей для железа и систем которые используют полтора додика. Так забавно наблюдать, как красноглазый аутист пытается изворачиваться чтобы не признавать практичности этого подхода, лол.
>Предпоследний поддерживает в 2017 студии Ну, последняя версия плюсового компилятора для XP — 2012, причём его вместе со старым рантаймом надо докачивать в инсталяторе отдельно и настраивать проект для сборки. Блядь, даже мс, сидящая на 80% на легаси говне уже пытается убрать это депрекейтед говно подальше от себя.
>Никто не будет тратить кучу денег ради апгрейда под какой-то там ЯП А их кто-то спрашивал? Либо они будут тратиться сейчас, либо потом программисты на си будут получать как ппрограммисты на коболе, а с учётом багов и уязвимостей которые прилипнут за всё это время, издержки энивэй будут выше если не обновлятся, я хз чем ты недоволен.
>Вот тот анон правильно написал, это ничем не отличается от апгрейда железа под жабу В случае жабы апгрейд железа даёт только немного перформанса, а в случае древнего говна, которому настолько дохуя лет, что на нём не заводится ядро старше 3.9, это даст вот прям дохуя перформанса и ещё кучу других плюшек вроде облегчения поддержки и меньшего штата кодеров для поддержки этой хуйни, правда вот как это посчитать или объяснить кому-то до того, как такая проблема ударит по бюджету — непонятно.
>Тот же сегмент POS до сих пор на половину работает на Windows XP Embedded или даже старше Ииии... Нахуя тебе там раст? В смысле, на старых кассах, которые и без того работают? В твоих мухоёбинсках где такая куча такой старой залупы, ей даже в сеть смотреть не нужно. А в дсах сплошь и рядом новые терминалы, в которых и paypass, и прочие атрибуты пост-бумерской эпохи есть, и работают они уже не на XP.
>>1563012 >ведь карго не умеет в офлайне собирать и тянет с проприетарных серверов неизвестно что Бля, какой же это рарный вин. Пакетный менеджер что-то откуда-то тянет, посоны! Он же не для того нужен-то!
>>1563081 Там ты же это, за линупсы там, против пропиетарщины, опенсурс все дела. В чём проблема тянуть всё руками и редактировать конфиги когда стянул и проверил? Юникс-вэй жеж. Ты кстати довно в ядро заглядывал? Телеметрии не запихнули случайно?
>>1563450 Ох, блять. > Я что-то ни одной не видел. Ты его вообще видел? > В случае с сишным софтом почти всегда легче выкинуть нахуй и переписать с чистого листа, чем ебаться с поддержкой костылей для железа и систем которые используют полтора додика. Только в твоём манямирке, где софт пишется за месяц, а клиенты готовы тратить миллионы на ненужное им железо, которое и сейчас нормально работает. > А их кто-то спрашивал? Скорее кодеры пойдут новую работу искать. Вот их уж точно не будут спрашивать, хотят они под древнее железо писать или нет. Я уже видел один прецедент, въехавший на рынок с модным комбайном на дотнете и жидко обосравшийся от отсутствия клиентов с железом под их говно. А потрачено на разработку было несколько лет. > ей даже в сеть смотреть не нужно. Налоговая уже два года как ебёт за такое. Хотя за МКАДом всё возможно... > А в дсах сплошь и рядом новые терминалы, в которых и paypass, и прочие атрибуты пост-бумерской эпохи есть, и работают они уже не на XP. Это ты из головы взял? Большинство банкоматов на XP, половина ДС на говне мамонта сидят, которое даже семёрку не вытянет. До сих пор DOS используется в POS, если ты не в курсе. Ты удивишься, но эту срань поддерживают в 2020 и даже апдейтят под новые законы. Никто не будет тратить деньги на новое железо, переучивание персонала, покупку софта и обслуживание его просто потому что какие-то пердолики решили не делать нормальную совместимость. Ты вообще в курсе во сколько встанет только обновление 1000 машин под свежую ОС? Кто за это платить будет? Кто обновлять будет? > paypass Какое отношение эквайринг имеет к ОС?
>>1563501 И зачем туда лезть то? Работает как-то, ну и заебись, даже если с дохуя правильной сишкой или чем угодно туда лезть, то оно всё равно будет никому там нахуй не нужно. Пусть спокойно отгнивает. И хп, и дос, и коболы всякие.
>>1563501 >Какое отношение эквайринг имеет к ОС? Какое отношение POS имеет к ОС?
>Ты его вообще видел? Системный софт? Да дохуя. Но делается обычно не теми компаниями, которые называют "энтерпрайзом".
>а клиенты готовы тратить миллионы на ненужное им железо, которое и сейчас нормально работает. Ну просто проебут на поддержке больше, как и те, что не захотели слезать с коболо, но мне лично похуй, а тебе?
>Скорее кодеры пойдут новую работу искать Ну, я из такой галеры сам съебал бы, благо что выбора дохуя.
>Налоговая уже два года как ебёт за такое. Хотя за МКАДом всё возможно... Ну я не с 1С работаю (видимо, в отличие от кое кого), прости, не знал таких подробностей.
>Ты удивишься, но эту срань поддерживают в 2020 и даже апдейтят под новые законы. Никто не будет тратить деньги на новое железо, переучивание персонала, покупку софта и обслуживание его просто потому что какие-то пердолики решили не делать нормальную совместимость Ты удивишься, но что налоговая, что почта сидят на новом софте (с этих двух парашах я сам был свидетелем этого). Правда, железо-то почти никто не обновлял, ибо деньги видимо ушли на жоповозки и жопогрейки главных кабанчиков, и клерки люто хейтят всю эту новую хуйню, лол.
>Ты вообще в курсе во сколько встанет только обновление 1000 машин под свежую ОС? Кто за это платить будет? Кто обновлять будет? Ну как кто? Клиенты.
Анонзы, такой трабл. Есть, короч, макрос, которой рекурсивный. Ну, тип, такой MACROS![a,b,c,d] трабл в том, что эти abcd у меня лежат в векторе v, а реально их не 4, а гораздо больше. Может кто подскажет, как развернуть вектор вовнутрь макроса значениями, если их число заведомо известно? Скажем, для 9 значений чтоб можно было написать что-то типа такого: MACROS![unroll_nine![v]] что ни делаю - всё какая-то хуйня получается.
>>1564050 $foo:tt вместе со скобочками не пробовал? Хотя я не понимаю, нахуя надо анроллить вектор в переменные. Чего тебе от этой фигни надо? Есть же remove() и swap_remove().
Вообще, рекурсивные макросы такое себе, там же потолок низенький на рекурcию. В залуп никак не превращается?
В общем, рассказывай, нахуя тебе анроллить вектор, тут без примера не разберёшься.
>>1566063 > #![allow(dead_code)] > #![allow(unreachable_code)] Сигнатура файла в формате .rs блеать. Какой вообще смысл по умолчанию это запрещать, если все всё равно в начале каждого файла пишут директивы для выключения этих запретов? Почти как в перле с его use strict/use warnings.
>>1566467 Лол, но нет. unused_imports под use super::*; в тестах или в автореф макросах, но никак не на весь файл. Дед код никогда не разрешал, а анричебл только однострочные паники или ретёрны после бесконечного лупа, так, на всякий случай.
>>1562210 > ещё ни разу никто не написал, что эти шприцы означают. Зумера... Гугли box plot или "ящик с усами". Это классика, школьник, это знать надо!
Можно ли на расте писать в функциональном стиле? На работе плюсы+питон выдался перерыв, и я в какой-то момент от безделья загорелся функциональщиной: чистые функции, ссылочная прозрачность, вот это все. Раст с его запретами на кучу мутабельных ссылок и временами жизни пока что для меня выглядит как идеальный кандидат под это дело. Сам сложнее калькулятора ничего на нем не писал, да и тот скопипастил будучи студентотой два года назад.
>>1574191 Да мне просто интересно, откуда в плюсах появляется новая кровь тогда, если там все сразу миддлы. Вот умрут все миддлы и сениоры от старости, кто их говно поддерживать будет? А новое писать?
> Issue history summary: > > Found by Shnatsel > Closed as harmless to users by fafhrd91 > Proven harmful to users by Nemo157 and reopened by JohnTitor > Fixed and closed by fafhrd91 > Proven unfixed and proposed new patch by Nemo157 > New patch commented "this patch is boring" by fafhrd91 > Issue is deleted > Fix is reversed by fafhrd91, issue still present >
>>1574884 Бежал бы ты с актикса. Мейнтейнер необучаемая микрософто-обезьяна. Мало ему было прошлого раза, так он опять устроил хуйню с "ваш патч скучный".
Но вообще меня интересует, пишет ли кто под WASM на расте.
>>1574191 >А говорили, что на крестах джуны не нужны. Что там дядьки старые 10-20 лет опыта. Старые дядьки хотят много денег, их увольняют, или сами уходять. А дерьмокод высерать нужно. Так что спрос на студентиков в крестах большой, в дьмогеймдев в основном.
Я как вспоминаю одну геймдев контору, в которую я не прошёл собез, так страшно становиться, какой-то бомжатник, зп днищенские, хрюша ебнутая, всё в каком-то полумраке, офис холодный.
Правда была как минимум одна хорошая контора, чисто внешне, тепло уютно, правда она филиал какой-то европейской. И в то время, в 2012, они уже во всю набирали жаваскрипт девелоперов.
Типичная поделка крестопрограммистов это например МИР ТАНКОВ, которому виндовс рунртайм длл нужен, даже представлять страшно какой там дерьмокод внутри.
Вот, пожалуйста! Отличный пример коммьюнити раста - набежало сэжэвэ и начало ныть, мол "а чего это ты удалил проект, ммм?!!! ты подставляешь коммьюнити!!!! а ну вертай все взад!!!".
>>1576185 Хорошо же. Пердаком дева можно греть целую планетарную систему теперь. А если этот омежка вернёт проект, то это шин вообще будет. Одни плюсы, бомбит и работает бесплатно.
Суть в следующем: "Наша команда Immunant любит Rust и активно работает над C2Rust — фреймворком миграции, берущим на себя всю рутину миграции на Rust."
Я офигел, это же автоматическое воровство кода растом в промышленных масштабах! В комментах кто-то проверил: $ find ~/prog/ioq3 -name ".rs" | xargs cat | grep unsafe | wc -l 9241 $ find ~/prog/ioq3 -name ".rs" | xargs cat | grep fn | wc -l 9740
В переводе с баша на русский: в коде 9740 функций, из них 9241 - unsafe.
>What sews resentment is being repeatedly dismissive of serious problems, as we're seeing with this hackish use of 'unsafe' features - that's an attitude that diminishes the self-worth of others. Ебанутые фанатики, поборники ЦЕЛЬНОСТИ развалят раст к хуям. вижу ансейф @ тригерюсь
>>1576679 Хз, я там в подробности не вникал, но если нет очень конкретных причин использовать унсейф, то делать этого очевидно ненужно. Я привык байтоебить мне лень ваш раст изучать - это не весомая причина.
Как я понял, при использовании этой библиотеки может возникать неопределённое поведение, что есть гроб кладбище пидор.
Подобная хуйня как раз одна из тех проблем с которыми раст призван бороться.
Потому что маленький кусочек дерьмокода может скомпрометировать целый огромный стек.
https://habr.com/ru/post/484436/ Я хоть не любитель раста, но в восторге что погнали санными тряпками говнокодера, который делал продукт ради бенчмарков. У гоферов бы такое комьюнити. Мое уважение
А теперь по теме. Стало очевидно, что оставив возможность unsafe раставчане тупо оставили окно в С++. Теперь нельзя быть уверенным, что в очередном йоба-проекте, очередной йоба-разработчик не захочет говнить unsafe кодом. Вы потенциально оставили дверь черного хода открытой. Мои поздравления
А с унсейвом там не то. Дело не в том что там унсейв как таковой, а унсейв там ломающий компилятор, тоесть там 'хак', который в любой момент может начать приводить к сломанному коду на выходе. Автор использует этот хак чтобы срать буквально сишкой уже. Это не преднамеренный функционал, это неверное его использование.
>>1577288 Несомненно. Но это не отменяет факт, что хабр всегда был вторичной парашей для недалёкого быдла, а сейчас это просто форум с посредственными переводами англоязычных статей.
>>1577296 >Но это не отменяет факт, что хабр всегда был вторичной парашей для недалёкого быдла Илитарий закукарекал. Хабр это пока что лучший ресурс по АйТи на русском языке. Не согласен? Назови альтернативы (спойлер: ты не сможешь)
>>1577241 >Забавно что эти как раз таки и смогу сделать что-то годно и юзер-френдли. В-е-н-д-о-р-л-о-к. Даже при игре в опенсурс, однохуйственно там и рантайм лучше будет на винде, и фичи по требованию мс будут моментально попадать в язык минуя коммунити (как у эпла с последним свифтом), итд.
>Чет не нашел. Там рили хотят ООП или просто типы? https://tutorial.ponylang.io/types/classes.html Наследования в том же пони нет, у них в примерах тоже. Это типы, на какой-то хуй названные классами. Очередной триумф парадигмы над практичностью, шо.
>>1577453 >В-е-н-д-о-р-л-о-к. Выбирайся уже из криокамеры, дотнет 5 будет полностью кроссплатформенный (смотри в новостях), то есть net core станет основным. Есть годный typescript, vscode. Что что, а мягкие умеют делать инструмент для разработчиков (и да, по тестам уже сейчас net core в достойном топе)
>>1577580 Хз, не сижу на хабре. Но видел, что наши программисты пилят компиляторы какие-то, лекции о нужности языка делают и тд. Только выглядит это всё плачевно на фоне того же vlang, который создал один человек. Будто не могут нормальный кроссплатформенный компилятор написать.
>>1577658 Когда ещё те хипстеры в конце 2000-х - начале 2010-х вовсю рубили на рельсах, уже тогда я предрекал руби ненужность и даже немножк его хейтил. Почему? Да потому, что ещё один питон, только с кучерявым синтаксисом. А питон тем и хорош, что это такой единый скриптовый язык для всего, с кучей батареек. Вот эти все альтернативные языки примерно о том же - не взлетят, покуда не предоставят принципиальных отличий от уже имеющихся. Вот когда появится такая тема: прогеры всего мира: "Боже, как мы заебались с проблем-нейм, половина рабочего времени на неё уходит" авторы нового языка: "Чуваки, ай-да к нам, у нас есть решение для проблем-нейм" тогда можно паковать манатки. А до тех пор никто не будет валить на эти языки с языков с коммьюнити и кучей готовых либ.
>>1577828 Руби более продвинут, чем унылый высер Гнидо Обоссуна. Пердон взлетел потому что это легкая встраиваемся параша, которую может взять любой человек, даже не являющийся программистом и напердолить быдлоскрипт по фасту. Приблизительно по той же причине, например, рнр был сверхпопулярным языком в вебе.
Не знаю о каких принципиальных отличиях ты говоришь. Принципиально есть несколько парадигм, несколько систем типов, конкурентных моделей, видов полиморфизма и все. Все остальное это детали, а не что-то принципиальное.
>>1577996 >рнр был сверхпопулярным языком в вебе. Его популярность была в том, что не надо было писать веб на сях или перле, при этом ты писал как на упрощенных сях. Ну и конечно удобная реализация на хостинга.
Питон в те года выглядел как нонейм с экзотических синтаксисом и экзотическими проблемами поехавшего одиночки, до версии 3 было далеко, а пхп уже с 5 версии стал вменяемым (питон и с 3 версии не особо стал адекватным). Сейчас питон имеет тучу всяких фишек, но все как-то через одно место, через грязные фантазии Гвидо, видимо.
>>1577996 >Руби более продвинут но он не настолько продвинут относительно питона, как раст относительно сей/плюсов. Т.е., он не решает каких-то настолько принципиальных проблем , чтобы на него вот прям массово повалили.
>легкая встраиваемся параша не легче lua, не в этом дело.
>>1578759 Ну еб вашу мать. Только решил на работе начать проект на актиксе - на следующий его снесли. Только начал проект на варпе - актикс вернулся. Пидоры хотя варп очень даже неплох на самом деле
>>1579075 Брать для работы и бизнеса низкокачественные продукты, каких-то херов, которые то обижаются то не обижаются и пишут код чисто под бенчмарки почти как на си?
Это все что может дать раст за эти годы, этот кустарный уровень производства?
Даже го со встроенным http выглядит не так ущербно.
>>1579174 Посто в раст набежало крестовиков и сидебилов у которых и гото это норм. Это было неизбежно видимо. Пройдёт время и они переварятся. Бугурты и профиты со всякими артиксами это хорошо, значит сообщество живое и активное.
>>1579174 >>1579223 Кстати, это всё вскрывает истинную суть байтоёбов, сишников и крестовиков, они просто неумеют в структурированное программирование. Дело не в контроле байтиков, а в том что эти овощи вообще не думают о пробллемах вроде ошибок доступа к памяти, когда высирают очередную лапшу. Отсюда столько багов с выходом за границы буфера блядь в 3жды переаудитином ссл или любой другой ключевой либой.
>>1579174 > Брать для работы и бизнеса низкокачественные продукты, каких-то херов, которые то обижаются то не обижаются и пишут код чисто под бенчмарки почти как на си?
Well, обычно при выборе либы я смотрю на количество звездочек/коммитов в репозиторий, а не на треды на реддите. Возможно стоит пересмотреть свой подход.
> которые то обижаются то не обижаются
А мы же помним еще про left pad, да? Думаю тут проблема не конкретного языка все таки.
> Это все что может дать раст за эти годы, этот кустарный уровень производства?
Ну да. Без нормального использования в продакшене нихуя и не появится. Причем так, чтобы сами конторы коммитили обратно в open source.
> Даже го со встроенным http выглядит не так ущербно.
Раст - убийца си и крестов. Скриньте, через лет 10 весь системный софт будут писать на нем, и огромная часть проблем (бинарные эксплуатации тащемта) уйдет в историю, так как уж больно мощный импакт у таких атак. А софт, написанный неговнокодером на расте, заовнить практически нереально, все типы переполнений и гуляющих указателей идут строго нахуй. Хз чего вы ополчились против ржавого
>>1579429 > > benchmark > > hello world Ты бы хоть разобрался ради чего он. > > в растокоде используется макрос, который оверхуилядр раз перевыделяет память Напиши свой пример.
>>1579421 Какая нахуй разница в 0.0000000000001 наносекунду, если на расте можно писать безопасный код, в отличие от Си? Железо сейчас куда мощнее, чем в 70ых, эти 0.00000000001 наносекунды не имеют никакого значения даже в хард РТ проектах, если тебе при этом дается буст в 300% в плане безопасности.
>>1579524 дальше то что? в примере си использует вывод статичной строки через puts, пока раст раскладывает твой println в еще дохуилен аллокаций, строк и прочего...
если коротко: было бы куда честнее использовать в си printf или в расте еще дописать функцию для вывода
>>1579560 >скриптопараша и гц не годятся для системного программирования, в скриптопараше не находят бинарные уязвимости
У скриптопараши и GC основная проблема - это проблема Мюнгхаузена, что бы написать на них операционную систему нужно что бы операционная система уже была написана, а вовсе не проблемы с производительностью.
>>1579421 println! в паре с opt-level=s, а чувак ещё и удивляется. Просто какое-то уёбище, которое смогло выучить три команды на ассемблере пытается что-то кому-то доказать, но не может даже элементарно прочитать, что делают команды компилятору и почему раст по дефолту импортит std prelude, а в эмбеддед надо указывать #![no_std]. Вот когда у этого долбоёба стек переполнится, он охуеет это дебажить, а любой белый растер сразу узнает что случилось из ошибки. И вместо того, чтобы дебажить ассемблерный код и проблемы с памятью, в расте остаются только проблемы логики, которые изи ловятся юнит-тестами. К тому же в любой программе сложнее хелловорда компилятор оптимизирует лучше долбоёбов-ассемблероёбов, которые даже в кроссплатформенность не могут.
>>1579824 Ну, у Си сложность в вылавливании утечек, выходы за границы, UB и тд. Но синтаксиз не сложный. А у rust что? Подумываю для embedded вариант, но отпугивали мифы о сложности.
>>1579797 Смотри, есть две стороны сложности: сложно в обучении и сложно в бою. Раст сложен в обучении: сразу и борроу чекер и очень-ёбаный-рот-ты-не-можешь-сам-превратить-мне-i32-в-i64-почему-я-должен-сам-это-указывать-ебучий-ты-раст? сильная типизация, и деление на safe-unsafe, которое невозможно понять, не имея глубокого понятия UB. Но потом, когда ты ебошишь либу или программу, ты понимаешь, какие проблемы могут вылезти и почему они могут вылезти, поэтому они не вылезают, пока ты не обосрёшься с usnsafe'ом в своём коде или кто-то другой не обосрётся с ансейфом в либе, которую ты юзаешь. В си наоборот — выучил пару типов (инты, були, указатели), пошёл кодить. Но потом ты охуеешь, когда у тебя вылезет UB, а ты не знаешь, что такое UB и почему на одном компьютере твоя программа выполняется, а на другом крашится. В итоге ты вместо пары недель на обучение тратишь по дню на каждый новый баг. В итоге через четырнадцать багов ты проебёшь времени больше, чем на обучение по книжкам раста. А багов будет много. В крестах кроме тех же проблем, которые есть в си, ещё есть проблемы OOP, проблемы с тем, что вместо std либы надо учить boost и другие best-libs, которые ещё хуй найдёшь, ещё проблемы с линковкой, которые тоже охуеешь дебажить. Ещё в крестах надо учить best-practices, но ты не узнаешь про эти бест-практисы, если тебе кто-то другой не подскажет. А вот в расте все эти бест-практисы в книгах и учебниках уже есть. К тому же в расте вместо OOP, который часто убивает производительность (намного чаще и намного сильнее, чем ты думаешь), система трейтов. Трейты позволяют и множественное наследование и всякие другие вкусные штуки. Ещё есть макросы. Макросы сложны, но просто невероятно охуенны, когда ты научишься их писать. Они даже позволяют делать то, что нельзя пока что делать другим способом: https://github.com/dtolnay/case-studies
>>1579870 А кто мешает юзать что-то одно, пока не выучишь другое? Пока не выучишь итераторы, не юзай функциональщину. Пока не хочешь лезть в лоу-левел, не юзай императивщину. Но вот если ты делаешь функцию по типу fn foo<T>(iter: impl Iterator<Item=T>, other: impl Iterator<Item=T>) -> T { for _ in iter.zip(other) {/ do thing /} }
То тут надо уже знать, что такая штука хуёво раскладывается для Chain итераторов, и надо вместо этого писать iter.zip(other).for_each(|a, b| {/.../});
В общем, для неких вещей надо чётко понимать, что они могут и как работают. А так я не понимаю твоих претензий. Функциональщина удобна на хай-лвл кодинге, а императивщина на лоу-лвл.
>>1579870 Нет никакой разницы с современными плюсами. Кроме разве что той, что плюсовый компилятор тебя не бьёт по рукам за проёбы, и использует их для оптимизации собранного бинаря.
>>1579797 >Слышал, что rust сложный. На уровне C++, а в некоторых моментах сложнее. Миф? Правда не сложнее Си? Если ты на Си НЕ кодил, то тебе будет сильно проще чем если ты уже матёрый Си кодер. О сложности раста говорят Си мартышки, очевидно, которые просто не могут переобучиться. Они думают что это будет как Си, а это совсем не как Си.
>На уровне C++ С++ - помойка, нет ни одного компилятора реализующего стандарт, и нет 2х компиляторов реализующих одно и то-же подмножество стандарта.
Поясните, что такого безопасного делает раст, чего не может C++? Допустим у меня есть динамический массив на 10 элементов, и идет доступ к нему по индексу введенному пользователем. Пользователь вводит 1000 и программа соответственно крашится. Как от этого защищает раст? Компилятор ведь не может предугадать, что введет пользователь. Да, он может вставить проверку на размер этого массива, но что если дальнейшие инструкции программы зависят от этого самого элемента?
>>1580802 ну, тебе не обьязательно проверять длину массива, если ты используешь вектор то можешь на нем .get(idx) применить и получить опциональное значение
>>1580821 Так значит этот .get уже содержит проверку на индекс с условием возврата опционального значения. Но ведь я могу точно так же и в C++ написать функцию которая проверит индекс и вернет опциональное значение. Так в чем тогда заключается эта супер безопасность раста? Допустим вот такой псевдокод: vector array; array.reseize(10); a = array[228]; //228 было введено пользователем и неизвестно при компиляции a.field1 = 1488; В С++ такой код крашнет программу, а что будет в расте?
>>1580828 а, ну безопасность как раз таки не в твоих массивопарашах (олсо там просто панику вызовет при попытке индексировать массив за пределами, почему хз), а в бороучекере и строгих правилах передачи ресурсов.
Если коротко: у переменной может быть только один овнер, который если захочет позволит давать доступ к свой памяти (Rc, RefCell, Arc, Mutex etc). Вообщем на расте куда проще писать код в том плане, что компилятор тебя пошлет нахуй, если ты захочешь сделать к примеру глобальную переменную между потоками, так как такая переменная не будет иметь типаж Send
>>1580835 >Вообщем на расте куда проще писать код в том плане, что компилятор тебя пошлет нахуй, если ты захочешь сделать к примеру глобальную переменную между потоками, так как такая переменная не будет иметь типаж Send ну это имеется в виду любое, что Send типажа не имеет, к примеру любой примитивный тип, строчки.
А еще раст четко определяет лайфтаймы у референсов, тут нельзя как в си параше выделить поинтер и запихать его в овер9001 йоба структур, которые будут до конца жизни программы вертеться. если конечно изначальная переменная не статична
>>1580865 Так он же сам блять заюзал move семантику и передал ресурс другой переменной. Если бы он написал auto stolen = orig компилятор его бы тоже нахуй послал.
У кого-нибудь есть актуальные (2020 года) примеры actix-web + tokio-postgres? Как я понял, они в очередной раз переписали все и я на всех примерах ем говно ведрами. >error[E0495]: cannot infer an appropriate lifetime for autoref due to conflicting requirements Да пошел ты нахуй, сука-мразь.
>>1587428 self.client возвращает референс, а не значение. Ты не можешь собрать референсы в Box, потому что Box может жить вечно, а твои референсы живут только пока живёт &mut self.
>>1587794 Точнее, не self.client, а весь чейн, который начинается с self.client. Этот чейн возвращает референс с лайфтаймом как у &self, ты этот референс пихаешь в вектор, а потом пытаешься вернуть из функции эти референсы на временно созданные внутри функции итемы.
>>1587795 >>1587794 Я вчера примерно после третьей банки пива так и подумал, но спасибо, что смог это вербализовать, потому что у меня кроме "бля" и "пиздец" слов не было, настолько я преисполнился в своем сознании. Как же хорошо в Питоне было, сидишь, обмазываешься строками как хочешь... Теперь надо понять как эту хуету вылечить. И да, ты можешь как-то оценить тот код из бенчмарка, который я скинул выше? Почему он работает? Там же в https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Rust/actix/src/db_pg.rs#L114-L116 примерно то же самое происходят - берется self и его мемберы, пихаются в вектор, а вектор потом внутри футуры разматывается. Футура, в свою очередь, уже в хуй пойми какой зоне видимости.
>>1588521 https://pastebin.com/TqZEWfAJ Client и без Box тоже не работает, я уже от безысходности перебором начал решения искать, изначально Box не было.
>>1585300 >>1585292 Лет через надцать подросшее поколение кодеров будущего будет клясть на чём свет стоит старпёров-зумеров с их протухшими мемасиками и отсылочками в коде. А может и раньше, эти анимы выходят и забываются со страшной скоростью.
>>1590870 >еву Это как "Ромео и Джульетту" сравнивать с современными любовными высерами для чтения в поездах и залах ожидания. Немного утрирую, но суть та же.
есть ли либы типо image для асинхронного чтения картинок? нужно из мультипарта сейвить картинку и ее тамбнейл на лету, как такое сделать асинхронео в image или png крейтах я хз
Хочу запилить маленький веб сервис потоковой музыки/видео. Думаю вкатиться в раст, много слышал про него, да и сам по себе внешне нравится язык. Компилируется не так же долго и хуево, как кресты? Что там за особенность одиночной записи и множественного чтения объекта? Как полагаю, это и есть то самое, чому раст типа безопасен.
>>1594049 >раст типа безопасен Весь раст построен на unsafe, лол. О какой безопасности ты говоришь? Все бенчмарки, где раст рвет гоу, джава и дотнет - это просто авторы фреймворков и библиотек выдрачивали перформанс, переписывая проект на ансейф, лул.
>>1594181 > эти байты надо раскодировать, ибо картинка сжата ну то есть я представляю это как то так:
есть парсер png со всякими адам7, deflate и прочей жестью, оно на вход получает поток байтов и валидирует их, попутно обновляет состояние, кидает ошибку если нужно.
ну то есть обычный такой future::poll, вот только такого я увы не в image, не в png не нашел, даже просто закидывание байт без асинхронности, только если целиком все и сразу...
>>1594181 Ну заверни в нужный декодер свой стрим, оно будет налету декодировать твой deflate. А по поводу валидации - я не знаю формат твоих картинок, но вполне модет быть, что нельзя ничего валидировать, пока оно не будет все в памяти. Или пиши свою очень сложную хуиту, которая будет нлету проверять структуру байт.
>>1593923 https://github.com/image-rs/inflate вот, в том же image всё уже есть. В самом низу пример - он уже готов для асинхронности. Распаковал пачку байт - передал другому потоку на запись, а в текущем потоке продолжаешь распаковку.
Здравствуйте растияне. Как выглядит ситуация на данный момент в плане популярности этого языка? Вырасла ли она за последние годы или осталась прежней? Я слышал, что бэкенд Дискорда на Раст переписали.
>>1597262 Ну, вот собрался ты свою распаковывалку deflate потока писать. Берёшь и без задней мысли хуяришь прямо на диск всё, что там нараспаковывалось в inflate - а там терабайт нулей. Эт во-первых. А во-вторых, извлекать поток прямиком на запись ещё и бессмыссленно, т.к. ФС всё равно будет буферизировать данные в памяти и только потом скидывать на физический носитель сразу крупными пачками. Проще и безопаснее принять данные, валидировать, а уж потом куда-то там писать или не писать.
>>1597277 В пнг вроде зипа нет. Зачем картинки читать вообще на сервере? Стандартные либы не имеют этих защит?
>>1597278 >Ну, вот собрался ты свою распаковывалку deflate потока писать. Нет спасибо.
>Берёшь и без задней мысли хуяришь прямо на диск всё, что там нараспаковывалось в inflate - а там терабайт нулей. Эт во-первых. Ну тип элементарная проверка соответствия размера распакованного с указанным в метаданных.
>Проще и безопаснее принять данные, валидировать, а уж потом куда-то там писать или не писать. Наверное. Думаю все же стримить в файл сразу разумнее, случаи невалидности по определению будут крайне редки. Лишние буферы раздувать то же не самая хорошая идея..
>>1597288 > Наверное. Думаю все же стримить в файл сразу разумнее, случаи невалидности по определению будут крайне редки. Лишние буферы раздувать то же не самая хорошая идея.. так прямо on the fly не ? получил с мультипарта данные, завалидировал, загрузил куда надо, еще и успеешь сохранить части тамбнейла на диск
> В пнг вроде зипа нет. > Зачем картинки читать вообще на сервере? тамбнейлы
> Стандартные либы не имеют этих защит? ну кто знает...
>>1597308 >так прямо on the fly не ? получил с мультипарта данные, завалидировал, загрузил куда надо, еще и успеешь сохранить части тамбнейла на диск Я немного не пони о чем ты.
>>1597329 >превью картинки, исходная допустим 1024х1024, а тебе нужно отобразить уменьшенную версию 256х256 Да, это понимаю. Я твоей фразы в принципе не понял. Что ты конкретно предлагаешь? Или спрашиваешь у меня?
>>1597308 >еще и успеешь сохранить части тамбнейла на диск Смысл распаковки, обработки и записи на лету есть только для больших данных, типа видео, например - вот там разрешаю, делай. А тамбнейлы твои всё равно будут копиться в памяти и фактически писаться на диск по мере накопления буфера на запись. И без разницы, где именно будут копиться данные - в памяти твоей программы, или в буфере ФС. Твой тамбнейл всё равно ни кому не дался, пока не будет сохранён полностью - тут ты и в раннем начале записи ничего не выигрываешь. Только переусложнишь код и создашь лишнюю нагрузку.
>>1597345 > А тамбнейлы твои всё равно будут копиться в памяти не будут, мы будем доставать байтики, уменьшать в n раз и сохранять на диск, хотя словарь будем хранить полностью как я понимаю
>>1597345 > Только переусложнишь код и создашь лишнюю нагрузку. ну почему же? скорость до клиента маленькая, и если подумать, то когда приходят байтики ты просто часть обрабатываешь и наслаждаешься. в итоге можно аж секунды времени сохранять для каждого запроса
>>1597353 >в итоге можно аж секунды времени сохранять для каждого запроса У тебя накладные расходы на асинхронное взаимодействие "поток распаковки" -> "поток тамбнейла" отожрут процессорного времени куда больше, чем ты сэкономишь по сравнению со сжатием сразу готовой картинки. Хотя, для очень больших картинок возможно будет смысл резать их порциями по ~1МБ
>>1597350 >доставать байтики, уменьшать в n раз и сохранять на диск я так понимаю, знаний о том, как устроены современные ФС, у тебя нет от слова совсем.
>>1597368 >я так понимаю, знаний о том, как устроены современные ФС, у тебя нет от слова совсем. Но ведь современные фс сделаны специально так, чтобы не нужно было знать, как они устроены..
>>1599473 Лан, распишу подробнее. Современные ФС (и не очень современные) не пишут байтик сразу на физический носитель как только тебе это приспичило - сперва операции на запись копятся в кеше в оперативе. Отсюда первый вывод: в плане экономии памяти нет разницы - что ты будешь сразу писать по байтику (по сути в кеш в оперативе, а не на диск), что создашь тамбнейл и захуячишь его на запись целиком. Второй вывод: это не имеет смысла также в плане сохранения оригинальной картинки, так как крайне редко никогда тебе будут аплоадить что-то, превышающее по размеру кеш на запись. Третий вывод: это также бессмысленно в плане балансировки нагрузки, так как она у тебя и так будет равномерной за счёт множества клиентов. Скорее наоборот: чутка сгладив пики ты добавишь +5% нагрузки на ЦП собственно алгоритмом сглаживания этих самых пиков. разве только, если ты будешь запускать борду на ардуине с ограничением в 1 подключенного клиента - вот там такое пригодится.
я тебе советую не страдать хуйнёй и отложить такие тонкие оптимизации на потом. Вот потом можно будет сделать чисто ради вау эффекта: например, чтобы новый пост с тамбнейлом начинал прогружаться ещё до того, как у отправителя поста его картинка загрузится на сервер. Ну и обновление треда по вебсокетам, ессно. Но чтобы в этом был смысл, нужно дохуя юзеров, а тебе до этого как до луны.
>>1600096 > Лан, распишу подробнее. Современные ФС (и не очень современные) не пишут байтик сразу на физический носитель как только тебе это приспичило - сперва операции на запись копятся в кеше в оперативе. > Второй вывод: это не имеет смысла также в плане сохранения оригинальной картинки, так как крайне редко никогда тебе будут аплоадить что-то, превышающее по размеру кеш на запись. ой не пизди, сам файл идет по хттп, медленно пиздец, хранить это все в озу будет идиотизмом, ровно как и загружать с диска в память
ну и кстати, насчет тамбнейла: у меня загрузи/сделай тамбнейл/выгрузи после сохранение оригинала занимает пол секунды, и это только на одну картинки (юзал image крейт)
> Третий вывод: это также бессмысленно в плане балансировки нагрузки, так как она у тебя и так будет равномерной за счёт множества клиентов. Скорее наоборот: чутка сгладив пики ты добавишь +5% нагрузки на ЦП собственно алгоритмом сглаживания этих самых пиков. то есть ты предлагаешь ждать ебучий мультипарт пару минут, что бы потом начать по полной загружать потоки, плодить процессы, вместо того, что бы во время загрузки генерировать тамбнейл или что?
> Ну и обновление треда по вебсокетам, ессно. костыль же, чем это лучше запроса получению постов, чей номер выше последнего поста по таймеру?
>>1600324 >хранить это все в озу будет идиотизмом писать побайтово сразу на физический носитель - вот это идиотизм. Слава б-гу, современные ФС этим не страдают.
>предлагаешь ждать ебучий мультипарт пару минут, что бы потом начать по полной загружать потоки справедливо только в случае однопоточной работы - я же не зря ардуину упомянул. А если у тебя единовременно аплоадятся 10~1000 картинок, то нагрузка будет размазываться и так, без всякого извлечения из мультипарта на лету.
>чем это лучше запроса получению постов, чей номер выше последнего поста по таймеру? >занимает пол секунды ну вот ты сам себе и ответил - твои эти сэкономленные полсекунды ничего не играют на фоне таймера в 15 сек. А экономить полсекунды есть смысл только при попытке максимально увеличить отзывчивость боды - тогда уже юзай вебсокеты - чтобы у юзера прям на лету всё было.
извлекать мультипарт на лету есть смысл - только чтобы сэкономить память на его хранении. Но писать тамбнейл на лету никакого смысла нет - я об этом.
>>1600568 > писать побайтово сразу на физический носитель - вот это идиотизм. Слава б-гу, современные ФС этим не страдают. то есть если я начну загружать 50 миб , и сразу сейвить на диск, оно будет все это в памяти хранить, ты ничего не перепутал.
Анончик, для питона есть такая штука - mako. Годный темплейтный движок, может в циклы и условия прям внутри темплейта. Есть ли что-то подобное для раста? Желательно, чтобы поддерживал работу на этапе конпеляции - буду шейдеры им генерить.
>>1602362 А как именно ты хочешь генерировать шейдеры? В расте есть два способа автоматизировать что-что во время компиляции: процедурные максросы, которые превращают расто-подобный псевдокод в растовый код (можно даже С++ встраивать, пикрил) и build.rs-скрипт, который по сути является отдельной программой (для него даже отдельные зависимости указывать можно), выполняемой до компиляции, где можно генерировать какой-нибудь код.
async/await наконец-то в стабильной версии!
ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
https://www.rust-lang.org
Продолжение шапки: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41
Предыдущий тред: