Telegram Web
Ехал (void*) через (void*)
Видит (void*) - в (void*) (void*)
сунул (void*) (void*) в (void*)
(void*)(void*)(void*)(void*)
Комментарий хорош👆
Forwarded from ozkriff.games 🦀 (Andrey @ozkriff Lesnikóv)
# Rust GameDev Newsletter 20: Март 2021

📆 Выпустил ежемесячник по ржавому игрострою за Март: https://rust-gamedev.github.io/posts/newsletter-020 (обсуждения: /r/rust, Twitter).

По Земероту и новому проекту в ближайшие месяцы обновлений можно не ждать: я вконец загнался и решил таки взять "отпуск от хобби" как минимум до лета (а то и до осени).
Преобразование сишной строки в &str можно сделать так:
pub fn safe_fun() -> Result<&'static str, Utf8Error> {
let char_ptr = unsafe { unsafe_fun() };
let c_str = unsafe { CStr::from_ptr(char_ptr) };
c_str.to_str()
}

Но нужно соблюсти 2 условия:
- сишная библиотека обязана не удалять строку
- сишная библиотека обязана не менять строку
Если соблюдение этих условий кажется проблематичным, то лучше сделать owned copy:
pub fn safe_fun() -> Result<String, Utf8Error> {
let char_ptr = unsafe { unsafe_fun() };
let c_str = unsafe { CStr::from_ptr(char_ptr) };
c_str.to_str().map(|s| s.to_owned())
}
Разгрызите ещё этих не очень сладких, но вкусных калачей, выпейте чаю, да взгляните на космос. Постарайтесь аккуратно облететь во-он те спутники. Подключайте нейроинтерфейс и запускайте среду программирования Rusty JetSuperbrains, пора заняться делом 😎😉 🚀🚀🚀
Большая статья про интероп с C++ и кишки.
Я ещё не читал, оставлю здесь с тегом #статья
https://hsivonen.fi/modern-cpp-in-rust/
Странно, не добавилось превью. У автора ещё есть видео со слайдами, посмотрю их тоже.
Классная идея, особенно для FFI. Типа "превратим Rust в ООП с виртуальными таблицами и вот этим всем вот". Многие подумают, мол ну что за бред, зачем возвращать то, от чего ушли (наконец-то)?

Ну вот, для FFI, когда надо передать объект в C++, он в том рантайме будет туда-сюда передаваться, а когда вернётся обратно в Rust — все методы будут на месте и их можно будет корректно вызвать. Так что вот статья.
https://adventures.michaelfbryan.com/posts/ffi-safe-polymorphism-in-rust/

А вот человек засучил рукава и обернул это в удобный макрос:
https://github.com/kotauskas/thin_trait_object
Marat, [26.09.19 20:52]
а че пакеты компилятора (66 метров) и стандартной библиотеки (173 метра) такие жирные? такое ощущение, что jdk качаешь

Roma S, [26.09.19 21:08]
там все zero-cost абстракции сложены


Продолжая старую шутку про Rust можно даже показать, где скрываются zero-cost абстракции 😃
This media is not supported in your browser
VIEW IN TELEGRAM
Только что обнаружил в Clion классный шорткат p + TAB.
— Это же п-проблема Бен Б-бецалеля. К-калиостро же доказал, что она н-не имеет р-решения.
— Мы сами знаем, что она не имеет решения, — сказал Хунта, немедленно ощетиниваясь. — Мы хотим знать, как ее решать.
— К-как-то ты странно рассуждаешь, К-кристо… К-как же искать решение, к-когда его нет? Б-бессмыслица какая-то…
— Извини, Теодор, но это ты очень странно рассуждаешь. Бессмыслица — искать решение, если оно и так есть. Речь идет о том, как поступать с задачей, которая решения не имеет. Это глубоко принципиальный вопрос, который, как я вижу, тебе, прикладнику, к сожалению, не доступен.

(Стругацкие, Понедельник начинается в субботу)
Короче, в Clion нашёлся баг с форматированием крестов. Неудивительно, ибо задача распарсить кресты неразрешима😊
Боян про различные задержки доступа к различным частям хардвари. Пусть будет здесь, чтобы в случае чего я мог бы его найти.
Latency Comparison Numbers (~2012)
----------------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
Read 1 MB sequentially from memory 250,000 ns 250 us
Round trip within same datacenter 500,000 ns 500 us
Read 1 MB sequentially from SSD* 1,000,000 ns 1,000 us 1 ms ~1GB/sec SSD, 4X memory
Disk seek 10,000,000 ns 10,000 us 10 ms 20x datacenter roundtrip
Read 1 MB sequentially from disk 20,000,000 ns 20,000 us 20 ms 80x memory, 20X SSD
Send packet CA->Netherlands->CA 150,000,000 ns 150,000 us 150 ms

Отсюда https://gist.github.com/jboner/2841832
Alex Black:
Что такое emacs? 🧐

Pavel Tyavin:
Клавиатурный тренажёр

Ilya Bogdanov:
Вообще-то операционная система, в которую забыли добавить нормальный редактор

Konstantin Shabanov:
клуб натужных шуток
2025/07/05 01:20:39
Back to Top
HTML Embed Code: