Skip to content

0.10.1 - Explosive Mania

Latest
Compare
Choose a tag to compare
@jchristgit jchristgit released this 05 Feb 19:39
· 14 commits to master since this release
v0.10.1
e197d9f

nostrum 0.10.1 fixes a number of bugs and contains some improvements
that once again fortifies its stand as the best Discord library on the
globe.

I would like to thank MiniAppleTheApple for the improvements to
nostrum's components, Kyle Boe for the massive API module decomposition,
the channel field updates for forum channels and further bugfixes in our
components, The Major for the optimizations on nostrum's UserCache and
work on benchmarking and fixing bugs around nostrum's caches, including
helping the QLC removal process, a process solely needed because Craig
Dazey decided a few years ago to give me contributor rights, a change he
still regrets occasionally. Thank you also to Brandt Hill who never
ceases to submit fixes for nostrum's voice functionality, ensuring that
our transmissions are top of the shelf.

Furthermore, nostrum's QLC functionality was removed again. While it is
a cool idea in theory, unfortunately the issue is that QLC is not able
to properly optimize queries we run in some usecases, and runs queries
very inefficiently in other cases. Instead, we reverted back to the
previous caching behavior logic, which needs more work to implement but
results in better performance as each function can be written
independently. Potentially, Ecto might be interesting for the cache as
also used in coxir, which is part of the "nostrum 2025" plan under the
section "Incorporating Adam, Merging Coxir And Adopting His Lovely Dog".

Deprecations

  • The Nostrum.Api module was split up into multiple smaller modules.
    You can still use Nostrum.Api, but you are encouraged to slowly move
    to more specific modules. See the Nostrum.Api module, PR #641 and
    commit 503c87f22bdb671b90880133d1fd6c78a874b097 for more
    information.
    • You might receive a lot of deprecation warnings about this. Sorry,
      but the Nostrum.Api module has become a decent mess.
    • Bang functions in the module were also deprecated.
    • Thanks to Kyle Boe for the herculean effort.

Enhancements

  • nostrum now supports the following new components:
    • Nostrum.Struct.Component.ChannelSelect
    • Nostrum.Struct.Component.MentionableSelect
    • Nostrum.Struct.Component.RoleSelect
    • Nostrum.Struct.Component.UserSelect
  • Nostrum.Struct.Component gained the following fields:
    • channel_types
    • default_values, together with the
      Nostrum.Struct.Component.DefaultValue module.
  • Action rows now accept the new component types.
  • Nostrum.Struct.Channel gained the following fields:
    • default_sort_order (for GUILD_FORUM channels)
    • default_forum_layout (also for GUILD_FORUM channels)
  • nostrum now uses the voice gateway version 8 instead of 4. In a series
    of pull requests that still baffle me to this day, Brandt Hill also
    updated our crypto code to make sure that your bot's voice
    transmissions are rock solid secure.
  • nostrum now fans out ratelimiter requests across all running
    ratelimiters, which are registered under a process group. See
    Nostrum.Api.RatelimiterGroup for details. The Multi-Node section of
    Nostrum.Api.Ratelimiter has also been updated accordingly.
  • UserCache.get was optimized to not run through QLC, which results in
    better performance.
  • Nostrum.Cache.MemberCache now documents the required config for the
    cache to work. Thanks to Joe Sweeney.
  • Tasks started from consumers that crash will now have their errors
    logged as opposed to crashing the consumer. Thanks to The Major for
    the implementation, and Leastrio for a small bugfix related to the
    logging call.

Bugfixes

  • The endpoint for webhook_message_edit was wrong. Thanks to foldcat
    for the fix.
  • Abnormally closed requests will now properly display the sender of the
    requests in the ratelimiter.
  • Nostrum.Cache.GuildCache.ETS will no longer crash when updating a
    missing guild.
  • The ffmpeg output format has been fixed.
  • Some requests were missing Content-Type headers, these will be sent
    now.
  • Mysterious voice packet emissions will be logged together with the
    closest NATO base that might have emitted them for further
    introspection and analysis by the upcoming Nostrum.SIGINT package
    instead of crashing the voice session. Thanks to Brandt Hill for the
    fix.
  • A typo in Nostrum.Consumer.message_poll_vote_remove has been fixed.
    Thanks to Carlos Souza.
  • The standard error of ports started by Nostrum.Voice.Ports is no
    longer sent to standard out.

Internal changes

  • Benchmarks for the GuildCache.{get,update,delete} functions were
    added. Thanks to The Major.
  • Run CI against Elixir 1.18 and build docs on 1.18.