4 ms·
> NT kernel ABI isn’t even all that stable itself Can you give an example where a breaking change was introduced in NT kernel ABI?
by sedatk 10mo ago
> NT kernel ABI isn’t even all that stable itself
Can you give an example where a breaking change was introduced in NT kernel ABI?
- andrewf 10mo agohttps://j00ru.vexillium.org/syscalls/nt/64/ https://j00ru.vexillium.org/syscalls/nt/64/ (One example: hit "Show" on the table header for Win11, then use the form at the top of the page to highlight syscall 8c)
- sedatk 10mo agoChanges in syscall numbers aren't necessarily breaking changes as you're supposed to use ntdll.dll to call kernel, not direct syscalls.
- mrpippy 10mo agoThe syscall numbers change with every release: https://j00ru.vexillium.org/syscalls/nt/64/ https://j00ru.vexillium.org/syscalls/nt/64/
- sedatk 10mo agoSyscall numbers shouldn't be a problem if you link against ntdll.dll.
- MangoToupe 10mo ago...isn't that the point of this entire subthread? The kernel itself doesn't provide the stable ABI, userland code that the binary links to does.
- sedatk 10mo agoNo. On NT, kernel ABI isn't defined by the syscalls but NTDLL. Win32 and all other APIs are wrappers on top of NTDLL, not syscalls. Syscalls are how NTDLL implements kernel calls behind the scenes, it's an implementation detail. Original point of the thread was about Win32, UWP and other APIs that build a new layer on top of NTDLL. I argue that NT doesn't break its kernel ABI.
- KerrAvon 10mo agomacOS and iOS too — syscalls aren’t stable at all, you’re expected to link through shared library interfaces.
- roytam87 10mo agoNTDLL APIs are very stable[0] and you can even compile and run x86 programs targeting NT 3.1 Build 340[1] which will still work on win11. [0] as long as you don't use APIs they decided to add and remove in a very short period (longer read: https://virtuallyfun.com/2009/09/28/microsoft-fortran-powerstation-1-0/ https://virtuallyfun.com/2009/09/28/microsoft-fortran-powers...) [1] https://github.com/roytam1/ntldd/releases/tag/v250831 https://github.com/roytam1/ntldd/releases/tag/v250831
- MangoToupe 10mo ago> No ...and you go on to not disagree with me at all? Why comment then?