Опубликовал на crates.io свой первый крейт 🦀
📦 rust-censure — это порт библиотеки py-censure с питона на раст
В плане оптимизации крейт делает две вещи:
— Использует regex для обычных регулярок и fancy-regex для более тяжелых (через фолбэк)
— Компилирует и кэширует регулярки по запросу
Это пока еще можно сказать бета версия, но она уже должна нормально работать.
📦 rust-censure — это порт библиотеки py-censure с питона на раст
Поддерживает два языка: русский и английский.
Будет полезно, например, для авто-модерации чатов.
В плане оптимизации крейт делает две вещи:
— Использует regex для обычных регулярок и fancy-regex для более тяжелых (через фолбэк)
— Компилирует и кэширует регулярки по запросу
Это пока еще можно сказать бета версия, но она уже должна нормально работать.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍18🔥5❤4😁2
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍28🔥5😁4❤2
Кстати, написал для своей библиотеки парочку бенчмарков на Criterion.
А потом схожие на Python.
Оказалось, что 📦 rust-censure работает примерно на 900% быстрее оригинала.
Конечно это за счет языка, компиляции и мощнейшей библиотеке regex.
Сложность правда
Так что не критично.
В будущем добавлю сюда алгоритм Ахо-Корасик для еще более быстрой обработки.
В расте есть даже готовая либа :3
А потом схожие на Python.
Оказалось, что 📦 rust-censure работает примерно на 900% быстрее оригинала.
Конечно это за счет языка, компиляции и мощнейшей библиотеке regex.
Сложность правда
O(m * n) на выполнение и O(1) на память, но во-первых m статично, а n чаще всего это мелкие сообщения в чатах.Так что не критично.
В будущем добавлю сюда алгоритм Ахо-Корасик для еще более быстрой обработки.
В расте есть даже готовая либа :3
1👍27🔥7❤1🥰1
godot-rust — это проект позволяющий разрабатывать игры на Godot, а код писать на Rust.
Причем один из разработчиков, — программист в команде Godot.
Хотя сам язык Rust официально не поддерживается Godot.
Godot-Rust в разработке с 2023 года.
У него 4 тыс. звёзд на ГХ.
А крайняя версия 0.4 вышла буквально в прошлом месяце.
Может это шанс для🦀 Rust получить первый адекватный игровой движок.
#крейты
Причем один из разработчиков, — программист в команде Godot.
Хотя сам язык Rust официально не поддерживается Godot.
Godot-Rust в разработке с 2023 года.
У него 4 тыс. звёзд на ГХ.
А крайняя версия 0.4 вышла буквально в прошлом месяце.
Может это шанс для
#крейты
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤29👍9🔥4🥰1
📦 rust-censure уже 500+ скачиваний лол.
Это мой первый опыт в размещении на Crates.
Поэтому делюсь им с вами.
Вчера зарелизил версию 0.2.0, и сам не заметил как поломал SemVer (согласно ему должна была быть версия 1.0.0).
Поэтому быстренько восстановил обратную совместимость и зарелизил 0.2.1.
SemVer так разрешает, это буквально написано у них в FAQ.
Ранее я уже много раз выпускал всевозможные библиотеки: на JS, на PHP, на Python.
Но я никогда не юзал SemVer, чаще писал версии от балды.
Штош, в мире SemVer разработчиков пополнение😎
В версии ^0.2.0 кстати:
Ждите в ближайшее время посты про интересные крейты🧢
Это мой первый опыт в размещении на Crates.
Поэтому делюсь им с вами.
Вчера зарелизил версию 0.2.0, и сам не заметил как поломал SemVer (согласно ему должна была быть версия 1.0.0).
Поэтому быстренько восстановил обратную совместимость и зарелизил 0.2.1.
SemVer так разрешает, это буквально написано у них в FAQ.
Ранее я уже много раз выпускал всевозможные библиотеки: на JS, на PHP, на Python.
Но я никогда не юзал SemVer, чаще писал версии от балды.
Штош, в мире SemVer разработчиков пополнение
В версии ^0.2.0 кстати:
— Я исправил реализацию трейта LangProvider
— Добавил новый конструктор для Censor
— Чуть оптимизировал код
Ждите в ближайшее время посты про интересные крейты
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤18👍10🔥1🥰1
Вчера пытался завести модель по определению спама из нашего Python бота на 🦀 Rust.
Мучался час с крейтом Candle.
В итоге свичнулся на rust_bert.
Архитектура модели — DebertaForSequenceClassification.
Кто бы мог подумать, но в коде прямо так и пишем:
Спрашивал у нейронки, она мне советовала сохранять модель в
Хрен там плавал, Rust прекрасно работает с
Единственное пришлось править config.json.
А именно добавить поле
Но в итоге оно не компилировалось.
А всё потому что есть два разных токенайзера: rust_tokenizers и новый HF tokenizers.
И если вы ставите второй от HF, то он конфликтует с линкером MSVC.
Точнее конфликтует метод сборки каких-то модулей libtorch, если я верно понял.
Короче говоря ставим его вот так:
Иначе код тупо не компилится.
С чем это связано я так и не понял.
Что-то там со статическими/динамически скомпилированными библиотеками, и что линковщик отказывается их совмещать.
Иш, какой придирчивый ...
Крч заработало в итоге.
Нейросеть теперь отлично работает под🦀 Rust :]
Мучался час с крейтом Candle.
В итоге свичнулся на rust_bert.
Архитектура модели — DebertaForSequenceClassification.
Кто бы мог подумать, но в коде прямо так и пишем:
use rust_bert::deberta::{DebertaConfig, DebertaForSequenceClassification};Спрашивал у нейронки, она мне советовала сохранять модель в
.ot формате.Хрен там плавал, Rust прекрасно работает с
.safetensors.Единственное пришлось править config.json.
А именно добавить поле
id2label и убрать какое-то, у которого было значение null.Но в итоге оно не компилировалось.
А всё потому что есть два разных токенайзера: rust_tokenizers и новый HF tokenizers.
И если вы ставите второй от HF, то он конфликтует с линкером MSVC.
Точнее конфликтует метод сборки каких-то модулей libtorch, если я верно понял.
Короче говоря ставим его вот так:
tokenizers = { version = "0.22.1", default-features = false, features = ["onig"] }
Иначе код тупо не компилится.
С чем это связано я так и не понял.
Что-то там со статическими/динамически скомпилированными библиотеками, и что линковщик отказывается их совмещать.
Иш, какой придирчивый ...
Крч заработало в итоге.
Нейросеть теперь отлично работает под
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥22👍6❤2🤯2😁1
parking_lot — это альтернативная имплементация Mutex, RwLock, Condvar и Once.
Они тут меньше, быстрее и лучше.
По уверениям разработчиков, тесты на x86_64 Linux показали, что Mutex в 1.5x раз быстрее, чем стандартный
Судя кол-ву. скачиваний, этот крейт уже давно стал стандартом вместо STD раста🦀
UPD: А еще в нем есть такая штука как
#крейты
Они тут меньше, быстрее и лучше.
По уверениям разработчиков, тесты на x86_64 Linux показали, что Mutex в 1.5x раз быстрее, чем стандартный
std::sync::Mutex.Судя кол-ву. скачиваний, этот крейт уже давно стал стандартом вместо STD раста
UPD: А еще в нем есть такая штука как
ReentrantMutex, позволяющая одному и тому же потоку множество раз получать замок, избегая взаимного дедлока.#крейты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥5❤2🌚2🥰1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁42🤯7🌚4🤡1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤30👍8🔥3🥰1🤔1
Кстати недавно весь интернет упал из-за вот этой одной строчки Rust кода.
Cloudflare переписали часть функций на Rust, и тупо заюзали в коде
Без каких-либо проверок, напрямую🤲 .
Как результат — код запаниковал и сервер упал.
Пам пам🧢
Cloudflare переписали часть функций на Rust, и тупо заюзали в коде
.unwrap().Без каких-либо проверок, напрямую
Как результат — код запаниковал и сервер упал.
Пам пам
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯33❤6😁4
Разбираем ситуацию с Cloudflare и почему всего одна строчка Rust кода буквально положила почти весь интернет? 🚬
▶️ https://www.youtube.com/watch?v=_aJqpzwslA4
Please open Telegram to view this post
VIEW IN TELEGRAM
💯16❤1🤯1
Please open Telegram to view this post
VIEW IN TELEGRAM
💯22🔥3❤1👍1🥰1
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰35😁14❤6🔥3💯3