You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Read-write lock object (rwlock) was completely rewritten to closely match the official implementation.
services in general
All service wrappers have been converted to use the new IPC interface.
Fixed thread safety during service init/exit.
Numerous commands that had IPC bugs were fixed.
Improved documentation for many services (list too long to fit here).
Corrected and documented system version checks for many different commands.
Corrected many structs to avoid using types with incorrect alignment or size.
Changed many names of fields in several structs to be more consistent and less random.
Corrected many parameter types and names to be more consistent with official software (as well as using enums when possible).
Phased out non-existent "Title ID" concept in favor of "Program ID" or other applicable official ID names.
Many parameter and enum names were renamed as a result.
Added AccountUid struct, which replaces u128 user ids throughout libnx and reduces the need for packed structs. "userID" replaced by "uid" throughout libnx.
Added accountUidIsValid.
Added Uuid struct, which replaces u128 uuids where applicable and reduces the need for packed structs.
Added NacpSendReceiveConfiguration struct.
Updated NacpStruct with many fixes and additions.
Fixed locking issue in usbComms which caused a hang in usbCommsInitialize(Ex) on failure.
Thoroughly fixed the names of commands, enums, flags to match official software and be more consistent with the libnx code style (list too long to fit here).
Removed FS_SAVEDATA_USERID_COMMONSAVE.
Renamed FsStorageId to NcmStorageId (and renamed enum value names too).
Timestamps are now converted into proper POSIX UTC format instead of local time.
Directory iterator memory footprint can now be configured with __nx_fsdev_direntry_cache_size.
Reduced TLS footprint for rarely used codepaths.
Reduced TLS footprint by sharing the path buffer with romfsdev.
Removed fsdevGetDefaultFileSystem and default-fs handling.
Refactored CWD support to have (dynamically allocated) per-device CWDs (CWD support as a whole can be turned off with __nx_fsdev_support_cwd).
Many internal optimizations that reduce unnecessary lookups and buffer copies.
Fixed string comparison logic in fsdevFindDevice.
Mounting a filesystem now automatically sets the default device if there wasn't any previous default device (or if it's stdnull).
fsdevMountSdmc no longer sets cwd to the folder containing the executable; this logic was moved to a new internal function called on startup by default (and it is now disabled for NSOs).
Added fsdevMountSaveData/SystemSaveData wrappers.
Added fsdevIsValidSignedSystemPartitionOnSdCard.
Enhanced fsOpen_SystemSaveData/fsdevMountSystemSaveData with new parameters.
romfsdev:
Reduced TLS footprint by sharing the path buffer with fsdev.
Cleaned up romfsMount* functions and removed unused/unnecessary logic.
Changed romfsMount* functions to return real result codes.
Renamed romfsMount to romfsMountSelf.
Removed romfsInitFromFile and romfsInitFromStorage (use Mount instead).
Added bounds-checking safety measures.
Fixed errno to use ENOENT instead of EEXIST where required.
network
Added transparent multithreaded socket support.
Default maximum number of concurrent socket operations is 3, this can be changed through SocketInitConfig::num_bsd_sessions.
DNS resolver support was rewritten and spun off from the socket device wrapper.
No initialization is required to use resolver functions.
Removed phantom sfdnsres commands.
Redesigned sfdnsres IPC wrappers.
"timeout" was actually the cancel handle.
Fixed bug in addrinfo deserialization.
Fixed bug in getaddrinfo when hints is NULL.
Added commands to configure behavior: resolverGetCancelHandle, resolverGetEnableServiceDiscovery, resolverSetEnableServiceDiscovery, resolverCancel.
Placeholders for not-yet-implemented 5.0+ config keys: resolverGetEnableDnsCache, resolverSetEnableDnsCache, resolverRemoveHostnameFromCache, resolverRemoveIpAddressFromCache.
Added service session getters: nifmGetServiceSession_StaticService, nifmGetServiceSession_GeneralService.
Introduced BsdServiceType enum, which is now used for revised service type handling (bsd:u is now the default service).
SocketInitConfig was changed:
Added num_bsd_sessions and bsd_service_type fields.
Removed fields related to sfdnsres.
socketInitialize no longer initializes nifm. As a result, gethostid now calls nifmInitialize/nifmExit as needed.
Renamed socketGetLastBsdResult to socketGetLastResult.
Renamed socketGetLastSfdnsresResult to resolverGetLastResult.
applet
Many internal improvements and fixes stemming from new IPC refactoring.
appletGetOperationMode now returns AppletOperationMode instead of u8.
appletGetPerformanceMode now returns ApmPerformanceMode instead of u8.
Added 9.0+ support for using appletSetTerminateResult via IAppletCommonFunctions.
Added 9.0+ support for using appletGetLaunchStorageInfoForDebug, appletGetGpuErrorDetectedSystemEvent with AppletType_LibraryApplet.
Added 9.1+ support for using appletSetHandlingHomeButtonShortPressedEnabled with non-AppletType_OverlayApplet.
Separated nfc service init/exit into nfcInitialize/nfcExit.
Renamed nfpuIsNfcEnabled to nfcIsNfcEnabled.
Renamed NfpuInitConfig to NfcRequiredMcuVersionData, removed it from nfpInitialize input, and changed it to be handled properly as an array.
Added NfcDeviceHandle struct, which is now used instead of HidControllerID.
Added NfpServiceType/NfcServiceType, and changed nfpInitialize/nfpInitialize to accept them.
Added service session getters: nfpuGetServiceSession, nfcuGetServiceSession, nfcuGetServiceSession_Interface, nfpuGetServiceSession_Interface (previously known as nfpuGetInterface).
nifm:
Replaced nifmSetServiceType with service type parameter in nifmInitialize.
notif: Added support.
nv:
Added service session getter: nvGetServiceSession.
pctl:
Added service session getters: pctlGetServiceSession, pctlGetServiceSession_Service.
pdm:
Renamed PdmApplicationEvent to PdmAppletEvent.
Renamed pdmqryQueryApplicationEvent to pdmqryQueryAppletEvent.
pdmqry:
Renamed pdmqryGetUserPlayedApplications to pdmqryQueryRecentlyPlayedApplication.
Renamed pdmqryGetUserAccountEvent to pdmqryGetRecentlyPlayedApplicationUpdateEvent.
pm:
Corrected names of commands to match official software.
roDmnt:
Renamed roDmntGetModuleInfos to roDmntGetProcessModuleInfo.