Страх перед возможностью ошибки не должен отвращать нас от поисков истины.

Подходит Вовочка к отцу и спрашивает:"Пап, почему у коровы вымя между задних ног, а у мамы сиси между рук?" ...

VPN WireGuard принят в ветку net-next и намечен для включения в ядро Linux 5.6
Mon, 09 Dec 2019 18:42:28 +0300

Началось общее голосование о системах инициализации в Debian
Sat, 07 Dec 2019 13:32:21 +0300

Самый популярный пример Java-кода на StackOverflow оказался с ошибкой
Thu, 05 Dec 2019 13:48:33 +0300

Microsoft развивает новый язык программирования на основе Rust
Tue, 03 Dec 2019 08:54:04 +0300

В KDE улучшена поддержка декорирования окон в GTK-приложениях
Mon, 02 Dec 2019 22:49:28 +0300

Введён в строй Qt Marketplace, каталог-магазин модулей и дополнений для Qt
Mon, 02 Dec 2019 16:49:05 +0300

Тенденции в аппаратном обеспечении, используемом с Linux
Mon, 02 Dec 2019 09:42:10 +0300

Прогресс в использовании ОС Redox на реальном оборудовании
Sun, 01 Dec 2019 10:56:09 +0300

Вышла новая версия Open CASCADE Technology - 7.4.0
Fri, 29 Nov 2019 16:28:49 +0300

Обновлены планы по поставке 32-разрядных библиотек в Ubuntu 20.04
Fri, 29 Nov 2019 09:37:15 +0300

В ядре Linux выявлена ошибка, приводящая к нарушению работы некоторых программ, использующих AVX
Wed, 27 Nov 2019 10:32:13 +0300

Ошибка в прошивке SSD-накопителей HPE, приводящая к потере данных через 32768 часов работы
Tue, 26 Nov 2019 17:49:06 +0300

Компания Mozilla опубликовала финансовый отчёт за 2018 год
Tue, 26 Nov 2019 10:35:08 +0300

RIPE выделил последний свободный блок IPv4
Tue, 26 Nov 2019 08:54:14 +0300

В Firefox включена по умолчанию блокировка скрытых методов идентификации пользователя
Mon, 25 Nov 2019 10:36:39 +0300

Новости OPENNET
Новости

Опубликован релиз языка системного программирования Rust 1.39, основанного проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.

Автоматическое управление памятью в Rust избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек поддерживается репозиторий crates.io.

Основные новшества:

  • Стабилизирован новый синтаксис асинхронного программирования, основанный на функции "async", блоке async move { ... } и операторе ".await", которые упрощают написание обработчиков, не блокирующих основной поток команд. По сравнению с ранее предлагавшимся API для асинхронного ввода/вывода конструкции async/.await просты для восприятия, хорошо читаемы и позволяют реализовывать сложные асинхронные взаимодействия с использованием привычных приёмов управления потоком выполнения на основе циклов, условных операторов и исключений.
  • Синтаксис Async-await позволяет создавать функции, которые могут приостанавливать своё выполнение, возвращать управление в основной поток, а затем возобновлять выполнение с того места, где они были остановлены. Например, подобная приостановка востребована при обработке ввода/вывода, в котором во время ожидания поступления очередной порции данных можно выполнять другую работу. Функции и блоки, определённые через "async fn" и "async move", возвращают типаж Future, определяющий представление отложенного на будущее асинхронного вычисления. Непосредственно инициировать отложенное вычисление и получить результат можно при помощи оператора ".await". До вызова ".await" никаких действий не производится и не планируется заранее, что позволяет создавать сложные вложенные конструкции без дополнительных накладных расходов.

    async fn first_function() -> u32 { .. } ... let future = first_function(); ... let result: u32 = future.await;
  • Стабилизирован "#![feature(bind_by_move_pattern_guards)]", позволяющий использовать переменные с типом привязки "by-move" в шаблонах и использовать ссылки на эти переменные в секции "if" выражения "match". Например, теперь допустимы следующие конструкции:
  • fn main() { let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]); match array { nums => { drop(nums); } _ => unreachable!(), } }
  • Разрешено указание атрибутов при определении параметров функций, замыканий и указателей на функции. Поддерживаются атрибуты условной компиляции (cfg, cfg_attr), управляющие диагностикой через lint (allow, warn, deny и forbid) и вспомогательные атрибуты вызова макросов.
  • fn len( #[cfg(windows)] slice: &[u16], // использовать параметр в Windows #[cfg(not(windows))] slice: &[u8], // использовать в остальных ОС ) -> usize { slice.len() }
  • Предупреждения о проблемах, выявленных при проверке заимствования переменных (borrow checker) c использованием техники NLL (Non-Lexical Lifetimes), переведены в разряд фатальных ошибок. Напомним, что система проверки на основе нового механизма учёта времени жизни заимствованных переменных дала возможность выявлять некоторые проблемы, которые оставались незамеченными старым кодом проверки. Так как вывод ошибки для подобных проверок мог повлиять на совместимость с ранее работающим кодом, вместо ошибок первое время выдавались предупреждения. Теперь при работе в режиме Rust 2018 предупреждения заменены на ошибки. В следующем выпуске вывод ошибки также будет реализован в режиме Rust 2015, что позволит окончательно избавиться от старого borrow checker;
  • Признак "const", определяющий возможность использования в любом контексте вместо констант, применён для функций Vec::new, String::new, LinkedList::new, str::len, [T]::len, str::as_bytes,
  • abs, wrapping_abs и overflowing_abs;
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы
  • Pin::into_inner, Instant::checked_duration_since и Instant::saturating_duration_since;
  • В пакетный менеджер cargo добавлена возможность использования для файлов конфигурации расширения ".toml". Добавлена предварительная поддержка сборки стандартной библиотеки непосредственно из Cargo. Добавлен флаг "--workspace", заменивший неоднозначно воспринимаемый флаг "--all". В метаданные добавлено новое поле "publish", позволяющее публиковать зависимости, указывая тег в git и номер версии. Добавлена тестовая опция "-Ztimings" для генерации HTML-отчета о времени выполнения различных стадий компиляции.
  • В компиляторе rustc в диагностических сообщениях включено обрезание хвостов кода, не умещающегося в терминал. Обеспечен третий уровень поддержки целевых платформ
  • i686-unknown-uefi и sparc64-unknown-openbsd. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования и публикации официальных сборок.

9.051 70.5047 0.5871 63.7244

НОВОСТИ: Выпуск дистрибутива Elementary OS 5.1 "Hera" Wed, 04 Dec 2019 19:59:26 +0300

Представлен выпуск дистрибутива Elementary OS 5.1 "Hera", позиционируемого в качестве быстрой, открытой и уважающей конфиденциальность альтернативы Windows и macOS. Основное внимание в проекте уделяется качественному дизайну, нацеленному на создание простой в использовании системы, потребляющей минимальные ресурсы и обеспечивающей высокую скорость запуска. Пользователям предлагается собственное окружение рабочего стола Pantheon. Для загрузки подготовлены загрузочные iso-образы (1.47 Гб), доступные для архитектуры amd64 (при загрузке с сайта, для бесплатной загрузки в поле с суммой пожертвования необходимо ввести 0).

???????@Mail.ru Opera Firefox INFOBOX - хостинг Google Chrome