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

Rust *

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

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

Выпуск Rust 1.20

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

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


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


$ rustup update stable

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

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

Внутри супер-быстрого CSS-движка: Quantum CSS (aka Stylo)

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

Привет, Хабр! Представляю вашему вниманию перевод статьи Inside a super fast CSS engine: Quantum CSS (aka Stylo) автора Лин Кларк.


Вы возможно слышали о Project Quantum… Это проект по существенной переработке внутренностей Firefox с целью ускорить браузер. По частям мы внедряем наработки нашего экспериментального браузера Servo и значительно улучшаем остальные элементы движка.


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


image


Прим. переводчика: под катом много иллюстраций. Все они кликабельные (для просмотра в большем разрешении). Если Вы наткнетесь на неточности перевода и другие ошибки — буду благодарен, если сообщите об этом в комментариях или в личку.

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

«Ржавая» IP-камера: прошивка на Rust

Время на прочтение 4 мин
Количество просмотров 24K
До появления ботнета Mirai только особо интересующиеся знали о том, что находится внутри обычных IP камер. В большинстве случаев там стоит обычный линукс, причем частенько с дефолтным рутовым паролем, а то и вообще без него: у нас в офисе стоит такая камера, с прошивкой от декабря 2016 года и беспарольным рутовым телнетом.

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

Грустная реальность в том, что очень часто этот софт написан далеко не лучшим образом. Достаточно сказать, что большинство камер, которые висят на улице очень страдают из-за большого расстояния до сервера, потому что авторы их прошивки освоили мастерство потерь данных по TCP.

Мы решили исправить эту ситуацию своей прошивкой, причем сделав ставку на Rust.
Читать дальше →
Всего голосов 70: ↑66 и ↓4 +62
Комментарии 45

Microsoft не изолировала Windows Defender в песочнице, так что это сделал я

Время на прочтение 7 мин
Количество просмотров 22K
Microsoft подвергла своих пользователей немалому риску, когда выпустила Windows Defender вне песочницы. Меня это удивило. Песочница — одна из самых эффективных техник усиления безопасности. Почему Microsoft изолировала в песочнице другие высоковероятные цели атаки, вроде кода JIT в Microsoft Edge, но оставила Windows Defender без защиты?

В качестве PoC (proof-of-concept) я изолировал Windows Defender, а сейчас выкладываю свой код в открытый доступ как Flying Sandbox Monster. Основа Flying Sandbox Monster — это AppJailLauncher-rs, фреймворк на Rust для помещения ненадёжных приложений в AppContainers. Он также позволяет вынести I/O приложения за TCP-сервер, чтобы приложение в песочнице работало на полностью другой машине. Это дополнительный уровень изоляции.

В статье я опишу процесс и результаты создания этого инструмента, а также выскажу свои мысли о Rust на Windows.
Читать дальше →
Всего голосов 50: ↑48 и ↓2 +46
Комментарии 2

Истории

Выпуск Rust 1.19

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

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


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


$ rustup update stable

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

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

Выпуск Rust 1.18

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

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


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


$ rustup update stable

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

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

Функциональный Rust: Готовим говядину

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

image


Попался мне на глаза Brainfuck-оподобный язык Cow. И решил я написать для него интерпретатор на новомодном Rust. А так как Rust — мультипарадигменный язык, то стиль написания программы будет функциональный. Чтобы узнать что получилось — прошу под кат.

Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 30

Новый Rust-митап уже 18 мая в ЛК: приходите – будет полезно

Время на прочтение 2 мин
Количество просмотров 2.1K
18 мая в московском офисе «Лаборатории Касперского» пройдёт третья по счету встреча любителей и профи, пишущих код на Rust. Гостей нашего митапа как всегда ждёт интересная и насыщенная программа с обсуждением самых актуальных вопросов: мы поговорим о реализации ООП в Rust и о криптографических библиотеках, а также раскроем все tips&tricks работы с экспортом функций.


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

Выпуск Rust 1.17

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

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


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


$ rustup update stable

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


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


Выпуск Rust 1.17.0 в основном вносит небольшие улучшения, преимущественно касающиеся удобства использования. Например, время жизни 'static теперь автоматически подразумевается для констант или статических переменных. При создании константы или статической переменной:


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

Передача намерений

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

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


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

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

Пишем Telegram-бота на Rust, который будет запускать код на… Rust?

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

Доброй ночи! Сегодня хотелось бы кратко рассказать о том, как написать Telegram-бота на Rust, который будет запускать код на Rust. У статьи нет цели произвести полное погружение в API telegram_bot, Serde, Telegram или в нюансы разработки на Rust. Она скорее носит ознакомительный характер. Числа Пеано с помощью системы типов складывать не будем.
Превью к статье


Хотел складывать числа Пеано, но ладно, давай своего бота...
Всего голосов 52: ↑47 и ↓5 +42
Комментарии 12

Опрос разработчиков от StackOverflow (2017)

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

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


Кстати, на КДПВ — список "Most Loved" языков, это языки, на которых опрашиваемые пробовали писать, и им понравилось.


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

