Size: a a a

2020 May 03

K0

Korvin 0x7CFE in rust_offtopic
который уже можно оттранслировать в инструкции ассемблера
источник

K0

Korvin 0x7CFE in rust_offtopic
и вызывать напрямую как обычную функцию с известными типами
источник

K0

Korvin 0x7CFE in rust_offtopic
а полиморфный вариант можно дергать только  1) во время компиляции, как делают Rust, C++ и другие  2) если у тебя есть рантайм который может динамически интерпретировать функцию
источник

K0

Korvin 0x7CFE in rust_offtopic
у меня в виртуальной машине LLST так и было сделано
источник

SS

Stanislav Sagan in rust_offtopic
Ага, суть в том что не потерять производительность функции это и будет мономорфизация. А генерики это пример реализации
источник

K0

Korvin 0x7CFE in rust_offtopic
сначала функция интерпретируется в рантайме, собираются типы. потом для этого делается мономорфная версия метода которую уже можно оптимизировать
источник

K0

Korvin 0x7CFE in rust_offtopic
Stanislav Sagan
Ага, суть в том что не потерять производительность функции это и будет мономорфизация. А генерики это пример реализации
угу. генерики это язык. а мономорфизация — конкретный вариант его использования
источник

SS

Stanislav Sagan in rust_offtopic
Korvin 0x7CFE
угу. генерики это язык. а мономорфизация — конкретный вариант его использования
👍👍👍👌
источник

SS

Stanislav Sagan in rust_offtopic
Здорово. Так и законспектирую)
источник

K0

Korvin 0x7CFE in rust_offtopic
https://github.com/0x7CFE/llst/pull/92 вот пример где это используется
источник

K0

Korvin 0x7CFE in rust_offtopic
https://raw.githubusercontent.com/gist/0x7CFE/689d40589797332ef46a0d692fc7eaa6/raw/6d22e6b464b7a28f06f56df80d225a6d8e7a9471/sort_callgraph.svg вот в этой svg-шке видно что VM пытается вывести типы и заменить виртуальные вызовы реальными
источник

K0

Korvin 0x7CFE in rust_offtopic
в итоге процессор знает что делать с этим кодом и как его быстро выполнять.
источник

K0

Korvin 0x7CFE in rust_offtopic
в случае динамической диспетчеризации, вся машинерия по предсказанию переходов и предзагрузке конвейера по сути простаивает
источник

SS

Stanislav Sagan in rust_offtopic
Прикольно, я возможно даже понял svg-шку
источник

p

polunin.ai in rust_offtopic
Stanislav Sagan
Оно же мономорфизация ?
Мономорфизация это способ обработки генериков компилятором, когда компилятор создаёт на каждый конкретный входной тип свою функцию, то есть
fn id<T>(s: T) -> T {
 s
}
id(1);
id("foo");
После мономорфизация превратиться в
fn id_i32(s: i32) -> i32 {
 s
}
fn id_str(s: &str) -> &str {
 s
}
источник

SS

Stanislav Sagan in rust_offtopic
polunin.ai
Мономорфизация это способ обработки генериков компилятором, когда компилятор создаёт на каждый конкретный входной тип свою функцию, то есть
fn id<T>(s: T) -> T {
 s
}
id(1);
id("foo");
После мономорфизация превратиться в
fn id_i32(s: i32) -> i32 {
 s
}
fn id_str(s: &str) -> &str {
 s
}
Да, да, спасибо уже разобрался, пояснили) раздувание машинного кода ради оптимизации)
источник

p

polunin.ai in rust_offtopic
@sadlonelysoul а ты говорил: вон люди сами хотят чтобы их критиковали:
https://t.me/rust_beginners_ru/62178
источник

ᅠᅠ

ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ... in rust_offtopic
Кто шарит в разработке сервисов с несколькоими интерфейсами? Я собрался делать сервис-актер, через Actix.

Пока планирую сделать интерфейса rpc(grpcio) и rest(actix-web).
Как это примерно должно выглядить в ресте? Типо я получаю нужные данные через экстракторы и сразу сую в другого актера? Между Service и Rest актерами собираюсь сделать опционального AuthorizationActor для создания Authorized<T> сообщений. Между REST и SERVICE. (тоже самое сделаю для rpc).
Остальные данные будут валидицироваться на SERVICE актере, после отправляться в другие, например DBExecutorActor.

Нормальная конструкция?
источник

ᅠᅠ

ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ... in rust_offtopic
Что то типо:

rest -> service.
rest -> authorize actor -> service.
rpc -> service.
rpc -> authorize actor -> service.
источник

ᅠᅠ

ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ... in rust_offtopic
меня смущает то, как это будет выглядить на самом actix-web, по сути обычный копипаст
источник