|
1 | 1 | # Changelog
|
2 | 2 |
|
| 3 | +## Version 3.0.0 |
| 4 | + |
| 5 | +#### system |
| 6 | +* **The IPC system has been redesigned with a brand new interface and implementation**. |
| 7 | + * Changed serviceClone to actually use the non-Ex cmif control command. |
| 8 | + * Added serviceCloneEx. |
| 9 | +* Added NX_INLINE and NX_CONSTEXPR helper macros. |
| 10 | +* Added ServiceMgr object, used for multiplexed multithreaded services. |
| 11 | +* Native threading API now supports using user-provided memory as stack. |
| 12 | + * pthread explicit stack ptr/size attributes are now supported. |
| 13 | +* Fixed incorrect bounds check in virtmem code (solves long-standing JIT bug). |
| 14 | +* Added InfoType_IsApplication. |
| 15 | +* Added LibnxError_ShouldNotHappen. |
| 16 | +* Read-write lock object (rwlock) was completely rewritten to closely match the official implementation. |
| 17 | + |
| 18 | +#### services in general |
| 19 | +* **All service wrappers have been converted to use the new IPC interface**. |
| 20 | + * Fixed thread safety during service init/exit. |
| 21 | + * Numerous commands that had IPC bugs were fixed. |
| 22 | +* Improved documentation for many services (list too long to fit here). |
| 23 | +* Corrected and documented system version checks for many different commands. |
| 24 | +* Corrected many structs to avoid using types with incorrect alignment or size. |
| 25 | +* Changed many names of fields in several structs to be more consistent and less random. |
| 26 | +* Corrected many parameter types and names to be more consistent with official software (as well as using enums when possible). |
| 27 | +* Phased out non-existent "Title ID" concept in favor of "Program ID" or other applicable official ID names. |
| 28 | + * Many parameter and enum names were renamed as a result. |
| 29 | +* Added AccountUid struct, which replaces u128 user ids throughout libnx and reduces the need for packed structs. "userID" replaced by "uid" throughout libnx. |
| 30 | + * Added accountUidIsValid. |
| 31 | +* Added Uuid struct, which replaces u128 uuids where applicable and reduces the need for packed structs. |
| 32 | +* Added NacpSendReceiveConfiguration struct. |
| 33 | +* Updated NacpStruct with many fixes and additions. |
| 34 | +* Fixed locking issue in usbComms which caused a hang in usbCommsInitialize(Ex) on failure. |
| 35 | + |
| 36 | +#### sm |
| 37 | +* Introduced SmServiceName structure: |
| 38 | + * Added constexpr helper functions: smServiceNameToU64, smServiceNameFromU64, smServiceNamesAreEqual, smEncodeName. |
| 39 | + * All SM functions now take in SmServiceName instead of a string, except for smGetService. |
| 40 | + * Added smGetServiceWrapper (which takes SmServiceName and looks inside the override list). |
| 41 | + * smGetService is now an inline wrapper for smEncodeName+smGetServiceWrapper. |
| 42 | +* Removed smHasInitialized. |
| 43 | + |
| 44 | +#### filesystem |
| 45 | +* **Added transparent multithreaded filesystem support.** |
| 46 | + * Default maximum number of concurrent filesystem operations is 3, this can be changed through the `__nx_fs_num_sessions` weak var. |
| 47 | +* Added fsSetPriority, fsFsIsValidSignedSystemPartitionOnSdCard. |
| 48 | +* 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). |
| 49 | +* Removed FS_SAVEDATA_USERID_COMMONSAVE. |
| 50 | +* Renamed FsStorageId to NcmStorageId (and renamed enum value names too). |
| 51 | +* Added FsSaveDataSpaceId_ProperSystem, FsFileSystemType_RegisteredUpdate, FsSaveDataSpaceId_SdUser, FsSaveDataSpaceId_SafeMode. |
| 52 | +* Added FsSaveDataType_SystemBcat. |
| 53 | +* Added FsGameCardPartition_Logo. (also, a typo was fixed in the name of this enum) |
| 54 | +* Added FsSaveDataFlags_NeedsSecureDelete. |
| 55 | +* Added FsSaveDataRank enum. |
| 56 | +* Added FsFileSystemQueryId_IsValidSignedSystemPartitionOnSdCard. |
| 57 | +* Added FsGameCardAttribute_DifferentRegionCupToTerraDeviceFlag, FsGameCardAttribute_DifferentRegionCupToGlobalDeviceFlag. |
| 58 | +* Renamed FsBisStorageId to FsBisPartitionId. |
| 59 | + * Added FsBisPartitionId_SignedSystemPartitionOnSafeMode. |
| 60 | +* Removed spurious inval param from fsDirRead. |
| 61 | +* fspr: |
| 62 | + * Now using domains. |
| 63 | +* fsdev: |
| 64 | + * Timestamps are now converted into proper POSIX UTC format instead of local time. |
| 65 | + * Directory iterator memory footprint can now be configured with `__nx_fsdev_direntry_cache_size`. |
| 66 | + * Reduced TLS footprint for rarely used codepaths. |
| 67 | + * Reduced TLS footprint by sharing the path buffer with romfsdev. |
| 68 | + * Removed fsdevGetDefaultFileSystem and default-fs handling. |
| 69 | + * Refactored CWD support to have (dynamically allocated) per-device CWDs (CWD support as a whole can be turned off with `__nx_fsdev_support_cwd`). |
| 70 | + * Many internal optimizations that reduce unnecessary lookups and buffer copies. |
| 71 | + * Fixed string comparison logic in fsdevFindDevice. |
| 72 | + * Mounting a filesystem now automatically sets the default device if there wasn't any previous default device (or if it's stdnull). |
| 73 | + * 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). |
| 74 | + * Added fsdevMountSaveData/SystemSaveData wrappers. |
| 75 | + * Added fsdevIsValidSignedSystemPartitionOnSdCard. |
| 76 | + * Enhanced fsOpen_SystemSaveData/fsdevMountSystemSaveData with new parameters. |
| 77 | +* romfsdev: |
| 78 | + * Reduced TLS footprint by sharing the path buffer with fsdev. |
| 79 | + * Cleaned up romfsMount\* functions and removed unused/unnecessary logic. |
| 80 | + * Changed romfsMount\* functions to return real result codes. |
| 81 | + * Renamed romfsMount to romfsMountSelf. |
| 82 | + * Removed romfsInitFromFile and romfsInitFromStorage (use Mount instead). |
| 83 | + * Added bounds-checking safety measures. |
| 84 | + * Fixed errno to use ENOENT instead of EEXIST where required. |
| 85 | + |
| 86 | +#### network |
| 87 | +* **Added transparent multithreaded socket support.** |
| 88 | + * Default maximum number of concurrent socket operations is 3, this can be changed through `SocketInitConfig::num_bsd_sessions`. |
| 89 | +* **DNS resolver support was rewritten** and spun off from the socket device wrapper. |
| 90 | + * No initialization is required to use resolver functions. |
| 91 | + * Removed phantom sfdnsres commands. |
| 92 | + * Redesigned sfdnsres IPC wrappers. |
| 93 | + * "timeout" was actually the cancel handle. |
| 94 | + * Fixed bug in addrinfo deserialization. |
| 95 | + * Fixed bug in getaddrinfo when hints is NULL. |
| 96 | + * Added commands to configure behavior: resolverGetCancelHandle, resolverGetEnableServiceDiscovery, resolverSetEnableServiceDiscovery, resolverCancel. |
| 97 | + * Placeholders for not-yet-implemented 5.0+ config keys: resolverGetEnableDnsCache, resolverSetEnableDnsCache, resolverRemoveHostnameFromCache, resolverRemoveIpAddressFromCache. |
| 98 | +* Added service session getters: nifmGetServiceSession_StaticService, nifmGetServiceSession_GeneralService. |
| 99 | +* Introduced BsdServiceType enum, which is now used for revised service type handling (bsd:u is now the default service). |
| 100 | +* SocketInitConfig was changed: |
| 101 | + * Added num_bsd_sessions and bsd_service_type fields. |
| 102 | + * Removed fields related to sfdnsres. |
| 103 | +* socketInitialize no longer initializes nifm. As a result, gethostid now calls nifmInitialize/nifmExit as needed. |
| 104 | +* Renamed socketGetLastBsdResult to socketGetLastResult. |
| 105 | +* Renamed socketGetLastSfdnsresResult to resolverGetLastResult. |
| 106 | + |
| 107 | +#### applet |
| 108 | +* Many internal improvements and fixes stemming from new IPC refactoring. |
| 109 | +* appletGetOperationMode now returns AppletOperationMode instead of u8. |
| 110 | +* appletGetPerformanceMode now returns ApmPerformanceMode instead of u8. |
| 111 | +* Added 9.0+ support for using appletSetTerminateResult via IAppletCommonFunctions. |
| 112 | +* Added 9.0+ support for using appletGetLaunchStorageInfoForDebug, appletGetGpuErrorDetectedSystemEvent with AppletType_LibraryApplet. |
| 113 | +* Added 9.1+ support for using appletSetHandlingHomeButtonShortPressedEnabled with non-AppletType_OverlayApplet. |
| 114 | +* Added appletPushToAppletBoundChannel, appletTryPopFromAppletBoundChannel, appletGetSettingsPlatformRegion, appletSetHdcpAuthenticationActivated, appletSetInputDetectionPolicy, appletSetHealthWarningShowingState, appletGetHealthWarningDisappearedSystemEvent, appletIsForceTerminateApplicationDisabledForDebug, appletGetFriendInvitationStorageChannelEvent, appletTryPopFromFriendInvitationStorageChannel, appletGetNotificationStorageChannelEvent, appletTryPopFromNotificationStorageChannel, appletApplicationPushToFriendInvitationStorageChannel, appletApplicationPushToNotificationStorageChannel, appletPushToAppletBoundChannelForDebug, appletTryPopFromAppletBoundChannelForDebug, appletAlarmSettingNotificationEnableAppEventReserve, appletAlarmSettingNotificationDisableAppEventReserve, appletAlarmSettingNotificationPushAppEventNotify, appletFriendInvitationSetApplicationParameter, appletFriendInvitationClearApplicationParameter, appletFriendInvitationPushApplicationParameter. |
| 115 | +* Added enum: AppletInputDetectionPolicy. |
| 116 | + |
| 117 | +#### libapplets |
| 118 | +* Added support for the friendsLa libapplet. |
| 119 | +* Added support for the psel (player select) libapplet. |
| 120 | +* Added support for the hidLa (controller configuration) libapplet. |
| 121 | +* Renamed webConfigSetUserID to webConfigSetUid. |
| 122 | +* Renamed WebArgType_UserID to WebArgType_Uid. |
| 123 | + |
| 124 | +#### ns |
| 125 | +* Corrected names of nsdevLaunchApplicationForDevelop, nsdevLaunchApplicationWithStorageIdForDevelop, nsdevGetRunningApplicationProcessIdForDevelop, nsdevSetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop. |
| 126 | +* Corrected parameters of nsListApplicationRecord, nsListApplicationContentMetaStatus, nsvmGetSafeSystemVersion. |
| 127 | +* Added support for ns:su. |
| 128 | +* Added enum: NsApplicationControlSource. |
| 129 | +* Added service session getters: nsGetServiceSession_GetterInterface, nsGetServiceSession_ApplicationManagerInterface, nsdevGetServiceSession, nssuGetServiceSession. |
| 130 | +* Added structs: NsApplicationDeliveryInfo, NsReceiveApplicationProgress, NsSendApplicationProgress, NsSystemDeliveryInfo, NsSystemUpdateProgress. |
| 131 | +* Added nsGetSystemDeliveryInfo, nsGetApplicationDeliveryInfo, nsSelectLatestSystemDeliveryInfo, nsVerifyDeliveryProtocolVersion, nsHasAllContentsToDeliver, nsCompareApplicationDeliveryInfo, nsCanDeliverApplication, nsListContentMetaKeyToDeliverApplication, nsNeedsSystemUpdateToDeliverApplication, nsEstimateRequiredSize, nsRequestReceiveApplication, nsCommitReceiveApplication, nsGetReceiveApplicationProgress, nsRequestSendApplication, nsGetSendApplicationProgress, nsCompareSystemDeliveryInfo, nsListNotCommittedContentMeta, nsGetApplicationDeliveryInfoHash. |
| 132 | + |
| 133 | +#### other services |
| 134 | +* account: |
| 135 | + * Added AccountServiceType, and changed accountInitialize to accept it. |
| 136 | + * Renamed AccountProfileBase::username to nickname. |
| 137 | + * Removed output bool from accountGetLastOpenedUser. |
| 138 | + * Added AccountNetworkServiceAccountId struct. |
| 139 | + * Added accountIsUserRegistrationRequestPermitted, accountTrySelectUserWithoutInteraction. |
| 140 | +* apm: |
| 141 | + * Added enum: ApmPerformanceMode. |
| 142 | + * Added service session getter: apmGetServiceSession_Session. |
| 143 | +* async: Added support for the IAsyncValue/IAsyncResult interfaces. |
| 144 | +* audin: |
| 145 | + * Added missing count param to audinListAudioIns. |
| 146 | + * Changed wrapper to use 3.x+ Auto commands if available. |
| 147 | + * Added service session getters: audinGetServiceSession, audinGetServiceSession_AudioIn. |
| 148 | +* audout: |
| 149 | + * Added missing count param to audoutListAudioOuts. |
| 150 | + * Changed wrapper to use 3.x+ Auto commands if available. |
| 151 | + * Added service session getters: audoutGetServiceSession, audoutGetServiceSession_AudioOut. |
| 152 | +* audren: |
| 153 | + * Changed wrapper to use 3.x+ Auto commands if available. |
| 154 | + * Renamed audrenGetServiceSession to audrenGetServiceSession_AudioRenderer. |
| 155 | +* fatal: |
| 156 | + * Corrected names of commands and types to match official names more closely. |
| 157 | + * **fatalSimple was renamed to fatalThrow**. |
| 158 | +* friends: |
| 159 | + * Added structs: FriendsInAppScreenName, FriendsFriendInvitationGameModeDescription, FriendsFriendInvitationId, FriendsFriendInvitationGroupId. |
| 160 | + * Added friendsGetFriendInvitationNotificationEvent, friendsTryPopFriendInvitationNotificationInfo. |
| 161 | +* grc: |
| 162 | + * Renamed grcdRead to grcdTransfer. |
| 163 | +* hid: |
| 164 | + * Added hidIsVibrationDeviceMounted, hidGetNpadJoyHoldType. |
| 165 | + * Added internal 5.0+ support for using ActivateNpadWithRevision with the sysver-specific revision value. |
| 166 | + * Changed hidInitializeSevenSixAxisSensor to use ActivateConsoleSixAxisSensor earlier on instead of ActivateSevenSixAxisSensor. |
| 167 | +* hiddbg: |
| 168 | + * Added hiddbgAcquireOperationEventHandle, hiddbgGetOperationResult, hiddbgWriteSerialFlash, hiddbgIsHdlsVirtualDeviceAttached. |
| 169 | + * Fixed bug in hiddbgReadSerialFlash. |
| 170 | +* hidsys: |
| 171 | + * Added hidsysSetNotificationLedPatternWithTimeout. |
| 172 | + * Added hidsysAcquireCaptureButtonEventHandle, hidsysAcquireSleepButtonEventHandle to header. |
| 173 | + * Corrected bug that affected internal GetMaskedSupportedNpadStyleSet logic. |
| 174 | +* loader (ldrShell/ldrDmnt/ldrPm): |
| 175 | + * Updated names to match official software. |
| 176 | +* ncm: |
| 177 | + * Added new ncm_types.h header, which is used by several other services that need NCM types. |
| 178 | + * Updated structs: NcmContentMetaKey, NcmContentInfo, NcmContentMetaHeader, NcmApplicationMetaExtendedHeader. |
| 179 | + * Renamed NcmNcaId to NcmContentId. |
| 180 | + * Added NcmRightsId struct, which is now used by the RightsId funcs. |
| 181 | + * Added NcmProgramLocation, which is now used by pmshellLaunchProgram. |
| 182 | + * Changed several commands to accept array element count instead of byte size. |
| 183 | + * Fixed handling for ncmContentStorageGetPath/ncmContentStorageGetPlaceHolderPath. |
| 184 | + * Corrected NcmContentId struct alignment. |
| 185 | + * Added NcmPlaceHolderId struct, which is used instead of NcmContentId where needed. |
| 186 | + * Renamed FsStorageId to NcmStorageId (and renamed enum value names too). |
| 187 | + * Added structs: NcmPackagedContentInfo, NcmContentMetaInfo. |
| 188 | +* nfc/nfp: |
| 189 | + * Renamed from nfcu/nfpu to nfc/nfp. |
| 190 | + * Separated nfc service init/exit into nfcInitialize/nfcExit. |
| 191 | + * Renamed nfpuIsNfcEnabled to nfcIsNfcEnabled. |
| 192 | + * Renamed NfpuInitConfig to NfcRequiredMcuVersionData, removed it from nfpInitialize input, and changed it to be handled properly as an array. |
| 193 | + * Added NfcDeviceHandle struct, which is now used instead of HidControllerID. |
| 194 | + * Added NfpServiceType/NfcServiceType, and changed nfpInitialize/nfpInitialize to accept them. |
| 195 | + * Added service session getters: nfpuGetServiceSession, nfcuGetServiceSession, nfcuGetServiceSession_Interface, nfpuGetServiceSession_Interface (previously known as nfpuGetInterface). |
| 196 | +* nifm: |
| 197 | + * Replaced nifmSetServiceType with service type parameter in nifmInitialize. |
| 198 | +* notif: Added support. |
| 199 | +* nv: |
| 200 | + * Added service session getter: nvGetServiceSession. |
| 201 | +* pctl: |
| 202 | + * Added service session getters: pctlGetServiceSession, pctlGetServiceSession_Service. |
| 203 | +* pdm: |
| 204 | + * Renamed PdmApplicationEvent to PdmAppletEvent. |
| 205 | + * Renamed pdmqryQueryApplicationEvent to pdmqryQueryAppletEvent. |
| 206 | +* pdmqry: |
| 207 | + * Renamed pdmqryGetUserPlayedApplications to pdmqryQueryRecentlyPlayedApplication. |
| 208 | + * Renamed pdmqryGetUserAccountEvent to pdmqryGetRecentlyPlayedApplicationUpdateEvent. |
| 209 | +* pm: |
| 210 | + * Corrected names of commands to match official software. |
| 211 | +* roDmnt: |
| 212 | + * Renamed roDmntGetModuleInfos to roDmntGetProcessModuleInfo. |
| 213 | +* set: |
| 214 | + * Added SetLanguage_ZHHANS, SetLanguage_ZHHANT. |
| 215 | + * Added SetRegion_CHN, SetRegion_KOR, SetRegion_TWN. |
| 216 | + * Added size_out parameter to setsysGetSettingsItemValue, which was previously missing. |
| 217 | + * Replaced SetSysFlag/setsysGetFlag/setsysSetFlag with dedicated funcs for each flag. |
| 218 | + * Use SetLanguage instead of s32 in setMakeLanguage(Code). |
| 219 | + * Added setsysGetPlatformRegion, setsysSetPlatformRegion, setsysGetHomeMenuScheme, setsysGetHomeMenuSchemeModel, setsysGetMemoryUsageRateFlag, setsysGetTouchScreenMode, setsysSetTouchScreenMode, setsysGetPctlReadyFlag, setsysSetPctlReadyFlag, setsysIsUserSystemClockAutomaticCorrectionEnabled, setsysSetUserSystemClockAutomaticCorrectionEnabled, setsysSetLanguageCode, setsysGetAccountSettings, setsysSetAccountSettings, setsysGetEulaVersions, setsysSetEulaVersions, setsysGetNotificationSettings, setsysSetNotificationSettings, setsysGetAccountNotificationSettings, setsysSetAccountNotificationSettings, setsysGetTvSettings, setsysSetTvSettings, setsysGetDataDeletionSettings, setsysSetDataDeletionSettings, setsysGetWirelessCertificationFileSize, setsysGetWirelessCertificationFile, setsysSetRegionCode, setsysGetPrimaryAlbumStorage, setsysSetPrimaryAlbumStorage, setsysGetBatteryLot, setsysGetSleepSettings, setsysSetSleepSettings, setsysGetInitialLaunchSettings, setsysSetInitialLaunchSettings, setsysGetProductModel, setsysGetMiiAuthorId, setsysGetErrorReportSharePermission, setsysSetErrorReportSharePermission, setsysGetAppletLaunchFlags, setsysSetAppletLaunchFlags, setsysGetKeyboardLayout, setsysSetKeyboardLayout, setsysGetRebootlessSystemUpdateVersion, setsysGetChineseTraditionalInputMethod, setsysSetChineseTraditionalInputMethod. |
| 220 | + * Added enums: SetSysPlatformRegion, SetSysHomeMenuScheme, SetSysTouchScreenMode, SetSysUserSelectorFlag, SetSysEulaVersionClockType, SetSysNotificationVolume, SetSysFriendPresenceOverlayPermission, SetSysPrimaryAlbumStorage, SetSysHandheldSleepPlan, SetSysConsoleSleepPlan, SetSysErrorReportSharePermission, SetKeyboardLayout, SetChineseTraditionalInputMethod. |
| 221 | + * Added structs: SetBatteryLot, SetSysUserSelectorSettings, SetSysAccountSettings, SetSysEulaVersion, SetSysNotificationTime, SetSysNotificationSettings, SetSysAccountNotificationSettings, SetSysTvSettings, SetSysDataDeletionSettings, SetSysSleepSettings, SetSysInitialLaunchSettings, SetSysRebootlessSystemUpdateVersion. |
| 222 | +* time: |
| 223 | + * Changed service type handling to use new TimeServiceType enum (and `__nx_time_service_type` weak var), time:u is now the default service. |
| 224 | + * Changed timeToPosixTime/timeToPosixTimeWithMyRule to accept array element count instead of byte size. |
| 225 | + * Changed timeLoadLocationNameList to accept array element count instead of byte size. |
| 226 | + * Added service session getters: timeGetServiceSession_SystemClock, timeGetServiceSession_TimeZoneService. |
| 227 | + * Added TimeSteadyClockTimePoint struct (which is now used elsewhere in libnx). |
| 228 | +* ts: Added support. |
| 229 | +* usbhs: |
| 230 | + * 8.0+ support fixed; UsbHsInterfaceInfo input/output endpoints were swapped. |
| 231 | + * Fixed bug in usbHsEpClose. |
| 232 | +* vi: |
| 233 | + * Renamed viGetDisplayMinimumZ to viGetZOrderCountMin. |
| 234 | + * Renamed viGetDisplayMaximumZ to viGetZOrderCountMax. |
| 235 | + |
| 236 | +#### miscellaneous |
| 237 | +* Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience. |
| 238 | + |
3 | 239 | ## Version 2.5.0
|
4 | 240 |
|
5 | 241 | #### system
|
|
0 commit comments