- 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
- For size of binaries I did this small exercise with hello world in some compiled programming languages, some I found how to optimize and others not, https://gist.github.com/dmitryrck/ec5f9b7fb95b6908d19d37e5e1391827
Any question that I did not answer properly, it is not here or anything else, feel free to ask again :D