Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FileSystem Development Target #55

Closed
kurtkilpela opened this issue Jul 21, 2022 · 10 comments
Closed

FileSystem Development Target #55

kurtkilpela opened this issue Jul 21, 2022 · 10 comments
Assignees

Comments

@kurtkilpela
Copy link
Member

We do not have a defined target version for FileSystem. I suggest we set our target compatibility w/ Pharo 10's FileSystem implementation.

The specific set of classes which should be compatible with this target version should be defined. The implementation used to support them can (and will) differ.

@kurtkilpela kurtkilpela self-assigned this Jul 21, 2022
@kurtkilpela
Copy link
Member Author

GemStone incorporated the classes InteractiveResolver and ResolutionRequest due to their presence in Pharo. I don't believe we should include these in our set of supported classes. GemStone does not have a UI and semantically, these classes are designed to interact with the user. They should be removed.

@kurtkilpela
Copy link
Member Author

InteractiveResolver was removed in f601208.

@kurtkilpela
Copy link
Member Author

kurtkilpela commented Aug 26, 2022

I consider the following classes to be the public classes for FileSystem. GemStone should provide the following. Note, it may not provide every method the Pharo version does. Methods will be evaluated on a case-by-case basis.

  • AbstractFileReference
    • FileLocator
    • FileReference
  • FileSystem
  • FileSystemResolver
    • PlatformResolver
      • MacOSResolver
      • UnixResolver
    • SystemResolver
  • FileSystemError
    • DirectoryDoesNotExist
    • DirectoryExists
    • DirectoryIsNotEmpty
    • FileExists
    • IllegalName
  • FileSystemPermission
  • DiskStore
    • UnixStore
    • MemoryStore
  • Path
    • AbsolutePath
    • RelativePath

@kurtkilpela
Copy link
Member Author

Initial documentation now available in the repo's documentation folder. See 3ef90a5

@kurtkilpela
Copy link
Member Author

I'm not sure I see the need for us to include OSPlatform. In Pharo, OSPlatform is used to get the string version of the Path to the current working directory. Outside of that, there is no reference. This call is made from DiskStore. In our implementation, we call the C Library from DiskStore directly. For GemStone, OSPlatform holds onto the instances of the C Libraries. It seems they'd be better off moved to DiskStore, the main place they are used.

Is there a reason to include OSPlatform that I'm not aware of?

@kurtkilpela
Copy link
Member Author

kurtkilpela commented Aug 29, 2022

FileSystem classes no longer directly references OSPlatform in cb1b5ec. OSPlatform remains... for now.

@kurtkilpela
Copy link
Member Author

OSPlatform was removed in 5732286.

@kurtkilpela
Copy link
Member Author

Read-only DiskStore is a low-priority feature. See #59

@kurtkilpela
Copy link
Member Author

FileReference work in #60

@kurtkilpela
Copy link
Member Author

We seem to be fairly in alignment w/ Pharo 10 based upon a review of the classes listed above. There are deviations due to implementation differences or concepts that do not map (like #image).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant