Как стать автором
Обновить
54
0
Владислав Фролов @frol

Пользователь

Отправить сообщение

Согласен, простой ответ, но более подробный потянет на целую серию исследовательских работ с доказательствами и последующим дизайном и реализацией. Мы ещё не там, но можете присоединиться и оставить своё имя в истории

Прекрасный вопрос! Криптографией. Также как HTTP начинался с нешифрованных данных и пришёл к шифрованным данным передаваемым всё по тем же открытым каналам связи. Это, естественно, требует определённого дизайна и в данной статье пока что говорится о нижележащем протоколе (в моей аналогии — HTTP лежит в основе HTTPS)

Polkadot — они себя позиционируют как фреймворк, "это не наши проблемы как построить экономику и вообще как этим пользоваться" была их недавняя позиция.


ETH2.0 — лично мне сложно сказать что именно они оптимизируют и чьи запросы удовлетворяют, но не могу сказать, что они решают проблему массового потребителя в масштабах интернета (возможно, я неправ, но это моё субъективное восприятие).


Cosmos — я не владею вопросом, поэтому оставлю это сравнение кому-нибудь другому.

async-await разблокировал гораздо больше людей, чем блокирует GAT, на мой взгляд. Каждый год проводится планирование и обсуждение приоритетов с сообществом, всегда можно поучаствовать.

Прекрасный список! Большинство из перечисленного в той или иной степени готовности или запланированности и это само по себе здорово! Над всем перечисленным можно поработать и при этом код нужно будет писать на Rust — вот он dog-fooding.

Единственное ЗА — это возможность оптимизации (в т.ч. распараллеливания), но похоже Rust этого не умеет?

rayon умеет. То есть простая замена .iter() на .par_iter() и магия работает. Но в данном случае нужно найти первое вхождение, так что смысла в этом мало. Если бы это было узким местом, то стоило бы заменить вектор (с его линейным поиском) на hashmap.

Я немного подчистил Rust реализацию в плане идиоматических конструкций (как я это вижу): https://gist.github.com/frol/547f36c5f736f3651dfeac53d8fde34e (174 строки кода, если это важно)


Мне всё ещё не нравится:


  • именование переменных
  • обработка ошибок
  • глубина лесенки в некоторых местах (но я не стал дробить код)

P.S. obj.clear() вместо obj = Vec::new() дало ~13% ускорение за счёт переиспользования буфера вместо деалокации старого и алокации нового буфера.

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

Семантика — это модель, которая предоставляется программисту, в рамках которой он(а) может создавать описывать логику своей программы. Move-семантика — это про то, что после передачи владения значения из переменной А в переменную Б, обращение к переменной А не имеет смысла (в Rust — это ошибка компиляции, а в С++ — поведение не определено [UB]). С точки зрения реализации — это уже вопрос другой. Можно Move-семантику оставить моделью, а асемблер будет производить копии, но чаще всего оптимизационные компиляторы достаточно умны чтобы пользоваться этим преимуществом и избегать копий. Однако, магии не существует и на границах функций (если они не заинлайнятся), данные должны как-то через регистры и стек попасть к вызываемой функции, так что если другого выхода не будет найдено, то данные будут "копироваться".

Ваш комментарий ниже куда-то делся, но я на него уже подготовил ответ...


Целиком и полностью. Зависит от libc, от libc и любых других аллокаторов написаных на си. Использует компилятор и его рантайм написанный на С/С++.

libc — это лишь абстракция, где "с" в названии — это лишь история. В Redox OS (ОС на Rust) используется relibc (реализованная по большей части на Rust).


В #[no_std] вообще без алокаторов живут (реалии встаиваемых систем). При необходимости можно алокатор свой написать и переопределить, только возникнет резонный вопрос: "а зачем?"


Использует компилятор и его рантайм написанный на С/С++.

Компилятор Rust написан на Rust. В дополнение (а там будет видно) к кодогенератору LLVM разрабатывают альтернативный кодогенератор на Rust — Cranelift (и всё-таки нет смысла сразу всё бросать и нестись всё переписывать на Rust, но планомерные качественные изменения очень даже происходят).


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

"Вот когда будет..."


Ждите дальше.


К тому же, раст состоит целиком и полностью из копирования. Там копируется всё и единственное, что ему позволяет существовать — это llvm и его оптимизации, которые выпиливают все эти копирования.

В Rust используется move-семантика по умолчанию. О каком компировании речь вообще?


Что, методичка сломалась и ответа нету?

Ответа к чему? Вопроса не звучало. Я готов увидеть Ваши патчи в компиляторы перечисленных языков и тогда будем обсуждать по делу. Исходники Rust — это единственные исходники крупного языка программирования, которые не вызывают у меня ужаса, даже более того, компилятор реализован как самый "обычный" проект на Rust и всё логично расположено и код написан с минимальным использованием магии, хорошо документирован и покрыт тестами.


Плохо это тем, что очередное пхп украв логику у llvm выдаёт достижения llvm за свои. Без это достижений — это бы пхп было пхп. А оно и было пхп.

По Вашей логике выходит, что LLVM справедливо использовать только для компиляторов С++.

PR решающий описанную проблему со сбрасыванием состояния уже месяц висит, почему-то никак не примут: https://github.com/zeit/next.js/pull/3552


after.js, к сожалению, как оказалось, не решил эту проблему: https://github.com/jaredpalmer/after.js/issues/47

Если я правильно понял ваш вопрос, то посмотрите на Next.js.

FreeIPA основан на 389 DS, он просто его упаковывает и предоставляет Web интерфейс. Как-то от Web интерфейса отказываться не хочется...

Начну с хорошего — она работает. У нас небольшая команда, ~40 учетных записей и к FreeIPA подключены десяток серверов (sssd обеспечивает авторизацию для SSH сессий), GitLab (локальный сервер), Rancher, VPN. Опосредованно через GitLab авторизация работает для Mattermost и Docker Registry (приватный Docker Hub). В целом, если не трогать FreeIPA — всё работает отлично, но в один "прекрасный" я сделал апгрейд без бекапа (сам себе злой Буратино) и что-то пошло не так — один сервис так и не смог заставить после этого стартовать и теперь запуск этого комбайна приходится делать вручную… Как извлечь данные о пользователях (с паролями/хешами) чтобы пересетапить FreeIPA я так и не разобрался — вероятно, никак. Удивительно, но даже в таком состоянии FreeIPA работает без проблем. В целом, если бы была более легковесная альтернатива, я бы с удовольствием её рассмотрел, но я про такую не слышал пока.

Ваша правда, глупость выдал с переводом. Посылаю голову пеплом.

«Клауза» получилась из clause, в русском это обычно замыканием называют.

А чем Вам не угодило chroot окружение, что потребовалось так поиздеваться над "хост" системой? Вычистить этого мутанта будет та ещё проблема, если вдруг что-то пойдёт не так, да и если новую прошивку ставить, то гораздо проще использовать chroot, который может даже на SD карте жить, чем как-то это дело бекапить. Кстати, гораздо удобнее сделать раздел с ext2/3/4 файловой системой вместо использования файла в качестве root раздела, но если карта памяти не поддерживается, то да, файловый "раздел" очень выручит.

У меня была аналогичная ситуация, голова кругом шла от этих всех вариантов. В один прекрасный день появился Next.js и для меня это было идеальное коробочное решение без необходимости первый день проекта начинать с настройки вороха компонент (webpack, babel, react, router, ...) и громоздить тонны boilerplate'ов. Даже вот через полгода мой проект на Next.js в отличной форме, да ещё и Next.js улучшает мой проект с каждым релизом без моего активного вложения времени на изучение техник связанных с горячей перезагрузкой модулей или автоматическим разделением кода по роутам. Рекомендую взять Next.js на вооружение.

Material-UI ощущается как какой-то страшный монстр, не смог себя заставить с ним подружиться. Взял React-MD за основу и доволен. Вот даже демо сделал для Next.JS — https://github.com/zeit/next.js/tree/master/examples/with-react-md

Информация

В рейтинге
Не участвует
Откуда
Харьков, Харьковская обл., Украина
Дата рождения
Зарегистрирован
Активность