Ever wanted a simple, compact, small, yet usable and relatively full-featured operating system using a SunOS kernel with most of its utilities written in Ada? Whatever the answer, now you can. “AuroraUX is a SunOS-derived kernel and userland. The core of the project are its utilities written in Ada. Other, poorly implemented features have been fixed or rewritten, too. Ada was chosen over other languages because it sucks the least.” At least they’re honest.
“From the world’s most advanced reconnaissance aircraft to the desktop: AuroraUX, an OpenSolaris derived distribution, pulls together the best technologies empowering today’s mission critical data center facilities to fighter jets that require quality software that simply cannot fail without very serious consequences,” the project’s about page reads.
Ada is a programming language designed by the US Department of Defence in the late 1970s and early 1980s to supersede the hundreds of other programming languages that were in use then b the Department. As Wikipedia explains, “Ada is a structured, statically typed, imperative, and object-oriented high-level computer programming language, extended from Pascal and other languages”. It’s used in mission critical environments, such as avionics.
The project has lots of interesting goals, so be sure to take a look around the website.
I am sorry but I have to differ here. They guy that broke the Colossus last year used Netbsd + Ada and his job was very impressive to my opinion. This is what he said from: http://www.netbsd.org/gallery/schueth-interview.html
What is special about the Ada programming language? How important was the use of Ada to win the challenge, or does the programming language not really matter?
One year back I would have written the software in C, simply because I did not really know Ada at that time. But writing the software in Ada made the whole project much more enjoyable.
To tell you the truth, my prejudice had been for a long time that Ada looks just like Pascal, and Pascal had been obsoleted by C. You also have to type less when writing a program in C (just curly braces instead of “begin” and “end”). In hindsight, I have to say that I was quite stupid, and this even though I was always open to learn new programming languages and have looked at a lot of them.
Ada avoids programming errors by its strong typing model, so you spend less time on debugging your programs. The high level data abstraction allows a more intuitive implementation of algorithms. Modeling the SZ42 in Ada by creating data types for the key wheels and combining them to a data type for the entire machine felt a bit like building a machine piece by piece.
I can only encourage everyone to have a look at Ada. It is a modern programming language with all the features of object oriented languages, like high level abstraction, information hiding, generic programming (similar to C++ templates), and function / operator overloading. Personally I do not have much use for inheritance and run-time polymorphism, but Ada has that too, with concepts that seem more logical to me than those of C++ or Java.
Another interesting feature of Ada is that the language has support for tasking, and that it provides protected types for the safe handling of shared data. On modern multiprocessor systems, you can use the full computing power in number crunching applications by performing calculations in parallel. If the run time system provided by the compiler (usually based on POSIX threads) is designed accordingly, you should be able to do parallel processing on several CPUs just by using the standard language features of Ada. I have not yet tried this, though.
—
Ada language is awesome. It depends how you use it.
-2501
Uh, I think that you misread the sentence: “Ada was chosen over other languages because it sucks the least.”, it’s just another way to say that Ada is the best language.
Ada is a bit too verbose for my taste but I agree that it’s a very good language, but it’s not much used probably because at the beginning Ada’s compilers cost an arm and a leg..
The chances of shooting yourself in the foot with Ada is significantly less than most other languages like C. Part of this is because of the strong typing and slightly more verbose language structures. It’s aimed for reading more than writing, anyone who thinks using nifty shortcuts for writing code is cool unnecessarily obviously doesn’t maintain code.
The compilers originally were very expensive as they were for very specialised systems (ie, custom made, embedded, etc) and they were also validated so bugs in the compiler were pretty rare, which is what the programmers were paying for. These days with GNAT the only real excuse is lack of ported headers from the predominantly C libraries to Ada.
That would be because Ada is Pascal, or at least a descendent of Pascal.
I’m not an expert on anything involved, so forgive the ignorance of the question: is it very difficult to interface C and Ada at the kernel level, so that one could write drivers or rewrite portions of the kernel in Ada?
Yes. The language supports systems programming (ie, native access to low level hardware and CPU features) and linking to other languages (notably C) as part of its recommended features in the RM annexes. In this sense, Ada as a language is much more suited to programming consistently at a high level than C for OS development if the compilers support the annexes out of the RM.
It is still my “all-time favorite” language. I learned Ada back in the 80’s and fell in love with it. Even got to work on it as part of an OS service.
Ada also introduced me to Grady Booch… loved his book on data structures with Ada.
Anyway, glad to see it is still in use.
Just a rectification. Ada was not designed by the DoD but for the DoD. Ada design was the contest winner.
I am all for projects such as this.
C is a very nice language but has a few quircks we all know, so it is nice to see projects making use of more safer languages.
Ada might never get a mainstream language because of its complexity, which is less than C++ by the way, but it has a bad name around many developers.
Me personally, I am more for the mixed paradigm languages that mix OOP with FP, statically based but do allow a metaprogramming as well.
Still this is a very nice project and I hope that they get far. C is not the only language to write OSs on.
The US-Military made ADA mandatory for all of its projects. On the one hand this is about standardization, on the other hand they rely on ADAs strong typing etc to more reliable code.
-P
Edited 2009-03-12 12:42 UTC
Is dynamic class/module loading or something similar possible with Ada? Somehow the Typesystem doesn’t look like it: You can get a list of all the subclasses of a class. How is this possible if you don’t actually know all subclasses because they could be loaded from a file? Or are only the currently loaded classes listed?
I am almost certain it is possible to implement dynamic class loading in Ada, although I’ve never gotten around to demonstrate it myself.
The fact that there exists Ada compilers targeting JVM and .NET platforms seems to support my view.
While I understand the choice of Ada over C or C++, I’m more surprised by their use of Falcon.
I remember an article here on Falcon but I didn’t see what was interesting in Falcon compared to Python or Ruby..
I’m also curious about the choice of Falcon over Python.
EDIT: Actually, after reading about Falcon a bit – it supports many programming paradigms, including those of python, but additionally message oriented and tabular.
Message oriented could be useful for zones and VMs.
Tabular programming would be a useful way to look at/work with configuration data, and lots of other stuff probably.
Finally, it seems to have builtin in concurrency support, rather than supporting it as an afterthought like python – and concurrency was one of AuroraUX’s stated goals.
So yeah, I suppose I can see why they are going with it. It has many other interesting features other than these, but these are ones that struck me as being somewhat unique and inline with their goals.
Edited 2009-03-12 20:06 UTC
Has anyone found any screenshots?