Skip to content

Commit d1e5a5d

Browse files
committed
libnx v3.0.0
1 parent 15490b1 commit d1e5a5d

File tree

2 files changed

+238
-2
lines changed

2 files changed

+238
-2
lines changed

Changelog.md

+236
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,241 @@
11
# Changelog
22

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+
3239
## Version 2.5.0
4240

5241
#### system

nx/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ endif
88

99
include $(DEVKITPRO)/devkitA64/base_rules
1010

11-
export LIBNX_MAJOR := 2
12-
export LIBNX_MINOR := 5
11+
export LIBNX_MAJOR := 3
12+
export LIBNX_MINOR := 0
1313
export LIBNX_PATCH := 0
1414

1515

0 commit comments

Comments
 (0)