On Tuesday, September 20, 2016 00:01:58 crimaniak via Digitalmars-d-learn wrote: > 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 like 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