Alex Fails Some News Channel
277 subscribers
661 photos
27 videos
31 files
267 links
Всякая хрень от Фэйлса
Download Telegram
Forwarded from Stanislav Ershov
🤣5🔥3
Forwarded from Dr. Friedrich von Never
🔥3😁2
Forwarded from Stanislav Ershov
😁9😍1
Когда решил что-то отправить через СДЕК , и надеялся, что они уже отправляют
🤣4😭2
Forwarded from veselcraft
😁7🤔2🤯1
Forwarded from RWPS::Mirror
🔥2
Forwarded from acidicMercury8
👍54😁2🤣1🤨1
https://github.com/llvm/llvm-project/pull/68620

ПОСОНЫ, ТУТ #embed ВЛЕТЕЛ В ШЛАНГ, теперь заживем!

upd1: пока ревертнули, чтобы починить билдботов, но работа идет!
upd2: влили с фиксами, йее

Вкратце (нет):
#embed - это новая директива препроцессора, позволяющая НОРМАЛЬНО добавлять бинарные файлы в ваш исходный код (пока что на языке Си, но в C++ оно тоже скоро просочится). Если вы используете какие-то бинарные данные типа картинок, сырых двоичных ключей, гуидов, и пр., то эта фича для вас, и это то, что вы ждали 10 лет в Азкабане 40+ лет с момента создания сишки!

Пример кода:
// firmware_sound.c
const char wave_buf[] =
#embed "notification.wav"
; // добавим бинарный файл сразу в прошивку


Текущие подходы состоят из лютых костылей типа скриптов, которые печатают бинарь как массив; xxd; bin2c (очень распространен в определенных кругах) и прочие более-менее кривые (или) нет скрипты на ваших любимых языках оболочки типа cmd/bash/fish/python.

Эта бумага пережила 12 ревизий и готовилась примерно 5-6 лет!!! (включая прошлую версию, в которой также был std::embed - consteval-функция, которая делает то же самое, но на этапе компиляции, а не препроцессинга).
Автор потратил кучу нервов и сил (почитать его слезы и посочувствовать можно в его блоге здесь (обзор и бенчмарки - [1]), здесь (подход с языком Circle и бенчмарки - [2]) здесь (заметки для критиков - [3]), здесь (заметка о том, что принято в C23 и будет поэтому в C++26 - [4])). Его долго пинали в комитетах, то говорили, что это будет медленно работать (бенчмарки показали обратное, см. ниже), то говорили, чтобы он придумал "более generic"-подход, в стиле языка Circle, который, грубо говоря, является C++ с возможностью выполнять любой код на этапе компиляции, главное, пометить блок/функцию собачкой (@).

Бенчмарки из статьи [2] выглядят так:

Методология | Время
----------------+--------------
#embed | 17 seconds
std::embed | 16 seconds
#include, |
сгенерированный | 621 seconds
xxd | (КАРЛ!!!!)


Теперь эта фича уже точно будет в Clang 19 (кому не терпится, соберите текущий trunk и радуйтесь), в MSVC есть тикет на добавление, в GCC тоже (для нетерпеливых есть патч в тикете, можете собрать).

Поздравляю автора с этим достижением, и просто убеждаюсь, что в каждом меме есть доля шутки 😢

#длиннопостик #cpp #std_embed #thephd
🔥7👍5
Forwarded from Лемурмурмур 🇰🇿
🕊9
Forwarded from Мост на Жепи (Валерия Бр.)
Погнали
👍3😭3
Forwarded from Daniel Myslivets
This media is not supported in your browser
VIEW IN TELEGRAM
Linux запустили на нативном режиме Windows XP

Нативный режим доступен во время загрузки системы, когда другие компоненты Windows ещё не запущены (таким образом появляется проверка диска перед окончательным запуском ОС)

LinuXP? Да!
🤯2
Daniel Myslivets
Linux запустили на нативном режиме Windows XP Нативный режим доступен во время загрузки системы, когда другие компоненты Windows ещё не запущены (таким образом появляется проверка диска перед окончательным запуском ОС) LinuXP? Да!
Уточнение: по нашем экспертному анализу в комментариях к новости мы поняли, что тут запущен был qemu-riscv в нативном режиме WinXP :D

Ор выше гор. Но в целом, к исходной новости претензий нет - ведь и правда "запустили" же!!!!
🤣7👍1🔥1
Forwarded from Alexander Zaitsev
😁3👍2