tl;dr
Mainly technical stuff to fix a rare issue with homebrew/sysmodules hanging while SaltyNX is active.
Full changelog:
- IPC redesign
- completely remove old libnx code from sysmodule
- main reason for using it was to retrieve sdmc handle that can still work after passing to Core, with how current libnx works it is not possible to do that
- but this was causing rare issues with homebrew where FS would "forget" about homebrew when trying to write to/read from sdcard, resulting in process hanging. This happened only when multiple processes tried to do this at the same time. This change should technically fix the issue.
- function for retrieving sdmc handle from sysmodule is now stubbed
- Add new IPC functions that are just wrappers around libc I/O functions that are exposed by Core (so plugins shouldn't be affected by this change as long as they didn't try to retrieve sdmc handle manually - which was not officially supported)
- Rewrite most of IPC functions so they work only when request comes from Application with injected Core
- Logging was redesigned for those calls
- Since now most of I/O heavy lifting was moved to sysmodule, Cores got smaller
- completely remove old libnx code from sysmodule
- Remove most of c++ unwinding and abort stuff to reduce sysmodule size
- This way - after redesigning IPC - sysmodule RAM usage is bigger only by 12 kB