Всем привет! Я пришёл из экосистемы Rust и недавно начал работать в Python. Я люблю Rust за безопасность и скорость, но влюбился в Python за простоту и быструю разработку. Это вдохновило меня создать что-то полезное для сообщества Python: FastPy-RS — библиотеку часто используемых функций, которую можно вызывать из Python, а реализация внутри написана на Rust. Цель — обеспечить высокую производительность и надёжность. Хотя многие Python-библиотеки используют C для ускорения, такой подход может нести риски безопасности.

Вот как это работает:
import fastpy_rs as fr
# Используем криптографию SHA
hash_result = fr.crypto.sha256_str("hello")
# Кодируев в BASE64
encoded = fr.datatools.base64_encode(b"hello")
# Подсчёт частот слов в тексте
text = "Hello hello world! This is a test. Test passed!"
frequencies = fr.ai.token_frequency(text)
print(frequencies)
# Вывод: {'hello': 2, 'world': 1, 'this': 1, 'is': 1, 'a': 1, 'test': 2, 'passed': 1}
# Разбор JSON
json_data = '{"name": "John", "age": 30, "city": "New York"}'
parsed_json = fr.json.parse_json(json_data)
print(parsed_json)
# Вывод: {'name': 'John', 'age': 30, 'city': 'New York'}
# Сериализация в JSON
data_to_serialize = {'name': 'John', 'age': 30, 'city': 'New York'}
serialized_json = fr.json.serialize_json(data_to_serialize)
print(serialized_json)
# Вывод: '{"name": "John", "age": 30, "city": "New York"}'
# HTTP-запросы
url = "https://api.example.com/data"
response = fr.http.get(url)
print(response)
# Вывод: b'{"data": "example"}'
Чтобы начать, просто запустите:
pip install fastpy-rs
Буду рад вашим pull-request’ам и отзывам! FastPy-RS — открытый проект с лицензией MIT: давайте вместе сделаем Python быстрее и безопаснее.
Кстати, удивительно, но подсчёт частоты токенов в FastPy-RS работает почти в 935 раз быстрее, чем в привычном Python-коде, так что для любых задач по разбору и анализу текста вы получите мгновенный результат; при этом операции с Base64 и регулярными выражениями тоже «летят» в 6–6,6 раз быстрее благодаря внутренним оптимизациям на Rust; реализация SHA-256 при этом не отстаёт — она использует такие же нативные ускорения, что и в Python; а низкое стандартное отклонение времени выполнения означает, что ваш код будет работать не только быстро, но и стабильно, без неожиданных «провалов».
P.S. Я всё ещё новичок в Python, так что не судите строго минимализм библиотеки — она только в зачаточном состоянии. Если кто-то хочет помочь и попрактиковаться в Rust и Python, буду очень рад!
Комментарии (13)
fenrir1121
28.06.2025 18:17В принципе себе не изменяете. Как всегда нейро дичь.
По maturin не прочитана даже первая страница введения - либа собрана только под windows и только под py3.13. Очевидно других версий питона и операционных систем не существует. А "сеньор раст девелоперам" не известно, что их код компилится под конкретную платформу.
Почти все бенчи не валидны, но подсчет слов в питоне через спайси и измерение сетевых запросов это шедевры.
Как и тот факт, что не осилено разделение зависимостей, поэтому они тащатся в основную сборку.
en_core_web_sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl#sha256=1932429db727d4bff3deed6b34cfc05df17794f4a52eeb26cf8928f7c1a0fb85 spacy==3.8.7
Примерно на все эти операции есть либы, в том числе написанные на том же расте, которые выполняют задачи полноценно. И их даже правда можно скачать.
Ну можно было хотя бы справиться с тем, чтобы посмотреть интерфейс в питоне и смаппить его с интерфейсом библиотеки в расте. http.get который не принимает ничего кроме url это вообще как могло в голову прийти? К черту headers, cookies, params, auth, timeout и прочее. Прокинуть их из requests в reqwest ЛЛМ уже не осилила?
igumnov Автор
28.06.2025 18:17Стоит в планах написать скрипт для Action GitHub на все основные платформы: Win, MacOs, Linux.
У вас требования как будто я уже создал продакшен либу. Извините что Вас разочаровываю, но это мой первый проект на Python.
В целом спасибо большое за замечания, я их добавил в свой список что я буду делать дальше.
Я просто в Python среде новый, какие-то очевидные вещи для меня с ходу не прозрачны.
PS
Либа на стадии PoC. Поэтому не только в http упрощение но и даже в json нету pritty формата. Но все равно спасибо за критику.
0x6b73ca
28.06.2025 18:17Говоришь верно но как токсично, я с такими сталкивался только в СНГ по этой же причине покинул родной дом со столь прекрасными людьми
fenrir1121
28.06.2025 18:17Позвольте тогда добавить контекста. Автор из раза в раз идет по алгоритму
пилит через GPT кривую поделку, которая не нужна даже ему самому
ходит по ТГшным сообществам просит порефакторить
постит портянку на хабр какую классную тулзу он сделал (
забивает на нее
go to 1
Без понятия в чем план, может это челлендж вроде "12 стартапов за 12 месяцев", может фарм пунктов в резюме, но вреда от того, что кто-то поверит в подобные бенчмарки больше чем пользы.
Правда можно было менее токсично объяснить по каждой функции почему это хрень, но для проекта который через пару дней забросят в этом нет ценности.
igumnov Автор
28.06.2025 18:17А вас почему это беспокоит?
fenrir1121
28.06.2025 18:17Потому что весь проект жирный наброс "питон медленный, раст быстрый".
С криптографией все ок - https://habr.com/ru/news/903486/
И с подсчетом слов тоже - https://docs.python.org/3/library/collections.html#collections.Counter
И re уже 100 раз на расте переписывали, даже с сохранением привычного интерфейса - https://pypi.org/project/regex-rust/
И для работы с джейсончиками уже есть pydantic написанный на rust, который используется примерно в 90% проектов https://github.com/pydantic/pydantic-core
И уж точно не нужен этот обрубок для работы с сетью.
Хотите помочь питонистам - велком PR в десятки либ, которые уже на расте написаны, ruff, например. А вот так пальцем в молоко тыкать и утверждать что ускорили питон в 935 раз не надо. Под капотом почти всегда и так или Си или Раст или еще что-нибудь аналогичное крутится в большинстве случаев. Даже https://github.com/RustPython/RustPython есть для самых больших фанатов.igumnov Автор
28.06.2025 18:17Дак я же изучаю, но мне рано помогать) мне бы кто помог ) можно мне свой велосипед по изобретать и так учиться?
Tishka17
28.06.2025 18:17При работе с жсончиками мы упираемся во взаимодействие питона и раста. То есть можно сколько угодно быстро делать куски парсинга, а потом всё равно создавать питоновские объекты. Например, вот python-only библиотека которая работает не медленнее pydantiс, а то и быстрее https://adaptix.readthedocs.io/en/latest/benchmarks.html
fenrir1121
28.06.2025 18:17Есть желание его потрогать, но пока нет подходящего случая. Дишку вот затащил в пару сервисов, вполне доволен.
dyadyaSerezha
Начало неплохое, но чтобы написать хорошую библиотеку, сначала надо понять/изучить нужды. Что используется часто, но работает медленно или неудобно? Лично я не знаю, но где-то в буржуйском инете можно было бы провести опрос.
igumnov Автор
Верное замечание. Но когда я так раньше поступал, строил бизнес планы, высчитывал. В итоге не начинал проекты. А тут мне прям захотелось, интересно и хочется в этом копаться. Что получится, то получится. В общем, надейся на лучшее, а сам не плошай )
dyadyaSerezha
Не плошай, это когда будет хотя бы тысяча скачиваний)