Size: a a a

Compiler Development

2020 February 12

AT

Alexander Tchitchigin in Compiler Development
polunin.ai
Если борроу чекер пропустил твою программу и там нет неотлаженного unsafe ты можешь быть уверенным что у тебя программа не упадет в рантайме из-за Segfault или разыменования нулевого указателя, и не будет задержек GC по несколько секунд
> задержек GC по несколько секунд
😂
источник

AN

Alex Naraito in Compiler Development
А rust вроде больше места предоставляет для оптимизации компилятору, не?
источник

AN

Alex Naraito in Compiler Development
Ну, GC всё же требует для себя времени
источник

AT

Alexander Tchitchigin in Compiler Development
Alex Naraito
Ну, GC всё же требует для себя времени
Вы можете удивиться, но и malloc/free требуют для себя времени. 😉
источник

А

Андрей in Compiler Development
Alexander Tchitchigin
Вы можете удивиться, но и malloc/free требуют для себя времени. 😉
щас бы глобальный мьютекс дергать, мм
источник

AS

Aleksey Shipilev in Compiler Development
Alexander Tchitchigin
Вы можете удивиться, но и malloc/free требуют для себя времени. 😉
Но ведь "free"! Как он может быть не free? </s>
источник

AN

Alex Naraito in Compiler Development
Это работа с памятью, я знаю. Имел в виду, что он ведь как минимум проходит по всей памяти
источник

AS

Aleksey Shipilev in Compiler Development
Alex Naraito
Это работа с памятью, я знаю. Имел в виду, что он ведь как минимум проходит по всей памяти
Как максимум. Сборщики мусора с поколениями часто трогают всего чуть кучи.
источник

AT

Alexander Tchitchigin in Compiler Development
При этом время в многопоточных программах на многоядерных системах штука настолько неоднозначная, что в некотором смысле concurrent GC НЕ требует для себя времени. 😊
источник

AT

Alexander Tchitchigin in Compiler Development
Alex Naraito
Это работа с памятью, я знаю. Имел в виду, что он ведь как минимум проходит по всей памяти
С чего бы по всей-то?! 😱
источник

p

polunin.ai in Compiler Development
Alexander Tchitchigin
При этом время в многопоточных программах на многоядерных системах штука настолько неоднозначная, что в некотором смысле concurrent GC НЕ требует для себя времени. 😊
Вместо того чтобы держать на сервере 3 дополнительных инстанса будем держать на них GC👍
источник

А

Андрей in Compiler Development
polunin.ai
Вместо того чтобы держать на сервере 3 дополнительных инстанса будем держать на них GC👍
можно шутку про питон?
источник

p

polunin.ai in Compiler Development
Андрей
можно шутку про питон?
У модераторов чата спрашивайте
источник

МБ

Михаил Бахтерев in Compiler Development
polunin.ai
В целом борроу чекер не мешает а помогает. Практически всегда работает стратегия place * and & until rustc is happy.
Так что мифы про сложность борроу чекера сильно преувеличены.
Опять же. Призываю посмотреть код для классических структур данных на Си и на Rust. И таки увидеть, сколько в Rust добавляется семантического шума. Там, где на Си пишется 10 строк кода, на Rust пишется 50. И большинство - это дополнительные копирования или переупаковки данных для успокоения чекера. Может, это и норм. Критерии у всех разные. Но как бы не понятно, чем именно segfault страшнее всех прочих fault-ов и сигналов, которые существуют в реальном мире.
источник

AT

Alexander Tchitchigin in Compiler Development
polunin.ai
Вместо того чтобы держать на сервере 3 дополнительных инстанса будем держать на них GC👍
Если у Вас сервис требует столько GC, то и Rust Вам врядли поможет. Разве что borrow checker заставит по-человечески наконец-то переписать алгоритмы и структуры данных. 😉
источник

AN

Alex Naraito in Compiler Development
С одной стороны языки с GC позволяют забыть про память(не совсем, но всё же), а rust заставляет писать сразу правильно( относительно, и не подтверждено, но всё же)
источник

p

polunin.ai in Compiler Development
Михаил Бахтерев
Опять же. Призываю посмотреть код для классических структур данных на Си и на Rust. И таки увидеть, сколько в Rust добавляется семантического шума. Там, где на Си пишется 10 строк кода, на Rust пишется 50. И большинство - это дополнительные копирования или переупаковки данных для успокоения чекера. Может, это и норм. Критерии у всех разные. Но как бы не понятно, чем именно segfault страшнее всех прочих fault-ов и сигналов, которые существуют в реальном мире.
>там где си требует 10 строк Раст требует 50
Явное преувеличение.
>Большинство для дополнительного копирания и переупоковки
Зато если программа скомпилировалась без ошибок и ворнингов, то она работает практически всегда. Вы можете потратить время чтобы отлаживать программу или чтобы удовлетворить борроу чекер.
источник

AT

Alexander Tchitchigin in Compiler Development
Alex Naraito
С одной стороны языки с GC позволяют забыть про память(не совсем, но всё же), а rust заставляет писать сразу правильно( относительно, и не подтверждено, но всё же)
А с другой стороны, если вспомнить про память, то можно и на языке с GC оптимизировать работу с ней. 😉
источник

МБ

Михаил Бахтерев in Compiler Development
polunin.ai
>там где си требует 10 строк Раст требует 50
Явное преувеличение.
>Большинство для дополнительного копирания и переупоковки
Зато если программа скомпилировалась без ошибок и ворнингов, то она работает практически всегда. Вы можете потратить время чтобы отлаживать программу или чтобы удовлетворить борроу чекер.
Всегда работает - это опасное заблуждение. И нет, про 50 строк не преувеличение. Я посчитал
источник

AN

Alex Naraito in Compiler Development
Ну, мне лично сейчас удобнее видеть в коде, что происходит с переменными и их lifetime( rust)
источник