79.5
Karma
2.6
Rating
Андрей Лесников @ozkriff

Крабообразный системный/игровой программист

Выпуск Rustup 1.20.0: поддержка профилей, улучшения в командах update и doc

Выпуск Rust 1.38.0: конвейерная компиляция, #[deprecated] для макросов и std::any::type_name

+12
Компилятору нужны не полностью собранные зависимости для сборки пакета, а лишь их "метаданные" (список типов, зависимостей, экспортов и т.д.), генерируемые на ранней стадии компиляции. Начиная с Rust 1.38.0, Cargo будет сразу же начинать сборку зависимых пакетов, как только их метаданные будут доступны.

Т.е. сборка пакетов с зависимостями будет начинаться до того, как все их зависмости будут собраны до конца. При большом количестве рекурсивных зависимостей это может заметно ускорять сборку.


With ASCII diagrams, let’s say we have a binary which depends on libB which in turn depends on libA. A compilation today might look like this:
         meta                meta
[-libA----|--------][-libB----|--------][-binary-----------]
0s        5s       10s       15s       20s                30s


With pipelined compilation, however, we can transform this to:
[-libA----|--------]
          [-libB----|--------]
                             [-binary-----------]
0s        5s       10s       15s                25s

(из IRLO темы)

Выпуск Rust 1.37.0: Profile-Guided Optimization, неименованные константы и cargo vendor

+4
кто-нибудь объяснит, какой у них здесь коммерческий интерес?

Собственно, в основном, azure продвигать прямо и косвенно. Тут все прозрачно, кмк.


Какие-то отделы экспериментально могут раст именно как яп использовать, но это вряд ли к текущему спонсорству отношение имеет.


у такого крутого языка куча зависимостей от внешней инфраструктуры

Этот вопрос там-сям всплывает периодически, но в целом аргументация растокоманды сводится к практичности и недостатку ресурсов.


Crates.io требует Github аккаунта

Это вот сюда — https://github.com/rust-lang/crates.io/issues/326 — старый вопрос. TLDR (как я его понимаю) в том, что это просто и практичное решение, которое устраивает абсолютное большинство текущих пользователей, а запилить свой независимый вариант так, что бы это точно не вышло боком — требует ресурсов и не так уж тривиально, поэтому отложено в бэклог.


и вообще Cargo гвоздями прибит к Github

Аналогично. Хотя надо упомянуть, на всякий, что желающие могут развернуть альтернативные регистры — https://doc.rust-lang.org/cargo/reference/registries.html — без всяких гитхабов.


Rust-doc построен на HTML+JS (тк там есть динамические фичи, например поиск) и справка очень жирная, у меня каталог /usr/share/doc/rust-doc занимает почти 300 Мб

А какой основной формат выдачи у генератора доков должен быть? Вроде как это ровно то, что нужно большинству пользователей. Что доки весят порядочно — ну да, не очень приятный момент, но стандартные, насколько помню, можно не выкачивать, а для своего проекта генерить, например, только для определенного набора зависимостей. Ну и хз, на фоне многогигабайтного веса target директории размер генеренных доков лично меня никогда не волновал))


Чат разработчиков идёт в Telegram (привет проприетарщина с идентификацией по номеру телефона).

Эм, чаты из статьи это ж неофициальное русскоязычное — где большая часть пользователей обитает, там оно стихийно и образуется. Так-то есть еще менее живые, но зато опенсорсные гиттер и форум.


Англоязычных средств общения тоже каких угодно хватает — как проприетарного дискорда, так и все еще живой ирки, открытого zulip, discourse'овых URLO/IRLO и т.п.


Теперь вот завязывание инфраструктуры тестов на azure и aws.

Ну, я так понимаю, это опять же вопрос доступных ресурсов. Было бы доступно свое железо в нужном количестве — строили бы все независимое, но денег на это нету.


я бы точно теперь попытался пропихнуть в cargo что-нибудь вроде команд для развёртывания в azure

В сам cargo сильно вряд ли выйдет, но вот удобное расширение cargo наверняка будет (или даже уже есть? надо прогуглить это дело).

Какой язык — D, Go или Rust имеет лучшие перспективы заменить C и почему?

+2
Я не это имел в виду, а то что ансейф из-за необходимого количества его применений, перестает быть маркером «осторожно, волки»

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


  • код в std это одно дело (ему даже нестабильные nightly штуки использовать можно, не то что unsafe),
  • код крейтов со структурами данных (тут unsafe по практическим соображениям и правда часто может встречаться) или FFI это второе,
  • а обычный код библиотек и приложений (где причин иметь unsafe мало) это третье.

Какой язык — D, Go или Rust имеет лучшие перспективы заменить C и почему?

+2
rust huge binary

Там в 99% случаев люди ругаются на две вещи:


1) std статически линуется по умолчанию
2) jemalloc статически линкуется по умолчанию


