LINUX.ORG.RU

190
Всего сообщений: 411

Релиз языка программирования Rust 1.39

Группа Разработка

Rust — мультипарадигмальный компилируемый язык программирования общего назначения, спонсируемый Mozilla, сочетающий парадигмы функционального и процедурного программирования с объектной системой, основанной на типажах, и с управлением памятью через понятие «владения».

Что нового в версии 1.39:

  • стабилизирован новый синтаксис асинхронного программирования, основанный на функции «async», блоке async move { … } и операторе «.await»;
  • разрешено указание атрибутов при определении параметров функций, замыканий и указателей на функции. Поддерживаются атрибуты условной компиляции (cfg, cfg_attr), управляющие диагностикой через lint и вспомогательные атрибуты вызова макросов;
  • стабилизирован «#feature(bind_by_move_pattern_guards)», который позволяет использовать переменные с типом привязки «by-move» в шаблонах;
  • предупреждения о проблемах при проверке заимствования переменных c использованием NLL переведены в разряд фатальных ошибок;
  • в пакетный менеджер cargo добавлена возможность использования расширения «.toml» для файлов конфигурации.

С полным списком изменений можно ознакомиться на сайте разработчика.

>>> Источник

 ,

Satori ()

Lemmy — федеративный социальный новостной агрегатор

Группа Open Source

Lemmy создан как альтернатива сайтам вроде Reddit, Lobste.rs, Raddle или Hacker News: можно подписываться на интересующие вас темы, публиковать ссылки и обсуждения, а затем голосовать и комментировать.

Но есть важное отличие: любой пользователь может запустить свой сервер, который, как и все другие, будет подключен к одной и той же «вселенной», называемой Fediverse. Пользователь, зарегистрированный на одном сервере, может подписаться на темы на любом другом сервере и может вести обсуждения с пользователями, зарегистрированными в других местах.

На каждом из lemmy-серверов может быть установлена собственная политика модерации и назначены модераторы для борьбы с токсичными троллями.

На данный момент доступна бета-версия, и многие функции в настоящее время не работают или находятся в активной разработке, например федеративная сеть.

>>> Подробности

 , ,

anonymous ()

Вышел Rust 1.37.0

Группа Разработка

Среди нововедений:

  • Разрешено ссылаться на варианты enum через псевдонимы типов (type aliases), например через Self.
  • cargo vendor теперь входит в стандартную поставку.
    • С помощью cargo vendor можно явно скачивать и использовать полную копию всех исходных кодов всех зависимостей. Это полезно для компаний с монорепозиториями, которые хотели бы хранить и анализировать весь исходный код, используемый в их ПО.
  • Поддержка const _:.
  • Поддержка Profile Guided Optimization.
  • Поддержка #[repr(align(N))] для лучшего контроля над выравниванием в Enum.
  • Изменения в стандартной библиотеке.
  • Изменения в Clippy
  • Microsoft и Amazon стали спонсорами Rust, предоставив облачную инфраструктуру для сборки и тестирования Rust.

>>> Анонс

 ,

vertexua ()

Опубликован способ обхода borrow checker в Rust

Группа Разработка

Jakub Kądziołka опубликовал proof-of-concept, показывающий непосредственные проблемы, связанные с ошибкой в проекте компилятора Rust, которую разработчики безуспешно пытаются решить уже на протяжение четырех лет.

Пример, разработанный Jakub, позволяет обойти Borrow Checker посредством очень простого трюка:

fn main() {
    let boom = fake_static::make_static(&vec![0; 1<<20]);
    println!("{:?}", boom);
}

Разработчик просит не использовать этот обход в Production, так как его целью было только привлечь внимание к проблеме, игнорируемой разработчиками Rust.

>>> Подробности

 

anonymous ()

Vector 0.3.0

Группа Open Source

На этой неделе вышла версия 0.3.0 свободной утилиты Vector, предназначенной для сбора, преобразования и сохранения данных логов, метрик и событий.

Будучи написанной на языке Rust, она отличается высокой производительностью и низким потреблением оперативной памяти по сравнению с аналогами. Кроме того, большое внимание уделено функциям, связанным с корректностью, в частности, возможностям сохранения неотправленных событий в буфер на диске и ротации файлов.

