Alexander Monakov

@amonakov@mastodon.gamedev.place
255 Followers
171 Following
1.8K Posts

Dear @creativecommons ,

I read your article about your initiative for new licenses for dataset holders in the AI industry.

Let’s be clear: I do not want to re-license my hundreds of CC-By comic pages to please AI giants.

I wish you would support CC artists suffering from massive plagiarism. You should enforce your own existing licenses against AI mass crawling. It seems you’ve joined the battle only after the casualties and still managed to side with the wrong people.

https://creativecommons.org/2025/06/25/introducing-cc-signals-a-new-social-contract-for-the-age-of-ai/

Introducing CC Signals: A New Social Contract for the Age of AI - Creative Commons

CC Signals © 2025 by Creative Commons is licensed under CC BY 4.0 Creative Commons (CC) today announces the public kickoff of the CC signals project, a new preference signals framework designed to increase reciprocity and sustain a creative commons in the age of AI. The development of CC signals represents a major step forward…

Creative Commons
wait, doesn't telepathology mean "study of telepathy"
they should have picked 8 as the magic value

The one weird trick to opt-out a tree of processes from systemd-coredump collection is

prlimit -c=1

(the kernel doesn't invoke the coredump helper when the limit is exactly one byte, prints a dmesg notice instead)

but also, programmer's time could be spent better than on sussing out workarounds like that

I had no idea, so after a bit of searching I found one revelatory example, and reproduced the idea in this CE sample: https://godbolt.org/z/1Wcfeqb58

But I still have no idea why it is mangled like that. Surely it's possible to fully fold the parameters when instantiating the templates, and write 1 instead of 0+1 and (int)(0+0x1p0)? Am I overlooking yet another subtlety?

Compiler Explorer - C++ (x86-64 gcc 15.1)

template <int I> struct S {}; template <int N> void f1(S<N+1> *); template <int N> void f2(S<int(N+1.)> *); void g() { f1<0>(0); f2<0>(0); }

As mentioned by @pervognsen , C++20 allows floats as template parameters. But. But! If you look at the Itanium C++ ABI, you'll see that it has been describing mangling rules for floats since the beginning.

Hence, a puzzle: how is it possible to write an entity that contains a float in its mangled name in C++98?

Also the perfectionist's nightmare that is the selection of GPRs in AMD64 calling convention on Linux. The six integer arguments go in rdi-rsi-rdx-rcx-r8-r9.

memcpy's arguments are therefore dst:rdi, src:rsi, count:rdx.

Meanwhile, REP MOVSB takes rdi as destination, rsi as the source, and... rcx as the count.

What does RISC-V Shlcofideleg extension do? Wrong answers only, please.
Heh, Clang accepts elementwise math builtins for scalar types, effectively exposing a no-math-errno variant of the classic builtin: https://godbolt.org/z/eaohvq47M
Compiler Explorer - C (x86-64 clang 20.1.0)

double f(double x) { return __builtin_elementwise_sqrt(x); } double g(double x) { return __builtin_sqrt(x); }

Google is now coloring all links in search results in magenta, making them look as if already visited (and making unvisited links indistinguishable) 👍