To celebrate leap day, we are happy to release ejabberd 16.02, which mark huge leap for ejabberd both in terms of features and improvements.
In terms of features, we see in this release the culmination of our work in several areas:
– Support for flexible offline retrieval, aka XEP-0013. This is a big win for mobile developers.
– Improvements on archiving, with Message Archive Management (MAM) now supporting version 0.4.1 of the specifications.
– Full Elixir compliant packaging with the ability to deploy ejabberd as an Hex.pm dependency from your own application. See ejabberd on hex.pm.
– Performance improvement with faster and more memory efficient XML parsing and TLS encryption. You can also refer to our previous blog post: ejabberd Massive Scalability: 1 Node — 2+ Million Concurrent Users
– Better stream compression with the ability to enable stream compression after SASL.
– Easier adoption of ejabberd with a new migration script from Prosody XMPP servers.
As usual, this version is the product of a great community team work, with special kudos to Holger, Alexey, Evgeny, Pawel, Christophe, Badlop, Mickaël for their large contributions in this release.
That community effort is what makes ejabberd is such a popular project, with 2260+ stars on Github, availability in most Linux distributions and showing amazing number of downloads ! Thank you all !
Here is the full list of changes:
New XMPP Extensions support
- New Flexible Offline Message Retrieval (XEP-0013) support
- New migration script from Prosody to ejabberd
- don’t escape
- Two new global timeouts configurable:
- Make it possible to define
sm_db_typeper virtual host
- configuration checker: Describe option type in code for
- Log failed SQL requests
mod_muc.hrland fix records
- mod_http_upload: Expand
docrootbefore using it, also expand
- Start documenting arguments in
- We added a way to get all ejabberd_commands, not only those that was registered
- Allow to pass
\nin argument to
- Add error handling to
- Fix format_result so
get_room_optionscommand works again after commit reference aa5caa3
- lager is the default (and only) logging module and we removed p1_logger
- Handle spaces in vsn attribute of app file when installing deps
- Renamed dependencies and modules for consistency but also to reflect huge performance gains:
. p1_iconv -> iconv
. p1_stringprep -> stringprep
. p1_stun -> stun
. p1_tls -> fast_tls
. p1_yaml -> fast_yaml
. p1_zlib -> ezlib
Message Archive Management
- Advertise MUC MAM v0.4.1 in room JID’s
- Add “delete_old_mam_messages” admin command
- Add ‘from’ attribute to tag
- Add “request_activates_archiving” option
- Respond to form requests
- Support XEP-0313 v0.2 MUC archive queries
- Check whether MUC message is desired
- Reject -based paging
- Limit result set page size
- Sort messages returned by Mnesia
- Strip existing JID tags from MUC messages
- Expose MUC occupant JID in more cases
- Don’t let outcasts access MUC archive
- Send new preferences when they are set
- Stream management (XEP-0198): Let MAM take care of pending messages
- Send presence with code 170 in initial presence from MUC
- Add most status codes only to initial MUC presence
- mod_muc_room: Don’t expose JIDs in anonymous rooms
- mod_muc_room: Let members see admin/owner JIDs
- Fix presence-based delivery
- Make caps warning less confusing
- Fix host/serverhost usage
- Add support of
- Accept stream compression request after SASL
- Make C2S session establishment optional to better conform to XMPP specifications and still be friendly with older clients.
- MUC: new
regexp_room_idoption to limit possible room names.
- ODBC: Set utf8mb4 charset on MySQL connection to support emoji storage as default.
- LDAP: Improve LDAP shared roster support.
- mod_register_web: Allow setting host when deleting account or changing password.
- Rename timestamp_to_iso functions in jlib.
- Stream management (XEP-0198): Fix session timeout corner case.
- Several improvements in Elixir support.
- Updated many translations.
- Improve web admin stylesheet to fix rendering issues in some browsers.
- ejabberd is now available as an hex.pm package and can be easily included as a dependency in any Elixir or Erlang application.
- Installers include latest OpenSSL patches.
As usual, the release is tagged in the Git source code repository on Github.
The source package and binary installers are available at ProcessOne.
If you suspect that you’ve found a bug, please search or fill a bug report on Github.