- wutnewlib: implement abort, assert and assert_func by @Maschell in #337 and updated for devkitPPC r45.1 in #359
- wutmalloc: make sure to set errno properly on error by @Maschell in #347
- Add missing language/region values to nn::erreula and nn::swkbd by @Maschell in #336
- nn_nets2: Add somemopt by @GaryOderNichts in #338
- coreinit/im: Add IM_SetDeviceState and missing
IMEvent
s by @GaryOderNichts in #343 - Add AVM and TVE headers, functions and enums by @Andrew1Hawes in #345
- nn/hpad: Add initial headers by @GaryOderNichts in #344
- vpad: Fix documentation for VPADRead return value by @GaryOderNichts in #346
- nn/temp: Fix TEMPTargetPreference by @GaryOderNichts in #349
- coreinit/mcp: Fix MCPAppType for DRC and DRH by @GaryOderNichts in #350
- nsysccr/cdc: Add CCRCDCPerSetUicConfig by @GaryOderNichts in #351
- nsysccr/cdc: Add software functions by @GaryOderNichts in #353
- nn_ccr/sys: Add fw update functions by @GaryOderNichts in #355
- padscore: Add missing functions for 7-controller mode by @GaryOderNichts in #352
- nsysccr/cdc: Implement CCRCDCSysSetDrhState by @Maschell in #356
- nn/sl: Implement more functions/classes by @Maschell in #354
- coreinit: Add MEMCheckExpHeap and MEMCheckHeap by @Maschell in #358
- nfc: Add initial header by @GaryOderNichts in #321
- nsysccr/cdc: Add CCRCDCWowlWakeDrc and CCRCDCWakeStateEnum by @Andrew1Hawes in #320
- Add NTAG by @GaryOderNichts in #326
- Add system time update functions by @GaryOderNichts in #328
- Update camera.h by @Fangal-Airbag in #329
- Add missing GX2 enum values by @GaryOderNichts in #327
- Add missing optnames and multicast support by @GaryOderNichts in #331
- procui: Fix ProcUIInForeground and ProcUIIsRunning comments by @Andrew1Hawes in #330
- Finalize compile commands by @thearst3rd in #332
- Implement wut_set_thread_specific/wut_get_thread_specific as weak functions by @Maschell in #324
- wutdevoptab: Add support for opening files with more flag combinations by @Maschell in #322
- wutmalloc: Always align allocated memory to 0x40 to match newlib behaviour by @Maschell in #316
- devoptab_fsa: use c++ headers by @WinterMute in #317
- Implement __syscall_getreent by @GaryOderNichts in #318
- coreinit: Add some missing field to the OSThread struct by @Maschell in #319
- newlib syscalls refactored for latest devkitPPC
coreinit:
- Fix OSDynLoad_Error to be a 32bit value by @Maschell in #305
- Fix OSDynLoad_EntryReason values by @exzap in #307
- Add MCP_CompatLoadAVFile by @GaryOderNichts in #309
- Add KernelInfo0/KernelInfo6 structs by @Maschell in #310
- MCP_GetSystemVersion by @GaryOderNichts in #311
- Separate vpadbase from vpad by @GaryOderNichts in #312
- Add missing MCP functions/enums & add more fields to LaunchInfo struct by @Maschell in #313
- wutstdc++: Decrease the stack size for gthread threads from 4 MiB to 128 KiB by @Maschell in #269
- coreinit: Change the function declaration of OSDynLoad_FindExport by @gblues in #289
- wutdevoptab: Fix memory leak in open() by @Maschell in #261
- wutstdc++: Check if memory allocations were successful on thread creation by @Maschell in #268
- wutstdc++: Fix potential memory leak when thread creation fails by @Maschell in #271
- wutstdc++: Fix __wut_cond_timedwait by @GaryOderNichts in #281
- libwhb: Fix length check in ConsoleAddLine by @Maschell in #284
- wutcrt: Fix the trap instruction by @Maschell in #302
- whb/console: Add missing MEMRecordStateForFrmHeap by @GaryOderNichts in #272
- wutdevoptab: Check size of a read/write before checking the buffer alignment to reduce the number of read/write calls by @Maschell in #273
- Add IR support by @GaryOderNichts in #288
- Adjust C/C++ flags (disable exceptions/rtti) by @fincs
coreinit:
- Add const to paths in coreinit/filesystem.h by @Xpl0itU in #262
- Add missing IM_* functions from coreinit by @GaryOderNichts in #263
- Add missing FSARequest/FSAResponse structs by @Maschell in #270
- Add missing coreinit/context.h include in coreinit/interrupts.h by @Maschell in #279
- Update FSStateChangeParams and add offset checks by @NessieHax in #287
- Add CopyData functions by @GaryOderNichts in #283
- Add OSLaunchTitle* functions by @GaryOderNichts in #293
- Add missing (internal) OSDynload structs by @Maschell in #296
- Fix missing import in rendevouz.h by @Maschell in #297
- Add missing functions for setting the context by @Maschell in #298
- Add OSGetCodegenVirtAddrRange by @Maschell in #300
- Add __OSConsoleWrite by @Maschell in #299
- Add some kernel related functions by @Maschell in #295
- Add missing fields and enum definitions to OSThread and OSContext by @Maschell in #294
- Add FSARequestChangeOwner by @Xpl0itU in #291
- Add more languages to LanguageType by @Xpl0itU in #290
- Add smd functions/structs by @GaryOderNichts in #301
Other:
- nn_ccr: Add several functions by @GaryOderNichts in #264
- nsysccr: Add several functions by @GaryOderNichts in #265
- gx2: Add several definitions for Multi/Double DRC mode by @GaryOderNichts in #266
- nn::Result: Add missing modules by @GaryOderNichts in #267
- nn_nfp: Update functions, structs and add documentation by @GaryOderNichts in #275
- nn_nfp: Add declarations for amiibo settings by @GaryOderNichts in #277
- sysapp: Add argument functions and _SYSDirectlySwitchTo by @GaryOderNichts in #276
- sysapp: Add missing functions and cleanup structs by @GaryOderNichts in #282
- camera: Add Camera lib (camera.rpl) by @Fangal-Airbag in #280
- Changed license to zlib to avoiding licensing issues when linking against wut in non-GPL projects. (#257)
- Fixed stack alignment to match PPC EABI requirements and avoid undefined behaviour (#248)
- Fixed lseek implementation which caused undefined behaviour on SEEK_CUR (#253)
- Added fix to prevent file-offset overflow in seek implementation (#254)
- Fixed lseek implementation to work correctly on files opend with O_APPEND (#256)
- Fixed and improved usage of atomics (#258)
- Added a trapword to the crt in case a debugger is initalized to allow debugging .rpx compiled with wut (#249)
- Added support for the O_EXCL fopen flag and the following flag combinations:
O_WRONLY | O_CREAT
,O_WRONLY | O_APPEND
andO_WRONLY | O_TRUNC
(#250)
- Fixed invalid ACPInitialize function declaration (#247)
- Fixed order of arguments for FSOpenFileExAsync (#260)
Thanks to @exjam, @fincs, @GaryOderNichts and @Maschell for their contributions to this release.
- Added wut_load_bounds section to prevent loader bug (thanks @GaryOderNichts)
- Make sure to always read into/write from a properly aligned buffer in the devoptab to avoid heap corruption (thanks @WinterMute, @Maschell)
- Impovements of the devoptab to properly support time and mode information and many more fixes (thanks @Maschell, @Crementif)
- Moved CMake machinery to devkitPro CMake (thanks @fincs)
- Replaced the CafeOS default heap with a custom one (thanks @GaryOderNichts)
- Added support for the Logging Module (thanks @Maschell)
- Added support for nn::erreula library (thanks @exjam)
- Fixed potential memory leaks in nn::swkdb. (thanks @exjam)
- Fixed return types and arguments for several sysapp functions (thanks @Maschell)
- Fixed memalign to ensure the size is aligned (thanks @Maschell)
- Added missing FSUnmount on fini (thanks @Maschell)
- Only call FSUnmount if FSMount was successful in devoptab (thanks @Maschell)
- Replaced dynamic allocation of OSMutex with static table to avoid memory leaks (thanks @fincs)
- Fixed syscall_clock implementation (thanks @Maschell)
- Fixed FSError enum (thanks @Maschell)
- Fixed setting the correct directory/file flag in devoptab (thanks @Maschell)
- Enforce ACPGetTitleMetaXml parameter alignment requirement. (thanks @Maschell)
- Fixed OSThreadLink struct (thanks @Maschell)
- The CMPTLaunchTitle function declaration has changed to use uint64_t for the title id (thanks @Xpl0itU)
- Removed nlibcurl
- Added missing parameters to multiple functions (e.g. SYSSwitchTo*/ _SYSLaunch*, FSChangeMode/FSChangeModeAsync, HIDSetIdle) (thanks @Maschell)
- Renamed SYSTEM_APP_ID_HOME_MENU to SYSTEM_APP_ID_WII_U_MENU (thanks @Maschell)
- Added FSA structs and function declarations (thanks @Maschell)
- Added mic function declarations (thanks @NessieHax)
- Added missing parameter to FSChangeMode/FSChangeModeAsync (thanks @Maschell)
- Added more coreinit function declarations (thanks @Maschell, @LRFLEW, @NessieHax, @Crementif)
- Added more gx2 function declarations (thanks @GaryOderNichts)
- Added more nn::acp function declarations (thanks @Maschell)
- Added more nn::act function declarations (thanks @Maschell)
- Added more nn::ccr function declarations (thanks @Maschell)
- Added more nn::swkdb function declarations (thanks @Fangal-Airbag, @NessieHax)
- Added more nsyshid function declarations (thanks @Maschell)
- Added more nsyshid function declarations (thanks @Maschell)
- Added more nsysnet function declarations (thanks @Maschell)
- Added more nsysuhs function declarations (thanks @GaryOderNichts)
- Added more padscore function declarations (thanks @LRFLEW)
- Added more procui function declarations (thanks @GaryOderNichts)
- Added more sysapp function declarations (thanks @Maschell)
- Added more vpad function declarations (thanks @Maschell)
- Added nn::cmpt function declarations (thanks @GaryOderNichts)
- Added nn::erreula function declarations (thanks @exjam)
- Added nn::fp function declarations (thanks @NessieHax)
- Added nn::nfp function declarations (thanks @GaryOderNichts)
- Added nn::save function declarations (thanks @GaryOderNichts)
- Added nn::sl function declarations (thanks @Maschell)
- Added nn::spm function declarations (thanks @GaryOderNichts)
- Added nn::temp function declarations (thanks @exjam)
- Added nsyskbd function declarations (thanks @Maschell)
- Numerous improvements to linking rpl/rpx which fixes C++ exceptions and static constructors not working correctly (thanks @fincs)
- Fix
gettod
implementation returning incorrect time (thanks @GaryOderNichts) - Fix
nn::Result
to work correctly on big endian (thanks @luigoalma)
- Add Makefile build system support for producing .wuhb files, a new homebrew app bundle format intended to streamline distribution of ancilliary assets (icons, content files) and compatibility with future homebrew loading solutions (thanks @fincs, @Maschell)
- New POSIX compatible socket implementation which aims to make porting existing code to Wii U seamless (thanks @rw-r-r-0644, @GaryOderNichts, @fincs)
- Add missing cleanup of filesystem clients in WHB (thanks @Maschell)
- Optimise
fread
,fwrite
when the provided buffer is already aligned (thanks @Maschell)
- Fix names for
IM{Get,Set}DimEnable{DRC,TV}
(was previously incorrectly capitalised Drc and Tv) - Add missing enum values in gx2 and improve usage of enums from C++ by adding operator| (thanks @fincs)
- Add missing
FSErrorFlag
type for all filesystem functions (thanks @Maschell) - Add more coreinit function declarations (thanks @Maschell)
- Add more nn_ac function declarations (thanks @Maschell)
- Add some nsysuhs function declarations (thanks @Maschell)
- Add more sndcore2 function declarations (thanks @GaryOderNichts)
- Add more vpad function declarations (thanks @Crayon2000)
- libwhb's network command server (
WHBCommandServer
) functions and the associated<whb/commandserver.h>
header have been removed.
- The CMake macro
wut_create_rpl
has been re-implemented. The new version doesn't create a build target for the rpx/rpl binary, and only regenerates the rpx/rpl when actually necessary. The new syntax iswut_create_rpl(<TARGET>)
. Deprecated calls in the formwut_create_rpl(file.rpx <TARGET>)
will fall through to the old implementation.
- Cafe functions
inet_ntoa_r
,inet_ntop
, andinet_pton
have been added to<nsysnet/socket.h>
(thanks @Crayon2000!) - Cafe functions
VPADGetTPCalibratedPointEx
,VPADGetTPCalibrationParam
, andVPADSetTPCalibrationParam
have been added to<vpad/input.h>
. - Cafe functions
OSGetOSID
and__OSGetProcessSDKVersion
have been added to<coreinit/systeminfo.h>
(thanks @Maschell!) - Cafe function
_SYSGetSystemApplicationTitleId
has been added to<sysapp/title.h>
(thanks @Maschell!) - Cafe functions
SYSGetCallerPFID
,_SYSGetSystemApplicationTitleIdByProdArea
, andSYSGetCallerTitleId
have been added<sysapp/title.h>
. - Cafe functions
OSReportVerbose
,OSReportInfo
, andOSReportWarn
have been added to<coreinit/debug.h>
. - New libwhb functions
WHBGfxGetTVColourBuffer
,WHBGfxGetTVDepthBuffer
,WHBGfxGetTVContextState
, and equivalents for the DRC, have been added to<whb/gfx.h>
. - Helper functions have been added to
<gx2/shaders.h>
which can look up shader uniforms by name. - A new header file,
<nn/acp.h>
, has been added for nn_acp's meta.xml functionality (thanks @Maschell!) - Cafe structure
KPADStatus
(from<padscore/kpad.h>
) has been documented, had accelerometer data added, and had nunchuk-specific values added (thanks @Crayon2000!) - Various Cafe structures in
<coreinit/mcp.h>
have been updated with newly-discovered members (thanks @Maschell, again!) - Cafe enum
GX2PrimitiveMode
has been updated to include theLINES_ADJACENCY
,LINE_STRIP_ADJACENCY
,TRIANGLES_ADJACENCY
,TRIANGLE_STRIP_ADJACENCY
,RECTS
, andLINE_LOOP
primitives.
- Cafe functions throughout the GX2 headers have had
const
applied as appropriate, allowing for better compiler optimisations. - libwhb's Console and graphics helpers have been refactored to better support Cafe's multitasking and home menu overlay. Applications using WHBConsole can now be backgrounded and resumed without issue.
- Cafe's KPAD library has been documented, WPAD has been partially documented, and various fixes were made to the VPAD documentation (thanks @Crayon2000!)
- CMake now searches for libraries in internal devkitPPC folders, allowing
find_library(m)
(and CMake pkg-config equivalents) to work as expected. - CMake now sets the pkg-config binary to
powerpc-eabi-pkg-config
, installable from thedkp-libs
repo aswiiu-pkg-config
. Application scripts no longer need to setPKG_CONFIG_EXECUTABLE
. - wutstdc++'s threading implementation has been changed to behave more like a pre-emptive scheduler, yielding a thread after 1ms runtime. This applies to
std::thread
and<threads.h>
, not applications working withOSThread
directly.
- coreinit's
exit
is no longer defined in<coreinit/exit.h>
. Please use<stdlib.h>
instead, which pulls in newlib's exit. - RPL import sections (
.fimport_coreinit
etc.) are now garbage-collected when using wut-tools 1.1.0 or above (required). Code relying on weak links to Cafe functions may exhibit different behaviour. snd_core
andsnd_user
are no longer linked, due to naming conflicts withsndcore2
andsnduser2
. wut has never shipped headers for these libraries, but if you are using them, please switch tosndcore2
andsnduser2
.- Changes to CMake's linker flags may cause existing build trees to fail. Please delete any old build files and re-run CMake.
- Two new symbols,
__rpx_start
and__rpl_start
, are now used internally by the toolchain, while_start
is now undefined. As usual, applications are strongly discouraged from prefixing any symbol with two underscores, in order to avoid conflicts of this type.
WUT_ROOT
should no longer be defined in the user's environment, and will be set to$DEVKITPRO/wut
internally. CMake lists and makefiles that use$WUT_ROOT/share
to findwut.mk
orwut.toolchain.cmake
should be changed to$DEVKITPRO/wut/share
.- All of wut's static libraries (
-lcoreinit
,-lwhb
, etc.) have been merged into a singlelibwut
, which gets automatically linked in for all builds. While empty static libraries have been provided for CMake builds to ease the transition, these will be removed eventually. Applications should remove the build flags to link any of wut's libraries. - Similarly, wut's build configuration options (devoptab, wutmalloc, newlib) are now integrated into
libwut
. For CMake builds, thewut_enable_*
macros will now log a deprecation warning, and should be removed as soon as possible. - Use of
wut.mk
as a build system is now deprecated. Applications should move towut_rules
and devkitPro-style makefiles, such as those in the samples.wut.mk
will not be updated further, and will be removed in a future release.
- Builds refactored: wut now uses Makefiles to build itself, as well as providing a devkitPro-style
wut_rules
file - see thesamples/make
folder. The cmake samples are now insamples/cmake
. - A new linking feature,
__rplwrap
, was added to help deal with conflicts between newlib's and Cafe's functions. Because of this, wut 1.0.0-beta9 requires wut-tools 1.1.0 or newer. - Using rplwrap, newlib's
exit
is now correctly chained with coreinit's - calls likeatexit
should work; whether callingexit
or just returning frommain
. Applications using coreinit's_Exit
are encouraged to migrate to a normalexit
call. - A new header file,
<coreinit/codegen.h>
, has been added and documented for OSCodegen functionality.