Архитектурно Vector является роутером событий, принимающим сообщения из одного или нескольких источников, опционально применяющим над этими сообщениями преобразования, и отправляющим их в один или несколько стоков.

( читать дальше... )

>>> Подробности

 ,

euZ3meep ()

Rust 1.36

Группа Разработка

Команда разработчиков с радостью представляет вам Rust 1.36!

Что нового в Rust 1.36? Стабилизирован трейт Future, из нового: крейт alloc, MaybeUninit<T>, NLL для Rust 2015, новая реализация HashMap<K, V> и новый флаг --offline для Cargo.

( За подробностями )

>>> Подробности

 

snake266 ()

resvg 0.7 — библиотека отрисовки SVG

Группа Open Source

Вышел новый, значительный релиз библиотеки для растеризации SVG - resvg.

( читать дальше... )

>>> Репозиторий

 , ,

RazrFalcon ()

Rust 1.35

Группа Разработка

Команда разработчиков Rust рада представить новую версию своего языка: 1.35. Rust - это язык программирования, который позволяет писать надёжные и эффективные программы.

Если у вас уже установлен Rust через rustup,то можно обновиться командой: $ rustup update stable

Главное в обновлении - это реализиция трейтов замыкания Fn, FnOnce, FnMut, для Box<dyn Fn>, Box<dyn FnOnce>, Box<dyn FnMut>, соответственно. Добавление возможности приводить замыкания к указателям на небезопасные функции, вызов макроса dbg!() теперь возможен без аргументов, была проведена стабилизация стандартной библиотеки.

( читать дальше... )

>>> Подробности

 

snake266 ()

Rust 1.34

Группа Разработка

Вышел релиз 1.34 языка системного программирования Rust, развиваемого проектом Mozilla.

Ключевое-долгожданное:

  • Начиная с этого выпуска, Cargo может поддерживать альтернативные реестры. (Эти реестры сосуществуют с crates.io, так что вы можете писать программы, которые зависят и от crates.io и от вашего реестра.)
  • Трейты TryFrom и TryInto были стабилизированы для поддержки ошибок при преобразовании типов.

>>> Полный анонс

 ,

DAGAZ ()

resvg 0.5 — библиотека отрисовки SVG

Группа Open Source

resvg — это библиотека для отрисовки SVG, прямыми аналогами которой являются librsvg и QtSvg. Но в отличие от них, resvg поддерживает отрисовку с помощью нескольких бэкендов (Qt и cairo) и обеспечивает более полную поддержку стандарта. Также resvg является модульным, что позволяет использовать лишь нужные функции.

Основные изменения:

  • Это bugfix релиз, поэтому в нём множество исправлений.
  • Добавлена поддержка marker.
  • Добавлена частичная поддержка baseline-shift, letter-spacing и word-spacing.
  • Добавлены плагины для использования resvg в качестве генератора превью в Dolphin и в Windows Explorer.
  • Добавлено 143 новых теста. Общее количество достигло 958-и.

Результаты тестирования. Сравнительная таблица. Список нереализованных возможностей.

Так как marker был успешно реализован, до полной поддержки static SVG осталось реализовать textPath, Unicode BIDI (left-to-right, top-to-bottom, glyph orientation и т.д.) и несколько фильтров.

>>> GitHub

 , ,

RazrFalcon ()

resvg 0.4 — библиотека отрисовки SVG

Группа Open Source

resvg — это библиотека для отрисовки SVG, прямыми аналогами которой являются librsvg и QtSvg. Но в отличие от них, resvg поддерживает отрисовку с помощью нескольких бэкендов (Qt и cairo) и обеспечивает более полную поддержку стандарта. Также resvg является модульным, что позволяет использовать лишь нужные функции.

( читать дальше... )

>>> Подробности

 , ,

RazrFalcon ()

Rust 1.31.0 (2018)

Группа Разработка

Команда Rust объявила о выходе новой стабильной версии Rust 1.31.0, который ознаменует собой также выход новой редакции «Rust 2018». Rust — это язык программирования, который позволяет каждому создавать надежное и эффективное программное обеспечение.

Если у вас установлена предыдущая версия Rust, обновиться до Rust 1.31.0 проще всего следующим образом:

rustup update stable

( читать дальше... )

>>> Подробности

 ,

dotcoder ()

Первая международная конференция по Rust в России - Москва, 15-16 декабря - RustRush 2018

Группа Конференции и встречи

15-16 декабря в отеле «Новотель Москва Сити» пройдёт международная конференция для разработчиков на Rust — RustRush 2018.

В программе 2 дня. В субботу, 15 декабря — доклады; в воскресенье, 16 декабря — воркшопы.

Заявлено 12 докладчиков из разных стран, среди них 4 докладчика из Rust Team: Стив Клабник, Эшли Уильямс, Паскаль Хертляйф и Катарина Фей. Список докладчиков.

Основные темы конференции — веб, блокчейн, системное программирование и высокая производительность. Полная программа.

Будет 2 воркшопа. Стив Клабник и Эшли Уильямс проведут воркшоп об использовании связки Rust и WebAssembly, а Артём Павлов (основатель проекта RustCrypto) — о криптографии на чистом Rust.

В стоимость билета входит набор сувениров с символикой Rust и конференции в пакете участника, а также кофе-брейки и фуршет.

Предусмотрена скидка для студентов — 50%. Используйте промокод «STUDENT». В случае использования этой скидки, на входе нужно будет показать действующий студенческий билет.

Также предусмотрена скидка для участников сообщества Linux.org.ru — 20%. Используйте промокод «LINUX».

Купить билет.

>>> Подробности

 , , ,

mkpankov ()

Pijul 0.11

Группа Open Source

Вышла новая версия Pijul — свободной системы управления версиями, основанной на теории патчей и написанной на языке Rust.

Pijul развивает идеи Darcs — Pijul быстрее, лучше, в нём решена проблема экспоненциальной сложности слияния и поддерживаются ветки (для всех, кто спросил и еще спросит «чем оно лучше Git» - ссылка на FAQ)

Слово «Pijul» (произносится «пихуль») — это мексиканское названия Бороздчатоклювого ани, вида птиц семейства кукушковых, чьи особи совместно работают над строительством гнёзд.

Улучшения в версии 0.11:

  • Добавлено частичное клонирование подкаталогов: pijul clone --path и pijul pull --path. При этом скачиваются только те патчи, которые затрагивают указанный подкаталог.
  • Добавлен парсер ~/.ssh/config — теперь Pijul будет автоматически использовать настройки псевдонимов хостов, SSH-прокси, ключей и т. д.
  • Внутренняя архитектура переведена на использование библиотеки Tokio — де-факто стандарта для асинхронного программирования на языке Rust. Минус велосипеды, новичкам будет проще разобраться в коде Pijul.
  • Исправлено много мелких и две крупные ошибки. Одна из них приводила к падению производительности при использовании pijul record, другая в некоторых случаях приводила к изменении содержимого патчей и файлов после клонирования.

Для нужд Pijul автором также развиваются вспомогательные библиотеки:

  • Thrussh — реализация клиента и сервера SSH на языке Rust.
  • Pleingres — клиентская библиотека, реализующая сетевой протокол PostgreSQL на языке Rust.
  • Sanakirja — хранилище «ключ-значение» на языке Rust, основанное на B-деревьях и поддерживающее транзации (аналог LMDB). «Sanakirja» по-фински означает «словарь».

Автор также разрабатывает Pijul Nest — аналог GitHub на основе Pijul и Rust. К сожалению, Nest пока не является свободным проектом.

>>> Подробности

 , , ,

Begpoug ()

Требуется помощь в тестировании Rust 2018

Группа Разработка

В июле этого года начались обсуждения вокруг Rust 2018. Вкратце, запускается цикл долгосрочных этапов, называемых «Выпусками», вокруг которых, в рамках обычных 6-недельных циклов разработки, будут сосредоточены все улучшения и работы: в библиотеках, инструментах и документации Rust. Новые выпуски будут выходить примерно раз в три года: Rust 1.0 был выпуском «Rust 2015», а предстоящий Rust 1.31 будет выпуском «Rust 2018». Каждому выпуску посвящён свой предмет: в Rust 2015 — это была стабильность, в Rust 2018 — это продуктивность.

Rust 2018 уже тестируется некоторое время, и всё выглядит довольно неплохо. До следующей стабильной версии Rust 1.31 ещё есть 6 недель, в связи с чем, разработчики просят попробовать бета-версию.

Есть два способа попробовать Rust 2018: обновить текущий проект, или начать новый. Подробная информация есть в руководстве по выпуску, ниже же приведена быстрая и упрощенная версия.

Разработчики просят сообщать им о всех проблемах, которые возникнут у вас во время тестирования.

( Установка Rust-бета )

( Начало нового проекта )

( Преобразование существующего проекта )

>>> Подробности

 

dotcoder ()

Релиз Rust 1.30

Группа Разработка

Что нового:

  • Rust 1.30 расширяет функционал процедурных макросов, добавляя возможность определять атрибутные процедурные макросы и функциональные процедурные макросы.
  • Теперь можно импортировать макросы в область видимости с помощью ключевого слова use.
  • Стабилизирован пакет proc_macro, который дает API, необходимый для написания процедурных макросов. В нем также значительно улучшили API для обработки ошибок, и такие пакеты, как syn и quote уже используют его
  • Два новых улучшения в использовании use: во-первых, внешние пакеты теперь добавляются в prelude, во-вторых, use стал поддерживать импорт элементов в текущую область видимости с путями, которые начинаются на crate.
  • Сырые идентификаторы
  • В Rust 1.30 можно использовать атрибут #[panic_handler] для самостоятельной реализации паники. Теперь можно создавать приложения, а не только библиотеки, которые не используют стандартную библиотеку.
  • В макросах теперь можно сопоставлять модификаторы области видимости, такие как pub, с помощью спецификатора vis.
  • «инструментальные атрибуты», такие как #[rustfmt::skip], теперь стабилизированы.
  • стабилизирован ряд API в стандартной библиотеке
  • В Cargo теперь есть индикатор выполнения

>>> Подробности

 ,

Anper ()

Rust 1.29

Группа Mozilla

Команда разработчиков Rust сообщает о выпуске новой версии 1.29. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.

Что вошло в стабильную версию 1.29.0

1.29 привносит не очень много изменений. Ожидается что Rust 1.30 и 1.31 будут очень значительными, так что большая часть 1.29 итерации ушла на подготовку к будущим изменениям. Два самых заметных нововведения этого выпуска даже не касаются самого языка: это две новые возможности Cargo и обе они касаются предупреждений.

  • cargo fix автоматически исправляет предупреждения в коде
  • cargo clippy - статический анализатор Rust кода, помогающий поймать распространенные ошибки и просто улучшить код

cargo fix

С выпуском Rust 1.29 у Cargo появляется новая подкоманда: cargo fix. Если вы когда-либо писали на Rust, то скорее всего уже сталкивались с предупреждениями компилятора. Например, рассмотрим такой код:

fn do_something() {}

fn main() {
    for i in 0..100 {
        do_something();
    }
}

В нем мы вызываем do_something сто раз, но никогда не используем переменную i. Rust предупреждает нас об этом:

