Cask is no longer intended to be package management tool, it's more of a bundler for dependency management. Think Python virtual environments. Or for a developer to test an Emacs package with different combinations of Emacs and dependent packages, as in a CI environment. There's a known issue with respect to the docs, and they mention it in the faq.
Emacs has it's own package manager package.el. It's basic but gets the job done. The afore mentioned Elpaca is a big improvement.
El-get is a popular option and has been around a while. It uses package.el on its backend. I have no experience with it though.
use-package is a macro to help you configure and load packages in your ~/.emacs.d/init.el, and uses package.el on the backend too. It's authored by one of the Emacs maintainers, who claims it's "not a package manager".
straight.el is a package manager built on top of use-package.
leaf.el "leaf.el is yet another use-package". Reading about it, it sounds like a re-implemented use-package with similar keywords and semantics. Could be an interesting option for current users of use-package.