[PATCH] D78058: option to write files to memory instead of disk
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Dec 26 03:40:20 PST 2020
sammccall added a comment.
@dexonsmith thanks for sharing!
Some initial thoughts since abstracting outputs is something we're starting to care about too...
This doesn't appear to be an extension point - you can write to an InMemoryFS or to real disk, but not to anything else. If we're going to add abstractions around output, I think they should support flexible use in libraries (which doesn't need to cost complexity here: FS vs MemoryFS vs custom storage can implement the same interface).
With the right interface, I think this obviates the need for RequestedOutput and generalizes it - a caller can install an intercepting output backend that hooks certain paths and delegates the rest to the old backend.
(Of course such a backend could be provided, but it gets the complexity out of the way of the core abstractions)
I think the lifecycle and allowed operations on outputs would be clearer if an `Output` class was returned, with methods, rather than a stream + handle and various "free" functions (well, methods on OutputManager) than manipulate the handle.
This would again make it easier to reason about what operations are part of a storage backend: there'd be some `OutputBackend` interface to implement, and it would hand out `Output` objects which again must be implemented. (This would be reminiscent of FileManager + vfs::FileSystem + vfs::File).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D78058/new/
https://reviews.llvm.org/D78058
More information about the cfe-commits
mailing list