LINUX.ORG.RU

Сообщения dotcoder

 

Языку Rust 5 лет

Форум — Talks

Сегодня исполнилось 5 лет языку программирования Rust с начала выпуска версии 1.0 в 2015 году. С чем я и поздравляю комьюнити!

Достижения за эти 5 лет можно увидеть по ссылке: https://blog.rust-lang.org/2020/05/15/five-years-of-rust.html

 ,

dotcoder
()

LabVIEW раздают (Community Edition)

Форум — Talks

Компания National Instruments сделала бесплатными для некоммерческого использования свои продукты LabVIEW и LabVIEW NXG.

LabVIEW (англ. Laboratory Virtual Instrumentation Engineering Workbench) — это среда разработки и платформа для выполнения программ, созданных на графическом языке программирования «G» фирмы National Instruments (США). Первая версия LabVIEW была выпущена в 1986 году для Apple Macintosh, в настоящее время существуют версии для Unix, Linux, Mac OS и Microsoft Windows.

LabVIEW используется в системах сбора и обработки данных, а также для управления техническими объектами и технологическими процессами. Идеологически LabVIEW очень близка к SCADA-системам, но в отличие от них в большей степени ориентирована на решение задач не столько в области АСУ ТП, сколько в области АСНИ.

Скачать можно здесь: https://www.ni.com/en-us/shop/labview/select-edition/labview-community-editio...

Подробности тут: https://twitter.com/labview/status/1255134775880192001

 

dotcoder
()

В будущем, возможно можно будет писать модули Linux на Rust

Форум — Talks

Появление такой возможности в данный момент обсуждают разработчики.

Страница с фреймворком.

 , ,

dotcoder
()

Github и санкции

Форум — Talks

You may not use GitHub in violation of export control or sanctions laws of the United States or any other applicable jurisdiction. You may not use GitHub if you are or are working on behalf of a Specially Designated National (SDN) or a person subject to similar blocking or denied party prohibitions administered by a U.S. government agency. GitHub may allow persons in certain sanctioned countries or territories to access certain GitHub services pursuant to U.S. government authorizations. For more information, please see our Export Controls policy.

https://help.github.com/en/articles/github-terms-of-service

Чем чревато? Надо уходить от гитхаба?

 ,

dotcoder
()

DeepNude теперь опенсорс

Форум — Talks

 deepnude,

dotcoder
()

Rust 1.36.0

Форум — Talks

The Future is here! In Rust 1.36.0 the long awaited Future trait has been stabilized!

With this stabilization, we hope to give important crates, libraries, and the ecosystem time to prepare for async / .await, which we'll tell you more about in the future.

https://blog.rust-lang.org/2019/07/04/Rust-1.36.0.html

 

dotcoder
()

Умер Joe Armstrong, автор Erlang

Форум — Talks

Сегодня утром, в возрасте 68 лет, умер Джо Армстронг (Joe Armstrong), один из создателей языка программирования Erlang. RIP.

 ,

dotcoder
()

Rust 1.31.0 (2018)

Новости — Разработка
Группа Разработка

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

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

rustup update stable

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

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

 , rust2018

dotcoder
()

Rust 2018, допишите, плз

Форум — Talks

NB! Кто может, допишите, плз: https://gist.github.com/bakirov/7b4e674683ff2eed23387d5fefca7d9d

Надо проставить везде ссылки и доперевести остальные 25% + пруф-рид + стилистика.

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

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

 
rustup update stable

Если у вас ещё не установлен Rust, то это можно сделать, загрузив с сайта утилиту rustup.

Что нового в Rust 1.31.0

Rust 2018

Данный релиз ознаменует собой выпуск редакции Rust 2018. Впервые Rust 2018 был упомянут в марте, а затем в июле: прочтите их, чтобы понимать для чего нужен Rust 2018. Также есть статья на сайте Mozilla Hacks.

Вкратце, Rust 2018 это возможность представить всю работу за последние три года в виде цельного пакета. Кроме возможностей языка, сюда входят:

  • Инструментарий (поддержка IDE, rustfmt, Clippy)
  • Документация
  • Работа различных рабочих групп
  • Новый веб-сайт

Для обозначения редакций Rust был представлен ключ edition в Cargo.toml:

 
[package]
name = "foo"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2018"

[dependencies]  

Значение 2018 означает, что используется редакция Rust 2018; отсутствие ключа или значение 2015 означает использование редакции Rust 2015.

Важно отметить, что каждый пакет может быть в редакциях 2015 или 2018, и они без проблем могут работать вместе. Проект под редакцией 2018 может использовать зависимости 2015, а проект 2015 использовать зависимости 2018. Это гарантирует целостность экосистемы, сохраняя совместимость существующего кода. Кроме того, существует возможность автоматической миграции кода с редакции Rust 2015 на Rust 2018 при помощи cargo fix.

