Теоретическая архитектура многопоточного эмулятора

Я пытаюсь разработать архитектуру эмулятора консоли, которая является одновременно точной и многопоточной. Функция ожидания Async в Rust и ее экосистема — отличное вдохновение.
https://www.n0mandevelopblog.com/posts/cycle-accurate-multithreaded-console-emulator/page/
Моя идея состоит в том, чтобы отделить область общей памяти от компонентов устройства в центральном участнике шины общей памяти, который будет принимать запросы на чтение и запись и отправлять их в правильном тактовом цикле. Таким образом, компоненты могут работать асинхронно, а затем ждать, пока некоторые данные, которые им нужны, будут доступны от других компонентов.
Первоначально я разместил эту статью на /EmuDev
https://www.reddit.com/r/EmuDev/comments/vtuwj8/cycle_accurate_multithreaded_console_emulator/?utm_source=share&utm_medium=web2x&context=3

trane-rustlings: Изучайте Rust с Trane (и rustlings)

Ранее на этой неделе я поделился своим проектом Trane (https://github.com/trane-project/trane) и автоматизированной системой для обучения новым навыкам. На https://github.com/trane-project/trane-music есть несколько классов, но я подумал, что было бы неплохо иметь автономный класс для демонстрации Trane.
Учитывая, что Trane — мой первый проект на Rust, я подумал, что было бы неплохо дополнить rustlings (https://github.com/rust-lang/rustlings/) с помощью Trane. Результат — trane-rustlings (https://github.com/trane-project/trane-rustlings).
Этот курс является примером того, как компания Trane может легко дополнить существующий учебный материал. Упражнения в этом курсе относятся к упражнениям Swish только по названию. Выполняя упражнения на шуршание в порядке, предложенном Трейном, вы можете постепенно освоить их все, одновременно укрепляя их.
Если вы обнаружите, что вам показывают одно и то же упражнение несколько раз (особенно в начале), вы можете либо завершить учебную сессию и продолжить усваивать материал позже, либо добавить упражнение в черный список, чтобы оно не повторяется показано.

cargo-craky: простая настройка линта Clippy.

Я хотел бы воспользоваться некоторыми нестандартными линтами clippy, но я устал включать их для каждого bin/example/lib, повторяя для каждого ящика в рабочей области. Некоторое время я добавлял сценарии оболочки, которые запускают все мои любимые линты (например --warn clippy::cast_possible_truncation), но я также хотел бы иметь возможность запускать свои варианты линтов из vscode.
Поэтому я написал маленькое расширение для грузов, чтобы помочь мне: cargo-craky. Он ищет Cranky.tomlфайлы конфигурации, содержащие линты, чтобы разрешить/предупредить/запретить, а затем запускает clippy с включенными линтами. Он работает, как и ожидалось, из командной строки и в vscode.
Пока это довольно просто, но у меня уже отлично работает. Надеюсь, вы тоже найдете это полезным!

Из ежедневного группового времени

Подписка на платформу Community Learning Exchange Platform:
  • Форум Rustcc: поддержка rss
  • Официальный аккаунт WeChat: Китайское сообщество Rust Language