-# charybdis
+# charybdis [![POSIX Build Status](https://travis-ci.org/charybdis-ircd/charybdis.svg?branch=master)](https://travis-ci.org/charybdis-ircd/charybdis) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/is0obsml8xyq2qk7/branch/master?svg=true)](https://ci.appveyor.com/project/kaniini/charybdis/branch/master)
-Charybdis is a reference implementation of the IRCv3.1 server component. It is meant to be
-used with an IRCv3-capable services implementation such as [Atheme][atheme] or [Anope][anope].
+Charybdis is an IRCv3 server designed to be highly scalable. It implements IRCv3.1 and some parts of IRCv3.2.
+
+It is meant to be used with an IRCv3-capable services implementation such as [Atheme][atheme] or [Anope][anope].
[atheme]: http://www.atheme.net/
[anope]: http://www.anope.org/
# necessary requirements
* A supported platform
- * A working dynamic load library.
- * A working lex. Solaris /usr/ccs/bin/lex appears to be broken, on this system flex should be used.
+ * A working dynamic library system
+ * A working lex and yacc - flex and bison should work
-# feature specific requirements
+# platforms
- * For SSL Clients, SSL Challenge controlled OPER feature, and encrypted server links,
- a working OpenSSL library or GnuTLS library. CHALLENGE is not supported on GnuTLS
- yet.
+Charybdis is designed with portability in mind, but does not target older systems nor those of solely academic
+interest.
- * For ECDHE, OpenSSL 1.0.0 or newer is required. RHEL/Fedora and derivatives like CentOS
- will need to compile OpenSSL from source, as ECC/ECDHE-functionality is removed from
- the OpenSSL package in these distributions.
+Do note that operating systems are only supported if they are supported by their vendor.
-# tips
+## Tier 1
- * To report bugs in charybdis, visit us at irc.atheme.org #charybdis
+These platforms are the best supported, and should always work. They are actively tested. If you encounter
+problems, please file a bug.
- * Please read doc/index.txt to get an overview of the current documentation.
+* FreeBSD 10.x and above (i386 and amd64)
+* Linux 2.6.x and above with glibc or musl (i386, x86_64, and ARM)
+* Mac OS X 10.7 and above
+* Windows Vista/Server 2008 and above (x86 or x64)
- * The files, /etc/services, /etc/protocols, and /etc/resolv.conf, SHOULD be
- readable by the user running the server in order for ircd to start with
- the correct settings. If these files are wrong, charybdis will try to use
- 127.0.0.1 for a resolver as a last-ditch effort.
+## Tier 2
- * FREEBSD USERS: if you are compiling with ipv6 you may experience
+These platforms are supported and occasionally tested, and most features should work, but this is not
+guaranteed. If you find any problems, file a bug, but as these are not regularly tested platforms, a timely
+resolution may not be possible.
+
+* DragonflyBSD 4.4 and above (i386)
+* Linux with uClibc (i386 or x86_64)
+* NetBSD 6.1.x and above (i386, amd64)
+* OpenBSD 5.6 and above (i386, amd64)
+* Solaris 10 and above (i386)
+
+## Tier 3
+
+Anything else that hasn't been tested. Charybdis may or may not work on it; patches welcome if they don't.
+
+# platform specific errata
+
+These are known issues and workarounds for supported platforms.
+
+ * **FreeBSD**: if you are compiling with ipv6 you may experience
problems with ipv4 due to the way the socket code is written. To
fix this you must: "sysctl net.inet6.ip6.v6only=0"
- * SOLARIS USERS: this code appears to tickle a bug in older gcc and
- egcs ONLY on 64-bit Solaris7. gcc-2.95 and SunPro C on 64bit should
- work fine, and any gcc or SunPro compiled on 32bit.
+ * **Solaris**: you may have to set your PATH to include /usr/gnu/bin and /usr/gnu/sbin before /usr/bin
+ and /usr/sbin. Solaris's default tools don't seem to play nicely with the configure script.
+
+# building from git
- * SUPPORTED PLATFORMS: this code should compile without any warnings on:
+We no longer supply a prebuilt configure script in git, due to use of automake and libtool causing problems.
+You will need to run `autogen.sh` to build the autotools files prior to building charybdis.
- * FreeBSD 10
- * Gentoo & Gentoo Hardened ~x86/~amd64/~fbsd
- * RHEL 6 / 7
- * Debian Jessie
- * OpenSuSE 11/12
- * OpenSolaris 2008.x?
- * Solaris 10 sparc.
-
- Please let us know if you find otherwise.
- It probably does not compile on AIX, IRIX or libc5 Linux.
+# feature specific requirements
+
+ * For SSL/TLS client and server connections, one of:
+
+ * OpenSSL 1.0 or newer
+ * LibreSSL
+ * mbedTLS
+ * GnuTLS
+
+ * For certificate-based oper CHALLENGE, OpenSSL 1.0 or newer.
+ (Using CHALLENGE is not recommended for new deployments, so if you want to use a different TLS library,
+ feel free.)
+
+ * For ECDHE, OpenSSL 1.0.0 or newer is required. Solaris; and RHEL/Fedora and its derivatives such as CentOS
+ have removed support for ECC/ECDHE. You will need to compile your own OpenSSL on these systems.
+
+# tips
+
+ * To report bugs in charybdis, visit us at irc.freenode.net #charybdis
- * Please read NEWS for information about what is in this release.
+ * Please read doc/index.txt to get an overview of the current documentation.
+
+ * Read the NEWS file for what's new in this release.
+
+ * The files, /etc/services, /etc/protocols, and /etc/resolv.conf, SHOULD be
+ readable by the user running the server in order for ircd to start with
+ the correct settings. If these files are wrong, charybdis will try to use
+ 127.0.0.1 for a resolver as a last-ditch effort.
- * Other files recommended for reading: BUGS, INSTALL