Skip to content

v10.0.31 release

Latest
Compare
Choose a tag to compare
@braindigitalis braindigitalis released this 21 Sep 21:14
· 9 commits to master since this release
ce18453

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 for dpp::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 to cluster::request() which allows user to set http_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 to dpp::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 to https_client to check for request timeouts

♻️ Refactoring

  • Readability changes to sslclient and wsclient (#1210)
  • Changed DPP_BUFSIZE to be uint16_t instead of uint32_t
  • Removed un-needed includes, more indentation corrections
  • Removed constexpr for http_version, moved send to std::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 for dpp::snowflake
  • Add requires clause to await_transform to improve error messages when trying to co_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, move dpp::detail::promise::promise to dpp::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++!