Non-lexical lifetimes (NLL; Нелексические времена жизни)

В 2018 появились нелексические времена жизни, что на простом языке означает, что проверщик заимствований (borrow checker) стал умнее и теперь не отклоняет правильный код. Например:

 
fn main() {
    let mut x = 5;

    let y = &x;

    let z = &mut x;
}

В старых версиях этот код выдаст ошибку компиляции:

 
error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
 --> src/main.rs:5:18
  |
4 |     let y = &x;
  |              - immutable borrow occurs here
5 |     let z = &mut x;
  |                  ^ mutable borrow occurs here
6 | }
  | - immutable borrow ends here

из-за того, что время жизни действует внутри лексического блока; то есть, заимствование будет удерживаться за y, пока y не покинет пределы main, несмотря на то, что y больше не используется. Код правильный, но проверщик заимствований не смог с ним справиться; сегодня этот код скомпилируется правильно.

Другой пример:

 
fn main() {
    let mut x = 5;
    let y = &x;
    let z = &mut x;
    
    println!("y: {}", y);
}

Старый Rust выдаст следующую ошибку:

 
error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
 --> src/main.rs:5:18
  |
4 |     let y = &x;
  |              - immutable borrow occurs here
5 |     let z = &mut x;
  |                  ^ mutable borrow occurs here
...
8 | }
  | - immutable borrow ends here

В Rust 2018 вывод ошибки стал лучше:

 
error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
 --> src/main.rs:5:13
  |
4 |     let y = &x;
  |             -- immutable borrow occurs here
5 |     let z = &mut x;
  |             ^^^^^^ mutable borrow occurs here
6 |     
7 |     println!("y: {}", y);
  |                       - borrow later used here

Теперь, вместо того, чтобы показывать место, где y покидает пределы лексического блока, показывается место, где происходят конфликтующие заимствования. Это значительно облегчает отладку подобных ошибок.

Изменения в системе модулей

Редакция Rust 2018 привносит некоторые изменения в работу с путями, что в конечном итоге привело к упрощению системы модулей.

Вкратце:

  • extern crate больше не требуется практически во всех случаях.
  • Макросы теперь можно импортировать при помощи use вместо атрибута #[macro_use].
  • Абсолютные пути начинаются с названия пакета, где ключевое слово crate ссылается на текущий пакет.
  • foo.rs и поддиректория foo/ могут сосущестовать вместе; mod.rs больше не нужен при размещении подмодулей в поддиректории.

Полную информацию можно прочесть в руководстве к редакции.

Упрощенные правила синтаксиса для времени жизни

В обеих редакциях представлены новые правила синтаксиса для времени жизни для блоков impl и определениях функций. Следующий код:

 
impl<'a> Reader for BufReader<'a> {
    // methods go here
}
теперь может быть написан таким образом:
 
impl Reader for BufReader<'_> {
    // methods go here
}

'_ всё ещё подсказывает, что BufReader берёт параметр, но больше нет необходимости создавать имя для него.

В структурах времена жизни всё ещё должны быть определены, но теперь не требуют лишнего кода:

 
// Rust 2015
struct Ref<'a, T: 'a> {
    field: &'a T
}

// Rust 2018
struct Ref<'a, T> {
    field: &'a T
}
: 'a добавляется автоматически. При желании, можно продолжать использовать явное определение.

const fn

Существует несколько способов определения функции в Rust: регулярная функция с fn, небезопасная функция с unsafe fn, внешняя функция с extern fn. В этом релизе появился ещё один способ: const fn, который выглядит следующим образом:

 
const fn foo(x: i32) -> i32 {
    x + 1
}
Функции const fn могут вызываться как регулярные функции, но вычисляются во время компиляции, а не во время выполнения. Для стабильной работы, они должны иметь детерминированный результат и в настоящее время ограничены следующим минимальным набором операций:

  • Арифметические операторы и операторы сравнения с целыми числами
  • Все логические операторы, кроме && и ||
  • Построение массивов, структур, перечислений и кортежей
  • Вызов других функций const fn
  • Задание индекса массивам и срезам
  • Доступ к полям структур и кортежей
  • Чтение из констант
  • & и * на ссылках
  • Приведение типов, за исключением необработанных указателей на целые числа

В будущем данный набор будет расширяться, подробную информацию можно посмотреть здесь.

Новые инструменты

Наряду с Cargo, Rustdoc, и Rustup, которые являются ключевыми инструментами с версии 1.0, редакция 2018 представляет новое поколоение инструментов: Clippy, Rustfmt, и поддержку IDE.

Clippy является статическим анализатором кода в Rust, достиг версии 1.0 и теперь доступен в стабильной версии Rust. Установку можно произвести следующим образом: rustup component add clippy, запуск: cargo clippy.

