Forwarded from На хую vercheniye 🇮🇱🇺🇦
This media is not supported in your browser
VIEW IN TELEGRAM
h/t @hayork
😁26👍4🔥2🤨2🌚1
#prog #rust #rustreleasenotes
Вышла версия Rust 1.76.0... Почти месяц назад. В свою защиту могу сказать, что изменения довольно минорные и потому релиз не обязывает к апдейту. Как обычно, тут только отдельные моменты, целиком в release notes.
▪️Единственная существенная вещь: исправлены ошибки при работе с unsized
▪️Задокументированы гарантии насчёт совместимости по ABI. Они были и раньше, просто теперь записаны.
▪️
▪️Исправлен старый баг с некорректным округлением чисел при форматировании в научной нотации с ограниченным числом десятичных знаков после запятой.
▪️Опция
▪️
▪️Реализации
▪️Как я уже писал,
▪️Пачка новых API:
🔸Option::inspect,
🔸
🔸type_name_of_val
🔸
🔸ptr::addr_eq — потому что сравнение указателей вместе с метаданными почти всегда не то, что нужно
🔸
Вышла версия Rust 1.76.0... Почти месяц назад. В свою защиту могу сказать, что изменения довольно минорные и потому релиз не обязывает к апдейту. Как обычно, тут только отдельные моменты, целиком в release notes.
▪️Единственная существенная вещь: исправлены ошибки при работе с unsized
#[repr(packed(N))]
структурами, где N > 1. Именно — неправильный расчёт смещения до unsized поля и неправильный подсчёт размера и выравнивания в рантайме.▪️Задокументированы гарантии насчёт совместимости по ABI. Они были и раньше, просто теперь записаны.
▪️
dbg!
теперь печатает и колонку места расположения▪️Исправлен старый баг с некорректным округлением чисел при форматировании в научной нотации с ограниченным числом десятичных знаков после запятой.
▪️Опция
create
на File
теперь работает корректно со скрытыми файлами на Windows вместо того, чтобы тихо падать.▪️
Vec::from_iter
теперь переиспользует аллокацию с ещё несколькими итераторами, которые оборачивают vec::IntoIter
.▪️Реализации
Debug
для RwLockReadGuard
и RwLockWriteGuard
теперь не требуют Sized
на типе внутри лока.▪️Как я уже писал,
IMPLIED_BOUNDS_ENTAILMENT
теперь является ошибкой компиляции.▪️Пачка новых API:
🔸Option::inspect,
Result::{
inspect, inspect_err}
(с семантикой, аналогичной Iterator::inspect
)🔸
{Arc, Rc}::
unwrap_or_clone🔸type_name_of_val
🔸
ptr::{
from_ref, from_mut}
. Имеет смысл по тем же причинам, почему вместо as
-кастов на числах используются from
/into
.🔸ptr::addr_eq — потому что сравнение указателей вместе с метаданными почти всегда не то, что нужно
🔸
std::hash::{DefaultHasher, RandomState}
. Строго говоря, не новое API, но раньше это было доступно только через std::collections::hash_map
.blog.rust-lang.org
Announcing Rust 1.76.0 | Rust Blog
Empowering everyone to build reliable and efficient software.
👍8❤1
Самые тяжёлые проблемы в программировании:
* наименование сущностей
* инвалидация кеша
* ошибка на единицу
Самые тяжёлые проблемы в программировании у меня:
* логические выражения
* наименование сущностей
* инвалидация кеша
* ошибка на единицу
Самые тяжёлые проблемы в программировании у меня:
* логические выражения
😁16
Блог*
Самые тяжёлые проблемы в программировании: * наименование сущностей * инвалидация кеша * ошибка на единицу Самые тяжёлые проблемы в программировании у меня: * логические выражения
Я серьёзно. Сегодня две ошибки нашёл на работе. Первая связана с тем, что логическое отрицание поставлено не туда, куда надо. Вторая — что диагностическое выражение не в той ветке if-а. Первую сделал я, ко второй я приложил руку (сделал предложение на code review, принятое без изменений).
Два (значения bool) — это слишком много.
Два (значения bool) — это слишком много.
👌7🤔2🤡1