On Tuesday, September 20, 2016 00:01:58 crimaniak via Digitalmars-d-learn 
> Hi!
> Is there situations when output of thisExePath() can be different
> during runtime? If yes, what the reason?
> If no, is this possible to mark it as pure in phobos?
> https://dlang.org/library/std/file/this_exe_path.html

In principle, it should be impossible for it to change while the program is
running. However, what Phobos has to do to get the information can't be
pure. In the best case, it involves calling C functions that we can
reasonably assume will be pure but can't technically guarantee will be, but
in some cases, it actually involves querying the file system (e.g. on Linux,
it reads "/proc/self/exe"), which definitely can't be pure, because it
involves I/O.

If you really want a pure way to deal with this, then I'd suggest grabbing
the value at startup and setting it to an immutable variable. e.g. something

immutable string executablePath;

shared static this()
    import std.file : thisExePath();
    executablePath = thisExePath();

and then you can use that variable in pure code, because it's guaranteed not
to change.

- Jonathan M Davis

Reply via email to