Preheat the oven to 350°F (180°C). Lightly grease an 8x8-inch square baking pan so the bread pudding does not stick while baking.
Cut about 7 heaped cups (260 g) of day-old, loaf-style bread into 1-inch cubes. Set the bread aside while you prepare the custard mixture.
Add 85 g (6 tablespoons) of unsalted butter, 480 g (2 cups) of whole milk, and 240 g (1 cup) of heavy cream to a saucepan. Heat over medium heat until the mixture starts to simmer, then remove from the heat and cool for a few minutes.
In a large bowl, whisk together 4 large room-temperature eggs, 133 g (⅔ cup) of white sugar, ½ teaspoon of salt, 1 tablespoon of vanilla extract, and 1 teaspoon of ground cinnamon until smooth and well combined.
Gradually pour the warm milk mixture into the egg mixture while whisking constantly. This helps prevent the eggs from scrambling and gives you a smooth, creamy custard.
Add the cubed bread and optional ¼ cup (41 g) of raisins to the custard. Stir gently until the bread is well coated, then let it sit for about 2 minutes to absorb the custard.
Pour the soaked bread mixture into the prepared baking pan and spread it into an even layer. Bake for 27 to 30 minutes, until the edges are golden and set while the centre still has a slight wobble.
Let the bread pudding cool for about 15 minutes before slicing. Dust the top with powdered sugar and serve warm with a scoop of ice cream or a spoonful of whipped cream.