5 ms·
NeXTstep 3.3 supported Objective-C drivers in the kernel. Mac OS X's IOKit changed them to use a (poorly defined/maintained subset of) C++.
by KerrAvon 2y ago
NeXTstep 3.3 supported Objective-C drivers in the kernel. Mac OS X's IOKit changed them to use a (poorly defined/maintained subset of) C++.
- MBCook 2y agoWow that’s an interesting decision. I didn’t know they went that far.
- astrange 2y agoAt the time they thought it would be too slow. In retrospect it would've been fine, I think. IOKit is a pretty strange subset of C++, but at least it doesn't use all those templates.
- MBCook 2y agoThat was my immediate thought, speed issues. MacOS isn’t exactly an I/O speed king as it is. I suspect if it had made it in it may have been removed by now.
- mpweiher 2y agoNope, the other way around. It was in NeXTSTEP. It was taken out because of performance concerns that turned out to be entirely unfounded. Alas, when they figured out that this was the case it was too late. A similar example is CoreFoundation. It was a C implementation of the OPENSTEP Foundation. To this day, even really smart, capable and knowledgeable engineers believe that CoreFoundation is faster than the pure Objective-C Foundation. It is not. It is significantly slower. Often several times slower. (It is of course very slightly faster than the "new" Objective-C Foundation that was implemented on top of CoreFoundation). Another example is Swift. People believe it to be generally faster than Objective-C. Again, this is not the case. Swift code tends to be significantly slower than comparable Objective-C code.
- lukeh 2y agoIt was based on Embedded C++. Definitely inspired by Objective-C but I believe they wanted to avoid dynamic dispatch in the kernel.
- mpweiher 2y ago"At the time" being when they turned NeXTSTEP into OS X / macOS (by way of Rhapsody / MacOS X Server).