comp.lang.ada
 help / color / mirror / Atom feed
From: "Robert I. Eachus" <rieachus@comcast.net>
Subject: Re: GNAT corrupted builds with below second changes
Date: Sun, 18 Mar 2018 01:21:49 -0400
Date: 2018-03-18T01:21:49-04:00	[thread overview]
Message-ID: <p8kt1g$150s$1@gioia.aioe.org> (raw)
In-Reply-To: 61dc87c3-30f1-4bbb-9125-89ec6e5dfc2e@googlegroups.com

On 3/15/2018 3:59 PM, Bojan Bozovic wrote:

> Versioning file system is then what's needed, and that has been in VMS/VAX-VMS/OpenVMS since seventies (and since seventies, VAX had 128 bit integers as well). There's no good reason mainstream OS don't have it (like Windows, Linux and OS X), it's absent only due to inertia. In linux there's NILFS but it's not used in mainstream distributions. DB is partial solution, as files belong to the file system, not the database.
>
Multics had it before that, it was just so invisible (unless you needed 
it) that many users never knew it was there.  Actually, since this was 
Multics, I should talk about segments.  The dumper daemon, ran around 
behind the scene and copied modified segments, usually to tape, but 
could be to hard disk.  How did it know if a file was modified? It 
looked to see if the last changed date was before this pass started. 
What if you made multiple changes in a second?  First, the timestamps 
were guaranteed unique, the timestamp might normally be printed to the 
second, I think the timestamps went to the microsecond.  Even if the 
system clock was slower, and it usually was, any call to the clock got 
the clock plus the number of clock calls since the last clock tic. 
(Shriek names, that began with an exclamation point were guaranteed to 
be system unique and were created by hashing the value from a clock call.)

The policy on dumping segments allowed for segments growing, so every 
keystroke didn't result in a dumped file.  Also tools like compilers 
used !names to insure they wouldn't be dumped, except for those 
resulting segments that were renamed when finished. But for example 
deleting the contents of a segment gave you a new blank segment, and 
Multics held onto the old version, if necessary, until it was dumped.

I only used the capability once. I was testing changes to a terminal 
driver written in Multics Lisp, and wrote all over the source segment 
while testing it.  No problem.  The file system offered me 25 versions, 
and offered to look for more. ;-)

The only real problem was that all system times were in UTS with no 
daylight savings, but printing files would use the local time offset. 
So around the start and end of daylight savings time it could confuse 
users. (The timestamps didn't change, just how they were printed.)

Anyway, I don't care how they do it anything that depends on timestamps 
should make them unique.  Like Multics, the milliseconds or microseconds 
don't need to be accurate, just correctly ordered and unique.


  parent reply	other threads:[~2018-03-18  5:21 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-14 10:36 GNAT corrupted builds with below second changes Alejandro R. Mosteo
2018-03-14 22:56 ` Randy Brukardt
2018-03-15 13:24   ` Alejandro R. Mosteo
2018-04-22  5:53   ` David Thompson
2018-03-15 18:52 ` Shark8
2018-03-15 19:59   ` Bojan Bozovic
2018-03-16  3:27     ` Shark8
2018-03-16  4:29       ` Bojan Bozovic
2018-03-16  5:37       ` J-P. Rosen
2018-03-18  6:09         ` Robert I. Eachus
2018-03-16  8:42       ` Dmitry A. Kazakov
2018-03-18  5:21     ` Robert I. Eachus [this message]
2018-03-15 21:03   ` Jeffrey R. Carter
2018-03-16  2:51     ` Shark8
2018-04-22  7:31 ` Simon Wright
2018-04-22 14:04   ` J-P. Rosen
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox