From 60f0cbe4c128985ea295cac129621f5435418e31 Mon Sep 17 00:00:00 2001 From: akulij Date: Mon, 17 Nov 2025 10:04:07 +0700 Subject: [PATCH] vault backup: 2025-11-17 10:04:07 --- 4.2/2.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/4.2/2.md b/4.2/2.md index c0a376c..23a8344 100644 --- a/4.2/2.md +++ b/4.2/2.md @@ -44,3 +44,27 @@ ub: из-за различий архитектру цп и ос и для оп При описании бест практис про Safety, привести пример, почему нужно (а еще потому, что при изменении логики функции самим тоже нужно следить, какие инварианты висят за пользователем) Практика: подумайте над тем, какие инварианты тут должны быть соблюдены и какие из них не соблюдены. или пропробовать найти несоблюденный инвариант и "взломать" программу?) допустим, нам нужно дя создания сокета узнать, можем ли мы использовать tcp/udp/icmp/etc, для этого используем сискол WSAEnumProtocolsA + + + **Начать с проблемы, когда компилятор не может гарантировать безопасность по памяти (но без этого невозможно написать программу), возможно из ub** + + +**Рассказать про причины ub** +Именно для этого и было создано + +**Рассказать, чем является unsafe, ответственность на программисте, про ub (НЕ является избавлением от borrow checker)** + +**Рассказать про применение unsafe (взаимодействие с С, оптимизация (вспомнить небезопасную либу для бэкенда: rocket или actix), написание основы/базы языка)** + +- [ ] Определении функции unsafe если соблюдение инвариантов висит на пользователе (при написании такой функции смотреть - является ли сам интерфейс функции safe) +- [ ] примеры из third party +- [ ] Рассказать про бест практис при написании unsafe: + - [ ] Лучший unsafe - отсутствующий unsafe + - [ ] Уменьшение зоны unsafe (легче найти баг + проще просчитать ub) + - [ ] Safety + - [ ] SAFETY + - [ ] assert_unsafe_precondition! + - [ ] ... +- [ ] Практика +- [ ] Лайфтаймы как помошники при взаимодействии с c abi +- [ ] Drop \ No newline at end of file