Наша программа обрабатывает сетевые пакеты, в частности, заголовки TCP/IP/etc. В них числовые значения — смещения, счетчики, адреса — представлены в сетевом порядке байтов (big-endian); мы же работаем на x86 (little-endian). В стандартных структурах, описывающих заголовки, эти поля представлены простыми целочисленными типами (uint32_t
, uint16_t
). После нескольких багов из-за того, что порядок байтов забыли преобразовать, мы решили заменить типы полей на классы, запрещающие неявные преобразования и нетипичные операции. Под катом — утилитарный код и конкретные примеры ошибок, которые выявила строгая типизация.
Читать полностью »
Рубрика «endianess»
Польза строгой типизации в C++: практический опыт
2019-10-12 в 20:38, admin, рубрики: c++, endianess, Программирование, типизацияВыпуск Rust 1.32
2019-01-21 в 5:51, admin, рубрики: dbg, endianess, jemalloc, macro, open source, Rust, Rust 2018, выпуск, Компиляторы, Программирование, релиз, системное программированиеКоманда разработчиков Rust рада сообщить о выпуске новой версии Rust, 1.32.0. Rust — это язык программирования, который дает возможность каждому создавать надежное и эффективное программное обеспечение.
Если у вас установлена предыдущая версия Rust с помощью rustup
, то для обновления Rust до версии 1.32.0 вам достаточно выполнить:
$ rustup update stable
Если у вас еще не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта. С подробными примечаниями к выпуску Rust 1.32.0 можно ознакомиться на GitHub.
Небольшое замечание: за последнее время вышло несколько новых выпусков
rustup
! Чтобы обновить самrustup
, выполнитеrustup self update
.
Что вошло в стабильную версию 1.32.0
Rust 1.32.0 приобрел несколько упрощающих жизнь улучшений, сменил аллокатор памяти по умолчанию и сделал больше функций константными. Читайте об этих изменениях ниже или смотрите подробнее в примечаниях к выпуску.