1.93K subscribers
3.55K photos
136 videos
15 files
3.77K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #rust #gamedev #amazingopensource (но пока сырое)

Revy is a proof-of-concept time-travel debugger for the Bevy game engine, built using Rerun.

Revy works by snapshotting diffs of the Bevy database every frame that are then logged into the Rerun database.
This allows you to inspect and visualize the state of the engine at any point in time, either in real-time or after the fact.
These recordings can then be shared to be replayed or e.g. attached to bug reports.
👍7🤔31
В СМЫСЛЕ УЖЕ ФЕВРАЛЬ
😁18😭111🤬1🤡1🖕1
😁16🤔1
Сегодня на моей игре пятеро кобольдов дрались против одержимой куклы и кошка одного из кобольдов добила зомби-лошадь.

Других новостей у меня для вас нет
16💩3
😁12🌚121
Forwarded from Random Rust Dev
Я два дня сражался с тем фактом, что в Rust нельзя просто взять и написать

trait Foo {
const fn bar(arg: Arg) -> Ret;
}

почему? потому, оставили невозможным что бы дизайнить взаимодействие конста и трейтов в спокойствии еще несколько лет.

Если бы без Arg - я бы просто сделал const BAR: Ret.
Если что const BAR<const ARG: Arg>; Тоже нельзя, но хотя бы в найтли можно.

Пробовал сделать функцию не const, но писать её, как если бы она была const. Надеялся, что соптимизируется.
До некоторой глубины действительно оптимизировалось.

В итоге пришел вот к такой форме "конст-функции-на-стейбле"

trait Foo {
type Bar<const ARG: Arg>: RetType;
}

trait RetType {
const VALUE: Ret;
}


impl Foo for FooImpl {
type Bar<const ARG: Arg> = FooBar<ARG>;
}

struct FooBar<const ARG: Arg>;
impl RetType for FooBar<const ARG: Arg> {
const VALUE: Ret = {
// faked const fn body.
};
}


Это ужасно выглядит? Да.
Это гарантирует, что в результате компиляции на месте FooImpl::Bar::<ARG>::VALUE будет константа, а не вызов функции? Тоже да.
4🤔2
Forwarded from Кустарный мыслепоток (Konstantin Redkin)
го-вно.рф

Я сделяль
😁20💩6🤣2👍1👎1🔥1
#meme про мужика
💯249🤡5😁4🥰2🤔1
😒🤚 archive
😏👉 rkyv
🤔2
Forwarded from Lynx around and find out
Проиграл в голосину с названия порта на питон
🤣18😍9👍2😁21🍌1
#prog #meme про мамку

Source
😁24💯3🤡1🤨1
buttplug is now 15 crates instead of 1 gigantic horribly feature gated crate

i just got rate limited by crates.io trying to publish them all

buttplug is too big to fit in crates


Source
🤣272🥴2🔥1🤔1
#meme про ржавчину
9
#prog #rust #rustreleasenotes

Вышла версия Rust 1.93.0! Как обычно, тут только избранное, остальное только в детальных заметках о релизе.

(да, я выкладываю анонс с опозданием больше недели, и что ты мне сделаешь?)

В этот раз большинство изменений связаны со стандартной библиотекой.

▪️Немного печальное изменение: даже с установлением #[global_allocator] std всё ещё может вызывать System аллокатор. По крайней мере, на core это не распространяется.

▪️Компилятор теперь выдаёт предупреждение на #[repr(C)]-перечисления, у которых значения дискриминантов не умещаются в сишный int. Смешно, но до C23 у сишных enum нельзя было указать численный тип и нельзя было использовать значения больше int для дискриминантов.

▪️Компилятор теперь выдаёт предупреждение на попытку вызвать метод на const-значении, который эксплуатирует внутреннюю изменяемость. Так как константы инлайнятся по месту использования, эти изменения не будут видны. Обычно это является следствием ошибки — использования const вместо static (и я, кстати, такую ошибку уже делал).

▪️Метод append на BTreeSet и BTreeMap теперь сохраняет ключ из исходной коллекции, если ключи считаются равными через ==. До этого перезаписывались и ключ, и значение.

▪️Стабилизированы API:

🔸assume_init_drop, assume_init_ref и assume_init_mut на MaybeUninit<T>
🔸write_{copy, clone}_of_slice на [MaybeUninit<T>]
🔸into_raw_parts на String и на Vec. Странно, что только сейчас, потому что обратные from_raw_parts методы были стабилизированы ещё в версии 1.0.
🔸методы для непроверяемых (и потому потенциально дающих UB) битовых сдвигов в обе стороны на примитивных числах, а на знаковых — ещё и unchecked_neg
🔸методы для перевода ссылок на слайсы в (опциональные, разумеется) ссылки на массивы и сырых указателей на слайсы в сырые указатели на массивы, включая мутабельные варианты
🔸pop_front_if и pop_back_if на VecDeque
🔸std::fmt::from_fn для ad-hoc форматирования через переданную функцию. Позволяет избежать создания одноразовых типов, нужных только для форматирования

▪️Cargo теперь прокидывает значение конфигурации debug_assertions в билд-скрипты.

▪️Команда cargo tree теперь позволяет использовать для форматирования записей в дереве длинные имена для элементов шаблонов. Например, следующие два вызова эквивалентны:

cargo tree --format='{p} {f}'

cargo tree --format='{package} {features}'

▪️cargo clean теперь может удалять артефакты компиляции из всего workspace-а целиком.
👍6😁1
🤔3
🎉6
На экране выбора медиа для прикрепления к посту иконка места для снимка прокручивается над всем остальным
😁3🌚3
Надо брать

#game #meme