Как стать автором
Обновить
153.62

Rust *

Мультипарадигмальный компилируемый язык

Сначала показывать
Порог рейтинга
Уровень сложности

Обновления в Chipmunk

Время на прочтение2 мин
Количество просмотров1.7K
Рад представить Вашему вниманию некоторые обновления «смотрелки» для логов chipmunk. Где-то стало удобнее, где-то практичнее, но обо всем по порядку… Под катом будет коротко, но интересно.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии4

Rust 1.46.0: track_caller и улучшения const fn

Время на прочтение2 мин
Количество просмотров4.3K

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


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


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта и ознакомиться с подробными примечаниями к выпуску 1.46.0 на GitHub.


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


Этот выпуск достаточно небольшой, с улучшениями в const fn, стабилизацией двух новых API в стандартной библиотеке и одной опции, удобной для авторов библиотек. Смотрите подробные примечания к выпуску чтобы узнать о других изменениях, не представленных в данном анонсе.

Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии2

Rust vs. State

Время на прочтение5 мин
Количество просмотров5.1K

Важно: для комфортного прочтения статьи нужно уметь читать исходный код на Rust и понимать, почему оборачивать всё в Rc<RefCell<...>> — плохо.


Введение


Rust не принято считать объектно-ориентированным языком: в нём нет наследования реализации; инкапсуляции на первый взгляд тоже нет; наконец, столь привычные ООП-адептам графы зависимостей мутабельных объектов здесь выглядят максимально уродливо (вы только посмотрите на все эти Rc<RefCell<...>> и Arc<Mutex<...>>!)


Правда, наследование реализации уже как несколько лет считают вредным, а гуру ООП говорят очень правильные вещи вроде "хороший объект — иммутабельный объект". Вот мне и стало интересно: насколько хорошо объектное мышление и Rust сочетаются друг с другом на самом деле?


Первым подопытным кроликом станет паттерн State, чистой реализации которого и посвящена эта статья.

Начать опыт
Всего голосов 14: ↑14 и ↓0+14
Комментарии28

Закладывая фундамент будущего Rust

Время на прочтение4 мин
Количество просмотров8.9K

Rust был задуман в 2010 (в зависимости от того, как вы считаете, можно сказать, что в 2006!) как проект в Mozilla Research, но его долгосрочной целью было создание самостоятельного проекта. В 2015, вместе с выпуском Rust 1.0, появилось управление, независимое от Mozilla. С тех пор Rust работает как автономная организация, а Mozilla выступает в качестве известного и постоянного финансового и юридического спонсора.


Mozilla была и продолжает восторгаться от возможности широкого использования и поддержки языка Rust многими компаниями в отрасли. Сегодня многие компании, как крупные так и малые, используют Rust более разнообразными и значительными способами: от Amazon’s Firecracker до Fastly’s Lucet, в критических службах, которые "снабжают энергией" Discord, Cloudflare, Figma, 1Password и многие, многие другие.


Во вторник, 11 августа 2020 года, Mozilla объявила о реструктуризации компании и увольнении около 250 сотрудников, включая активных участников Rust и Rust сообщества. Понятно, что эти увольнения породили множество путаницы и неуверенности в отношении Rust. Цель этого поста — решить эти проблемы. Также у нас есть важное объявление, о котором сказано дальше!

Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии6

Истории

Разработка инструмента командной строки: сравнение Go и Rust

Время на прочтение12 мин
Количество просмотров18K
Эта статья посвящена разбору моего эксперимента по написанию небольшого инструмента командной строки с использованием двух языков, в программировании на которых у меня не особенно много опыта. Речь идёт о Go и Rust.



Если вам не терпится увидеть код и самостоятельно сравнить один вариант моей программы с другим — то вот репозиторий Go-варианта проекта, а вот — репозиторий его варианта, написанного на Rust.
Читать дальше →
Всего голосов 48: ↑46 и ↓2+44
Комментарии166

Опыт конвертирования кода C# в код Rust

Время на прочтение14 мин
Количество просмотров9.7K

Постановка задачи


Код на языке C# нужно перевести в код на Rust. Точнее, требуется такая процедура перевода (разработка продолжается на C#), чтобы в любой момент можно было получить работающий код на Rust. Эту задачу я решал для языков Java, Python, JavaScript и PHP, написав конвертер из C# в эти языки. Концепция такого конвертирования была изложена в статье UniSharping пару лет назад. Я разрабатывал этот конвертер, чтобы переводить код своего проекта SDK Pullenti (лингвистический анализ текста). И подумалось мне: а не замахнуться ли на Rust? Да, слышал разные отзывы, что язык необычный и пр., но попытка же не пытка… Тем более, что у одного из заказчиков группа программистов увлечённо пишет на нём.

Читать дальше →
Всего голосов 34: ↑27 и ↓7+20
Комментарии62

Распространённые заблуждения о временах жизни в Rust

Время на прочтение27 мин
Количество просмотров20K

(прим. переводчика: времена жизни (lifetimes) — это одна из самых запутанных вещей в Rust, которая часто вызывает затруднение у новичков, даже несмотря на официальную документацию. Разъяснения по отдельным аспектам времён жизни есть, но они все разбросаны по разным источникам и ответам на Stack Overflow. Автор статьи собрал в одном месте и разъяснил множество связанных с временами жизни вопросов, что и делает эту статью столь ценной (я и сам почерпнул новое для себя отсюда). Я решил перевести её, чтобы дать возможность прочитать её тем, кто не владеет английским в достаточной степени, чтобы свободно читать оригинал, а также для того, чтобы повысить известность этой статьи среди русскоязычного Rust-сообщества)


19 мая 2020 г. · 37 минут · #rust · # lifetimes

Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии5

В поиске вопросов, или как создать новый отладчик

Время на прочтение3 мин
Количество просмотров3.5K

Мы уделяем много внимания инструментам разработки: участвуем в горячих спорах о редакторах (Vim или Emacs?), долго настраиваем IDE под свой вкус, и тщательно выбираем языки программирования и библиотеки, которые с каждым днем становятся все лучше и удобнее. Однако, здесь можно выделить одну категорию, которая по какой-то причине остается незаслуженно забытой: отладчики не сильно изменились за последний десяток лет, хотя по-прежнему являются одним из базовых инструментов для отлова ошибок и навигации в коде.



Изображение: Timothy Dykes @timothycdykes, unsplash.com


Гораздо чаще мы предпочитаем быстро добавить пару printов вместо того, чтобы поставить в нужном месте точку останова и пройтись к ней отладчиком — и вопрос "почему?" не перестает меня занимать — ведь логи и printы дают ограниченную информацию и не позволяют интерактивно взаимодействовать с запущенным процессом (а отладчики могут работать даже и с "умершими" процессами!).


Одной из главных причин я вижу как раз отсутствие значительного прогресса в разработке отладчиков.

Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии14

Rust 1.45.0: стабилизация функциональных процедурных макросов, исправление дефектов преобразования

Время на прочтение5 мин
Количество просмотров6.6K

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


Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.45.0 вам достаточно выполнить следующую команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть на GitHub.


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


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

Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии10

Как переписать код на Rust

Время на прочтение39 мин
Количество просмотров8.7K
В предыдущей статье мы говорили о том, как избежать переписывания библиотеки на Rust, когда вам это не нужно. Но как насчёт тех случаев, когда это действительно необходимо?

В большинстве языков вам придётся переписывать всю библиотеку с нуля, а первые результаты появятся ближе к концу проекта. Такие порты, как правило, довольно дороги и подвержены ошибкам, а часто они выходят из строя на полпути. Джоэл Сполски гораздо лучше меня объясняет это в статье о том, почему полные переделки проектов — плохая идея.

