From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 2002:a24:78c:: with SMTP id f134-v6mr315906itf.36.1521170865356; Thu, 15 Mar 2018 20:27:45 -0700 (PDT) X-Received: by 2002:a9d:5220:: with SMTP id e32-v6mr15285oth.3.1521170865277; Thu, 15 Mar 2018 20:27:45 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!e10-v6no260603itf.0!news-out.google.com!a25-v6ni394itj.0!nntp.google.com!r195-v6no262279itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Thu, 15 Mar 2018 20:27:45 -0700 (PDT) In-Reply-To: <61dc87c3-30f1-4bbb-9125-89ec6e5dfc2e@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=76.113.16.86; posting-account=lJ3JNwoAAAAQfH3VV9vttJLkThaxtTfC NNTP-Posting-Host: 76.113.16.86 References: <2e250363-97a3-45bd-948e-081e24d70655@googlegroups.com> <61dc87c3-30f1-4bbb-9125-89ec6e5dfc2e@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <54953a97-f65a-4976-83ee-5b9d775bc503@googlegroups.com> Subject: Re: GNAT corrupted builds with below second changes From: Shark8 Injection-Date: Fri, 16 Mar 2018 03:27:45 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Received-Body-CRC: 2311457679 X-Received-Bytes: 4658 Xref: reader02.eternal-september.org comp.lang.ada:51016 Date: 2018-03-15T20:27:45-07:00 List-Id: On Thursday, March 15, 2018 at 1:59:21 PM UTC-6, Bojan Bozovic wrote: >=20 > Versioning file system is then what's needed, and that has been in VMS/VA= X-VMS/OpenVMS since seventies (and since seventies, VAX had 128 bit integer= s as well). I agree that a versioning FS is needed; but this only addresses the specifi= c issue raised here (the timestamp-resolution) and even a versioned FS is i= nadequate to the general problem. Take, for example, moving a file or directory and the impact that has on a = makefile/build-system: it invalidates the entire object in question and des= troys the ability to build. -- As you can see, using the FS as an anemic & = ad-hoc DB is simply not addressing the entire problem. > There's no good reason mainstream OS don't have it (like Windows, Linux a= nd 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 belo= ng to the file system, not the database. *sigh* -- Programs needn't BE files. We could [and should] store them as parsed, processed semantically-valid st= ructures. (Yes, there *should* be an interface for import/export to files/t= ext; this operation could be done by the Types for the structure themselves= as serialize/deserialize operations.) -- While it's possible these structu= res could be stored in a mere file, that's not handling things very intelli= gently: if the above structure is suitable to being stored in a database th= en [with a little cleverness] we inherit an entire entire system for dealin= g with ensuring that data is valid. Yes, there's the ultra-trivial example of renaming -- pseudo-SQL: UPDATE 'm= ' =3D 'MINIMUM' WHERE SCOPE =3D 'My_Function' -- which now won't have the t= ext-search and replace probleMINIMUM where there's extraneous replaceMINIMU= Ments in coMINIMUMMINIMUMents and the like. But that's a ridiculously simple/trivial example; what about something like= having the ability to make a subprogram generic with a simple command -- p= erhaps pseudo-SQL: INSERT Generic_Foo INTO 'Functions' WHERE SELECT x FROM = 'Functions' WHERE x.Name =3D 'Some_Fn' REPLACING x.param['example'].type WI= TH GENERIC_TYPE Or something like that. (Of course these sorts of manipulations on the sour= ce/DB should NOT be visible to the user, but are merely here to disabuse yo= u of the notion that all editing/manipulation must be done as text. [A bit = ironic considering the text-based medium being used here.]) Aside from all this, the usage of DBs can be a huge improvement to FS-based= systems precisely because of properties of the DB. Take for example this a= lternative to "Continuous Integration" from the mid 80s -- http://citeseerx= .ist.psu.edu/viewdoc/download?doi=3D10.1.1.26.2533&rep=3Drep1&type=3Dpdf --= by partitioning the project into workspaces and using a hierarchical datab= ase, only merging "upward" when everything on the "current level" is consis= tant [compilable], you end up with a DB where the root node *ALWAYS* has "t= he last compilable version". (Combine that with versioning and you have a r= ecord of EVERY COMPILING VERSION; *BAM!* no messed up/non-compiling crap in= your repository.)