> cargo build
   Compiling myprogram v0.1.0 (file:///path/to/myprogram)
warning: unused variable: `i`
 --> src\main.rs:4:9
  |
4 |     for i in 1..100 {
  |         ^ help: consider using `_i` instead
  |
  = note: #[warn(unused_variables)] on by default

    Finished dev [unoptimized + debuginfo] target(s) in 0.50s

Видите подсказку о переименовании в _i? Мы можем автоматически применить ее при помощи cargo fix:

> cargo fix
    Checking myprogram v0.1.0 (file:///C:/Users/steve/tmp/fix)
      Fixing src\main.rs (1 fix)
    Finished dev [unoptimized + debuginfo] target(s) in 0.59s

Если теперь мы откроем src\main.rs, то увидим исправленный код:

fn do_something() {}

fn main() {
    for _i in 0..100 {
        do_something();
    }
}

Теперь в коде используется _i, и предупреждение больше не выдается.

Первая версия cargo fix исправляет далеко не все предупреждения. Для своей работы cargo fix использует специальный API компилятора, который предлагает исправлять только те предупреждения, в которых мы абсолютно уверены. Со временем их список будет расширяться.

cargo clippy

Еще о предупреждениях: теперь вы можете попробовать cargo-clippy через Rustup. Clippy это статический анализатор, который выполняет много дополнительных проверок вашего кода.

Например:

let mut lock_guard = mutex.lock();

std::mem::drop(&lock_guard)

operation_that_requires_mutex_to_be_unlocked();

Синтаксически это правильный код, но мы можем получить дедлок, потому что вызвали drop для ссылки на lock_guard, а не самого lock_guard. Вызов drop для ссылки имеет мало смысла и почти наверняка является ошибкой.

Установим предварительную версию Clippy через Rustup:

$ rustup component add clippy-preview

и запустим ее:

$ cargo clippy
error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing.
 --> src\main.rs:5:5
  |
5 |     std::mem::drop(&lock_guard);
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: #[deny(drop_ref)] on by default
note: argument has type &std::result::Result<std::sync::MutexGuard<'_, i32>, std::sync::PoisonError<std::sync::MutexGuard<'_, i32>>>
 --> src\main.rs:5:20
  |
5 |     std::mem::drop(&lock_guard);
  |                    ^^^^^^^^^^^
  = help: for further information visit https://rust-lang-nursery.github.io/rust-clippy/v0.0.212/index.html#drop_ref

Как видно из примечания к сообщению, вы можете получить полный список всех возможных предупреждений по ссылке.

Обратите внимание, что это только ознакомительная версия; Clippy еще не достиг 1.0, поэтому набор и поведение проверок еще могут меняться. Мы выпустим компонент clippy, как только он будет стабилизирован, а пока просим вас посмотреть на деле предварительную версию и рассказать нам о своем опыте.

Да, есть еще нюанс: к сожалению, пока что нельзя использовать clippy вместе с cargo-fix. Работа над этим ведется.

Подробности смотрите в примечаниях к выпуску.

Стабилизация стандартной библиотеки

В этом выпуске были стабилизированы следующие API:

Также, теперь вы можете сравнивать &str и OsString.

Подробности смотрите в примечаниях к выпуску.

Улучшения в Cargo

Выше мы уже описали две новые подкоманды Cargo. Так же, Cargo теперь будет автоматически пытаться починить Cargo.lock файлы, испорченные git mergeом. Это поведение можно отключить флагом --locked.

cargo doc обзавелся новым флагом: --document-private-items. По умолчанию, cargo doc документирует только публичные части API, потому что предназначен для генерации пользовательской документации. Но если вы работаете над своим пакетом и в нем есть внутренняя документация, то --document-private-items включит генерацию документации вообще для всего.

>>> Примечания к выпуску

>>> Подробности

 ,

ozkriff ()

websocat — клиент, сервер и прокси для WebSocket-ов

Группа Интернет

Вышла версия 1.0.0 программы для работы с WebSocket-ами из командной строки «websocat». Девиз программы: "netcat, curl и socat для вебсокетов".

( читать дальше... )

>>> Подробности

 , , ,

vi0 ()

Eclipse 4.8.0 Photon

Группа Open Source

27 июня вышла новая версия Eclipse 4.8.0 Photon. Eclipse - платформа для построения IDE, включающая в себя плагины для поддержки разработки на разных языках. По словам Майка Милинковича, исполнительного директора Eclipse Foundation, задача Eclipse Photon - расширение многоязычных возможностей Eclipse за счет взаимодействия по протоколу LSP (Language Server Protocol), через который предоставляются поддержка редактирования кода на современных языках (в Eclipse поддерживается LSP версии 3.6 и Debug Adapter protocol 1.25).

Обновления плагинов:

В состав Eclipse включен плагин для поддержки разработки на Rust - Eclipse Corrosion 0.1.0 (первый языковый плагин, построенный на взаимодействии по LSP).

>>> Подробности

 , , , ,

tailgunner ()

Rust 1.27

Группа Mozilla

Команда разработчиков языка Rust рада представить новую версию Rust 1.27.0. Rust — системный язык программирования, ориентированный на безопасность, скорость и параллельность.

( читать дальше... )

>>> Подробности

 

mersinvald ()