5 ms·
And while they're busy breaking their current set of APIs, they're dragging their feet on adding anything designed in the last 15 years. Someone just wrote to m
by ddevault 6y ago
And while they're busy breaking their current set of APIs, they're dragging their feet on adding anything designed in the last 15 years. Someone just wrote to me with a complaint because my software doesn't build on macOS due to missing getline and fmemopen implementations.
Naturally I told them to use an open source operating system and declined to update my code to accomodate Apple.
- my123 6y agogetline and fmemopen are both supported on macOS. [/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/usr/include] -> % grep -r -n getline stdio.h stdio.h:355:ssize_t getline(char \* __restrict __linep, size_t \* __restrict __linecapp, FILE \* __restrict [/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/usr/include] -> % grep -r -n fmemopen \* stdio.h:356:FILE *fmemopen(void * __restrict __buf, size_t __size, const char \* __restrict __mode) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0)); getline became available on OS X 10.7 (in 2011) and fmemopen on macOS 10.13 (2017).
- ddevault 6y agoThey were on OSX Lepoard, maybe that's not the most recent one? I don't use Mac. When were they introduced? In any case, it's a trend with Apple, even if this particular example is wrong. See also: Vulkan.
- bombcar 6y agoLeopard is the final version of macOS to support the PowerPC architecture - and released in 2007. Honestly, I wouldn't expect even Linux or BSD from 2007 to work well with modern software.
- IggleSniggle 6y agoThis is where I really need to pay respects to Windows. It’s a heaping pile but their commitment to backwards compatibility is remarkable. I recently installed a complex application that last updated in 2007, and while performance was absolutely terrible, it worked.
- bombcar 6y agoMicrosoft’s dedication to backwards compatibility is insane - going so far as to ship with thousands of shims to imitate buggy code and hardware. Virtualization is killing the need to do that, sadly.
- my123 6y agoOS X Leopard is very old in Apple terms, released in 2007 and being the last release to support PowerPC processors. (that even pre-dated the functions that you say above being standardised, they were just GNU extensions before) For Vulkan, MoltenVK works very well and is officially supported by Khronos directly. (Metal is a much more approachable API than Vulkan, but oh well...)
- ddevault 6y agoOkay, 2007 is pretty old, I can't fault them for not supporting these functions. However, this is a noticable trend with macOS. Their pace with modern Unix is severely behind, and I often get bug reports from macOS users lacking some API that's been available on open source Unicies for 5+ years. Plus, even if Linux in 2007 didn't support what you need, it's open source so backporting the required functionality is feasible, and impossible on macOS. MoltenVK is a good workaround, but open standards > workarounds.
- jimsmart 6y agoTechnically: Linux is not in fact Unix (it is Unix-like), whereas macOS is certified Unix. The certification is current: I think that's pretty modern. https://www.opengroup.org/openbrand/register/ https://www.opengroup.org/openbrand/register/