Comments 16
Ни███ не понял, но очень интересно!
Бенчмарков, как в любом тексте о величии раста, категорически не хватает. Какую нагрузку оно выдержит?
В coreutils на расте (oxidized) хэширование (sha256 например), внезапно, медленнее чем обычный coreutils. Как попробовать самому: https://discourse.ubuntu.com/t/carefully-but-purposefully-oxidising-ubuntu/56995
'внезапно'? на C быстрее чем на расте. Вы серьезно? Хоть где-то утверждалось, что чистый С должен быть медленнее раста?
Не должен, но так заявляли сами авторы этой инициативы. The goal is to offer what he said are more secure, and more performant drop-in replacements for the tools Linux users depend on. Я не настоящий программист, в тему не погружен. Увидел concern о бенчмарках раста, вспомнил эту историю.
Вы сравниваете линукс утилиту, которую кому-то захотелось переписать (C vs Rust), и приложение, использующие общие с утилитой библиотеки (Rust vs что?). Ну и в целом, опенсорс концепт с претензиями - нету бенчмарков!
Это не претензия, это намёк. Я привык к опенсорсу с бенчмарками.
Я привык, чтобы за работу платили, или хотя-бы доброе слово -'спасибо'. Но, где-ж, даже звездочку на гитхабе не кликнуть.
Вы бы его ещё троянским конем назвали
Автор, видимо, сам не понял, что хотел описать и в результате описал какую-то хрень, типа того, в каком файле хранит ключи. И вообще не важно, на каком языке написано приложение, пусть хоть Visual Basic будет, лишь бы работало.
Надо было описать:
Архитектуру (настоящую, а не эти 4 дурацких квадратика клиент/сервер/три_файла).
Протокол.
Есть Magic Wormhole - может "пробивать тоннель" между двумя клиентами за NAT-ом. Сервер использует для инициации, а затем уже прямая передача без использования сервера. Думал вы что-то подобное сделали.
Подтянулись импорта замещающие проекты . Инженерная мысль может расслабиться.
Зачем вам этот Websocket? Даже если нужна совместимость с браузером. Но это же костыль для HTTP/1.1, и сейчас, во времена HTTP/3 уже странно видеть его в новых проектах!
HTTP/3 (QUIC) устанавливает соединение на один RTT по сети меньше по сравнению с HTTP/2 и HTTP/1.1. Но Websocket работает только с HTTP/1.1, и этой оптимизацией воспользоваться не может.
Сама по себе обработка Upgrade — это ещё один лишний RTT по сети. Если, например, юзер написал сообщение находясь в офлайне, то при появлении интернета ему потребуется сначала дождаться Upgrade, а только потом послать сообщение. Уже в HTTP/2 это не нужно.
HTTP/3 (QUIC) позволяет прозрачно продолжать соединение при переключении с мобильного интернета на вайфай и наоборот, без повторной установки соединения. Для мессенджера это неплохая фича.
Сетевые задержки очень важны! Вы можете сэкономить пару миллисекунд за счёт того, что сервер написан на Расте, но потерять десятки и сотни миллисекунд из-за того, что выбрали устаревший протокол
Wormhole Messenger — минималистичный P2P-мессенджер на Rust с end-to-end шифрованием