On Saturday, 28 December 2013 at 08:18:44 UTC, Jonathan M Davis wrote:
on it specifically. My main point was that some stuff in std.file is system- specific and that if it has to be, it's better to have it in std.file as system- specific rather than not having it at all just because it couldn't be completely cross-platform and portable. So, just because setFileAttributes is
doing something system-specific does not mean that it's bad.

It is bad. If you want system-specific behaviour you should have a separate interface that provide all the advantages that going to a lower level provides. Having half-assed OS-specific support is too pragmatic and will lead to a legacy mess in the long run when those interfaces become obsolete.

A good file abstraction should also support newer file systems like Google Cloud Storage, though. GCS does not support append() or directories.

A good file abstraction should also provide mechanisms to deal with different levels of consistency on the underlying filesystem and caching-mechanism:
- read after write might return an old version
- read after write returns the new version if read from the same computer
- read after write always returns the new version

As a new language D should support Cloud based environments out-of-the-box with a hierarchy of functionality down to the peculiarities of Windows/Posix etc so that you can decide to code in a manner that supports all platforms without having to litter your code with ifs and version-statements… and also restrict you to the subset you have "authorized" so that you can develop on your Windows system and port it to the cloud with just a recompile without knowing the details of the cloud file system. (i.e. the compiler warns you when you are using system specific functionality).

I also think good file system support implies built-in caching and let the library decide whether to turn library-level caching on or off based on what the operating system or underlying interface supports. E.g. the ability to tell the system that you want successive reads of a file to be available fast at the cost of consistency.

Reply via email to