Yep, free dynamic DNS still exists, for example NoIP https://www.noip.com/ However, you have to refresh it each month by filling out a "I'm still using it" web form they email you. So, you can't just set it & forget it.
Works in the free tier as set and forget. As long as you keep updating it (with whatever API), it works. Filling out a form manually makes NoIP sound like a horrible service.
it really isn't that hard to set up dynamic dns yourself. like maybe a day of work. just don't forget to upgrade your dns server software when exploits are discovered
Running your own DNS server (if that's what you're suggesting) just for dynamic DNS is extremely unnecessary. Not to mention the case of someone who doesn't have another server with a static IP to host the DNS on.
All but the worst of the worst providers have an API of some sort and if you're savvy enough to set up BIND, you can handle writing a curl command to post your IP to the API and sticking it into cron.