comp.lang.ada
 help / color / mirror / Atom feed
From: Shark8 <onewingedshark@gmail.com>
Subject: Re: is there a version of unix written in Ada
Date: Mon, 28 Sep 2020 12:36:24 -0700 (PDT)	[thread overview]
Message-ID: <702c634f-a6ea-4514-ade5-cb26ae60d45cn@googlegroups.com> (raw)
In-Reply-To: <daa04c57-0dfa-4c95-84ef-0e90f3c1732cn@googlegroups.com>

On Monday, September 28, 2020 at 7:48:16 AM UTC-6, olivier wrote:
> On Monday, September 28, 2020 at 3:41:27 AM UTC-4, Dmitry A. Kazakov wrote: 
> > Le 27/09/2020 à 17:01, Dmitry A. Kazakov a écrit : 
> > To me a new OS must have new interface, which is a huge challenge, 
> > because interfaces of "modern" OSes are state of the art of late 70's.
> Any good references about that?

Ok, here’s some “modern” features from old Oses:
1.	https://en.wikipedia.org/wiki/Burroughs_MCP (1960s; appeared 1961)
	a.	Written exclusively in a high-level language (Algol), no assembler.
	b.	Typed, Journaling file-system.
	c.	Code can only be generated via trusted compilers.
	d.	Burroughs libraries:
		i.	Completely control access to shared resources,
		ii.	Allowed safe data-access w/o process switching,
		iii.	Offer procedural entry-points to the client which are checked for a compatible interface before the client is linked to the library (like Ada’s overloading resolution + type-checking),
		iv.	Have multiple sharing modes:
			(1)	‘shared by rununit’ — designed for COBOL, where a rununit is “an original initiating client plus the libraries it has linked to” and each rununit gets a library instance,
			(2)	‘shared by all’ — all clients share the same instance,
			(3)	‘private’ — each client gets a separate instance of the library.
		v.	
2.	https://en.wikipedia.org/wiki/Multics (1970s; appeared 1969)
	a.	“single-level store for data” — meaning there was no distinction between ‘disk’ and ‘memory’ — mapped all data into the address-space. In POSIX-terms this is similar to every single ‘file’ being mmap’ed.
	b.	CPUs, memory, and disks could be added/removed while the system was on-line due to extremely aggressive on-line reconfiguration support.
	c.	Designed to be a secure operating system, with more failures at the outset than they would have liked, by 1985 the OS reached th B2 level in the Orange Book (Trusted Computer System Evaluation Criteria; mentioned upthread).
3.	https://en.wikipedia.org/wiki/OpenVMS (1970s; appeared 1977)
	a.	Common Language Environment, a standardized mechanism for interoperability between different programming languages. (Similar-ish to DOTNET’s CLR.)
	b.	Integrated database.
	c.	Easy clustering.
	d.	DCL: An extensible command language.
	e.	DECnet: An OSI (7–layer) networking.
4.	https://en.wikipedia.org/wiki/Rational_R1000 (1985)
	a.	Combined OS, IDE, and Ada compiler into a single unit; see: http://www.somethinkodd.com/oddthinking/2006/01/07/rational-1000-a-surprising-architecture-from-a-surprising-source/
		i.	“Then they brought out a big whisk and mixed all the layers in together. The IDE was the operating system. The operating system was the Ada compiler. If you opened a command window to write a quick batch job, you wrote the batch job in Ada, using the IDE!”
	b.	Configuration management
	c.	Version control
	d.	Interactive design rule-checking and semantic-analysis
	e.	Source level debugging
	f.	Persistent memory/objects (?)

Those are just four old, and non-unix, operating systems which have relatively ‘modern’ features just being incorporated into newer OSes (and IDEs in the case of the R-1000). There are also many alternative modes of thought as to the architectures for computers: from proposed ‘Database-machines’ to ‘Dataflow-machines’ of the ‘70s & ‘80s, to the modern massively parallel machines like the GA–144, to memristor-based neural machines.

So, what would we want for an Ada OS? (Disregarding, for a moment, the base hardware.)

1.	Persistent objects (as per Dmitry)
2.	Content Addressable Memory-Architecture (?)
	a.	Pro:
		i.	Makes the natural access an ‘object’ rather than a base ‘address’.
		ii.	Actively breaks the idea that the system should be compatible with C.
	b.	Con:
		i.	Makes Ada 'Access a bit more odd.
		ii.	Makes most memory tricks invalid.
