libnx v3.0.0

This commit is contained in:
fincs 2019-12-11 00:40:38 +01:00
parent 15490b15f6
commit d1e5a5d6c8
No known key found for this signature in database
GPG Key ID: 62C7609ADA219C60
2 changed files with 238 additions and 2 deletions

View File

@ -1,5 +1,241 @@
# Changelog
## Version 3.0.0
#### system
* **The IPC system has been redesigned with a brand new interface and implementation**.
* Changed serviceClone to actually use the non-Ex cmif control command.
* Added serviceCloneEx.
* Added NX_INLINE and NX_CONSTEXPR helper macros.
* Added ServiceMgr object, used for multiplexed multithreaded services.
* Native threading API now supports using user-provided memory as stack.
* pthread explicit stack ptr/size attributes are now supported.
* Fixed incorrect bounds check in virtmem code (solves long-standing JIT bug).
* Added InfoType_IsApplication.
* Added LibnxError_ShouldNotHappen.
* 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.
#### sm
* Introduced SmServiceName structure:
* Added constexpr helper functions: smServiceNameToU64, smServiceNameFromU64, smServiceNamesAreEqual, smEncodeName.
* All SM functions now take in SmServiceName instead of a string, except for smGetService.
* Added smGetServiceWrapper (which takes SmServiceName and looks inside the override list).
* smGetService is now an inline wrapper for smEncodeName+smGetServiceWrapper.
* Removed smHasInitialized.
#### filesystem
* **Added transparent multithreaded filesystem support.**
* Default maximum number of concurrent filesystem operations is 3, this can be changed through the `__nx_fs_num_sessions` weak var.
* Added fsSetPriority, fsFsIsValidSignedSystemPartitionOnSdCard.
* 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).
* Added FsSaveDataSpaceId_ProperSystem, FsFileSystemType_RegisteredUpdate, FsSaveDataSpaceId_SdUser, FsSaveDataSpaceId_SafeMode.
* Added FsSaveDataType_SystemBcat.
* Added FsGameCardPartition_Logo. (also, a typo was fixed in the name of this enum)
* Added FsSaveDataFlags_NeedsSecureDelete.
* Added FsSaveDataRank enum.
* Added FsFileSystemQueryId_IsValidSignedSystemPartitionOnSdCard.
* Added FsGameCardAttribute_DifferentRegionCupToTerraDeviceFlag, FsGameCardAttribute_DifferentRegionCupToGlobalDeviceFlag.
* Renamed FsBisStorageId to FsBisPartitionId.
* Added FsBisPartitionId_SignedSystemPartitionOnSafeMode.
* Removed spurious inval param from fsDirRead.
* fspr:
* Now using domains.
* fsdev:
* 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.
* Added appletPushToAppletBoundChannel, appletTryPopFromAppletBoundChannel, appletGetSettingsPlatformRegion, appletSetHdcpAuthenticationActivated, appletSetInputDetectionPolicy, appletSetHealthWarningShowingState, appletGetHealthWarningDisappearedSystemEvent, appletIsForceTerminateApplicationDisabledForDebug, appletGetFriendInvitationStorageChannelEvent, appletTryPopFromFriendInvitationStorageChannel, appletGetNotificationStorageChannelEvent, appletTryPopFromNotificationStorageChannel, appletApplicationPushToFriendInvitationStorageChannel, appletApplicationPushToNotificationStorageChannel, appletPushToAppletBoundChannelForDebug, appletTryPopFromAppletBoundChannelForDebug, appletAlarmSettingNotificationEnableAppEventReserve, appletAlarmSettingNotificationDisableAppEventReserve, appletAlarmSettingNotificationPushAppEventNotify, appletFriendInvitationSetApplicationParameter, appletFriendInvitationClearApplicationParameter, appletFriendInvitationPushApplicationParameter.
* Added enum: AppletInputDetectionPolicy.
#### libapplets
* Added support for the friendsLa libapplet.
* Added support for the psel (player select) libapplet.
* Added support for the hidLa (controller configuration) libapplet.
* Renamed webConfigSetUserID to webConfigSetUid.
* Renamed WebArgType_UserID to WebArgType_Uid.
#### ns
* Corrected names of nsdevLaunchApplicationForDevelop, nsdevLaunchApplicationWithStorageIdForDevelop, nsdevGetRunningApplicationProcessIdForDevelop, nsdevSetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop.
* Corrected parameters of nsListApplicationRecord, nsListApplicationContentMetaStatus, nsvmGetSafeSystemVersion.
* Added support for ns:su.
* Added enum: NsApplicationControlSource.
* Added service session getters: nsGetServiceSession_GetterInterface, nsGetServiceSession_ApplicationManagerInterface, nsdevGetServiceSession, nssuGetServiceSession.
* Added structs: NsApplicationDeliveryInfo, NsReceiveApplicationProgress, NsSendApplicationProgress, NsSystemDeliveryInfo, NsSystemUpdateProgress.
* Added nsGetSystemDeliveryInfo, nsGetApplicationDeliveryInfo, nsSelectLatestSystemDeliveryInfo, nsVerifyDeliveryProtocolVersion, nsHasAllContentsToDeliver, nsCompareApplicationDeliveryInfo, nsCanDeliverApplication, nsListContentMetaKeyToDeliverApplication, nsNeedsSystemUpdateToDeliverApplication, nsEstimateRequiredSize, nsRequestReceiveApplication, nsCommitReceiveApplication, nsGetReceiveApplicationProgress, nsRequestSendApplication, nsGetSendApplicationProgress, nsCompareSystemDeliveryInfo, nsListNotCommittedContentMeta, nsGetApplicationDeliveryInfoHash.
#### other services
* account:
* Added AccountServiceType, and changed accountInitialize to accept it.
* Renamed AccountProfileBase::username to nickname.
* Removed output bool from accountGetLastOpenedUser.
* Added AccountNetworkServiceAccountId struct.
* Added accountIsUserRegistrationRequestPermitted, accountTrySelectUserWithoutInteraction.
* apm:
* Added enum: ApmPerformanceMode.
* Added service session getter: apmGetServiceSession_Session.
* async: Added support for the IAsyncValue/IAsyncResult interfaces.
* audin:
* Added missing count param to audinListAudioIns.
* Changed wrapper to use 3.x+ Auto commands if available.
* Added service session getters: audinGetServiceSession, audinGetServiceSession_AudioIn.
* audout:
* Added missing count param to audoutListAudioOuts.
* Changed wrapper to use 3.x+ Auto commands if available.
* Added service session getters: audoutGetServiceSession, audoutGetServiceSession_AudioOut.
* audren:
* Changed wrapper to use 3.x+ Auto commands if available.
* Renamed audrenGetServiceSession to audrenGetServiceSession_AudioRenderer.
* fatal:
* Corrected names of commands and types to match official names more closely.
* **fatalSimple was renamed to fatalThrow**.
* friends:
* Added structs: FriendsInAppScreenName, FriendsFriendInvitationGameModeDescription, FriendsFriendInvitationId, FriendsFriendInvitationGroupId.
* Added friendsGetFriendInvitationNotificationEvent, friendsTryPopFriendInvitationNotificationInfo.
* grc:
* Renamed grcdRead to grcdTransfer.
* hid:
* Added hidIsVibrationDeviceMounted, hidGetNpadJoyHoldType.
* Added internal 5.0+ support for using ActivateNpadWithRevision with the sysver-specific revision value.
* Changed hidInitializeSevenSixAxisSensor to use ActivateConsoleSixAxisSensor earlier on instead of ActivateSevenSixAxisSensor.
* hiddbg:
* Added hiddbgAcquireOperationEventHandle, hiddbgGetOperationResult, hiddbgWriteSerialFlash, hiddbgIsHdlsVirtualDeviceAttached.
* Fixed bug in hiddbgReadSerialFlash.
* hidsys:
* Added hidsysSetNotificationLedPatternWithTimeout.
* Added hidsysAcquireCaptureButtonEventHandle, hidsysAcquireSleepButtonEventHandle to header.
* Corrected bug that affected internal GetMaskedSupportedNpadStyleSet logic.
* loader (ldrShell/ldrDmnt/ldrPm):
* Updated names to match official software.
* ncm:
* Added new ncm_types.h header, which is used by several other services that need NCM types.
* Updated structs: NcmContentMetaKey, NcmContentInfo, NcmContentMetaHeader, NcmApplicationMetaExtendedHeader.
* Renamed NcmNcaId to NcmContentId.
* Added NcmRightsId struct, which is now used by the RightsId funcs.
* Added NcmProgramLocation, which is now used by pmshellLaunchProgram.
* Changed several commands to accept array element count instead of byte size.
* Fixed handling for ncmContentStorageGetPath/ncmContentStorageGetPlaceHolderPath.
* Corrected NcmContentId struct alignment.
* Added NcmPlaceHolderId struct, which is used instead of NcmContentId where needed.
* Renamed FsStorageId to NcmStorageId (and renamed enum value names too).
* Added structs: NcmPackagedContentInfo, NcmContentMetaInfo.
* nfc/nfp:
* Renamed from nfcu/nfpu to nfc/nfp.
* 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.
* set:
* Added SetLanguage_ZHHANS, SetLanguage_ZHHANT.
* Added SetRegion_CHN, SetRegion_KOR, SetRegion_TWN.
* Added size_out parameter to setsysGetSettingsItemValue, which was previously missing.
* Replaced SetSysFlag/setsysGetFlag/setsysSetFlag with dedicated funcs for each flag.
* Use SetLanguage instead of s32 in setMakeLanguage(Code).
* 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.
* Added enums: SetSysPlatformRegion, SetSysHomeMenuScheme, SetSysTouchScreenMode, SetSysUserSelectorFlag, SetSysEulaVersionClockType, SetSysNotificationVolume, SetSysFriendPresenceOverlayPermission, SetSysPrimaryAlbumStorage, SetSysHandheldSleepPlan, SetSysConsoleSleepPlan, SetSysErrorReportSharePermission, SetKeyboardLayout, SetChineseTraditionalInputMethod.
* Added structs: SetBatteryLot, SetSysUserSelectorSettings, SetSysAccountSettings, SetSysEulaVersion, SetSysNotificationTime, SetSysNotificationSettings, SetSysAccountNotificationSettings, SetSysTvSettings, SetSysDataDeletionSettings, SetSysSleepSettings, SetSysInitialLaunchSettings, SetSysRebootlessSystemUpdateVersion.
* time:
* Changed service type handling to use new TimeServiceType enum (and `__nx_time_service_type` weak var), time:u is now the default service.
* Changed timeToPosixTime/timeToPosixTimeWithMyRule to accept array element count instead of byte size.
* Changed timeLoadLocationNameList to accept array element count instead of byte size.
* Added service session getters: timeGetServiceSession_SystemClock, timeGetServiceSession_TimeZoneService.
* Added TimeSteadyClockTimePoint struct (which is now used elsewhere in libnx).
* ts: Added support.
* usbhs:
* 8.0+ support fixed; UsbHsInterfaceInfo input/output endpoints were swapped.
* Fixed bug in usbHsEpClose.
* vi:
* Renamed viGetDisplayMinimumZ to viGetZOrderCountMin.
* Renamed viGetDisplayMaximumZ to viGetZOrderCountMax.
#### miscellaneous
* Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.
## Version 2.5.0
#### system

View File

@ -8,8 +8,8 @@ endif
include $(DEVKITPRO)/devkitA64/base_rules
export LIBNX_MAJOR := 2
export LIBNX_MINOR := 5
export LIBNX_MAJOR := 3
export LIBNX_MINOR := 0
export LIBNX_PATCH := 0