Linked by David Adams on Mon 4th Oct 2010 19:32 UTC, submitted by Idefix
OSNews, Generic OSes Once upon a time, operating systems used to matter a lot; they defined what a computer could and couldn't do... Today, there's only one operating system: Unix (okay, there are two, but we'll get to that). This is why I contend that the OS doesn't matter - or that we need to take another look at the word's content, at what we mean when we say 'Operating System'.
Thread beginning with comment 444235
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[4]: "There is only one."
by SamuraiCrow on Thu 7th Oct 2010 01:27 UTC in reply to "RE[3]: "There is only one.""
SamuraiCrow
Member since:
2005-11-19

Re: Singularity

Yeah, it's written in managed code, like those experimental OSs written in Java we've had for ages. And ?

If you had the option of having fine-threaded managed code over course-threaded memory protection, the fine-threaded version would be more stable. The memory protection would be just as slow. With optimization, the main processor could be redesigned with a less obnoxious and invasive MMU to allow more cores and speedups for the same production processes that are used for existing processor models.

UNIX will only win the PC market in time for Windows to come up with something different in time to make the PC obsolete.

Re:death to the original GNU software
This is just ridiculous. A compiler is a compiler, no matter how you see it. It has a well-defined purpose, so there's not much room for improvisation. GCC compiles well-optimised code from many languages to a very wide range of binary targets, so it's a good compiler, there's nothing else to say about it ;)


Clang/LLVM is also a good compiler, if a bit young. It is more modular than GCC. It optimizes nearly as well (with the single exception of autovectorization). It is being designed for C++0x from the ground up as well as Objective C and is used internally by Mono and several JVMs as well. It avoids RTTI in its code base by using templates internally to achieve the same results faster. It is used to optimize shader programs in OpenGL drivers, and is used as a backend by several functional languages as well, namely GHC Haskell and OCaml. GCC is only keeping up with the modular C++ code base of LLVM by sheer brute force of the development staff devoted to it. Put simply, GCC!=LLVM. A compiler is not just a compiler, if it is also a compiler framework.

Reply Parent Score: 2

RE[5]: "There is only one."
by tylerdurden on Thu 7th Oct 2010 03:31 in reply to "RE[4]: "There is only one.""
tylerdurden Member since:
2009-03-17

If you had the option of having fine-threaded managed code over course-threaded memory protection, the fine-threaded version would be more stable. The memory protection would be just as slow. With optimization, the main processor could be redesigned with a less obnoxious and invasive MMU to allow more cores and speedups for the same production processes that are used for existing processor models.


what exactly is "obnoxious and intrusive" about an MMU? And what part of the memory management are you referring (the memory controller, the TLB, what?)

And why are you mixing apples with oranges? Managed code/coarse vs. fine threading/etc. What are the actual justifications for your claim regarding "fine grained" managed code?


UNIX will only win the PC market in time for Windows to come up with something different in time to make the PC obsolete.


That is funny given all the talk about cloud-based computing making the PC obsolete. And most cloud systems are running under Unix-like OSs.

The point is that you are claiming something to be dead, while at the same time proclaiming the future to be something that is based on an even more dead OS (BeOS).


Clang/LLVM is also a good compiler, if a bit young. It is more modular than GCC. It optimizes nearly as well (with the single exception of autovectorization). It is being designed for C++0x from the ground up as well as Objective C and is used internally by Mono and several JVMs as well. It avoids RTTI in its code base by using templates internally to achieve the same results faster. It is used to optimize shader programs in OpenGL drivers, and is used as a backend by several functional languages as well, namely GHC Haskell and OCaml. GCC is only keeping up with the modular C++ code base of LLVM by sheer brute force of the development staff devoted to it. Put simply, GCC!=LLVM. A compiler is not just a compiler, if it is also a compiler framework.


I don't think "keeping up" means what you think it does, since LLVM just started compiling reliable C++ code and it is at a beta level, with a lot of stuff missing. But as of this point, most of the effort in Clang land is to just be at the same level of features as GCC, so technically LLVM is "catching up."

Reply Parent Score: 2

RE[6]: "There is only one."
by SamuraiCrow on Thu 7th Oct 2010 16:43 in reply to "RE[5]: "There is only one.""
SamuraiCrow Member since:
2005-11-19

What exactly is "obnoxious and intrusive" about an MMU? And what part of the memory management are you referring (the memory controller, the TLB, what?)

And why are you mixing apples with oranges? Managed code/coarse vs. fine threading/etc. What are the actual justifications for your claim regarding "fine grained" managed code?


I'm not talking about threading at all. I'm talking about the fact that managed code manages it down to the byte while traditional hardware-based memory management techniques only manage down to about a 4k page size due to MMU limitations.

What makes an MMU so obnoxious is that it takes at least one stage in the main processor pipeline to implement thus causing the processor to be less agile. A short pipeline means that it can branch more readily without relying so heavily on branch prediction logic. This means that it is possible to build a faster processor if the MMU was lighter than it is.

That is funny given all the talk about cloud-based computing making the PC obsolete. And most cloud systems are running under Unix-like OSs.

The point is that you are claiming something to be dead, while at the same time proclaiming the future to be something that is based on an even more dead OS (BeOS).


Actually I favor even deader OSs. I'm an AROS programmer. But with the advent of the Gallium 3D drivers, getting cross-platform drivers is easier than ever. I'm hoping that this will liberate the desktop from the big-3 of OSs and get some better-written ones into circulation.

re:LLVM
I don't think "keeping up" means what you think it does, since LLVM just started compiling reliable C++ code and it is at a beta level, with a lot of stuff missing. But as of this point, most of the effort in Clang land is to just be at the same level of features as GCC, so technically LLVM is "catching up."


I said Clang was a bit young. Look up at my previous post if you don't believe me. They used to use LLVM-GCC for a while before the FSF tightened the screws on the GPL version 3. I like LGPL 3 but GPL 3 is pushing it. The reason for writing Clang is to make a lighter compiler with a lighter license.

As for the features of GCC, just compare the performance of the JIT compilers. Oh wait! GCC doesn't have a JIT compiler! Personally, I prefer static compilers over JITs anyway but it's nice to have the option there.

Reply Parent Score: 2

RE[5]: "There is only one."
by Neolander on Thu 7th Oct 2010 06:00 in reply to "RE[4]: "There is only one.""
Neolander Member since:
2010-03-08

Clang/LLVM is also a good compiler, if a bit young.

No doubt about that, but there's room for several compilers around, isn't it ? Especially since I'd rather not see my main compiler being owned by Apple, it seems a bit unsafe to say the least.

It is more modular than GCC. It optimizes nearly as well (with the single exception of autovectorization).

GCC is modular afaik. You can choose which parts of it you want at compile time.

It is being designed for C++0x from the ground up as well as Objective C and is used internally by Mono and several JVMs as well. (...) It is used to optimize shader programs in OpenGL drivers, and is used as a backend by several functional languages as well, namely GHC Haskell and OCaml.

Yeah, and for those who don't use draft standards it still has to provide full and stable support for C++98. As you said, it's a young project. The fact that several projects jump on alpha code like that, rather than impressing me, reminds me of PulseAudio...

It avoids RTTI in its code base by using templates internally to achieve the same results faster.

Sounds interesting indeed. But if GCC implemented this feature too, like LLVM implements many of GCC's optimization technology, what would be the problem with GCC ?

GCC is only keeping up with the modular C++ code base of LLVM by sheer brute force of the development staff devoted to it.

That doesn't sound like a sensible accusation. As I said before, GCC has some modularity too. And if their developers are many and talented, how is it a problem ? As a user, I benefit from that anyway (just like I thank LLVM for existing and making GCC become even better).

Put simply, GCC!=LLVM. A compiler is not just a compiler, if it is also a compiler framework.

Could you please go in more details about that ? I'm not sure I understand this part.

Reply Parent Score: 2

RE[6]: "There is only one."
by SamuraiCrow on Thu 7th Oct 2010 17:08 in reply to "RE[5]: "There is only one.""
SamuraiCrow Member since:
2005-11-19

"It is being designed for C++0x from the ground up as well as Objective C and is used internally by Mono and several JVMs as well. (...) It is used to optimize shader programs in OpenGL drivers, and is used as a backend by several functional languages as well, namely GHC Haskell and OCaml.

Yeah, and for those who don't use draft standards it still has to provide full and stable support for C++98. As you said, it's a young project. The fact that several projects jump on alpha code like that, rather than impressing me, reminds me of PulseAudio...
"
Did you read the whole paragraph I posted? Granted, I should have said that Clang and LibC++ are being built from the ground up for C++0x standards but the rest of them are using LLVM also. OpenGL drivers aren't immature code nor are some of the other compilers listed.

re:LLVM!=GCC
Could you please go in more details about that ? I'm not sure I understand this part.

The difference isn't all in the code. It's also in the license. I didn't get into it earlier because I didn't see the need but the UIUC license is more BSD-like than the GPL 3.0. I like my licenses short and easy-to-understand. GPL is neither.

For years I was trying to create a new BASIC compiler. My partner looked at GCC first and decided it wasn't well-documented enough to be of any use to us even though it was already ported to all the platforms we wanted to support. We opted to go with LLVM instead.

LLVM is better documented code so even though GCC has many programmers their numbers will not grow as quickly as LLVM's because of a code documentation problem.

As far as LLVM incorporating GCC's optimizations, it's actually a two-way street. GCC has been implementing LLVM's features all along as well. Competition drives the market.

The statement that a compiler framework is not just a compiler was intended to convey the idea that modularity and ease-of-reuse play a role in frameworks. A generic compiler tooled to just one processor is not a compiler framework. GCC and LLVM are two frameworks used to make many other compilers. I felt your comment that "A compiler is just a compiler." was overly broad. The term compiler covers a lot of territory. Once I wrote a compiler that converted music files into C code for a self-hosting player. That was a compiler but was not a compiler framework.

Reply Parent Score: 2