After watching Brandt Bucher's PyCon talk on the new 3.11 specializing interpreter, I played around with looking at #cattrs generated functions and how they specialize.

Nothing special there, but I discovered something else. At least on #python 3.11, functions with kw-only params (so, `*` in the arg list before params with defaults) are significantly slower (~10%) than functions with just positional params.

cattrs generates specialized un/structuring functions with kw-only params. But there's no real reason for these functions to actually have kw-only params since they're seldom called manually, so switching them to be positional will be a free perf win.