Skip to content

Latest commit

 

History

History
92 lines (92 loc) · 3.9 KB

TODO.md

File metadata and controls

92 lines (92 loc) · 3.9 KB

To Do

  • FilePath
    • Create new files
      • Create intermediate directories
      • With specified contents
    • Investigate if using stdio(3) operations instead of directly interacting with an open file descriptor would simplify usage
    • Scanning and delimitting reads
      • fscanf(3)
        • FileScanner?
      • getdelim(3)
  • DirectoryPath
    • Get directory contents
    • Get directory contents recursively
      • Eagerly
      • Lazily
    • Create new directories
      • Create intermediate directories
    • Delete directories
    • Recursively delete directory
  • GenericPath (AKA all Paths)
    • Change path ownership
    • Change path permissions
      • Allow octal numeric strings to be used for changing permissions
    • Move paths
    • Rename paths (move alias)
    • URL conversion
    • Get/generate temporary files/directories
    • Copy paths
    • Initialize from URLs
  • TemporaryPaths
    • Temporary path in closure (deleted afterwards)
    • Base: Whether to generate or supply the root temporary directory
  • OpenPaths
    • Open only for closure
    • Allow passing explicit buffer to avoid creating one on every read operation
  • Misc. Additions
    • Globbing
    • LinkedPath (symlinks and hard links)
    • Make Paths Codable
    • APIs for checking permissions to a path
      • canRead/Write/Execute/Delete == Whether or not the calling process (or specified uid/gid/username/groupname) can read/write/execute/delete the path
      • mayRead/Write == Whether or not the path was opened with read/write permissions
    • SocketPath
    • FIFOPath?
    • BlockPath?
    • CharacterPath
    • Place deleted items in trash (instead of deleting directly)
    • Change CWD for closure only
    • Pattern matching (~=)
    • Useful operators (<<, >>, etc)
    • Consolidate repeated/common errors
    • Atomic writing (see Data.WritingOptions)
    • Make sure we support common Data.ReadingOptions
  • Investigate TypeErasure to see if it could benefit Paths and Open objects interact together more nicely
  • Investigate ARC best-practices and see if memory usage/performance/correctness can be improved
  • Investigate improved Hashable conformances
  • Study the Ownership Manifesto to see if anything can have improved memory semantics/performance
  • Investiagte class behaviors and ensure proper COW (or other) copy semantics
  • Slicing/Collection APIs
    • Sequence conformance
    • Slicing
    • Joining Slices
  • Migrate usage examples to a separate Wiki
    • Document performance pitfalls
  • Make a FileSystem utility for easily getting some file system attributes
    • Free/Used bytes
    • Total size
    • Type
    • More?
  • Annotate code with preconditions and assertions
  • Investigate Domains
  • Investigate Common Search Paths
  • Rebrand as PathMan
    • Awesome logo/icon
  • Crazy Stuff
    • URLPath
      • Separate current Path protocol into a FileSystemPath sub-protocol (only keeping relevant stuff in Path)
      • Opening a URLPath downloads data?
      • Support relevant standards and common manipulations
  • Validate code meets possible optimization points:
  • Use more C-standard APIs to move away from only POSIX specific APIs (in preparation for Windows support)