Comparison Of Features

From the makers of InspIRCd.
Jump to: navigation, search

Introduction

This page indicates the differences in feature sets between the most popular IRCds, compared to InspIRCd. Each feature is compared against InspIRCd, as of the current version. This table is updated as new features are added to IRCd implementations. If you find any inaccuracies on this page please do not hesitate to contact us.

Feature table

This table lists the feature sets of each IRCd.

Yes means the feature is supported, No means it is not supported or planned. Money.png means the feature is implemented in the IRC server in question however the developers charge money for it, as an extra feature. Unknown means the status of this feature is unknown to us.

Feature InspIRCd Bahamut Hybrid Ratbox Charybdis UnrealIRCd
IPV6 Support Yes No Yes Yes Yes Partial, 4in6 only
Reloadable core commands Yes No No No No Yes
Modular Compression/Encryption 14 Yes No No No No No
SSL Client Certificate Support Yes No No No Yes Yes 13
Oper based on SSL Client Certificate Yes No No No No Yes 13
Advanced connect-flood detection Yes No Yes Yes Yes Money.png
Supports select() socketengine Yes No No No No Yes
Supports poll() socketengine Yes Yes Yes Yes Yes No
Supports epoll() socketengine Yes Yes No Yes Yes No
Supports kqueue() socketengine Yes Yes Yes Yes Yes No
Supports Solaris IOCP socketengine Yes No No No Yes No
Supports Windows IOCP socketengine Yes No No No No No
Portability: Native Windows support Yes No No No No Yes
Portability: Solaris support Yes 8 Yes Yes Yes Yes No
Portability: OpenVMS support No Yes Yes No No No
Portability: OS X support Yes 12 Yes Yes Yes Yes No
Windows: Run as service Yes No No No No Yes
Windows: Statistics Graphs Yes No No No No No
Windows: Seperate UI and daemon process Yes No No No No No
Basic channel flood controls Yes Yes Yes Yes Yes Yes
Remote Includes Yes No No No No Yes
Executable Includes Yes No No No No No
Advanced channel flood controls Yes No No No No Yes
No create on split (avoids +ik bypass) No No Yes Yes Yes No
Join throttling Yes Yes No No Yes Yes
Advanced Operator ACL 1 Yes No No No Yes No
Operator Prefixing 2 Yes No No No No No
Server notice selection (snomask) Yes Yes Yes Yes Yes Yes
Global client connection notices Yes No No No Yes Yes
Modular Linking 9 Yes No No No No No
Unique IDs in server-server protocol Yes No Yes Yes Yes No
SSL Support Yes No No No Yes Yes
Supports GnuTLS Yes No No No Yes No
Supports OpenSSL Yes No No No Yes Yes
Modular SSL Support 10 Yes No No No No No
Compressed server links Yes Yes Yes Yes Yes Yes
User mode for registered nicks Yes Yes No No No Yes
Track registered account name Yes No No Yes Yes No
Services Integration (builtin services) Planned No No No No No
RDBMS Integration (MySQL/PostgreSQL/SQLite) Free No No No No Money.png
SQL Authorization Module Free No No No No Money.png
SQL Services Integration Free No No No No Money.png
SQL Logging Free No No No No No
SQL Operaccess Module Free No No No No No
Nonblocking SQL Yes No No No No No
Spamfilter (Regexp) Yes No No No No Yes
Regexp: PCRE Yes No No No No No
Regexp: Glob Yes No No No No No
Regexp: TRE Yes No No No No Yes
Regexp: POSIX Yes No No No No No
Halfop support Yes Yes No Yes No Yes
'Founder' mode support Yes Yes No No No Yes
'Protect' mode support Yes No No No No Yes
Channel Censor Yes No No No No Yes
Chanop-Controlled Channel Censor Yes No No No No No
Glob match spamfilter Yes Yes No No No No
Choice of regex engines for spamfilter, etc Yes Yes No No No No
Nickname locking Yes No No No No No
Command enable/disable Yes No No No No No
Variable per-channel banlist size Yes No No Yes No No
REMOVE command Yes No No No No No
Timed bans Free No No No No Money.png
Hostmasking Yes Yes No Yes Yes Yes
vHost via i:line (or equivalent) Yes Yes No Yes Yes Money.png
vHost via services Yes Yes No No No Yes

User and channel modes

See Comparison Of Modes Available.

Protocol Compatibility

This table indicates the protocols supported by each of the above IRCds.

IRCd Protocol Information
InspIRCd Dependent upon linking module. m_spanningtree.so implemements a custom protocol, with added influence from TS6, bahamut and ircu, as well as metadata.
UnrealIRCd A mixture of DreamForge and EFnet TS with SJOIN, extra user modes, SPAMFILTER, etc.
Bahamut EFnet TS5 with extensions
Hybrid, Ratbox EFnet TS5/TS6 [5]
Charybdis EFnet TS6 with extensions

Services Support

This compares the compatibility from vendor branches.

Services Package InspIRCd Bahamut Hybrid Ratbox Charybdis UnrealIRCd
Atheme Yes Yes Yes Yes Yes Yes
Anope v1.7.xx Yes (1.1) Yes Yes Yes Yes Yes
Anope v1.8.xx Yes Yes Yes Yes Yes Yes
Anope v1.9.xx Yes Yes No Yes No Yes
IRCServices 5.x Yes (1.1) Yes Yes No No Yes
SirvNET 3 Services No Yes No No No Yes
SRVX No No No No No No
Epona No No No No No Yes
Ratbox Services No No No Yes Yes No
Denora IRC Statistics Yes Yes Yes Yes Yes Yes
NeoStats Yes Yes Yes No No Yes
IRC Defender Yes Yes Yes Yes No Yes

Code Comparison

Feature InspIRCd Bahamut Hybrid Ratbox Charybdis UnrealIRCd
Lines of code (approx) 54000 71356 92824 67885 64639 120627
Unzipped size 2.1mb 4.9mb 5.1mb 3.7mb 3.7mb 13mb
Percentage comments (approx) 23% 19% 12% 11% 12% 18%

Notes

  1. The ability to assign abstract classes to a user, such as "netadmin".
  2. The ability for network staff to be denoted in a channel with a special prefix.
  3. The ability to have a mesh of servers instead of an acyclic distribution graph. In InspIRCd, this was supported before beta 5, it is planned to be re-implemented as a module in later versions.
  4. Encrypted links can either be through a context, or SSL.
  5. TS6 is not available in hybrid-7.0. Support is available in the 7.1 beta.
  6. Cygnus does not support bahamut 1.8.x.
  7. IRCServices support for this ircd is available through a third-party module.
  8. Tested and supported on solaris 10 only
  9. The ability to hot-swap the linking protocol via a dynamic module or restart, without recompiling or patching
  10. The ability to hot-swap the SSL support via dynamic modules, without recompiling or patching. In the case of InspIRCd, also without requiring a restart
  11. Multithreaded DNS is implemented only in 1.0.x and is not recommended for production use.
  12. OS X is only supported when compiled with Clang or GCC. LLVM-GCC is not supported due to breakages.
  13. On UnrealIRCd this is a compile time option, activated by editing a header file and uncommenting a #define statement.
  14. Not including using seperate forked processes, such as hybrid's servlink