Разработчики проекта NGINX представили инструментарий...Подробнее: https://www.opennet.me/opennews/art.shtml?num=59923
ну наконец-то - безопастно! Стоп, а когда же сам nginx начнут переписывать, ведь иначе ж наш безопастный модуль будет опастно вызывать поганую сишку?!
>Продукт не вышел за рамки прототипа и несколько лет находился в стагнацииугадате, почему? :)
>угадате, почему? :)Это всё проказни плюсово-сишного unsafe-лобби! Они тормозят мировой прогресс в угоду своим личным интересам.
Вон, кнутователь из F5 прибежал - и тут же проект вышел, прям выскочил, ракетой взлетел, теряя портки.Наверное даже важный и нужный модуль какой-то нахрустели. Но вот это неточно.
Очевидно потому, что как прокси Nginx в сравнении с Envoy просто смешон, и сама идея угнаться по функциональному паритету за Istio с Nginx наперевес заведомо обречена на провал. Но вы с пох.ом можете обняться и вдвоём под пледиком думать, что виноват язык программирования. Ваше мнение как не влияло ни на что, так и дальше ни на что влиять не будет.
>Envoyimap в зависимости от юзера проксировать умеет?
>Ваше мнение как не влияло ни на что, так и дальше ни на что влиять не будет.
в отличии от вас, оно хотя бы у нас есть, че, мало людей было кто кричал 20 лет назад, в апаче есть то, есть это, в нджинксе нету, где htaccess чертовы и т.д. :) ну как жили без htaccess так и живем, до сих пор не нужны.
Я знаю почему: потому, что автору модуля жрать надо, потому сильно вкладываться временем и усилиями в то, что напожрать не приносит, он не торопился.
Но как только "Для решения задачи был привлечён автор ngx-rust"(читай - вкинули бабла), тут же у автора рывок случился и было написано два пакета, которые требуются и проект в целом прыгнул из стадии "прототип" сразу в в стадию бета.
Прям в корень зришь!
Но не все сразу, не все сразу))
вижу, горит хорошо 🔥.
темп выхода новостей про раст 🦀 выбран правильно.
По моей примерной статистике новость про очередную дырку в коде на с или с++ должна появиться где-то через 2 недели.
Вот тогда можно будет продолжить))
>темп выхода новостей про раст 🦀 выбран правильноЧтобы он еще сильнее всем надоедал? Тогда да.
всем это кому?
паре поехавших которые гордяться что раз в жизни hello world на С написали?
И тут разработчики о более современном ЯП задумались, потому что привередливые пользователи не хотят испытывать на себе все "прелести" взлома. Просто напасть какая-то. Куда мир катится. Да?
Почему веб-фреймворки на расте не пользуются популярностью? Это же прекрасная идея, использовать ржавчину для вебни, никакого тебе гц и рандомных фризов от него, нормальный ffi, складывать строки можно относительно безопасно, производительность почти выше питона на части операций… Иногда, правда, исполнение зависает почему-то (просто так судя по профилировщику), и у питона такого не случалось никогда, но, я уверен, это не повод отказываться от превосходящих технологий.
Делать качественно в нашей экономике не принято. Сейчас в моде собрать из экскрементов (питона) то, что еле как шевелится, а потом в разные места добавлять палки, чтобы у структуры хоть какая-то устойчивость была.
Расту просто нужны альтернативы sqlalchemy с asyncpg/aiosqlite. И, видимо, асинхронные генераторы.
> Расту просто нужны альтернативы sqlalchemy с asyncpg/aiosqlite.Что-то типа такого?
https://crates.io/crates/sqlx
https://crates.io/crates/sea-orm
> И, видимо, асинхронные генераторы.Этого пока нет (типа синтакса yield), но можно использовать какую-нибудь либу:
https://crates.io/crates/next-gen
Может быть, но нужны промышленные либы. И ещё alembic.
Что значит "промышленные либы"? А миграции в sea-orm есть.
Значит, "отвечающие стандартам индустрии", а не наколенный уровень. Это подразумевает довольно много на самом деле, но, в конечном итоге, сводится к вложенным в развитие и сопровождение ресурсам. Что до алхимии, не думаю, что вообще в принципе существует какой-то аналог на любом языке. Когда я в прошлый раз интересовался, альтернативой были множество разных компонентов различного уровня пригодности, без какой-либо универсальности.
Для этого сначала нужен "промышленный" язык, а не наколенный язык без стандарта.
У плюсов вроде есть стандарт, а компиляторы тоже отваливаются каждую версию. Да и у си ситуация не многим лучше.
ну и где же популярные веб-фреймворки на С++?
У плюсов есть стандарт. Вот правда, нет компиляторов, которые весь этот текущий стандарт реализуют. И так было практически всегда. И шишечке что-то не мешает это быть "промышленным" языком (ну как не мешает, мешает, конечно, но реальность такова, что вопреки, всё равно является).
>Делать качественно в нашей экономике не принятоЭто не совсем так. В противном случае не было бы такого понятия, как технический долг. Но такое понятие есть. Следовательно о качестве думают и даже стараются его улучшать.
Проблемы с качеством обычно возникают на старте. Потому что есть другое понятие "time to market". Оно часто имеет более высокий приоритет, чем качество. Как говорится: "Скорость, качество, цена - выбирай любые два".
И ещё поговорка из этой же тематики: "Преждевременная оптимизация - корень всех зол". То есть, сначала думают о том, чтобы вообще хоть как-то заработало. А потом только занимаются улучшательствами.
Ещё одно подтверждение тому, что люди думают о качестве - это наличие практики вознаграждений белых хакеров за найденные уязвимости.
А так, бабло всегда рулит. Если потенциальный выигрыш больше от сырого продукта, будут использовать его. Но если есть неиллюзорные риски быть взломанным и попасть на многие миллионы зелени, о качестве не забудут и поставят его во главу угла.
Лекция "невероятное об очевидном" от всезнающего опеннетного эксперта.
>>> Почему веб-фреймворки на расте не пользуются популярностью? <<<Нельзя просто так взять и пользоваться Растом, в отличии от того же Питона (порог входа очень высокий!), как результат, колличество людей, которые реально будут этим пользоваться, будет небольшим! Собственно, в линуксе будет именно так, большинство как писало на Си, так и дальше будет писать (если только не начнут заставлять)!
Количество людей, которые будут этим реально пользоваться, будет небольшим даже среди тех, кто считает что они со своим "порогом" успешно пишут на раст "совсем не говнокод")
Что мы и видим на практике, годы идут, а обещания перевести все на новый язык так и остаются пустыми обещаниями.
на практике мы видим что есть некие странные люди которые выдумали какие-то обещания и ходят рассказывают что никто не исполняет их выдуманных обещаний.
Синтаксис просто ужасный. На написание простого парсера csv потратил гораздо больше сил и головной боли, чем на C, C++ и Dlang.
Парсер csv -- просто как пример упомянул. Понятно, что к вебу это не относится прямо.
Типичная работа с csv в питоне выглядит примерно так, неужели в расте нет стандартных батареек для такого и надо тратить своё время? Есть даже поддержка разных "нестандартных" csv с произвольными разделителями. А что до затратности, ведь есть варианты. С си это тоже скорее будет flex/bison, чем стейт-машина. Да и вопрос привычки, кому-то и питон не нравится.with open(path, 'r', newline='', encoding='utf-8') as csvfile:
with open(path_target, 'w', newline='', encoding='utf-8') as csvfile2:
reader = csv.DictReader(csvfile)
writer = csv.DictWriter(csvfile2, fieldnames=reader.fieldnames)
for row in reader:
writer.writerow(row)
Ну, в расте какбэ аналогично https://github.com/BurntSushi/rust-csv
Не вижу особых различийlet mut rdr = csv::Reader::from_reader(io::stdin());
for result in rdr.records() {
let record = result?;
println!("{:?}", record);
}
Анекдот.Встретились два растовика:
- result?
- println!
Шутку оценил))
Но все равно не понимаю почему вам это не нравится.
Ведь намного удобнее сразу понимать что это макрос, чем угадывать как в некоторых языках.
А про optional... это было еще до раста.
Синтаксис это вкусовщина
Хочешь сказать что void *func(void* i) сильно лучше?
Возможно оно тебе понятнее - но только потому, что ты к этому привык.Я уже молчу про хтонические примеры, которые могут выпрограммировать тру-кодеры на Сях вида
*((char*)0)=null или printf("%d", *((char*)ptr+4));
>Синтаксис просто ужасный.Не ужаснее, чем в плюсах.
>написание простого парсера csv
А почему потребовалось его писать? Тут ведь есть – https://crates.io/search?q=csv
> А почему потребовалось его писать?Потому что писал его на других языках и хотел сравнить опыт разных языков.
Тогда реально интересно было бы, если бы ты поделился конкретными ужасами синтаксиса, чтобы понятно было, о чём речь. А есть ссылка на репу?
Там вручную его написать, даже пользуясь стандартной библиотекой, элементарно.
1. Читаем стрим или готовую строку построчно:
https://doc.rust-lang.org/std/io/trait.BufRead.html#method.l...
https://doc.rust-lang.org/std/primitive.str.html#method.lines
2. Делаем split по сепаратору и получаем значения столбцов
https://doc.rust-lang.org/std/primitive.str.html#method.split
3. Складываем результат куда надо, профит
> Там вручную его написать, даже пользуясь стандартной библиотекой, элементарно.
> 1. Читаем стрим или готовую строку построчно:fail
> 2. Делаем split по сепаратору и получаем значения столбцов
epic fail
> https://doc.rust-lang.org/std/primitive.str.html#method.split
> 3. Складываем результат куда надо, профитскладываем результат в помойное ведерко, идем изучать формат csv и какие в нем бывают подводные камни.
[написал-стер, сам ищи]
После чего открываем, наконец, книжку про конечные автоматы и горько плачем (потому что там в примерах - все на фортране).
И вот так у экспертов опеннета - за что ни возьмутся.
Это не меняет того факта, что написать _простейший_ цсв парсер _элементарно_ на любом языке. Для всего остального есть готовые библиотеки, где предусмотрено если не всё, то большинство подводных камней, покрыто тестами и фаззерами.> И вот так у экспертов опеннета - за что ни возьмутся.
Главный эксперт опеннета явно знает о чём говорит. Только вот дети, играя в песочнице, не желают слышать старого дядьку-экскаваторщика как правильно копать надо. А у взрослого мужика своя голова на плечах есть (если он не кексперт опеннета конечно), даже из хренового совета способен сделать верные выводы.
> Это не меняет того факта, что написать _простейший_то есть неправильно работающий.
Ну да, можно. Годится для четвероклассника на первом уроке информатики. Садись, три. На четыре все же следовало хотя бы знать ограничения. А для понять что собой представляет язык - взрослому мальчику - не годится, взрослые мальчики уже умеют правильно оценить задачу. Насчет найти правильное решение - не всегда. Зря я не стер подсказку, было бы забавно предоставить тебе и полюбоваться на неправильные ответы.
Там вверху человек сравнивает Питон (использует при этом библиотечные функции) и Раст, без таковых.
Объяснить главному эксперту, в чем ошибка в методике, или он сам догадается?
нет. Там вверху - человек написал (и не стал вам показывать, потому что делал для себя) свой парсер. И сделал выводы по результатам своих трудозатрат, которые и озвучил.А библиотечные функции - это в параллельной ветке совершенно другой аноним, не способный даже понять о чем речь, удивленно спрашивает почему на расте так нельзя. И ему разумеется ответили что можно.
Уровень интеллекта опеннета - неспособность даже разобраться кто кому и о чем писал и как это связано (если) с первоначальным предметом обсуждения.
Без предъявления кода и говорить не о чем.
> Без предъявления кода и говорить не о чем.предъявляй свой, чего ж. А, ты не умеешь кодить...
>предъявляй свой, чего ж. А, ты не умеешь кодить...предъявляй свой, чего ж. А, ты не умеешь кодить...
> предъявляй свой, чего ж. А, ты не умеешь кодить...мне просто неинтересно с тобой ничего обсуждать, совковый ушлепок, поэтому перетопчешься.
(и да, как ни смешно - у меня есть такой код. Когда-то давно мне понадобился парсер csv, работающий а не "в 80%" как тут у некоторых.)
>мне просто неинтересно с тобой ничего обсуждать, совковый ушлепок, поэтому перетопчешься.потому что ты со своим приземленным IQ даже не понимаеш на что отвечаеш.
>(и да, как ни смешно - у меня есть такой код. Когда-то давно мне понадобился парсер csv, работающий а не "в 80%" как тут у некоторых.)
это не смешно, смешон ты в своих жалких потугах строить тут из себя программиста.
да, и на убожеств с завышенным ЧСВ, насмотрелся предостаточно. так же как и ты, из штанов выпрыгивают расхваливая себя.
и весит-то всего-ничего, каких-то 300 мегабайт на страничку
У go ещё хуже. И там же не cgi наверно. Сколько угодно вьюшек может быть и бинарь будет их сервить. Вроде даже есть поддержка шаблонов а ля jinja (хотя непонятно, что выбрать, всё какое-то максимально стрёмное).
nim
go - это вобще клинический случай. Язык, пригодный исключительно для создания веб-сервисов в контейнерах, когда при любом раскладе к каждому хелловорлду в рантайме будет добавляться своя копия операционной системы. Тут уж не важно, как идёт копирование: физически отдельным файлом каким-нибудь типа /lib/libc.so.6 или просто копированием всего содержимого libc.so.6 в бинарник.
Так он Гуглом и проектировался для запуска в контейнерах. Удивительно, что Гугл решает задачи Гугла?
> производительность почти выше питона на части операцийДо чего же тонко!
Какие-то операции определённо могут быть исполнены быстрее, но они не несут решающего значения. Аналогичные задачи, решённые аналогичным способом, часто не оказываются эффективнее. И всё же это лучше го, но го пропихивает корпорация зла и с этим тяжело конкурировать.
Для бекендов достаточно популярны:
https://crates.io/crates/axum - 22 млн загрузок
https://crates.io/crates/actix - 5 млн загрузок> производительность почти выше питона на части операций…
А запускалось хоть в --release режиме? А то классическая ошибка новичков всё гонять в дебаге по-умолчанию
actix - это не web-фрэймворк, а фрэймворк обощего назначения для построения приложений на модели акторов.
Вероятно, вы хотиле оставить ссылку на крейт `actix-web`: https://crates.io/crates/actix-web
Точно-точно, я про actix-web знаю, но не использовал - вот и промазал.
Потому, что куяк-куякать (и в продакшн) на питоне может начать после месячных курсов на ютупе маkаkа (качество будет соответствующим, но тяпляпать маkаkа что-то будет), а раст надо дольше изучить. Ты вон почитай как местные матёрые шишечники-опеннетчики не справились даже с синтаксисом раста (по крайней мере пожаловаться на "что не так с растом" к них получается только на синтаксис). А ведь это даже не код писать, это тупо синтаксис - любый нормальный программист синтаксис нового языка осваивает за неделю (максимум).
Так это только в представлении маkаk так. Обычно, когда речь заходит о "что не так с растом", вспоминают cargo и crates всё же. Отсутствие бинарного интерфейса и общая нестабильность, из-за которой куча кода отваливается после каждого апдейта. Про синтаксис я не видел, он просто нескучный, что делает сопровождение сложнее, чем требуется. Есть же люди, которым нравится перл, так и тут.
Еще один успешный проект добавляет поддержку rust.
Наверное ребята, которые с начала 200х пилят на С один из самых популярных вебсерверов, что-то знают...И даже не смотря на авторитетное мнение экспертов с опеннета!
Удивительно.
> Еще один успешный проект добавляет поддержку rust.
> Наверное ребята, которые с начала 200х пилят на С один из самых
> популярных вебсерверов, что-то знают..."ребята", которые его пилили с начала 200х давно уже пошли на..й - один с миллиардами, остальные просто так и на поджопниках.
Остался один Макс, который ни на каком хрусте не добавляет, ему некогда.
А это - новое поколение рабов F5, чего кнутователь скажет то и будут делать, и теми инструментами которые тот назначит.
О... опять ты с "рабами и кнутователями".
Пойми, не все программисты являются рабами, и не всех подвергают кнутованию.
Не надо экстраполировать свой опыт на всех остальных.
> О... опять ты с "рабами и кнутователями".
> Пойми, не все программисты являются рабами, и не всех подвергают кнутованию.не всех, вот тех которые потратили время на "продукт не вышел за рамки прототипа" - явно пороли недостаточно.
А в F5 видимо порют хорошо и качественно - судя по тому как оттуда быстро-быстро побежали бывшие разработчики nginx, условия работы оказались изрядно далеки от хорошо оплачиваемого хобби в свободном формате.
Но, видишь, ничего страшного, новых наловили.
>Не надо экстраполировать свой опыт на всех остальных.Он хочет сказать, что 20 лет назад программисты решали что должно быть в продукте и с какой скоростью, а щас "кнутователи" эффективные менеджеры. И программист в современном мире ничем от "маккаки" не отличается, что скажут то и напишет, на любом языке, за них скоро чатгопота будет писать :)
> за них скоро чатгопота будет писать :)как будто что плохое. Правда, оно потом не компилируется (и говорят что даже из под v4 уже не), но опять же, как будто у этих компилируется...
>как будто что плохое.плохое только одно - код на выходе, даже если и компилируется :)
пс: от чего пытались избавить "программистов", когда создавали первые ЯП в замен асм? Или еще раньше, от чего пытались избавить тех же создав мнемонический транслятор асм?
А я-то думал, за ними не заржавеет...
Вот тут - одобрямс, при всём моём скептическим отношении к энтузиазму растофанов. Если раст позволяет писать код, сопоставимый по скорости работы с кодом на Си, при этом писать его легче и быстрее (так утверждают те, кто пишут на Расте), то вполне может и выстрелить. Правда, при условии, что Крэйтс не превратится в такую же помойку, как репа модулей для Ноды.
> так утверждают те, кто пишут на РастеНеа, мы так не утверждаем. Кривая обучения на расте значительно круче.
Писать на си намного легче, там и keywords меньше, и std либа попроще, и значков меньше.
Можно не думать о времени жизни. Компилятор по умолчанию почти ни на что не ругается.
В общем шикарная жизнь - сел и пишешь что хочешь. Но есть нюанс))
>Но есть нюанс))ага, взял баян, скрипку или лучше пилу и пиликай, что душе угодно, но есть нюанс - какой?
>Если раст позволяет писать код, сопоставимый по скорости работы с кодом на Си,нет, медленее (в общем случае)
>при этом писать его легче и быстрее (так утверждают те, кто пишут на Расте)
нет, сложнее и медленее
На сколько медленнее "в общем случае" ?
Если разница 5-10% - то это не настолько критично, чтобы нельзя было улучшить оптимизациями раст компилятора>>при этом писать его легче и быстрее (так утверждают те, кто пишут на Расте)
>нет, сложнее и медленееты учитываешь время на отладку багов, проведение CVE с памятью через весь путь "от записи бага, до фиксов, написания доп.тестов и прогонов CI"?
или ты только про написание кода?
Просто понимаешь, в XX веке бОльшая часть кода на Сишке была написана с глобальными переменными, а работали программы в один поток, так что никаких CVE с памятью, никаких утечек, никаких состояний гонки и т.д. и т.п. не было и в помине.Сам когда-то 3.5 МБайта наколотил. И работает до сих пор...
> так что никаких CVE с памятью, никаких утечек, никаких состояний гонки и т.д. и т.п. не было и в помине.Да, да, а как же. Опять сказки венского леса начинаются.
А это в каком веке писалось?
"Уязвимости в библиотеках X.Org, две из которых присутствуют с 1988 года" https://www.opennet.me/opennews/art.shtml?num=59906Я верю, что наовнячить кода в один поток, с глобальными переменными для того времени было нормой.
И про "работает - не трогай" тоже помню.
То такие ошибки в приложениях, это не называется 'работает'.
Так что самые важные куски будут переписывать.
Вон даже для курла начали писать бекенд на расте, с благословения автора.
Тк он сам пишет, что ошибки памяти в С и плюсах побороть практически невозможно.
>Тк он сам пишет, что ошибки памяти в С и плюсах побороть практически невозможноэт когда не знаешь как устроена память и как правильно с ней работать
Похоже те, кто пишет на Си, поголовно этого не знают. Или всё-таки проблема не в незнании?
в 3.83 я ответил на этот вопрос.
И с чего бы ему не превратиться? Ты чтоли будешь каждый пакет модерировать?
https://github.com/nginxinc/ngx-rust>Project status
>This project is still a work in progress and not production ready.Комментарии, как говорится, излишни.
Везде и всегда где есть что то с приставкой -rust
Это не помеха для тех, у кого руки чешутся костыли понасоздавать.
Но самих модулей реализующих хоть что-то нет и небудет. Классика раста.
А разве там так тяжело делать библиотеки для других языков? Я недавно начал книгу об этом языке читать — вроде не сложно.