Size: a a a

2020 March 23

AZ

Alex Zhukovsky in rust_offtopic
например, если хэш изменился, вопрос: кто и когда внес изменения, и какие?
источник

AZ

Alex Zhukovsky in rust_offtopic
Emmanuel Goldstein
Не. Я не умею в системы голосования, но беглым взглядом выглядит очевидно, что если мы не публикуем ФИО, то мы не можем удостовериться, что остальные голосующие настоящие люди.
бутерин на одной из конф говорил, что задача конкретно голосования на блокчейне с условиями анонимности - принципиально невозможна
источник

AZ

Alex Zhukovsky in rust_offtopic
поэтому анонимности нет, по крайней мере для администраторов
источник

AZ

Alex Zhukovsky in rust_offtopic
но т.к. голосуют по вопросам на которые всем насрать (кроме самих голосующих) то мотивации вмешиваться нет
источник

AZ

Alex Zhukovsky in rust_offtopic
другое дело про недавний проект голосвания в мерию на блокчейне
источник

AZ

Alex Zhukovsky in rust_offtopic
там мотивация уже будет)
источник

В

Вафель in rust_offtopic
Doge Shibu
Очень мощные оптимизации может дать.

Т.е. автоматическая или полу-автоматическая специализация кода под известные на этапе компиляции значения.

Что-то типа constexpr'ов только сильно более на стероидах и работающее практически с любым кодом.
В каком-то из релизов раста хвастались const propagination, это не оно?
источник

AZ

Alex Zhukovsky in rust_offtopic
Вафель
В каком-то из релизов раста хвастались const propagination, это не оно?
нет, не совсем
источник

DS

Doge Shibu in rust_offtopic
Вафель
В каком-то из релизов раста хвастались const propagination, это не оно?
Да, но вопрос в том насколько сильно оно работает.
источник

AZ

Alex Zhukovsky in rust_offtopic
типичный пример, у тебя есть код:


fn pow(a: i32, b: i32) -> i32 {
  let mut result = 1;
  for _ in 0..b {
     result *= a;
  }
  result
}

и ты делаешь:

let number = read_line().parse()?;
let powerderNumber = pow(number, 5);
источник

AZ

Alex Zhukovsky in rust_offtopic
растовый компилятор тут ничо не сделает, потому что a в рантайме только известно
источник

DS

Doge Shibu in rust_offtopic
Alex Zhukovsky
типичный пример, у тебя есть код:


fn pow(a: i32, b: i32) -> i32 {
  let mut result = 1;
  for _ in 0..b {
     result *= a;
  }
  result
}

и ты делаешь:

let number = read_line().parse()?;
let powerderNumber = pow(number, 5);
Ну, кстати, этот пример он сейчас вроде оптимизирует как хочется, но опять-таки без гарантий.
источник

AZ

Alex Zhukovsky in rust_offtopic
источник

AZ

Alex Zhukovsky in rust_offtopic
но по идее если чутка усложнить то уже не сможет
источник

В

Вафель in rust_offtopic
Doge Shibu
Да, но вопрос в том насколько сильно оно работает.
Понятно
источник

AZ

Alex Zhukovsky in rust_offtopic
Alex Zhukovsky
растовый компилятор тут ничо не сделает, потому что a в рантайме только известно
ну вот, а паршиал эвалюейшн гарантированно свернет тебе цикл
источник

AZ

Alex Zhukovsky in rust_offtopic
собсна из опеределения паршиал эвалюейшна у тебя есть программа P, которую можно представить как пару
(P_static, P_dynamic)
источник

AZ

Alex Zhukovsky in rust_offtopic
тогда компилятор это функция (P_static, P_dynamic) -> P_dynamic
источник

AZ

Alex Zhukovsky in rust_offtopic
ну это типа хорошо, потому что не надо считать в рантайме то, что и так известно
источник

DS

Doge Shibu in rust_offtopic
И полноценный partial evaluation мог бы кучу проблем решать просто за счёт своего наличия.

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