That's nifty, but I don't think it quite gets you there:
"It is not always simple to compute the proper value for size. The value is used by __builtin_apply to compute the amount of data that should be pushed on the stack and copied from the incoming argument area."
If there was a variant that didn't need this size argument (would probably require being a tail call) then that would do it.
Sort of. If you did it that way, then the message dispatch code would get compiled into the calling code rather than being a separate function. That would work, but it would greatly increase code size, and would also mean Apple couldn't make incompatible changes to how messaging works without breaking old code. This last part is fairly important: Apple does make such changes, and the fact that objc_msgSend is part of the system means that old programs just keep on working. They've introduced non-pointer isas and tagged pointers this way.
That requires knowing types at compile time, and expands to just the code with the specific types used in the instantiation. That doesn't work with a virtual method dispatch kind of scenario where the types in the target method are not known to the runtime.
Ocarina of Time is running at 20 FPS on NTSC, 17 FPS on PAL, and is still fun. We started worrying about FPS when competitive online gaming became a thing (Quake 3, Counter-Strike, Unreal Tournament) and marketers associated high computer performance with high player performance (more fps you have, more good you will play).
Then I guess an alternate way to phrase it is that it's a shame Nintendo doesn't and won't have a current-gen normal TV console. Bizarre choice because they were already leading by far the mobile space among console developers.
vector-immutable is unusable, all operations on vectors return a mutable vector forcing you to rely on vector->immutable-vector every time.
Vector lacks many operations that List has, it should be easier to interchange each others. Vector even lacks combinations despite this one being implemented by converting the list to a vector first.
Yes, immutable vectors are not a convenient data structure -- I recommend using one of the other random access functional data structures available as libraries, such as RRB trees.