v10.0.31 release
We are happy to announce the release of D++ 10.0.31! This new version is a required upgrade if you use Discord Monetization, or voice/audio. Discord have changed the requirements for encryption of voice, so this new version adds support for XChaCha20 voice encryption via sodium, and also adds the new monetization API calls. These have been tested for quite some time in production bots and can be considered as stable and ready for general availability.
This fix also contains several new features such as support for application emojis, customisable HTTP timeout durations, and a new coroutines implementation which fixes some long standing UB and minor memory leaks if you were using coroutines. If your bot does use coroutines, this is a strongly recommended upgrade which will increase performance and stability for your bots.
The changelog is listed below:
Release Changelog
✨ New Features
- Change encryption to AEAD XChaCha20 Poly1305 (#1239)
- XChaCha20 voice encryption (#1242)
std::format
support fordpp::snowflake
(#1203)- Added support for application emojis (#1207)
- Timeout is now 20 seconds. Users can now change the timeout length (#1208)
- Added file size limit to avatars and banners (#1209)
- Coro: coro 2.0 (#1196)
- Banners can now be uploaded to bots (#1197)
- Add XBPS docs (#1192)
- Add
request_timeout
, a parameter as optional tocluster::request()
which allows user to sethttp_client::timeout
and add error message for request timeouts (#1186) - Added warnings for certain events that require an intent (#1169)
- New premium upsell button style (#1175)
- Add missing entitlement type enum values (#1171)
- Added consuming an entitlement (#1170)
- Add
result_type
member type todpp::task
(#1165)
🐞 Bug Fixes
- Added missing include to
awaitable.h
(#1243) - Improve compatiblity with socket (#1229)
- Fix requests fizzling if the response doesn't contain Content-Length (#1232)
- Fix
guild_member::get_avatar_url()
(#1230) (#1231) - Incorrect comment (#1228)
- Coro: fix awaitable/task move assignment, again
- Coro: fix
dpp::task
's move assignment - Coro: fix unused alias warning
- Coro: fix read-after-free in
dpp::async
- Coro: fix includes, improve NOMINMAX define
- Qol: shut up soundboard events (#1202)
- Fixed padding in tests
- Add and to
misc-enum.h
- Test: fix ban unit tests to be dependent upon each other (#1200)
- Removed max limit for avatars and banners
- Banner blob now correctly throws for banner blob size. coro and sync calls updated
- Unit tests are now built statically when
BUILD_SHARED_LIBS
is off (#1193) - Compilation on clang-19 (#1195)
- Add
packets_left
count (#1194) - Fix leak of
in_thread
, fix read-after-free, fix race condition UB after cluster shutdown (#1187) - Add error message for request timeouts and add
timed_out
member variable tohttps_client
to check for request timeouts
♻️ Refactoring
- Readability changes to sslclient and wsclient (#1210)
- Changed
DPP_BUFSIZE
to beuint16_t
instead ofuint32_t
- Removed un-needed includes, more indentation corrections
- Removed constexpr for
http_version
, moved send tostd::string_view
, removed spaces - Change
get_gateway_bot
to use coro when available - Remove Cmake special options to compile on clang-19
- Coro: coro tidy up, add
sync_wait
🚨 Testing
- Test
to_binary()
📚 Documentation
- Change init to create (#1220)
- Fix unnecessary include of fmt in mp3 example (#1218)
- Create Gentoo installation tutorial (#1211)
- Remove XBPS coroutine section (#1205)
- Added a page for editing messages from a button click (#1163)
- Altered minimum gcc version for Coro, fixed docs issues (#1173)
- Added a missing ref (#1179)
- Changed wording of token page (#1161)
set_allow_multiselect
is now correctly documented- Added an example on how to edit an embed (#1128)
💎 Style Changes
- Static and reinterpret casts
📜 Miscellaneous Changes
- Adding fix to arm-neon bug. (#1226)
- Adding Arm-Neon implementation. (#1225)
- Introduced
DPP_HAS_FORMAT
definition std::format
support fordpp::snowflake
- Add requires clause to
await_transform
to improve error messages when trying toco_await
something that can't be - Coro test case to detect leaks
- Coro: allow move-only types in
dpp::async
, de-duplicate void specializations where possible, document some more - Coro: add concept
awaitable_type
, movedpp::detail
::promise::promise
todpp::basic_promise
, document some more - Coro: remove long-deprecated
dpp::job
event handlers - Coro: add [[nodiscard]] to
dpp::task
,dpp::coroutine
- Coro: use
std::memory_order
- Updated libsodium version for rpm packages to latest (#1190)
- Use
string_view
for message object ctors + setters (#1178) - Big number implementation, for future use in permissions bitfields (#1176)
- Mark interaction type 10 as depreciated
- Add Missing SKU types
- Update Docker image to Ubuntu 24.04 LTS (#1168)
- QoL fix: Enhance the entitlement stuff with data from the actual api docs now there are some (#1166)
- Poll conflicting with
dpp::poll
(#1152) - Updated autocomplete tutorial (#1151)
👷 Build/CI
- Add clang-19-libc++ as manual install (#1245)
- Fix mac xcode version (#1244)
- Added clang16-18 jobs for Linux, added clang16 for OSX (#1206)
- Fixed clang16 for OSX
- Added clang16-18 runners for Linux, added clang16 for OSX
- Added a clang++15 osx job, fixed clang++14 job. (#1204)
- Adds support for g++13 and g++14 CI on Ubuntu 24.04 (#1201)
- Allow runners to use mold, increased concurrency to 4 (#1198)
- Codeql now uses -j4
- Updated cmake commands for Linux to be more modern
- Arm7hf no longer uses mold
- Allow runners to use mold, increased concurrency to 3
Thank you for using D++!