In Java there is the runtime possibility to access data files from the
same jar by getClass().getResourceAsStream(). This is used to
externalize data. With the D import("file"), we have this feature at
compiletime, which is fine.
But the problem in D is, "file" is search in a global scope (-J<path>).
So having such resource files used only locally by the module is not
possible. It must be taken care about name conflicts.
A second problem, I see is, that the generated .di files still have the
'import("file")' statement in them. This means, that the user of a .di
still needs the resource file, taking care about more files in this -Jpath.
I want to suggest to make the imported file relative to the module by
default and if the path starts with a '/' search in the -Jpath.
import("file") // search "file" in the directory of this module
import("/file") // search "file" in -Jpath
import("sub/file") // search in the sub package "sub" for the "file"
For security reason, the ".." might be forbidden.
And i want to suggest to replace the import statement with the imported
file data (as a literal) for the generated .di file. This makes using
the .di more easy and ensures that the compiled object file is using the
same data as the .di file.