3.	Integrated Database
	a.	Pro:
		i.	Makes searching, collating, and certain manipulations easier.
		ii.	Could be integrated with analytic units.
		iii.	Provides a universal, common interface to persistency… at least across the OS.
	b.	Con:
		i.	The sort of database impacts how familiar or useful the system is.
			(1)	Relational, most familiar to DBAs;
			(2)	Hierarchical, could be used to easily implement Version-Control, Continuous-Integration, and possibly directory-like navigation;
			(3)	Document, excellent for researchers and librarians;
			(4)	Graph, very general and could likely be able to replicate any of the above models… the problem here being having a good “model-map”.
		ii.	“What about vendor lock-in!!”
4.	An integrated SMT prover?
	a.	Pro:
		i.	accessible to databases (for searching and filtering),
		ii.	accessible to compiler (perhaps for validating),
		iii.	Symbolic-execution (for analyzing programs & data),
		iv.	The ability for SPARK-style proving to be uniform on the platform regardless of client-language. (See item 7.)
	b.	Con:
		i.	More work,
		ii.	Would require some thought on the design.
5.	A SOM/DSOM-like based OS-level type-system
	a.	Extended with the base meta-object having ASN.1 serialize/deserialize methods.
	b.	Incorporated into an OpenVMS Common Language Environment-like system, thus making it available for all supported programming languages.
	c.	Having types for:
		i.	Universal Integers (?);
		ii.	Universal Floats (?);
		iii.	Universal Fixed-points (?);
		iv.	Email-address, preventing idiotic definitions like “a string with the ‘@’ symbol inside” that are apt to occur with regex;
		v.	phone numbers, the same but with phone-numbers;
		vi.	ISBN, useful for researchers/reference;
		vii.	DOI, useful for researchers/reference;
		viii.	WCS, useful for location;
		ix.	Time and Date;
		x.	If possible, more IR-ish constructs like:
			(1)	TASK — possibly allowing us to serialize/deserialize across a cluster’s machines,
			(2)	PACKAGE — allowing us to have a ‘native’ module,
			(3)	GENERIC — allowing us to paramaterize compile-time,
			(4)	subprograms — possibly allowing us to distribute subprograms, and
			(5)	parameters — if we generalize to an “abstract parameter” or “parameter-interface”, we could use the same construct for compile-time [ie generics] and run-time.
		xi.	If item x is implemented into the system then perhaps an interface for compilers, this could allow us to hook into the SMT prover and automatically get trusted compilers like 1.c.
6.	OSI-style networking
	a.	Pro:
		i.	This could allow client-programs to be essentially independent of network protocols in source-code.
	b.	Con:
		i.	This would throw off a lot of people that are used to depending on things like Connect( “http:some.site.org”, 1010 ); likely won’t enjoy this;
		ii.	Some method of indicating generalized connectivity might need designed.
		iii.	Using a pipe, configuration, or some other interface to set the appropriate parameters might be considered insecure.
7.	Ground up proving and verification via SPARK, where possible.

