Pull to refresh
66
0
Михаил Панков @mkpankov

Системный программист

Send message

Судя по оглавлению - переупаковка любой книги про базовый раст. Ни одной новинки или best practice из индустрии не написано.

Крутой инструмент, только вот почти все примеры мимо кассы.

Факториал llvm и так с помощью const propagation в константу превращает. Полином - ну допустим.

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

Отличный проект, спасибо! Желаю успехов

Спасибо, было интересно узнать про отличия Valkey от Redis, и что сам Redis уже умеет в многопоточность.

И что мешает вместо mem::take сделать channel.waiting_for_elements.pop() в цикле?

Речь про этот код?

fn send<T>(channel: &mut Channel<T>, value: T) {
  channel.q.push_back(value);
  let wakers = mem::take(&mut channel.waiting_for_elements);
  // Примечание: здесь мьютексы освобождаются, перед пробуждением задач.
  // Если не предусмотреть какой-то способ фильтрации, то придётся пробудить все промисы (futures), так как мы не знаем, какой из них попытается произвести очередной опрос, и есть ли вообще такой.
  for waker in wakers {
    waker.wake();
  }
}

Получается, что в случае примитивной реализации мы будем раз за разом аллоцировать и освобождать память при отправке и получении в стабильном режиме, а это весьма приличный объём.

Это просто не так. Память будет выделяться при росте capacity, экспоненциально, и быстро выйдет на плато. Если известно разумное capacity с которого стоит начать, можно выделить под него сразу.

Более того, память из-под вектора не освобождается никогда, если специально не вызывать shrink_to_fit(), например.

Так что причина для всех остальных приключений выглядит надуманной.

Видимо, в этом дело. Может какая-нибудь вспомогательная система типа климат-контроля.

Вообще соответствующий стандарт существует - ISO 26262.

И есть проект, который ставит целью сертификацию Rust для safety-critical окружений - Ferrocene. Но тогда его ещё не было.

Эхо-сервер gRPC в статье на 6 минут с пометкой "Сложный"?) Я не понимаю эту категоризацию сложностей материалов

Когда мы что-то перемещаем, то в исходном месте это что-то исчезает, правильно?

Нет, не правильно, конечно. Вы думаете есть какой-то способ "переместить" байты в памяти? :)

Разница именно в интерпретации копирования. "Копирование" - это копирование после которого обеими копиями можно пользоваться как эквивалентными. "Перемещение" - это копирование после которого исходным объектом пользоваться нельзя (при этом занимаемая им память осталась на месте но теперь считается свободной).

fn hello() -> &'static str {
    return "Hello world";
}

->

fn hello() -> &'static str {
    "Hello world"
}

Как вы советуете решать ту же проблему?

Ну что же, прощай, лицемерный DDG.

Подвижки в сторону "ещё одной корпорации" были давно.

Используем casbin — по сути единственный фреймворк, если у вас не actix. Защищаем доступ к GraphQL API на уровне отдельных точек доступа. В качестве веб-фреймворка warp.


Работает, но появились следующие проблемы:


  • описание политик действительно чудовищно повторяющееся. У нас не супер-большое API, но файл контроля доступа к нему уже требует больших усилий по его поддержке;
  • как следствие, нужно специально следить, не забыл ли автор точки доступа вставить проверку на авторизацию. По хорошему, тут нужно допиливать интеграцию с warp, чтобы авторизация была частью типа, но этого пока не делали.

В сфере проектирования ЯП тоже есть прогресс и моральное устаревание. И на мой взгляд, это куда более простое объяснение, чем поддержка или написание нового кода.
По современным стандартам безопасности, выразительности и удобства кандидат из списка любимых даст прикурить своей альтернативе из списка нелюбимых.

Да, это реально работает. По крайней мере первый и третий пункт — постановку задач с вечера я не пробовал.
Также хочу отметить, что интервалы для помидоров индивидуальны. Можно начать с классики 25/5 и посмотреть, насколько хочется увеличить. То, что предлагает автор — это ближе к 2 склеенным помидорам.

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

Никто и не предполагал, что в ядре будет "обычный Раст". В Redox тоже "не обычный". И в Fuchsia.


Какой serde в ядре?..

Главной проблемой, по его мнению, является потенциальная возможность “паники ядра” в некоторых ситуациях. Это может быть нехватка памяти, когда операции динамического распределения памяти могут завершаться ошибкой. Торвальдс заявил, что такой подход в ядре принципиально недопустим.

Он говорит не о панике ядра, а о панике Раста. Это поведение функций, выделяющих память на куче в юзерспейсе, в стандартной библиотеке.


При этом довольно очевидно, что стандартная библиотека Раста в ядре и не нужна. Так было бы и с любым другим языком. В Linux не используется стандартная библиотека Си и в частности тот же самый malloc. Там свои специализированные аллокаторы.

1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity