6.1 lets block.json name a PHP file for rendering, which removes the callback from the registration call.
{
"apiVersion": 2,
"name": "turkerdev/recent-products",
"render": "file:./render.php"
}
The file receives $attributes, $content and $block as variables rather than as arguments, which is unusual and is documented in exactly one place. Keeping the render in its own file rather than in a closure inside a registration call makes it findable, and it means the block directory contains everything about the block — which is the whole direction block.json has been moving in.