Panther Will Not be a 64-bit OS
rouge86 writes "The Register has an article on what Mac OS X 10.3 will be like. Mac OS X 10.3, aka Panther, will not be a 64-bit operating system, despite running on a 64-bit processor. Instead, the next major release of the Mac operating system will be a hybrid, much like version 10.2.7." You mean they didn't rewrite the entire operating system from the ground up? And that it will run on older, 32-bit, Macs? I am shocked!
Who wants to place bets on the name of the next hybrid OS? We've had Cheetah, Puma, Jaguar, Panther, and now I'm guessing they'll switch to a softer more feminine side of things, like Tigger, or Hello Kitty. Anyone with me on this?
On the PC scene:
First 32 bits CPU: 386, 1985
First somewhat 32 bits OS: Windows 95, 1995
Hopefuly, it won't take so long for 64bits
At this moment I am awaiting Apple to ship the G5's, and when it does I'll be interested to see how this new architecture works, as compared to my current G4. What I'm awaiting is who will be the first to release the first 64-bit system for it. Does this remind anyone when Apple first released the first PowerPC, and only like 10% of the code was optimized for it.
All of the BSDs and Linux support 64-bit, and as far as I know, they weren't rewritten "from the ground up." They are all also compatible with both 32- and 64-bit machines, so I don't see legacy hardware compatability being a huge problem.
You don't have to re-write code to make it 64-bit. You just have to re-compile it. Granted, you have to make sure it's 64-bit safe code, but there's not all that much effort involved in that. Basically, you just can't assume that you have 32-bit integers and pointers.
For instance, the Linux kernel was made 64-bit safe in version 2.0, when they added support for the Alpha architecture. It's one code base that can be compiled for different architectures, some 32-bit, some 64-bit. There's not a whole lot of 64-bit specific code.
Most Open Source programs are 64-bit clean now. I'd think Apple's programmers would have been working to make sure all the Mac OS X code is 64-bit clean.
Software sucks. Open Source sucks less.
Instead, the next major release of the Mac operating system will be a hybrid, much like version 10.2.7
So what? This is already known. We know the OS itself will be capable of addressing 8 GB, that is, more than 32 bits. We also already know it will run on 32 bit processors since Panther made its debut on a G4.
I don't mean to be snarky, and I know that post keynote is always slow, but it seems the ./ Apple news moderation hasn't been up to task lately. Yesterday we had "news" because someone managed to compile a some open source software using the new QT libraries (and did nothing else, from the looks of it). When I manage to build ImageMagick's shared libs under OS X, I'll be counting on it being on the front page. :P
It's truly astounding to see how many people purport to have an understanding of what "64-bit" means, but in fact do not.
There are three criteria that define "64-bitness."
One: can an application running on a given combination of hardware and software address up to 18 billion gigs of virtual memory?
Two: can an application running on said hardware and software read from and write to files that are up to 9 billion gigs long?
Three: can an application running on said hardware and software do arithmetic with 64-bit integers and doubles?
Existing Macs running Mac OS X have two and three down. File offsets are signed long longs (up to 2^63, or 9 billion billion), and any application can manipulate long longs and doubles.
G5's running Mac OS X 10.2.7 will have one taken care of. Now, in the current generation G5, memory is actually limited in hardware to four thousand gigabytes, and limited in practical terms to eight gigabytes. But applications can, nonetheless, allocate and address up to 18 billion gigs of virtual memory. The OS won't stop them from doing that. (Pointers under 10.2.7 with the 64-bit compiler settings are unsigned long longs, 2^64, or 18 billion billion.)
So by any meaningful criteria, Mac OS X 10.2.7 running on G5 hardware will be a 64-bit OS. So will Panther.
The guy who wrote the register article basically doesn't understand what "64-bit OS" means.
Is it just me, or is it a bad idea to name an OS update after Smeagol? He killed his brother, took the Ring(which corrupted him), lost the Ring, finds the boys and leads them to be eaten. Failing that, in his jubilation after biting off Frodo's finger, accidentally kills himself and destroys everything immediately around him. This sounds more like a Windows update to me.
Maybe Samwise would have been more appropriate? Actually, why name it after LoTR characters at all considering everything was rendered on Dells? I would say name it after Nemo, but that movie was rendered on Intel processors too. Too bad the CEO of Pixar doesn't know anyone at Apple.
Wouldn't that be for Mac OS ACK!?
There are many ways for an OS to be "a 64-bit OS". However programmers/users of existing 64bits OSes will typically check a single criterion, which is unlikely to be met by OS X 10.3 .
...) can make use of memory beyond the 4GB limit by using specific APIs that work around the 32bits pointers limitation. I hope that Panther will allow that.
1. An OS could be called "64bits OS" because it allows programs running on the computer to use 64bits-instructions, while leaving them with 32bits pointers. This is typically done by offering a 64bits datatype (int64_t/uint64_t in C99 compliant environments) and a compiler that will emit the right instruction sequences. It also requires that the underlying OS will be made somehow "64bits aware", ie that it will save/restore the full 64bits content of processor registers on context switches. My understanding is that Panther/10.3 will allow that, or at least most of that.
2. An OS could be called "64bits OS" because parts of the kernel (VM / buffer cache,
3. An OS could be called "64bits OS" because it allows the usage of more than 4GB of memory by all userland processes, while any given process is still limited to 4GB (32 bits pointers). My understanding is that Panther will do that.
4. An OS could be called "64bits OS" because the kernel code is compiled to follow a 64bits ABI (Application Binary Interface). In such an ABI, pointers are 64bits entities and some integer types are also 64bits. While an ABI covers _a lot more_ ground than just the size of the common C types, those sizes are often used to characterize the ABI. The most common 64bits ABI is known as LP64 (aka I32LP64) where "int" remain 32bits, while "long" and "void*" are 64bits. By comparison the most common 32bits ABI is known as ILP32 (int, long, void* are all 32 bits). I don't think any "common" OS offered a ILP64 model (Cray maybe?). Windows64 is a different beast, being LLP64 (aka IL32 LLP64), where int and long are 32bits, while "long long" and pointers are 64bits. My understanding is that this will _not_ be the case for Panther, the kernel code will be compiled with a ILP32 ABI.
5. An OS could be called "64bits OS" because it offers a 64bits ABI to userland applications compiled in "64bit mode". My understanding is that this will _not_ be the case for Panther, all code will be compiled with the traditional ILP32 ABI.
My "belief"/"understanding" of the Panther situation comes from reading the WWDC reports, rumours reports and also the Darwin development mailing list where one Apple employee said that OS X won't offer an LP64 ABI until much later (not in Panther, at _least_ not in 10.3.0 and I doubt any 10.3.x release).
Most current users of 64bits systems will only use criterion 5, but I expect Apple PR to try to muddle the issue. And I won't blame them much, the issue is not as clear cut as some users think.
Some tidbits related to 64bits platforms:
- HP-UX 11.00 shipped as two different kernels, one 32bits kernel and one 64bits kernel. 64bits machines could run either of them, while 32bits machines were restricted to the 32bits kernel.
On the 64bits kernel a user could run 32 and/or 64bits processes, while the 32bit kernel could only run 32bits processes.
It sometimes made sense for the owner of a 64bits machine to only install the 32bits kernel, if they didn't intend to run any 64bits application and didn't have more than 4GB of ram (rare then). Running the 64bits kernel typically consumed a bit more memory and consumed a bit more memory bandwidth.
- Linux on 64bits machines is "pure" 64bits (today, this may change due to ISV pressure). It doesn't run anything but programs compiled with the 64bits ABI (I32LP64). A special case is Linux IPF (IA64) which also runs 32bits apps, but those aren't "native" applications using the Itanium ISA but x86 binaries running using the hardware (now) or software (future) emulation. Another special case will be Linux on x86-64 which also has to run "emulat