Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I thought Linux also had a very strict ABI compatibility policy also.

Executable formats have changed some, and I don't know if recent Linux systems would support the a.out format of early Linux. And shared libraries change too. But if you had a fully-statically-linked binary (and enabled a.out support if necessary), I think Linux should also support very old binaries.



> I thought Linux also had a very strict ABI compatibility policy also.

Yes, it does.

> But if you had a fully-statically-linked binary (and enabled a.out support if necessary), I think Linux should also support very old binaries.

And it does.


Microsoft accomplished this with dynamically linked applications, which is a more difficult feat. It also led to 'DLL hell', but they have resolved this fairly effectively in modern versions of windows (at the cost of using gobs of hard drive space, mitigating the benefit of dynamic linking to some extent). In Windows 8 they've introduce a technology called 'page combining' which mitigates some of the problem in physical RAM. It does exactly what it sounds like - it searches RAM for identical pages, and when it finds them, it manipulates the page table to use one physical copy for all of the virtual copies. If some process tries to modify it, a copy-on-write operation is performed. This significantly reduces physical memory usage in Windows 8.


And Linux (and all Unices, as far as I know) have done the same thing without DLL Hell by using versioned share object files, the .so.0.1 and so.1 and so on you see on the end of binary libraries.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: