Hi Alistair

Yes it should become part of the core of Pharo :).

Stef

On Tue, Jul 25, 2017 at 5:21 PM, Alistair Grant <akgrant0...@gmail.com> wrote:
> Hi David,
>
> Thanks very much for your follow-up.
>
> On Mon, Jul 24, 2017 at 07:28:07PM -0400, David T. Lewis wrote:
>>
>> Hi Alistair,
>>
>> I am copying this to vm-dev for follow up on the plugin, see below.
>>
>>
>> On Mon, Jul 24, 2017 at 08:09:10AM +0000, Alistair Grant wrote:
>> > Hi All,
>> >
>> > I'm nearly ready to submit a patch that started with the goal of being
>> > able to retrieve the device id and fixing FileReference>>isSymlink and
>> > also follows Esteban's suggestion of splitting out file existence and
>> > other attributes (which provides a performace gain).  See the summary
>> > below for a description of the changes.
>> >
>> > The patch involves adding a new VM plugin, FileAttriubutesPlugin.  To
>> > minimise the chance of any problems along the way I'd like to submit the
>> > patch in three steps:
>> >
>> > 1. Add the VM plugin (FileAttributesPlugin)
>> > 2. Add the code the image that allows testing of the code and plugin,
>> >    but doesn't do any integration with existing functionality.
>> >    This will allow the plugin to be tested by a few volunteers
>> >    (hopefully).
>> > 3. Add the patches that make the switch over to the new implementation.
>> >
>>
>> I think you are handling this in exactly the right way, kudos.
>>
>> >
>> > Can someone point me to how to submit a new VM plugin?  The code is
>> > contained in a subclass of InterpreterPlugin.
>>
>> Following up on the vm-dev list: If your plugin is available in a Monticello
>> repository, that would be great because VM builders can easily include it
>> and try it out. Any repository would be fine for starters, or if you have
>> an account on squeaksource.com I can add you as developer in the somewhat
>> loosely-related DirectoryPlugin project if that is of any help. Whatever is
>> convenient for you.
>
> smalltalkhub.com is probably easiest for me, thanks.
>
>
>> Your plugin sounds like something that would be stable and require little
>> maintenance over time, so it might make sense to pull it directly into
>> the VMMaker package. We can discuss that vm-dev list.
>
> I'm hoping this will become a core part of Pharo, so ultimately it
> should live with the other Pharo core plugins like FilePlugin (assuming
> it is accepted, of course).
>
>
>> Once your plugin code is available, it should be straighforward to start
>> including it in the various VM build configurations.
>
> Great, thanks.  build.linux32x86/pharo.cog.spur is probably the best
> place to start.
>
> I should be able to post the plugin to smalltalkhub.com quite
> quickly.  The smalltalk code will take me a while to repackage as I'll
> want to test it fairly carefully, and my time is very scattered (this is
> my hobby, but lots of family demands :-)).
>
>
> As a side effect, once this has been fully integrated it will be
> possible to get rid of at least some of the "#if Pharo" type
> conditionals in the FilePlugin, allowing the code to be tidied up.
>
> I'll post another reply once I've got the plugin code in
> smalltalkhub.com.
>
>
> Thanks again,
> Alistair
>
>
>
>> Dave
>>
>>
>> >
>> > I've been using this as my production environment for about 2 months now
>> > on a linux 32 bit VM.  Running the full test suite results in the same
>> > set of test failing before and after applying the patch.
>> >
>> > I've also ran file related tests on linux 64 bit (run the Test Runner,
>> > select all packages with "file" as part of the name and run all the
>> > available tests) and the full test suite on Windows 32 bit.
>> >
>> > The summary is:
>> >
>> > 1. #isSymlink now works properly on Linux (and it should also work on
>> >    MacOS and BSD).
>> > 2. The list of file attributes available from FileReference now is:
>> >     #accessTime (new)
>> >     #changeTime (new)
>> >     #creationTime
>> >     #deviceId (new)
>> >     #exists
>> >     #gid (new)
>> >     #inode (new)
>> >     #isBlock (new)
>> >     #isCharacter (new)
>> >     #isDirectory
>> >     #isExecutable (new)
>> >     #isFIFO (new)
>> >     #isFile
>> >     #isReadable
>> >     #isRegular (new)
>> >     #isSocket (new)
>> >     #isSymlink (works)
>> >     #isWritable
>> >     #modificationTime
>> >     #numberOfHardLinks (new)
>> >     #permissions
>> >     #size
>> >     #targetFile (new)
>> >     #uid (new)
>> > 3. FileReference>>exists is faster than before (well, at least on my
>> >    linux laptop).  This is useful as it is called quite often.
>> > 4. It is possible to retrieve symbolic link attributes, e.g. all the
>> >    attributes listed above plus the target path.
>> >
>> >
>> > Given how similar MacOS and BSD are to linux, I assume that this will
>> > all work without problem on those platforms (but it obviously needs to
>> > be tested).
>> >
>> > As implied above, the changes are all backward compatible (except
>> > the broken #isSymlink), although a couple deserve mention:
>> >
>> > 1. Obviously #isSymlink now answers correctly (previously it would only
>> >    answer correctly for a broken link).
>> > 2. Requesting any of the attributes listed above (except #isSymlink)
>> >    will return the value of the target path.  If the FileReference is to a
>> >    broken symbolic link, it will return the attributes of the symbolic
>> >    link (keeping existing behaviour).
>> > 3. The attributes of a symbolic link can be retrieved using
>> >    FileReference>>symlinkAttributes.
>> >
>> > Overall, performance is slightly better than before.  Code that
>> > needs to access multiple attributes and is written to take advantage of
>> > the new behaviour will see significant performance improvements.
>> >
>> >
>> > If you've got this far and forgotten the original question :-)
>> >
>> > Can someone point me to how to submit a new VM plugin?
>> >
>> >
>> > Thanks,
>> > Alistair
>

Reply via email to