Awesome, I'll see what I can do.
I actually came very close to suggesting that it accept
passing a
filename.
But right now it does not appear that vibe.d is capable of
simply
running the program. It would be really nice to support
caching the executable in ./bin/ or similar. But it seems vibe
is recompiled each time it is run.

Which definitely is not a problem, since dmd compiles so fast.
I just caught myself waiting for a few seconds and thought
"come
on, its not like your compiling or any.... well, then
nevermind."
=P

what exactly is the point of cp'ing and rm'ing vpm.d?

copy vpm.d to /tmp and make it deletable by anyone

cp -p "$VIBEPATH"/vpm.d /tmp/vpm.d
chmod 666 /tmp/vpm.d

run VPM and delete the vpm.d file again, VPM will output the

compile/run script
rdmd -g -w -property -I"$VIBEPATH"/../source $LIBS -Jviews
-Isource /tmp/vpm.d "$VIBEPATH" "$START_SCRIPT" $1 $2 $3 $4 $5
$6
$7 $8 $9
rm /tmp/vpm.d

would it not make more sense to simply rdmd "$VIBEPATH"/vpm.d
&&
rdmd "$START_SCRIPT"? (pretend I typed all that out...)

I removed "rm /tmp/vibe.d" on my local machine and observed no
differences other than -2 seconds from the start time. A quick
once-through and I see no static enum mixins or anything
strange
like that. I can't figure out a reason for not allowing rdmd
to
cache that executable. Or the specific project executable for
that matter.

The problem is that rdmd will create temporary files within the
same directory as the .d file it compiles. On a *nix system,
where vibe.d might be installed in a read-only directory, this
would cause rdmd to fail. rdmd is also the reason why it
currencly always compiles the application - rdmd (or rather dmd
-deps=...) does not detect function local imports and string
imports as dependencies. So the alternative to spend some
seconds vs. missing changes was considered the preferable one.
(The bug is partially mentioned in
http://d.puremagic.com/issues/show_bug.cgi?id=767#c3)

Workaround is to run "vibe build" and then only the generated
./app(.exe).

Because of these issues and also to improve compatibility with
gdc and ldc, I'm thinking about implementing a build script
that does not rely on rdmd.

Really? rdmd creates files in /tmp on my Arch machine...
I'll look into it.

I have a version that outputs the applicationName upon vibe build.
Needs cleaning, then I'll pull.$VIBEPATH