LINUX.ORG.RU

Сообщения dotcoder

 

Github и санкции

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 теперь опенсорс

 deepnude,

dotcoder
()

Rust 1.36.0

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

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

 ,

dotcoder
()

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

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
()

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

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

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

 

dotcoder
()

RIP, Paul Allen

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

 , paul allen,

dotcoder
()

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

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

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

 ,

dotcoder
()

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

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

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

 ,

dotcoder
()

Go 2 быть

 

dotcoder
()

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

Кто что скажет про новый язык программирования от 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
()

Только сегодня доступна для скачивания книга «Rust Essentials», осталось несколько часов

В рамках своей программы «одна бесплатная книга каждый день», издательство Packt сегодня раздаёт книгу Rust Essentials. До завершения раздачи осталось чуть более чем 5 часов. Требуется регистрация.

https://www.packtpub.com/packt/offers/free-learning

 ,

dotcoder
()

Киберпонедельник. Скидки (50%) от O'Reilly на электронные книги

O'Reilly в честь киберпонедельника объявляет распродажу со скидкой 50% на все электронные книги и видеокурсы, и 60% на заказы свыше 100$. В распродаже представлены более 14 000 книг (включая самые новые книги) от таких издательств как O'Reilly, No Starch Press, Pearson, A Book Apart, Make, Packt, и 25 других. Чтобы воспользоваться скидкой необходимо использовать кодовое слово CYBER16.

 киберпонедельник, ,

dotcoder
()

Facebook пишет свой Mercurial сервер на Rust

Собственно, сабж!

Фейсбук пишет свой сервер Mercurial на расте: https://groups.google.com/forum/m/#!topic/mozilla.dev.version-control/nh4fITF...

* Facebook is writing a Mercurial server in Rust. It will be distributed and will support pluggable key-value stores for storage (meaning that we could move hg.mozilla.org to be backed by Amazon S3 or some such). The primary author also has aspirations for supporting the Git wire protocol on the server and enabling sub-directories to be `git clone`d independently of a large repo. This means you could use Mercurial to back your monorepo while still providing the illusion of multiple «sub-repos» to Mercurial or Git clients. The author is also interested in things like GraphQL to query repo data. Facebook engineers are crazy... in a good way.

 ,

dotcoder
()

Скончался основатель Intel Эндрю Гроув

Основатель, бывший председатель совета директоров и генеральный директор компании Intel умер на 80 году жизни.

RIP

 ,

dotcoder
()

Гугл нанимает основателя форчана, чтобы оживить Г+

sup /b/

Вот такая вот новость прилетела в мои фиды, основатель форчана будет делать новый Гугл+: http://meny.co/google-hire-4chan-founder-revive-google/

Что теперь будет с Гугл+?! Очередной имиджборд, сточная канава мировых интернетов, источник меметических эпидемий...?!

 , ,

dotcoder
()

Leaf 0.2 - «быстрейшая» платформа машинного обучения

Анонсирован выход новой версии Leaf 0.2. Leaf является модульной, производительной и переносимой платформой машинного обучения, написанной на языке программирования Rust.

Этот релиз, в основном, ознаменован поиском эффективной и чистой архитектуры, с оглядкой на уровень производительности других платформ машинного обучения. Leaf разделяет концепции блистательной работы людей, стоящих за Torch, Tensorflow, Caffe, Rust и другими многочисленными научно-исследовательскими работами.

Leaf 0.2 является самой быстрой платформой машинного обучения, которые существуют на сегодняшний день. Язык программирования Rust оказал огромную помощь в разработке целой платформы в течение нескольких месяцев. Разработчики добились очень эффективного использования GPU и ориентировали свою архитектуру ближе к Torch и также добились возможностей распределения как в Tensorflow на низком уровне абстракции.

Leaf 0.2 использует HPC-платформу Collenchyma (написана на Rust) для обучения и запуска моделей на CPU, GPU, FPGA, и т.д. с OpenCL или CUDA или другом вычислительном языке, на разных машинах и операционных системах, без какой-либо надобности адаптировать ваш код. Это делает возможность разворачивания моделей на серверах, рабочих станциях, смартфонах, а также в поздних встраиваемых устройствах очень удобным.

Для ознакомления, вы можете установить Leaf 0.2 и запустить примеры, включая популярные Глубокие Нейронные Сети как Alexnet, Overfeat, VGG и другие.

Анонс: https://github.com/autumnai/leaf/blob/063ce978004b8bf4b7fc7481fdd58fed0515cfd...

 , , ,

dotcoder
()

Udemy. Онлайн-курсы. Чёрная пятница. Обвал цен. Всё по 12$.

Собственно, сабж! Курсы, которые обычно стоят по 200$, в честь «чёрной пятницы» сейчас доступны по 12$. Пишут, срок действия: только сегодня.

По отзывам, могу порекомендовать следующие два курса для мобильных разработчиков от Rob Percival (бестселлинговый преподаватель на площадке):

Ну и, в качестве бонуса, курс по Go: Learn How To Code Using Google's Go Programming Language за 9$ (без купона: 249$!)

 , ,

dotcoder
()

GXUI - кроссплатформенная библиотека ГИП (GUI) на Go

Начата разработка кроссплатформенной библиотеки ГИП на Go - GXUI. Проект в зачатке, разрабатывается парой сотрудников из Google и на данный момент представляет экспериментальный пакет со всеми вытекающими последствиями.

Скриншот: http://imgur.com/a/RqNMo
Страница проекта: https://github.com/google/gxui

 , , gxui

dotcoder
()

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