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:
Changes
New XMPP Extensions support
- New Flexible Offline Message Retrieval (XEP-0013) support
Admin
- New migration script from Prosody to ejabberd
- Fix
--disable-debug
compilation flag - don’t escape
ERL_OPTIONS
- Two new global timeouts configurable:
c2s_hibernate
,receiver_hibernate
- Make it possible to define
sm_db_type
per virtual host - configuration checker: Describe option type in code for
domain_balancing
option - Log failed SQL requests
- Include
mod_muc.hrl
and fix records - mod_http_upload: Expand
docroot
before using it, also expand@HOST@
Commands
- New
import_prosody
command - Start documenting arguments in
mod_admin_extra
commands - We added a way to get all ejabberd_commands, not only those that was registered
- Allow to pass
\n
in argument toejabberdctl
- Add error handling to
send_stanza
command - Fix format_result so
get_room_options
command works again after commit reference aa5caa3
Dependencies
- 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
disco#info
- 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
GroupChat
- 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
PubSub
- Fix presence-based delivery
- Make caps warning less confusing
- Fix host/serverhost usage
- Add support of
pubsub#itemreply=publisher
Other
- 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_id
option 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.
Packaging
- 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.
Feedback
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.