Первое решается много какими способами (например вышеупомянутым #![no_std]), второе убрано в Rust 1.32.


Тут вот можно найти основные ссылки по наработкам ржавой встройки: https://rust-lang.org/what/embedded

Какой язык — D, Go или Rust имеет лучшие перспективы заменить C и почему?

+4
и нет констант в качестве параметра шаблона

Есть надежда в обозримом будущем (этом году или начале следующего?) получить — работающая в ночнике реализация есть, до стабилизации не так уж и много осталось работы: https://github.com/rust-lang/rust/issues/44580

Генерация подземелий в Diablo 1

Выпуск Rust 1.35.0: Реализации функциональных трейтов и прочие новшества

Выпуск Rust 1.35.0: Реализации функциональных трейтов и прочие новшества

+9

Выпуск полезный, не сильно значительный — в основном мелкие эргономические улучшения. Ждем 1.36 с hashbrown и 1.37 с async'ом (какой бы там синтаксис не выбрали в итоге). :)


Тем временем, я пару недель назад таки срезал v0.5 версию своей пошаговой ржавой игры Zemeroth и написал огромную новость об этом в девлоге: "Zemeroth v0.5: ggez, WASM, itch.io, visuals, AI, campaign, tests".
Неприятные вопросы переезда между движками и работы в вебе хотя бы на время закрыты, роадмап написан, теперь планомерно движусь к выпуску v0.6.

Выпуск Rust 1.34

Выпуск Rust 1.34

+12

Нифига себе пустой — альтернативные реестры и TryFrom очень много кто ждал, как минимум.

Хорошую вещь ржавчиной не назовут

+5

Можно еще вспомнить https://github.com/thepowersgang/mrustc как замену блобу компилятора для раскрутки, правда mrustc в последние версии ржавчины (пока?) не умеет, надо через много промежуточных версий будет пробутстрапиться.

Последствия переписывания компонентов Firefox на Rust

+3
Разработка Quantum CSS началась, чтобы повысить производительность. Улучшение безопасности — просто удачный побочный эффект.

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

Игра на Rust за 24 часа: личный опыт разработки

+1

Я так понимаю, что в текущем виде это просто технодемка/тест, но общая задумка в создании обычного тайкуна на тему тенниса:


сочетаются Cities Skylines, Zoo Tycoon, Prison Architect и собственно теннис
игра об академии тенниса, куда люди приходят для игры

Обычно, игровой процесс состоит из выбора помещений для аренды, покупки и расстановке/монтаже инвентаря, найма-тренировки сотрудников, регулировании ценовой политики, конкурентной борьбе на рынке и т.п. Сами клиенты всегда автономные NPC, в этом же суть, вручную их перетаскивать вряд ли кто даст.

Игра на Rust за 24 часа: личный опыт разработки

Выпуск Rust 1.33

+1

В принципе, парочку повторений в русском варианте можно бы и убрать без потери смысла, но на весь текст новости "Rust" всего восемь раз используется, я бы не сказал что это как-то очень много.

Выпуск Rust 1.33

+4

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

Выпуск Rust 1.33

+1

Хм, а почему не про Cargo вопрос? Системные пакетные менеджеры библиотеки ставить умеют же.

Выпуск Rust 1.32

Выпуск Rust 1.32

+1

Как минимум офигенная штука для отладки кода в плейпене. Я (как и многие растовики) часто там код пишу, а нормального отладчика там все равно нет и вряд ли имеет смысл заморачиваться с втаскиванием.

Выпуск Rust 1.32

+1

Но тогда будет костыль с тем, что в этом специальном случае вызова "dbg!" он внезапно будет возвращать или (), или втихоря паковать перменные в кортеж.
Если возможность прозрачной вставки в середину выражения не нужна, то, кмк, проще ак и раньше "eprintln!" использовать с какой угодно форматной строкой:


eprintln!("a={}, b={}, c={}", a, b, c);

Выпуск Rust 1.32

+3

Как-то слишком категорично, тем более что:
1) такое изменение можно внести потом, потому что оно обратно-совместимо;
2) ценой одной пары скобок это уже можно делать через кортеж:


fn main() {
    let a = 0_u8;
    let b = a + 1;
    let c = "no";
    dbg!((a, b, c));
}

   Compiling playground v0.0.1 (/playground)
    Finished dev [unoptimized + debuginfo] target(s) in 0.63s
     Running `target/debug/playground`
[src/main.rs:5] (a, b, c) = (
    0,
    1,
    "no"
)

Playground

Выпуск Rust 1.32

+3

Конкретно в этой версии ничего особо связанного (и в ближайших следующих ничего не предвидется), но в новой редакции книги есть глава про этот вопрос: http://rustbook.ru/ch17-00-oop.html


А в целом ответ классический — ооп в мэйнстримовом понимании термина нет, задачи решаются другими приемами.

Пишем операционную систему на Rust. Страничная организация памяти

Rust новости #4 (декабрь 2018)

Rust новости #4 (декабрь 2018)

+1

Может и значит, а может и нет, время покажет. Быть в команде ядра, не работая в мозилле, сложнее все-таки. В любом случае его степень влияния на проект сильно упадет.

Rust новости #4 (декабрь 2018)

+5

Извиняюсь, что выкладываю аж 10ого числа, из-за праздников съехало расписание.


Поскольку я пишу это уже задним числом, вот важная новость "из будущего": Стив Клабник уходит из Мозиллы.


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

Мысли о современном C++ и игровой разработке

+1

В этом месте обычно принято говорить про ECS (Entity Component System) и кидать ссылку на доклад Катерины, тем более что речь в статье о разработке игр, где этот подход последние годы получает все больше признания.

Мысли о современном C++ и игровой разработке

+2
стандартного графического фреймворка нет

Прям в std чего-то такого никогда не будет, конечно. А если в более широком смысле, то проект https://github.com/gfx-rs/gfx очень сильно на эту роль пытается претендовать, хотя недавний гигантский рефакторинг всего проекта сильно пошатнул его стабильность.


возможностей по-человечески создавать игры тоже

Не уверен что это значит, но есть надежда что амбициозный проект https://github.com/amethyst/amethyst постепенно таки родит неплохой модульный игровой движок. Работы там, правда, тоже море еще.


Еще для 2д игр есть намного менее амбициозный и простой https://github.com/ggez/ggez (вариация на тему love2d), на котором я свою хобби-игру потихоньку ковыряю.

Rust в 2019 году и далее: ограничения на рост

0

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

Rust в 2019 году и далее: ограничения на рост

+2
Должен отметить, что говорю только за себя, а я даже не очень активный участник проекта.

"anymore" зря опустил, кмк. На всякий поясню, что автор оригинальной заметки — Грэйдон Хор (Graydon Hoare) — это изначальный автор Rust'а, который несколько лет назад отошел от активного участия в проекте, а не какой-то прям левый чувак.


Сам пост хороший и правильный и очень сильно пересекается с мнениями некоторых текущих активных участников проекта, например статьей от Лодочника про "организационный долг": https://boats.gitlab.io/blog/post/rust-2019

Изучаю Rust: Как я UDP чат сделал c Azul

Выпуск Rust 1.31 и Rust 2018

0

Как я понял, там какую-то мета-информацию rustup'а исправить нужно. В деталях сильно не копался, потому что способ выше занял десять секунд и все исправил.

У Интернета могут быть серьёзные проблемы из-за языков, подобных C и C++, которые способствуют появлению уязвимостей

У Интернета могут быть серьёзные проблемы из-за языков, подобных C и C++, которые способствуют появлению уязвимостей

+4
Напишете 100% безопасно с «автоматикой» — будет x1, напишете грамотно с «ручным управлением» — будет x50 скорость.

Есть ссылка откуда такие числа, особенно в контексте Rust'а?

Вышел Rust 2018… но что это такое?

+2

Меня тоже, если честно, немного тревожит этот аспект NLL — что оно более хитрое теперь все. Но 1) не так и просто придумать более-менее реалистичный пример, когда реально из-за этого сильно наступить на грабли 2) очень много людей просто отказывались пользоваться языком с до-NLL проверками, считая язык просто недоработанным (даже на хабре к прошлым статьям десятки таких коментов были).

Вышел Rust 2018… но что это такое?

Выпуск Rust 1.31 и Rust 2018

+7

Всех поздравляю с самым важым после 1.0 выпуском Rust. Уже успел перетащить свою поделку на новую редакцию, это было не больно, так что всем советую. :)


Предвидя два популярных вопроса:


1) rustup немного косячит с компонентами при обноввлении до новой версии. Есл иу вас раньше столи rustfmt-preview и clippy-preview компоненты, то теперь новые clippy и rustfmt компоненты нельзя будет поставить без переустановки тулчейна (URLO тема):


rustup self update
rustup toolchain uninstall stable
rustup toolchain install stable

2) Новый дизайн https://www.rust-lang.org очень спорное явление, сразу могу сказать что вот текущая активная тема для его обсуждения, а старый сайт можно найти тут: https://prev.rust-lang.org

У Интернета могут быть серьёзные проблемы из-за языков, подобных C и C++, которые способствуют появлению уязвимостей

0

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

Вышел Rust 2018… но что это такое?

0

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


… всё это оставляет ощущение глубокой альфы, на которую ещё несколько лет можно даже не смотреть.

С этим особо и спорить не стану — ржавая встройка в текущий момент это и правда еще удел энтузиастов и экспериментаторов, которые пытаются развить экосистему и довести до ума инструментарий. До серьезного "взял и в продакшн" тут еще море работы.


И как, повысили? И про это можно прочитать где-то в объёме большем, нежели «наши доблестные разработчики всё исправили»?

Можно, но за подробностями это с уровня таких больших "корпоративных релизов" надо спускаться на уровень конкретных Embedded WG ежемесячников (например, вот) или даже конкретных задач на гитхабе (например вот или вот).

1 There