Что я изменил бы в Go

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

image


В течение полугода я программировал преимущественно на Go. И я разочарован. По двум причинам:


  • В Go особенно трудно придерживаться функциональной парадигмы. По сути, язык препятствует функциональному программированию. Меня это разочаровало, потому что в императивном коде, который я пишу, большое количество шаблонных кусков. К тому же, как мне кажется, в этом случае выше риск ошибок, в отличие от использования функциональных абстракций.
  • Я считаю, что Go упускает свои шансы. В программных языках появились замечательные нововведения (особенно в сфере проверки и вывода типов — type inference), делающие код безопаснее, быстрее и чище. Мне хотелось бы, чтобы Google использовала своё влияние, чтобы поддержать некоторые из этих идей.

Я не первый, кто воспринимает Go подобным образом. Вот публикации других людей, разделяющих мои впечатления:



Ниже я добавлю свои соображения. Чтобы показать, как именно можно улучшить Go, я буду сравнивать его с Rust.

Читать дальше →
Всего голосов 87: ↑78 и ↓9 +69
Комментарии 180

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн

Пробуем делать web-frontend на Rust (WebAssembly)

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

Недавно вышла новость про то, что webassembly теперь включен в firefox 52 из коробки. А потом еще и chrome 57 подтянулся (правда, там вроде бы были какие-то баги с запуском). Я решил, что обязательно надо попробовать.


Для тех, кто не знает, что такое webassembly краткая информация: webassembly (или wasm) — это низкоуровневый язык, который понимают браузеры, и в который можно будет скомпилировать программы, написанные на популярных языках. Это гораздо более выгодно по скорости парсинга и выполнения, чем компилировать эти языки в чистый javascript или какой-нибудь asm.js.


Wasm задумывался в основном для c/c++, но, на удивление, уже все готово, чтобы скомпилировать программу на rust. Давайте сделаем небольшое приложение и посмотрим, что получится. Все это будем компилировать на Ubuntu. Без теоретических деталей, просто "пощупаем".

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

Rust, Eclipse и STM32

Время на прочтение 8 мин
Количество просмотров 21K
Для того, чтобы подружить между собой указанные в заголовке технологии нам понадобятся:


Идея состоит в том, чтобы с скомпилировать написанную на Rust программу в библиотеку, которую можно будет слинковать с помощью тулчейна для ARM.
В итоге мы сможем даже вполне комфортно дебажить смешанный код на Rust и С.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 24

Выпуск Rust 1.16

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

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


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


$ rustup update stable

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


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


Самым большим дополнением в Rust 1.16 является команда cargo check. Эта новая подкоманда в большинстве случаев должна ускорить процесс разработки.


Что она делает? Давайте вернёмся немного назад и поговорим о том, как rustc компилирует ваш код. Компиляция происходит в несколько "проходов". Это значит, что компилятор выполняет множество различных этапов, прежде чем из вашего исходного кода будет создан бинарный файл. Вы можете увидеть каждый их этих этапов (и сколько времени и памяти они занимают) передав компилятору параметр -Z time-passes (только для nightly):


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

Прекрасные конечные автоматы на Rust

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

Перевод статьи Andrew Hobden "Pretty State Machine Patterns in Rust". Ссылка на оригинал в конце.


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


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


Один интересный шаблон, часто применяемый к таким проблемам — "Конечный автомат". Предлагаю потратить немного времени, чтобы понять, что именно имеется ввиду под этим словосочетанием, и почему же это так интересно.

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

Изменение размера изображения с учётом содержимого

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

Изменение размера изображения с учётом содержимого (Content Aware Image Resize), жидкое растяжение (liquid resizing), ретаргетинг (retargeting) или вырезание шва (seam carving) относятся к методу изменения размера изображения, где можно вставлять или удалять швы, или наименее важные пути, для уменьшения или наращивания изображения. Об этой идее я узнал из ролика на YouTube, от Shai Avidan и Ariel Shamir.


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


Для подопытной картинки, я поискал по запросу1 "sample image", и нашел её2:


image

Читать дальше →
Всего голосов 58: ↑55 и ↓3 +52
Комментарии 23

Разработка игр на Rust. Моя история

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

Привет Хабр! Я занимаюсь разработкой игры на Rust. В этот раз я хочу показать немного гифок и показать всю историю игры от идеи до страницы в стиме.

Почему раст можно прочитать в начале прошлого поста. Но почему такой странный геймплей? Я же ненавижу футбол и всё что с ним связано!
История в гифках
Всего голосов 88: ↑85 и ↓3 +82
Комментарии 19

Ускоряем Node.js с помощью Rust

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


В последнее время в сети довольно часто упоминается «молодой и перспективный» язык Rust. Он пробудил во мне любопытство и желание сделать на нём что-то более-менее полезное, чтобы как-то примерить — впору ли он мне. Это вылилось в достаточно любопытный, как мне кажется, опыт скрещивания ужа с ежом при содействии кукушки.

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

Вклад авторов

Работа