I finally saw me nudged to install another add-on in Firefox to “fix” the #referrer header. Bad enough that #YouTube requires a referrer header to allow #embed|s. Now I also fell over OSM requiring one (this one I can get). But I don’t want to globally enable cross-origin referrer headers. Hence “Toggle Referrer.” It disables refererrs by default, and has a small spoofing list for annoying web resources that really want to have a referrer. YouTube gets a Google.com referrer. Take that, big tech!

https://addons.mozilla.org/firefox/addon/togglereferrer/

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка программирования C++, в которой я принимал активное участие. В этот раз (как и в прошлый), всё внимание было сосредоточено на C++26 и… теперь он готов! Осталось пройти формальные этапы в вышестоящих инстанциях ISO, и мы получим C++26 который заслужили. В нём будут: – reflection, – контракты, – SIMD, – линейная алгебра, – расширенные возможности сonstexpr, – hardening, – Hazard Pointer и RCU, – #embed, – executors, – и многие другие полезные вещи. Подробности и новинки

https://habr.com/ru/companies/yandex/articles/1015474/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1015474

#contracts #reflection #c++26 ++26 ++ #программирование #simd #compiletime #compile_time #hardening

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка...

Хабр

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка программирования C++, в которой я принимал активное участие. В этот раз (как и в прошлый), всё внимание было сосредоточено на C++26 и… теперь он готов! Осталось пройти формальные этапы в вышестоящих инстанциях ISO, и мы получим C++26 который заслужили. В нём будут: – reflection, – контракты, – SIMD, – линейная алгебра, – расширенные возможности сonstexpr, – hardening, – Hazard Pointer и RCU, – #embed, – executors, – и многие другие полезные вещи. Подробности и новинки

https://habr.com/ru/companies/yandex/articles/1015474/

#contracts #reflection #c++26 ++26 ++ #программирование #simd #compiletime #compile_time #hardening

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка...

Хабр
Zijn er mensen die een video van hun Peertube platform hebben ingesloten, #embed , op een WordPress website? Het is mij niet gelukt, vandaar. #peertube #embed #video #fediverse #dtv #website

@DocBohn

nitpicking: #embed is not a macro but should be a preprocessor directive.

thanks to
@thephd

If you don't want to depend on the name of the original file, replace the #embed line with
```
#embed __FILE__
```
Thanks to the #c23 #embed macro, I may have written the world's shortest #quine.
```c
#include<stdio.h>
int main(){puts((char[]){
#embed"q.c"
,0});}
```
(I doubt that I'm the first to do this)
We just need to politely ignore the extra `\n` injected by `puts`. Otherwise, replace `puts` with `printf`.
@fasterthanlime ICYMI, if you can require a modern enough compiler, you can use #embed https://thephd.dev/finally-embed-in-c23
finally. #embed

It happened. Nearly 5 years of paper writing, being snuck Committee Meeting notes on the DL until I could access them myself and absolve my co-conspirators of their sins, 5 different implementations/patches later, I can

The Pasture

#include <stdio.h>
#include <stdlib.h>

int
main (void)
{
const unsigned char t[]
= {
#embed __FILE__ limit (128) /* C23 */
, 0, 0, 0, 0, 0, 0, 0
};
size_t s = 0, i = 0;
while (i != sizeof (t) / 8)
{
s += (size_t) t[8 * i + 0] + (size_t) t[8 * i + 1]
+ (size_t) t[8 * i + 2] + (size_t) t[8 * i + 3]
+ (size_t) t[8 * i + 4] + (size_t) t[8 * i + 5]
+ (size_t) t[8 * i + 6] + (size_t) t[8 * i + 7];
++i;
}
printf ("%#zx\n", s);
return 0;
}