[Ros-talk] File System Commits

Simon Strandgaard neoneye at adslhome.dk
Wed Dec 10 01:23:32 EST 2003


On Tue, 2003-12-09 at 09:22, T. Onoma wrote:
> On Monday 08 December 2003 07:22 pm, Simon Strandgaard wrote:
> > You can see my changes here:
> > http://rubyforge.org/cgi-bin/viewcvs/cgi/viewcvs.cgi/projects/book_of_ideas
> >/file_system/overview.xml.diff?r1=1.6&r2=1.7&cvsroot=ros
> 
> Good deal. I see only one thing I liked to change: when first mention AFS, how 
> abou tif we put a footnote (like [1]) on that and have it link to the 
> Existing Technologies section, which service as a reference section.

I disagree. It very rarely that I read footnotes. I don't know of any
alternative to AFS. So at the moment I want Ros to be shipped with AFS.
In my opinion its so important that I doesn't belong in a footnote.


> > <quote>As in Plan 9 OS, everything is a file.</quote>
> > On the Amiga the IPC (InterProcessCommunication) system were object
> > oriented. On unix they uses files/sockets. I think this phrase are
> > kind_of? outdated.
> 
> On R:O:S everything is a Message sent to a Reciever. Yes?

Yes.. more in the OO spirit.


> > I don't understand the purpose with the 'Persistent Object File System'
> > section, that you have added. Its not a technology that I can recognize.
> > Can you tell me more about it?
> 
> Ah, this is something that has never really been fully done. But I think with 
> Ruby as a core enabler we can achieve it for the first time with real 
> success. Perhaps you've heard of using in-memory object pools in place of 
> databases? And certainly you've heard of using databases as backends to 
> filesystems. Connect these dots and presto! Essentially, take a an object 
> pool system and add a marshal-to-disk cache mechinism. So Imagine Ruby's 
> ObjectSpace having this cache.
[snip]

OK I see what you want;  An Ruby interface to the filesystem, and rely
on method_missing.  

img = FileSystem.load.pictures.pamela


or perhaps, as an imageviewer:

FileSystem.list.pictures.each do|img|
	img.show
	getch
end


marshal to file, could look like:

match = /[^\S]x\W/.match("x y z")
FileSystem.create.my_application.last_match = match



some years later, we can do a file to marshal, like:

match = FileSystem.load.my_application.last_match
p match.to_a
#=> [" y "]



> An enhanced ObjectSpace could keep track of use statisics and know which 
> objects to keep in-memory and which to cache back to disk. (A journalling 
> mechinism would also be useful here)

A splay tree or some other tree like data structure could be helpful,
when these objects has to be cashed.


> Its pretty advanced, but I think only a few "hop-skips" away from doable.

Watch out!  
* spaces in filenames
* i18n
* case sensitive/insensitive 


These issues has to be solved in a nice way first.  I have no ideas how
to solve them. 


--
Simon Strandgaard



More information about the Ros-talk mailing list