Представляю вам свой open-source проект — RTS (Real‑Time Script). Это реактивный язык свободных структур данных, опирающийся на новый подход к программированию. Проект я начал и продолжнаю писать на данный момент в одиночку начиная с 6 Декабря 2023 года. Пол года было потрачено на создание концептов и ещё пол года на саму реализацию.
Рубрика «Rust» - 2
RTS — Реактивный язык программирования свободных структур данных
2024-12-06 в 6:15, admin, рубрики: Realtime, RTS, Rust, интерпретатор, интерпретация, Программирование, реактивное программированиеПоначалу всё будет хорошо. И вы будете изучать Rust, и думать, какие хорошие люди его написали. В нём есть автоопределение типов, безопасные указатели aka ссылки, столько синтаксического сахара, что любой Kotlin позавидует, и плюс ко всему этому ещё и кроссплатформенность и no-std режим, если вы вдруг решите запрограммировать кофеварку.
А потом одной чёрной-чёрной ночью вы обнаружите там...
Interior Mutability
Переменные, которые вы объявите через let
, нельзя взять и поменять, а те, что объявлены через let mut
, — можно:
fn main() {
let a = 5;
let mut b = 7;
// a = 11; // не компилируется
b = 9;
println!("{a} {b}");
}
Небезопасный Rust сложнее C
2024-11-15 в 13:01, admin, рубрики: C, c++, Rust, ruvds_перевод, unsafe code, Программирование
Для некоторых из вас содержание этой статьи окажется знакомым, особенно, если вы писали встраиваемый или unsafe
код на Rust. Но я этого не делал, поэтому решил, что будет полезным задокументировать свой опыт максимально подробно. Так что предлагаю сразу перейти к делу.
В прошлом году я написал программу Photohash для индексации своего NAS и поиска дубликатов фото без использования хэширования, независимого от поворота изображения, и перцептивного хэширования. Чтобы полноценно задействовать все ядра процессора и диски, эта программа распределяет работу между воркерами, отвечающими за вычисления и ввод-вывод. Происходит это распределение по каналам, представляющим синхронизированные очереди задач. Читать полностью »
Rust без прикрас: где мы ошибаемся
2024-11-12 в 16:20, admin, рубрики: beget, Rust, ошибки, Программирование
Привет, исследователи Rust! Сегодня хочу поделиться своим опытом (не всегда радужным) работы с Rust. Да, язык классный, безопасный, быстрый — все мы это знаем. Но, как и в любом инструменте, здесь есть свои подводные камни, на которые я благополучно наступал.
Начнем с первой проблемы — злоупотребление unwrap()
и expect()
.
Злоупотребление unwrap() и expect()
Языки программирования, взорвавшие мой мозг
2024-11-06 в 13:01, admin, рубрики: BASIC, erlang, java, ocaml, opalanf, Prolog, Rust, turbo pascal
Я программирую с восьми лет, и основную часть жизни был разработчиком в том или ином качестве. На протяжении своей жизни кодера, как любителя, так и профессионала, я изучил множество языков программирования, которые казались клонами друг друга. Но было и несколько языков, изменивших мой взгляд на программирование, а то и мышление в целом.
Я перечислю их в том порядке, в котором узнавал о них. В большинстве случаев я буду ассоциировать функциональность с языками, в которых они появились не впервые. Это не ошибка, я просто хочу показать, когда узнал об этих возможностях.Читать полностью »
Почему я скептично отношусь к переписыванию JS-инструментов на «быстрых» языках
2024-10-25 в 13:01, admin, рубрики: Go, javascript, jit, node.js, Rust, ruvds_перевод, webassembly, zig, бэкенд, веб-приложения, оптимизация, Программирование
Я написал много JS-кода, и мне нравится JavaScript. Самое же главное, я выработал необходимые навыки для понимания, оптимизации и отладки этого кода, от которых не хочу отказываться.
Поэтому у меня вполне естественно возникает беспокойство по поводу охватившей сферу разработки одержимости переписывать каждый инструмент Node.js на быстрых языках вроде Rust, Zig, Go и прочих. Причём ценность этих языков я нисколько не преуменьшаю. Я даже принимал некоторое участие в разработке Servo, да и на столе прямо сейчас передо мной лежит книга по Rust. Но в целом основную часть своей карьеры я вложил в освоение всех нюансов JavaScript, и на данный момент этот язык для меня самый удобный.
Так что я признаю свою предвзятость (и, возможно, чрезмерный акцент на одном наборе навыков). Но, чем больше я об этом думаю, тем больше понимаю, что у моего скептицизма есть также обоснованные причины, о которых и пойдёт речь в текущей статье.Читать полностью »
rustsn — Open Source проект генерации кода и взаимодействия с уже существующем через LLM
2024-10-16 в 15:39, admin, рубрики: llm, Rust, генерация кодаЯ работал над созданием инструмента под названием rustsn, который позволяет генерировать, компилировать и тестировать код с использованием LLM (Large Language Models). Изначально идея заключалась в том, чтобы автоматизировать процесс написания небольших фрагментов кода — так называемых сниппетов — для разных языков программирования на основе объяснений, предоставленных пользователем. Этот инструмент стал развиваться и обрастать новыми возможностями, такими как генерация полного кода для приложений и объяснение существующего кода на основе векторных представлений (эмбеддингов).
Когда я только начинал работу над Читать полностью »
Генератор паролей на Rust
2024-10-07 в 22:30, admin, рубрики: password generator, Rust, генератор паролей, консольное приложение, программирование на rustПривет!
Представляю вам свою первую статью о программировании на Rust. Я только начинаю изучать этот язык, и в качестве первого задания выбрал написание генератора паролей.
Процесс разработки консольного приложения будет состоять из нескольких этапов:
-
Формирование структуры пароля.
-
Разработка функции генерации пароля.
-
Создание функций для проверки пароля и их объединение в одну.
-
Обеспечение возможности пользовательского ввода.
-
Формирование функции генерации проверенного пароля.
1. Формирование структуры пароля.
Как устранить первопричину уязвимостей безопасности памяти
2024-09-30 в 13:01, admin, рубрики: c++, kotlin, memory safety, Rust, ruvds_перевод, безопасность памяти, устранение уязвимостей
Уязвимости безопасности памяти остаются серьёзной угрозой для защиты ПО. Мы, работники Google, считаем, что путь к крупномасштабному устранению этого класса уязвимостей и к защищённому ПО заключается в Safe Coding — подходе secure-by-design, отдающем приоритет переходу на безопасные по памяти языки.
В этом посте мы покажем, почему стремление к Safe Coding при создании нового кода быстро (хотя и контринтуитивно) снижает риски безопасности кодовой базы в целом, позволяя наконец-то прорваться через неподдающееся плато уязвимостей безопасности памяти и начать экспоненциальное снижение их количества с сохранением масштабируемости и экономности.
Также мы приведём обновлённую статистику того, как благодаря переходу на безопасные по памяти языки, процент уязвимостей безопасности памяти в Android упал за шесть лет с 76% до 24%.Читать полностью »