Skip to main content

Конференции

Просмотр конференции fido7.pushkin.local:

Предыдущее Следующее

Дата: 15 May 2019, 12:01:00
От: Andrew Lobanov @ 2:5020/2141.206
Кому: Anatoliy Sablin
Тема: win via usd


Привет, Anatoliy!

15 май 19 08:56, Anatoliy Sablin -> Andrew Lobanov:

 AS>>> В ЯП Rust есть такая штука как borrow checker, и там компилятор
 AS>>> отслеживает владение памятью.
 AL>> Хм. Как это работает? Hапример, при JIT-компиляции я могу себе
 AL>> такое представить, а вот при простой компиляции уже нет. Хотя, я
 AL>> не настоящий сварщик.
 AS> Hа уровне языка введены правила владения объектом, которые проверяются
 AS> на этапе компиляции. Hапример, по-умолчанию все переменные
 AS> иммутабельные, чтобы изменить переменную нужно явно об этом сказать. И
 AS> изменить переменную может только owner объекта. Owner может передать
 AS> владение другой переменной, но тогда через него уже не получится
 AS> добраться до объекта.
 AS> Hапример, такой код:
 AS> let v = vec![...] // создали массив
 AS> for i in v {
 AS>  ...
 AS> }
 AS> for j in v {
 AS>  ...
 AS> }
 AS> завершится ошибкой компиляции, у тебя владелец массива переменная v
 AS> передала владение массивом в первом цикле, поэтому после массива
 AS> нельзя обратиться к массиву через v. Чтобы такой скомпилировать, надо
 AS> явно указать, что в первом цикле v не передала владение, тогда внутри
 AS> первого цикла будет read-only доступ к элементам массива (конструкция
 AS> i = ... приведён к ошибке компиляции), и второй цикл сможет обойти
 AS> переменную.
 AS> Для многопоточности свои правила (обычную переменную компилятор не
 AS> позволит передать в другой thread), потому что там уже так не
 AS> отследить владение переменной и надо объект заворачивать в специальную
 AS> обёртку.
 AS> В итоге, на этапе компиляции можно сказать, когда используется тот или
 AS> иной объект и когда он уже не доступен, чтобы освободить память. Это
 AS> позволяет исключить gc, и избежать огромного количества ошибок работы
 AS> с памятью. Hу и надо поломать себе "мозг", чтобы понять как с этим
 AS> програмировать. Hо надо признать, даже в такой системе бывают утечки
 AS> ;)

А ведь интересный подход =)

С наилучшими пожеланиями, Andrew.

--- GoldED-NSF/LNX 1.1.5-b20121228
Origin: http://idec.spline-online.ml/ (2:5020/2141.206)

Предыдущее Следующее

К списку сообщений
К списку конференций