Rustfmt является инструментом для автоматического форматирования кода Rust в соответствии с официальной стилистикой Rust. В этом релизе он достиг версии 1.0; начиная с этой версии гарантируется обратная совместимость для Rustfmt: отформатированный сегодня код останется неизменным в будущем (только с опциями использованными по-умолчанию), и несёт практическую ценность при использовании с системами непрерывной интеграции (CI). Установить Rustfmt можно следующим образом: rustup component add rustfmt, использовать: cargo fmt.

Поддержка IDE - одна из наиболее востребованных возможностей в Rust. Работы над поддержкой IDE ещё не закончены, но на данный момент уже существуют несколько высококачественных опций:

Tool lints

В Rust 1.30 были стабилизированы атрибуты инструментов, такие как #[rustfmt::skip]. В Rust 1.31 стабилизированы

 

dotcoder
()

Требуется помощь в тестировании 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
()

Парсинг логов в 230 раз быстрее на Rust

Форум — Talks

Статья про то, как автор добился ускорения парсинга логов в 230 раз, переписав всё на Rust:

https://andre.arko.net/2018/10/25/parsing-logs-230x-faster-with-rust/

 

dotcoder
()

RIP, Paul Allen

Форум — Talks

Умер Пол Аллен, один из основателей Microsoft. Ему было 65.

 , paul allen,

dotcoder
()

Линус извинился, Линус берёт паузу

Форум — Talks

https://lkml.org/lkml/2018/9/16/167

Для Ъ:

This is my reality. I am not an emotionally empathetic kind of person and that probably doesn't come as a big surprise to anybody. Least of all me. The fact that I then misread people and don't realize (for years) how badly I've judged a situation and contributed to an unprofessional environment is not good.

This week people in our community confronted me about my lifetime of not understanding emotions. My flippant attacks in emails have been both unprofessional and uncalled for. Especially at times when I made it personal. In my quest for a better patch, this made sense to me. I know now this was not OK and I am truly sorry.

The above is basically a long-winded way to get to the somewhat painful personal admission that hey, I need to change some of my behavior, and I want to apologize to the people that my personal behavior hurt and possibly drove away from kernel development entirely.

I am going to take time off and get some assistance on how to understand people’s emotions and respond appropriately.

 ,

dotcoder
()

AMA с командой Rust

Форум — Talks

Недавно закончилась сессия AMA («Ask me anything», «Спроси меня о чём угодно») с командой Rust. Кому интересно, по ссылке вопросы и ответы: https://hshno.de/SkMsTDg0-

 ,

dotcoder
()

Mononoke — a next-generation server for the Mercurial source control system

Форум — Talks

Facebook анонсировал Mononoke — систему управления версиями Mercurial следующего поколения, рассчитаную на работу с тысячами коммитов в час с миллионами файлов. Mononoke написана на Rust как основном языке программирования.

P.S. Статья 2014 года в блоге Facebook, почему они сделали выбор в пользу Mercurial вместо Git: https://code.facebook.com/posts/218678814984400/scaling-mercurial-at-facebook/

 ,

dotcoder
()

Go 2 быть

Форум — Talks

 

dotcoder
()

P: язык программирования, разработанный для асинхронности, отказоустойчивости и неопределенности

Форум — Talks

Кто что скажет про новый язык программирования от Microsoft — P? Кто-нибудь смотрел ближе, тестил?

Пишут, что датарейсов не бывает (исключены гейзенбаги, связанные с многопоточностью) и в плане многопоточности язык похож на Раст. Драйвера USB 3.0, начиная с Windows 8.1 и Windows Phone, писаны на ней.

https://www.microsoft.com/en-us/research/blog/p-programming-language-asynchrony/

Синатксис: https://github.com/p-org/P/blob/master/Doc/Manual/pmanual.pdf

 , p

dotcoder
()

Pijul 0.3

Новости — Open Source
Группа Open Source

Состоялся первый публичный релиз системы управления версиями Pijul 0.3, написанной на языке программирования Rust. Pijul объединяет в себе производительность git и простоту использования darcs. Основанная на модели теории патчей, система Pijul направлена на то, чтобы сделать операции слияния и забора определенных коммитов (cherry-pick) более интуитивным.

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

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

 , , ,

dotcoder
()

Go 1.8

Новости — Разработка
Группа Разработка

Представлен стабильный выпуск Go 1.8. Этот релиз содержит значительные улучшения производительности и изменения в стандартной библиотеке.

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

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

 

dotcoder
()

Rust 1.15

Новости — Разработка
Группа Разработка

Представлен релиз Rust 1.15 — системного языка программирования, нацеленного на безопасную работу с памятью, скорость и параллельное выполнение кода. В этот релиз вошли 1443 патча.

Если у вас уже установлена предыдущая версия Rust, то обновиться до Rust 1.15 очень легко:

$ rustup update stable
или же следуя инструкции на соответствующей странице.

( Новое в 1.15 )

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

 

dotcoder
()

RSS подписка на новые темы