In a medium saucepan, whisk together 1/2 cup sugar, cornstarch, and salt. Gradually whisk in the milk until the mixture is completely smooth with no lumps.
Place the saucepan over medium heat and cook, whisking constantly, until the mixture thickens and begins to bubble, about 8-10 minutes. Continue to cook for 1 more minute while whisking.
In a separate medium bowl, whisk the egg yolks. Slowly pour about 1/2 cup of the hot milk mixture into the yolks while whisking constantly to temper them. Then, pour the yolk mixture back into the saucepan.
Return the saucepan to medium heat and cook, whisking constantly, for 2-3 minutes, until the custard is very thick. Remove from heat and whisk in the softened butter and vanilla extract until fully incorporated and the custard is smooth.
Pour the custard through a fine-mesh sieve into a clean bowl to ensure a perfectly smooth texture. Press plastic wrap directly onto the surface of the custard to prevent a skin from forming and refrigerate for at least 2 hours, or until completely chilled and set.
For the compote, combine the fresh berries, 1/4 cup sugar, and lemon juice in a saucepan. Cook over medium heat for 5-7 minutes, stirring occasionally, until the berries break down and the sugar dissolves into a syrupy sauce.
Remove the berry compote from the heat and let it cool slightly. It will thicken as it cools.
To serve, spoon the chilled vanilla custard into bowls and top with a generous spoonful of the warm or room temperature berry compote.