Сосредоточьтесь на изучении сетевых ресурсов RUST
Обработка сигналов с помощью Rust
Сигналы являются важной частью жизненного цикла процесса в Linux, но они очень сложны, и вам нужно быть очень осторожным при их использовании. Этот пост представляет одну из сложных проблем в обработчиках сигналов: ограничения обработчиков сигналов.
Краткое изложение причин, по которым сигналы Unix трудно обрабатывать:
- Они являются глобальным ресурсом. Если библиотека хочет установить свой собственный обработчик сигналов, она потенциально может мешать работе других библиотек. Можно объединить предыдущие обработчики сигналов, но тогда невозможно удалить старые обработчики сигналов из объединенной цепочки каким-либо практическим способом.
- Они могут быть вызваны из любого потока и требуют синхронизации. Кроме того, поскольку они могут прервать поток в любое время, большинство методов обработки склонны к гонкам.
- В соответствии со стандартом POSIX функции, которые можно вызывать в обработчике сигналов, ограничены небольшим набором функций. Чтобы подчеркнуть, взаимное исключение (или другой механизм блокировки), а также выделение и удаление памяти не разрешены.
В этой статье также рекомендуется библиотека для безопасной и правильной обработки сигналов Unix:signal-hook, чтобы решить вышеуказанную проблему.
Woohoo Джеймс Эль Форд.com/blog/work in…
Обучающий видеоурок по Rust от автора Gitoxide
gitoxideявляется чистой реализацией Git на Rust.
Видеоурок :Learn Rust with Gitoxide, адрес источника:GitHub.com/Байрон/узнать…
Horcrux: реализация общего доступа к ключу Shamir в Rust (часть 1)
Horcrux: Implementing Shamir's Secret Sharing in Rust (part 1)
Как я упоминал в предыдущем сообщении в блоге, я думаю, что Rust — отличный инструмент для реализации криптографических алгоритмов благодаря таким функциям, как безопасность памяти, строгая типизация, простые в использовании модульные тесты и высокопроизводительный язык программирования.
Horcruxs — это пример программы, показывающий, как реализовать алгоритм общего секрета Shamir в Rust, который в настоящее время недоступен в рабочей среде.
Начиная с этого блога, автор начнет с основных математических принципов и познакомит читателей с тем, как использовать Rust для реализации алгоритма общего ключа Шамира (объяснение части реализации Rust нужно подождать до следующего блога, и заинтересованные читатели могут подписаться на новость автора).
адрес проекта:GitHub.com/genwire/horCR…
Подкаст: беседа с Джейн, руководителем рабочей группы по обработке ошибок, об обработке ошибок в Rust
Rustacean Station Podcast Home — это проект сообщества, который предоставляет подкасты. (Аудио контактное прослушивание тоже хорошо).
Экспериментальный вариант использования CXX: привязки Rust для TouchDesigner
TouchDesignerМожно сказать, что это инструмент создания на основе визуальных узлов, который действительно определен в области взаимодействия с новыми медиа. Важной особенностью является множествоAPI-интерфейс(Некоторые предустановленные функции, просто поймите, что аппаратное или программное обеспечение, изначально произведенное разными производителями, может использоваться с TouchDesigner через API*), чтобы обеспечить удобный обмен информацией практически со всем программным и аппаратным обеспечением, представленным на рынке). TouchDeisgner может управлять механизмами, звуком, освещением и специальными эффектами визуальных эффектов в реальном времени, и все это очень неправильно.
Это все еще экспериментальная библиотека, но она по-прежнему хороша для обучения.
GitHub.com/Два солнечных автомобиля/…
【Серия】Круговая ссылочная структура в Rust
В Rust есть два типа проблем с самоссылками: самоссылки внутри структур и самоссылки вне структур. В этой серии статей обсуждаются последние, круговые ссылки.
Rust: отличная рекомендация для блога, выпуск 1 |fasterthanli.me/
В сообществе Rust есть много отличных блогов. Я считаю, что вести такую колонку — это хорошо. Я всем рекомендую несколько отличных обучающих блогов по Rust, а также служат резервной копией учебных ресурсов.
Главный герой первого выпуска — fastthanli.me, автор — Амос.
Game Boy после 90-х, который играл на пианино и вырос на Lego, раньше использовал Java, а теперь использует Rust. Для получения более подробной информации о нем, пожалуйста, обратитесь к:fasterthanli.me/about
Почему вы рекомендовали его в первом выпуске? Потому что его статьи хорошо написаны. Его сообщения в блоге систематичны и детализированы, заставляя вас задуматься.
Если вы изучаете Rust, настоятельно рекомендуем блог Амоса: https://fasterthanli.me/
Если вы считаете, что его статьи вам очень помогают, вы можете соответствующим образом поддержать его написание:Ооо, ооо.Ой боишься жарких дней ты .com/быстрее сахаристость...
Вызов Rust из Python
PyO3 позволяет легко вызывать код Rust из Python. Вы можете написать библиотеку Rust и положиться на комбинацию PyO3 и maturin (вспомогательный инструмент экосистемы PyO3) для компиляции библиотеки Rust и установки ее непосредственно как модуля Python. В дополнение к этому, PyO3 может преобразовывать типы между Python и Rust, а также может удобно экспортировать функции Rust в Python с помощью набора макросов.
сказал Каллен из ван Day2.net/learn/2021-…
Life simulation
Симулятор жизни, симулятор, написанный на Rust.
Организмы могут эволюционировать путем мутаций и естественного отбора. Организмы имеют простой геном, который придает им уникальные характеристики.
How to write idiomatic Rust
Хотите написать больше идиоматичного Rust?@matthiasendlerПоддерживает рецензируемый проект, который включает в себя статьи, доклады, репозитории, все с использованием Rust.
Как Redox OS (и подобные проекты) планирует справиться с отсутствием поддержки динамического связывания?
Несколько дней назад я спросил, есть ли у кого-нибудь какие-либо предложения по дистрибутивам бинарных библиотек, отличных от C FFI, и люди продолжали указывать мне на различные «хакерские» решения, за что я очень благодарен (хотя эти хаки в моем конкретном случае не не помогает, C FFI по-прежнему выглядит наименее плохим решением).
Однако одна вещь, которая меня удивила, это то, что идея динамической компоновки (или предсказуемого ABI, я думаю, динамическая компоновка требует ABI) была (может быть, просто подумала) отвергнута. Есть также тот факт, что почти никого не волнует то, что мне кажется огромной дырой в дизайне системного языка.
TL;DR:
Что подводит меня к: Redox OS или что-то в этом роде (как ранее сегодняПроекты, опубликованные u/dptzippy) как вы собираетесь решать эту проблему? Конечно, они не ожидали, что люди будут перекомпилировать всю ОС после исправления ошибки в какой-то основной библиотеке/кэше, или что они будут делать? Или я что-то упускаю?
* Я сказал «предсказуемый» вместо «стабильный», потому что нам не нужен полностью стабильный ABI. Даже просто гарантируя, что если я скомпилирую что-то с той же версией компилятора, общедоступный ABI очень поможет, если общедоступный API останется прежним.
Сегодняшний горячий пост Reddit, опубликуйте высокую похвалу:
Здравствуйте, я
Theseus
Автор операционной системы. Отличный пост, действительно соответствует тому, что я думал.Отсутствие стабильного ABI — большое препятствие, которое мы еще не полностью устранили. Этот вопрос касается таких вещей, как
Theseus
Это особенно важно для операционных систем SAS/SPL, основанных на безопасных языках, учитывая, что наша цель — сделать компилятор видимым для всего кода на всех уровнях системы (visibility
)/самоанализ(instrospection
), без слепых зон, что еще важнее. Я лично не думаю, что это проблема для других операционных систем, которые используют системные вызовы как «стабильный» интерфейс между пользовательским приложением и ядром или, в более широком смысле, как один из двух независимо скомпилированных фрагментов кода. связи между ними, которые зависят друг от друга во время выполнения. Я задокументировал то, что я реализую против существующегоTheseus
Скомпилируйте экземпляр, чтобы скомпилироватьout-of-tree
этоcrate
(и различные скелеты libc для запуска). Это включает в себяcargo
Злоупотребление хаком, мне не нужно рекомендовать другие варианты использования — в наших ограниченных случаях это работает, потому что мы можем контролировать всю компиляцию — но это довольно сложно. Скорее всего, он не будет масштабироваться для поддержки распространения приложений или библиотек с закрытым исходным кодом. Очевидно, я понимаю, что было бы очень глупо и утомительно динамически перелинковывать символы/зависимости во время выполнения в отдельно скомпилированных двоичных файлах, которые статически компонуются во время сборки, при этом фактически работающий экземпляр системы соответствует версиям этих зависимостей, которые существуют в . Обратите внимание, что у нас не было времени изучить лучшие варианты. Я делаю этот пост только для того, чтобы проиллюстрировать, что людям может понадобиться для решения стабильной проблемы с ABI.Лучшая "альтернатива" - это в основном то, что другие предложили в сообщении u/dptzippy, на которое вы ссылались выше, - используйте какой-то
bindgen
для создания тонкого слоя FFI, предоставляющего стабильные функции C ABI в качестве заглушек для функций Rust. Однако у этого есть большой недостаток, заключающийся в том, что вводятся ненужныеunsafe
фактор, который немного нарушает то, что я упомянул вышеTheseus
вся цельunsafe
Фактор — слепое пятно.В любом случае, я просто чувствую, что должен высказать свое мнение, поделиться своим опытом здесь, оставить разговор и посмотреть, что скажут другие.
Read More: воооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо
Использование opencv в Rust
Автор сделал видео о том, как использовать opencv в Rust.
Чему kotlin может научиться у Rust?
Хотя с точки зрения Kotlin, сравнительные исследования также являются более ценными.
woohoo.be упомянул.com/weblog/2021…
Хорошая рекомендация по статье: Как улучшить чрезмерно ограниченный API библиотеки Rust
В статье подробно рассматривается более щадящий дизайн верхнего уровня, основанный на дженериках, трейтах dyn, срезах и т. д. в Rust. Это продвинутая статья, и ее стоит изучить.
blog.log Rocket.com/improving - о...
Разрабатывайте приложения для iOS на чистом Rust
Это проект типа проверки, и детская обувь, разработанная ios, может быть исследована.
Мониторинг веб-приложений Rust с помощью Prometheus и Grafana
В основном это некоторая конфигурация и соответствующее встраивание кода, который написан очень подробно. рекомендовать.
Молочные зубы римской библиотеки ох V.com/blog/2021/1…
Neon — создавайте модули Node.js, безопасные для памяти и типов, с помощью Rust
Neon Помимо безопасности памяти и безопасности типов, есть много причин, по которым Rust Embedding следует использовать в Node.js.
- Параллельное программирование и потоки
- Лучшая производительность
- Доступ к библиотекам для конкретной ОС
- Получите доступ к экосистеме Rust с Cargo
уровень up.git connect.com/create-memo…
Stack-safety for free?
Интересная статья, демонстрирующая, как с помощью генераторов Rust превратить любую рекурсивную функцию в итеративную практически без изменений кода.
IDE и макросы
Мы наслаждаемся удобством различных IDE в повседневной жизни, но мало кто будет реализовывать сопутствующие функции.
В этой статье мы обсудим проблемы, с которыми сталкиваются языковые серверы при поддержке макросов. Это интересно, потому что анализаторам Rust труднее всего взломать макросы.
Как Inx ускорил нечеткий поиск более чем в 5 раз с помощью SymSpell
В этой статье представлен невероятный алгоритм SymSpell и дано общее представление о том, как мы реализуем его в lnx.
Naked fish8.ghost.IO/fuzzy-colorful каждый день…
История трех кодовых баз Rust
Сейчас подходящее время для использования Rust?
Команда основателей Convex (отделилась от DropBox) использовала Rust для разработки Magic Pocket (географически распределенная система хранения данных Dropbox), Nucleus (переписанный механизм синхронизации Dropbox), Convex (конфигурация 0, бесконечно масштабируемая для обеспечения быстродействия). Бэкэнд, разработанный для требований разработки приложений. ). В настоящее время они являются одной из самых загруженных систем на основе Rust в мире.
Команда основателей Convex рассказывает о преимуществах и недостатках использования Rust. Очень рекомендуется.
Попытка фотограмметрии дрона с использованием Rust и машинного обучения
Автор статьи использовал дрон, чтобы сфотографировать брезент. Площадь изображения была оценена с помощью базовой фотограмметрии, а для сегментации брезента на изображении использовалось машинное обучение, в результате чего площадь брезента составила 3,86 м2, а фактическая площадь составила 3,96 м2 (ошибка около 4%). для всей сметы Алгоритм реализован на Rust.
Объединение очередей с Bors
Очередь слияния — это приложение, которое интегрируется с вашей системой контроля версий (эта статья будет посвящена git и GitHub) и требует атомарного слияния изменений кода, гарантируя, что основная ветвь всегда содержит полностью протестированную версию кода. Многие инженерные группы и проекты с открытым исходным кодом внедряют очереди слияния как часть своего рабочего процесса. В этом посте рассматриваются несколько причин использования очередей слияния и описывается, как настроить Bors, реализацию очереди слияния, используемую в проектах на языке Rust.
Реализация Raft для браузера с использованием Rust и WebRTC
представилWRaft. Это реализация Raft на основе WebRTC, написанная на Rust для WebAssembly.
wraft0.eevans.coНа коде есть несколько демо-приложенийна GitHubдаОткрытый исходный код. Это был интересный и сложный проект, поэтому я решил написать в блоге об этом опыте как о своего рода «вскрытие».