What is the difference between "eval" and "source /dev/stdin"?

Between the following alternatives... with eval. comd="ls" eval "$comd" with source /dev/stdin printf "ls" | source /dev/stdin with source /dev/stdin and ( ) or { } ( printf "ls" ) | source /...