# News
-This is charybdis 3.6-dev, Copyright (c) 2005-2016 Charybdis team.
+This is charybdis 4-dev, Copyright (c) 2005-2016 Charybdis team.
See LICENSE for licensing details (GPL v2).
-## charybdis-3.6-dev
+## charybdis-4
### build
- Build system has been converted to libtool + automake for sanity reasons.
- Implement a channel mode that disallows kicking IRC operators (+M).
- Enhance the oper override system, allowing more flexibility and detail
in network-wide notices.
+- DNS, ident, and blacklist lookups have been moved to a dedicated daemon known
+ as authd. Some cosmetic changes to blacklist statistics and rejection notices
+ have resulted.
+- An experimental OPM scanner has been added to authd. Plaintext SOCKS4,
+ SOCKS5, and HTTP CONNECT proxies can be checked for.
+- The LOCOPS command has been moved from core to an extension.
+- All core modules in charybdis have descriptions, which are shown in MODLIST.
+- Suffixes should not be used when doing /MODLOAD, /MODUNLOAD, /MODRELOAD, etc.
+
+### misc
+- Support for WebSocket has been added, use the listen::wsock option to switch
+ a listener into websocket mode.
### conf
- Add the ability to strip color codes from topics unconditionally.
+- The obsolete hub option from server info has been removed.
+
+### docs
+- The documentation has been cleaned up; obsolete files have been purged, and
+ files have been renamed and shuffled around to be more consistent.
### code
+- `common.h` is gone. Everything useful in it was moved to `ircd_defs.h`.
+- `config.h` is gone; the few remaining knobs in it were not for configuration
+ by mere mortals, and mostly existed as a 2.8 relic. Most of the knobs live in
+ `defaults.h`, but one is well-advised to stay away unless they know exactly
+ what they are doing.
+- A new module API has been introduced, known as AV2. It includes things such as
+ module datecodes (to ensure modules don't fall out of sync with the code),
+ module descriptions, and other fun things.
+- Alias and module commands are now in m_alias and m_modules, respectively, and
+ can be reloaded if need be. For sanity reasons, m_modules is a core module,
+ and cannot be unloaded.
+- irc_dictionary and irc_radixtree related functions are now in librb, and
+ prefixed accordingly. Typedefs have been added for consistency with existing
+ data structures. For example, now you would write `rb_dictionary *foo` and
+ `RB_DICTIONARY_FOREACH`.
+- C99 bools are now included and used in the code. Don't use ints as simple true
+ or false flags anymore. In accordance with this change, the `YES`/`NO` and
+ `TRUE`/`FALSE` macros have been removed.
+- Return types from command handlers have been axed, as they have been useless
+ for years.
+- libratbox has been renamed to librb, as we have diverged from upstream long
+ ago.
- Almost all 2.8-style hashtable structures have been moved to dictionaries or
radix trees, resulting in significant memory savings.
- The block allocator has been disabled and is no longer used.
servicing clients will remain in use, but not service new connections, and
are garbage collected when they are no longer servicing connections.
- Support for ratbox-style 'iodebug' hooks has been removed.
+- New channel types may be added by modules, see `extensions/chantype_dummy.c`
+ for a very simple example.
## charybdis-3.5.0