#prog #rust #article
Garbage Collection Without Unsafe Code
Простой не потокобезопасный mark-and-sweep сборщик мусора с довольно простым дизайном. Естественно, не самый быстрый. С другой стороны, потенциальные проблемы с памятью тут не приводят к UB.
Что мне не очень нравится — в текущем виде страдает от ABA-проблемы, но это, как пишет автор, должно быть легко исправить.
Garbage Collection Without Unsafe Code
Простой не потокобезопасный mark-and-sweep сборщик мусора с довольно простым дизайном. Естественно, не самый быстрый. С другой стороны, потенциальные проблемы с памятью тут не приводят к UB.
Что мне не очень нравится — в текущем виде страдает от ABA-проблемы, но это, как пишет автор, должно быть легко исправить.
Fitzgen
Garbage Collection Without Unsafe Code
Many people, including myself, have implemented garbage collection (GC)libraries for Rust. Manish Goregaokar wrote up a fantastic survey of thisspace a few y...
#prog #rust #article
Wasmtime 1.0: A Look at Performance
Статья довольно старая (6 сентября 2022 года), но читать всё равно интересно. Что занятно, никакая из оптимизаций не является Rust-специфичной. С другой стороны, в каких ещё языках можно легко аллоцировать меньше памяти при помощи использования SmallVec вместо Vec?
Wasmtime 1.0: A Look at Performance
Статья довольно старая (6 сентября 2022 года), но читать всё равно интересно. Что занятно, никакая из оптимизаций не является Rust-специфичной. С другой стороны, в каких ещё языках можно легко аллоцировать меньше памяти при помощи использования SmallVec вместо Vec?
Bytecode Alliance
Wasmtime 1.0: A Look at Performance
In preparation for our upcoming release of Wasmtime 1.0 on September20, we have prepared two blog posts describing the work we have putinto the compiler and runtime recently. This first post will describeperformance-related projects: mak...
❤🔥1❤1
#prog #article
Understanding Mesh Allocator
Аллокатор, который позволяет проводить дефрагментацию выделенной памяти без смены адресов выделенных объектов за счёт манипуляции отображения виртуальной памяти на физическую.
Именно, если объекты в пределах двух страниц виртуальной памяти располагаются на неперекрывающихся местах, то можно скопировать объекты из одной соответствующей страницы физической памяти в другую, после чего исправить отображение виртуальной памяти на физическую и отдать страницу физической памяти обратно операционной системе. Собственно, это и есть операция meshing, которая и дала аллокатору имя.
Для того, чтобы повысить вероятность применимости операции meshing, аллокатор выделяет объекты в пределах одной страницы в случайных местах. На удивление, на производительности это не сказывается — авторы спекулируют, что это связано с тем, что в реальных нагрузках с более традиционными аллокаторами память и так фрагментирована.
(thanks @jemalloc)
Understanding Mesh Allocator
Аллокатор, который позволяет проводить дефрагментацию выделенной памяти без смены адресов выделенных объектов за счёт манипуляции отображения виртуальной памяти на физическую.
Именно, если объекты в пределах двух страниц виртуальной памяти располагаются на неперекрывающихся местах, то можно скопировать объекты из одной соответствующей страницы физической памяти в другую, после чего исправить отображение виртуальной памяти на физическую и отдать страницу физической памяти обратно операционной системе. Собственно, это и есть операция meshing, которая и дала аллокатору имя.
Для того, чтобы повысить вероятность применимости операции meshing, аллокатор выделяет объекты в пределах одной страницы в случайных местах. На удивление, на производительности это не сказывается — авторы спекулируют, что это связано с тем, что в реальных нагрузках с более традиционными аллокаторами память и так фрагментирована.
(thanks @jemalloc)
veera.app
Understanding Mesh Allocator
👍5🤔1
#prog #c #rust #article
Porting libyaml to Safe Rust: Some Thoughts
Или о том, как автор перевёл libyaml, сконвертированный c2rust, в идиоматичный Rust-код. Почему? Этот код используется как бекенд для serde-yaml и при этом существующий интерфейс поверх не давал информацию о положении частей входа вне ошибок.
The result is not just safer and easier, it is also just as performant
Автор также более подробно рассказывает о тонкостях реализации на C и о том, как они изменились с переходом на Rust.
Porting libyaml to Safe Rust: Some Thoughts
Или о том, как автор перевёл libyaml, сконвертированный c2rust, в идиоматичный Rust-код. Почему? Этот код используется как бекенд для serde-yaml и при этом существующий интерфейс поверх не давал информацию о положении частей входа вне ошибок.
The result is not just safer and easier, it is also just as performant
Автор также более подробно рассказывает о тонкостях реализации на C и о том, как они изменились с переходом на Rust.
simonask.github.io
libyaml-safer
👍7
#gamedev #video
Искусственный интеллект в играх не обязательно должен быть продвинутым, чтобы бросать игроку вызов. Довольно наглядно видно на примере разбора устройства AI в "Into the Breach".
youtu.be/fkEG55gFqrA
Искусственный интеллект в играх не обязательно должен быть продвинутым, чтобы бросать игроку вызов. Довольно наглядно видно на примере разбора устройства AI в "Into the Breach".
youtu.be/fkEG55gFqrA
YouTube
The Secret of Into the Breach's AI: Power in Simplicity | AI and Games #72
Sometimes you just don't need super flashy AI in your game. You just need something that is 'good enough' for what your game is trying to do. With that in mind, we dive behind the scenes of Subset Games 2018 release 'Into the Breach', and find out that…
👍9
Наконец-то вроде бы привёл в порядок режим, чтобы спать не днём
@
Наступил выходной
@
Наступил выходной
🌚10🔥1