Why not run external DLL code at compile time?
Luke via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jan 7 12:49:05 PST 2016
Been following Jonathan Blow's language design talks for a while
now (he's a game developer working on a gaming-oriented C++
replacement language: https://www.youtube.com/watch?v=UTqZNujQOlA
). A lot of cool ideas that as a C++ developer I'd love to be
able to use. It got me curious about other more mature languages
out there in that category - Go, Rust, and especially D - and
I've started poking around in the forums here and on the internet.
One of the cooler features he demo'd was arbitrary compile-time
code execution - he had a little OpenGL space invaders game that
ran during compile, and your score from the game got returned
from the "invaders" function and compiled into the code.
I had read some responses from Walter Bright (e.g.
https://www.reddit.com/r/programming/comments/2kxi89/jonathan_blow_a_programming_language_for_games/clq6vq7 ) explaining why that might not be such a good idea, and his decision to limit D's compile-time execution to code that doesn't call out to any external DLLs (thus preventing installation of viruses, deletion of files, etc.).
Anyway that's been rolling around in my head a bit, and I'm
starting to wonder - don't we already have a ton of source code
(nearly all) whose build process includes shell scripts, batch
files, pre/post build tasks in IDE's, python scripts etc.?
Doesn't that pose the same security risks as external DLL calls?
I'm not an expert on make/cmake/etc. but they certainly also
allow calling out to executables on the system. So maybe the
current compilers themselves, gcc / cl / etc. don't leave you
with that security question in your head, but pretty much nothing
you build from github etc. these days is pure compiler calls. So
why not allow external DLLs in D and greatly expand the power of
its compile-time metaprogramming?
Apologies in advance if I'm missing something obvious, I'm a
newcomer to D.
More information about the Digitalmars-d
mailing list