- Crystal lang does not have metaprogramming, but they have macros: https://crystal-lang.org/docs/syntax_and_semantics/macros.html , and there is some tricks here https://github.com/crystal-lang/crystal/wiki/MetaProgramming-Help :)
- About arguments (or array of arguments) the official documentation talks about that: https://crystal-lang.org/docs/syntax_and_semantics/default_values_named_arguments_splats_tuples_and_overloading.html
- youtube-dl is not a binary for two OS, it is at the end a zip file with python code inside a python file, you can see the content with this (I'm using Linux):
wget https://yt-dl.org/downloads/latest/youtube-dl -O- | sed "1d" | gunzip | less