I have some more ideas in my notes, one of which would be simultaneous development on multiple architectures like, say, SPARC, x86, Motorola 68k, and a virtual trinary-machine (this way shift-right and -left are multiples of 3 rather than 2) — this would be useful for eliminating the inherent reliance on low-level implementation details outside of implementation-dependent packages, and would likely help reduce the scope of such packages.

  parent reply	other threads:[~2020-09-28 19:36 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <e3c51e65-b71e-4623-bd58-c94cdbcc3ba6o@googlegroups.com>
2020-07-25  7:37 ` is there a version of unix written in Ada mockturtle
2020-07-26 19:45   ` Stéphane Rivière
2020-07-26 22:15     ` Jeffrey R. Carter
2020-07-27  7:40       ` Stéphane Rivière
2020-07-28 13:08       ` DrPi
2020-07-28 16:48         ` Simon Wright
2020-07-28 17:00           ` Fabien Chouteau
2020-07-29  9:21             ` DrPi
2020-07-29  9:28               ` Fabien Chouteau
2020-07-29 15:02                 ` DrPi
2020-07-29 15:11                   ` Fabien Chouteau
2020-07-29 20:41                     ` DrPi
2020-07-29  9:20           ` DrPi
2020-07-29 16:53             ` Simon Wright
2020-07-29 20:42               ` DrPi
2020-07-25  8:47 ` Niklas Holsti
2020-07-25  9:36   ` Stéphane Rivière
2020-07-25 10:41 ` Luke A. Guest
2020-07-25 14:43 ` Jesper Quorning
2020-07-25 19:20 ` Andreas ZEURCHER
2020-07-27  7:40   ` Stéphane Rivière
2020-07-27 15:00     ` nobody in particular
2020-07-27 14:58   ` nobody in particular
2020-07-27 20:28 ` Shark8
2020-07-30  0:57 ` gdotone
2020-07-31 14:01   ` Shark8
2020-09-23 17:39   ` Olivier Henley
2020-09-25 15:06     ` DrPi
2020-09-25 17:31       ` Andreas ZEURCHER
2020-09-26  8:50         ` DrPi
2020-09-27 18:55           ` Luke A. Guest
2020-09-27 19:07             ` Luke A. Guest
2020-09-27 18:53         ` Luke A. Guest
2020-09-27 14:25     ` Shark8
2020-09-27 15:01       ` Dmitry A. Kazakov
2020-09-27 20:59         ` DrPi
2020-09-28  7:41           ` Dmitry A. Kazakov
2020-09-28 13:48             ` Olivier Henley
2020-09-28 14:48               ` Dmitry A. Kazakov
2020-09-28 16:28                 ` Olivier Henley
2020-09-28 20:30                   ` Dmitry A. Kazakov
2020-09-28 21:06                     ` Shark8
2020-09-28 17:47                 ` Paul Rubin
2020-09-28 20:27                   ` Dmitry A. Kazakov
2020-09-29 23:54                     ` Paul Rubin
2020-09-30  8:18                       ` Dmitry A. Kazakov
2020-09-30 17:27                         ` Paul Rubin
2020-09-30 19:42                           ` Dmitry A. Kazakov
2020-09-30 20:33                             ` Paul Rubin
2020-09-30 21:03                               ` Dmitry A. Kazakov
2020-09-30 22:42                                 ` Randy Brukardt
2020-10-01  9:28                                   ` Dmitry A. Kazakov
2020-10-01  9:59                                     ` J-P. Rosen
2020-10-01 10:21                                       ` Dmitry A. Kazakov
2020-10-01 11:38                                         ` Niklas Holsti
2020-10-01 11:52                                           ` Niklas Holsti
2020-10-01 12:51                                           ` Dmitry A. Kazakov
2020-10-01 14:18                                             ` J-P. Rosen
2020-10-01 15:44                                               ` Dmitry A. Kazakov
2020-10-01 22:10                                                 ` Randy Brukardt
2020-10-02  5:36                                                 ` J-P. Rosen
2020-10-02  6:56                                                   ` Dmitry A. Kazakov
2020-10-02  7:42                                                     ` J-P. Rosen
2020-10-03  3:14                                                       ` Randy Brukardt
2020-10-01 15:38                                             ` Niklas Holsti
2020-10-01 16:06                                               ` Dmitry A. Kazakov
2020-10-01 17:01                                                 ` Niklas Holsti
2020-10-01 17:37                                                   ` Dmitry A. Kazakov
2020-10-01 22:13                                                 ` Randy Brukardt
2020-10-01 11:48                                         ` J-P. Rosen
2020-10-01 12:54                                           ` Dmitry A. Kazakov
2020-10-01  7:57                                 ` Paul Rubin
2020-10-01  9:26                                   ` Dmitry A. Kazakov
2020-10-01  9:46                                     ` Paul Rubin
2020-10-01 10:35                                       ` Dmitry A. Kazakov
2020-10-01 19:02                                       ` DrPi
2020-10-01 23:12                                         ` Paul Rubin
2020-10-01 21:54                                       ` Randy Brukardt
2020-10-01 23:14                                         ` Paul Rubin
2020-10-01 21:36                             ` Brian Drummond
2020-10-02  6:56                               ` Dmitry A. Kazakov
2020-10-02 18:34                                 ` Brian Drummond
2020-10-02 21:24                                   ` Paul Rubin
2020-10-06 23:54                                     ` Brian Drummond
2020-10-03  6:54                                   ` Dmitry A. Kazakov
2020-10-05 14:03                               ` Shark8
2020-10-07 11:56                               ` Olivier Henley
2020-10-09 12:35                               ` Olivier Henley
2020-10-09 14:41                                 ` Brian Drummond
2020-09-28 18:40                 ` Vincent Marciante
2020-09-28 20:28                   ` Dmitry A. Kazakov
2020-09-28 17:04               ` DrPi
2020-09-28 17:30                 ` Olivier Henley
2020-09-28 18:05                   ` Olivier Henley
2020-09-28 19:36               ` Shark8 [this message]
2020-09-03 10:32 ` c+
2020-09-12  4:30 ` sumde121
2020-09-19 14:09 ` erchetan33
2020-10-01 22:21 Randy Brukardt
2020-10-02  6:55 ` Dmitry A. Kazakov
2020-10-03  3:09   ` Randy Brukardt
2020-10-03  6:42     ` Dmitry A. Kazakov
2020-10-03  7:44       ` Niklas Holsti
2020-10-03  8:16         ` Dmitry A. Kazakov
2020-10-03 10:44           ` Niklas Holsti
replies disabled

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