Однако у Rust есть убийственная особенность, когда речь заходит о таких вещах. Он может вызывать код на языке С без накладных расходов (т. е. среда P/Invoke в C#), и он выставляет функции, которые можно использовать в C так же, как и любые другие функции на языке С. Это открывает дверь для альтернативного подхода:

Портировать библиотеки на Rust по одной функции.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии16

Время в логах

Время на прочтение2 мин
Количество просмотров4.4K
Записи в логах о затраченном на ту или иную операцию времени дело вполне обычное. Пожалуй даже так, если я вижу логи без замеров (особенно если речь идёт о приложении обрабатывающим «тяжёлые» запросы), то вопрос к разработчикам возникает сам собой.

Измерение продолжительности стадий инициализации приложения; времени затраченного на обработку данных; времени отрисовки (рендеринга) и так далее позволяют нам судить о достаточности ресурсов и эффективности нашего решения так какового. Кроме того, часто именно тайминг может указать нам на ошибки при отсутствии явных признаков таковых в логах. Например, если обработка какого-нибудь запроса, занимающая как правило несколько миллисекунд, переодически «ест» больше секунды — это явный повод проверить обработчик запроса.

Поскольку нагружать приложение тоннами логов путь, мягко скажем, сомнительный, то разработчик как правило ставит тайминги именно на критически важные операции. А там где таймингов нет — вам вполне может пригодиться новый функционал в обновлённой версии «смотрелки для логов» chipmunk.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии8

Как я написал интро 4K на Rust — и оно победило

Время на прочтение7 мин
Количество просмотров12K
Недавно я написал своё первое интро 4K на Rust и представил его на Nova 2020, где оно заняло первое место в конкурсе New School Intro Competition. Написать интро 4K довольно сложно. Это требует знания многих различных областей. Здесь я сосредоточусь на методах, как максимально сократить код Rust.


Можете просмотреть демо-версию на Youtube, скачать исполняемый файл на Pouet или получить исходный код с Github.
Всего голосов 41: ↑41 и ↓0+41
Комментарии27

О нет! Моя Data Science ржавеет

Время на прочтение9 мин
Количество просмотров8.8K
Привет, Хабр!

Предлагаем вашему вниманию перевод интереснейшего исследования от компании Crowdstrike. Материал посвящен использованию языка Rust в области Data Science (применительно к malware analysis) и демонстрирует, в чем Rust на таком поле может посоперничать даже с NumPy и SciPy, не говоря уж о чистом Python.


Приятного чтения!
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии9

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург

Microsoft: Rust является 'лучшим шансом' в отрасли программирования безопасных систем

Время на прочтение5 мин
Количество просмотров39K

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


YouTube: Ryan Levick - Rust at Microsoft

Независимо от того, сколько вложений компании-разработчики могут потратить на инструментарий и обучение своих разработчиков, «C++, по своей сути, не является безопасным языком», сказал Райан Левик (Ryan Levick) 'cloud developer advocate' из Microsoft на виртуальной конференции AllThingsOpen в прошлом месяце, объясняя в виртуальной беседе почему Microsoft постепенно переходит с C/C++ на Rust для создания своего инфраструктурного программного обеспечения. И вдохновляет других гигантов индустрии программного обеспечения задуматься о том же.


Всего голосов 73: ↑65 и ↓8+57
Комментарии592

Имитируем функционал зависимых типов в системе типов Rust

Время на прочтение30 мин
Количество просмотров7.4K

Системы типов — это настоящее безумие.


КДПВ в подражание XKCD


Некоторое время назад я уже отметился здесь со статьёй, в которой пытался разобрать, какие гарантии в compile-time может дать система типов Rust. Кое-какие интересные моменты удалось выловить уже тогда, однако больше всего меня зацепил весьма развёрнутый комментарий, описывающий некоторые вещи, доступные в зависимо-типизированном Idris.
Разумеется, я не мог остаться в стороне. Результат исследований доступен на github, а детальный разбор — под катом.

Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии24

Мьютекс в мире асинхронного кода

Время на прочтение4 мин
Количество просмотров6.2K

failed guard


Фото: James P. Blair/National Geographic Creative


Вы когда-нибудь сталкивались со следующей проблемой в rust, когда использовали std::sync::Mutex в асинхронном коде?


 7  |     tokio::spawn(/* some future here */);
    |     ^^^^^^^^^^^^ future returned by `fut` is not `Send`
    |
127 |         T: Future + Send + 'static,
    |                     ---- required by this bound in `tokio::task::spawn::spawn`
    |
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Что делает Rust универсальным языком программирования

Время на прочтение17 мин
Количество просмотров43K

Владей и заимствуй


Долгое время Rust позиционировался исключительно как язык для системного программирования. Попытки использовать Rust для высокоуровневых прикладных задач зачастую вызывали усмешку у значительной части сообщества: зачем использовать инструмент в том качестве, на которое он не рассчитан? Какая польза от возни с типами и анализатором заимствований (borrow checker), если есть Python и Java со сборкой мусора? Но другая часть сообщества всегда видела потенциал Rust именно как языка прикладного, и даже находила его удобным в использовании для быстрого прототипирования — во многом благодаря его особенностям, а не вопреки им.

Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии234

Пишем игру «Жизнь» для NES на Rust

Время на прочтение12 мин
Количество просмотров5.6K
image

Этот пост — о программе на Rust…

$ cargo install conway-nes

…выводящей двоичный файл NES…

$ conway-nes > life.nes

…в котором выполняется конвеевская игра «Жизнь»!

$ fceux life.nes    # fceux is a NES emulator

Запустив игру на эмуляторе, нажмите любую кнопку контроллера, чтобы начать заново с рандомизированного состояния.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии4

Пять лет Rust

Время на прочтение13 мин
Количество просмотров31K

В этом бардаке, который сейчас происходит в мире, легко забыть, что прошло уже пять лет с выпуска 1.0 в 2015 году! Rust за эти пять лет сильно изменился, так что мы хотели бы вспомнить о работе всех участников сообщества, начиная с момента стабилизации языка.


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

Читать дальше →
Всего голосов 84: ↑83 и ↓1+82
Комментарии52

Rust для Java разработчиков

Время на прочтение15 мин
Количество просмотров15K

Представляю перевод статьи автора Evan Cameron, которая может помочь Java разработчикам лучше понять отличия и схожесть этих двух языков — оригинал на сайте автора. Не считая себя достаточно опытным Rust разработчиком, я вряд ли смогу аргументированно участвовать в возможных дискуссиях.

Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии36