EPIC news archive
This page covers EPIC6 development news and historical EPIC4/EPIC5 announcements. The dated EPIC6 entries summarize UPDATES and upstream commit history; links to individual references explain current behavior and requirements.
EPIC6
2026-10-30: Authentication checks and scripting fixes
Upstream commit 70a655b6 (internal commit ID 3106) includes static-analysis fixes and these interface changes:
- The supplied
saslscript checks TLS certificate verification before sending PLAIN credentials and accepts an optional certificate-hash exception. See SSL connections. - Compiled-regex consumers validate Base85 decoding and decoded structure size. Capture extraction and cleanup accept current compiled strings.
ctcpctl()returns empty for unknown getter names and supportsGET ... REPLACE_ARGS.ecdsatool()operation names are case-insensitive.disconnectandreconnectcorrectly parse server selectors, quit reasons, and-force/-safe; reconnect safe mode refuses to reset a registered session.msgandnoticesplit long text at approximately 440 encoded bytes.window toplinestores slots 1 through 99, while display andwindowctlaccess remain limited to nine.- Installation carries configured
CPPFLAGSinto compilation. The supplied scripts fix delayed argument expansion and Python startup code.
2026-08-30: Scripting additions and retired interfaces
These announcements cover changes made between December 17, 2025 and August 30, 2026.
sortby()adds custom word-list sorting,stricmp()compares two quoted words, and the<=>sort operator performs case-insensitive string comparison. The swap operator is now=>.- The
nicklistandnickcolor.ircscripts add a channel nickname display and nickname-based colors. - Hexadecimal constants are supported in integer contexts.
- Python 3.8 became the minimum supported version for Python integration.
IRCCHANNELselects a channel to join after the initial server connection, like the-ccommand-line option.- Server-password and operator-password prompting were retired. Termcap support was retired; terminal handling uses terminfo.
- The
suppress_from_remote_serverandallow_c1_charssettings,uhc(),mesg,botmode, and thestop_ircbinding were retired. Use the startup-boption to launch in the background. - The removed hooks include
encrypted_notice,encrypted_privmsg,flood,help,note,notify_signon,notify_signoff,redirect, andwall. - Static analysis with Cppcheck and Coverity led to bug fixes.
2025-12-17: Installation types
The --with-installtype=prod configure option installs the executable under its configured name without the commit-number suffix and symlink used by the default installation type. See installing EPIC6.
2025-08-18: Comma-separated level sets
Level sets use comma-separated names rather than space-separated names, allowing a set to be passed as a single word to interfaces such as window notify_level.
2025-06-05: Compiled regular-expression encoding
regcomp() and related compiled-regex functions use Base85 for their encoded state.
2025-06-01: Base85 transformations
xform() gained the B85 transformation for ASCII85 encoding and decoding, using the <~...~> wrapper.
2025-05-27: SASL mechanism names
SASL rules use the server’s exact mechanism spelling and case, such as EXTERNAL, ECDSA-NIST256P-CHALLENGE, SCRAM-SHA-512, and PLAIN. The supplied sasl script selects its best matching rule rather than trying multiple rules for a server.
2025-05-26: SCRAM authentication and output contexts
- The
saslscript gainedSCRAM-SHA-512support.scrambox()supplies its low-level SCRAM operations. on contextreports output-context creation, andshhcan suppress display for the context’s lifetime.
2025-05-16: SASL, capability negotiation, and server properties
- The
saslscript provides a unified place to configure supported authentication mechanisms. - Capability discovery runs during connection setup.
on capexposes capability offers and acknowledgments;serverctl’scap_holdfield can delay the end of negotiation until a script releases its hold. serverctl()gained access to the server-descriptionportandcertfields.
2025-05-12: ECDSA and vhost handling
ecdsatool() adds key generation, public-key extraction, and challenge signing. Vhost handling caches resolved addresses; numeric addresses avoid hostname lookup, while a hostname can require a blocking lookup on first use.
2025-04-30: Socket and key-binding changes
Unix-domain-socket server connections were retired. Control-S is no longer bound to toggle_stop_screen by default.
2025-04-10: Compact JSON and connection policy
json_implode() defaults to compact output. The policy server state, between reconnect and dns, provides a point to adjust a server description before connection work begins.
2025-03-08: EPIC6 direction
EPIC6’s development emphasizes simpler interfaces and retiring obsolete facilities. The announced retirements include C90-only environments, shebang startup, redirect and flush, CPU saver, incoming flood control, embedded Perl and Ruby, legacy encryption types, the old math parser, Shift-JIS handling, and termcap-only environments. Mail checking and nickname monitoring moved from built-ins to scripts. Unlimited input lines and mouse interaction are among the additions.
2025-02-17: Mouse support
set mouse enables click-to-focus and scrollwheel handling on compatible terminals. Scrollwheel events affect the current input window. Mouse reporting can change the terminal’s text-selection behavior.
2024-12-12: Destructive token extraction
token() returns the text before a literal delimiter and replaces the named variable with the text after it. When the delimiter is absent, it returns the whole value and clears the variable; spaces are ordinary characters.
2024-08-26: EPIC6 fork
EPIC6 forked from EPIC5.
2016-02-13: EPIC5 2.0 announcement
EPIC5 2.0 was announced on February 13, 2016. Its epic5-2.0 tagged source records February 12, 2016, with internal_version 20160212.
2014-04-13: EPIC5 1.1.10
EPIC5 1.1.10's source release date is April 13, 2014. Its release commit, 8390b7ef, records internal commit ID 1781.
EPIC5 1.1.9 had been withdrawn because of a serious bug. The 1.1.10 release highlights were:
$encodingctl()supplied low-level control over/encodingrules.$fix_width()was rewritten to match its intended behavior.- Most string-manipulation functions became UTF-8 aware, counting code points rather than bytes where applicable.
/xtype -L,$[num]varpadding/truncation, and/fecgained UTF-8 handling.- Case-insensitive comparisons and matching, including
==and$rmatch(), gained Unicode-aware behavior subject to locale support. - The scripting environment's UTF-8 support was substantially expanded.
These were release highlights rather than guarantees that every string operation counted display columns or handled every Unicode text operation identically.
2014-04-04: EPIC5 1.1.8
EPIC5 1.1.8, internal commit ID 1775, was released on April 4, 2014. The announcement highlighted:
- UTF-8 support for the console, scripts, and IRC messages.
- Encoding conversion for messages sent to and received from IRC.
- 256-color support.
- UTF-8-aware string functions such as
$mid()and$split(). - Additional improvements recorded in the source history.
Available encodings and usable conversions depend on the system and EPIC’s conversion rules.
2014-03-31: EPIC4 2.10.5
EPIC4 2.10.5, internal commit ID 779, was released March 31, 2014, adding full Maildir support contributed by Jari Turkia.
2014-02-11: EPIC4 2.10.4
EPIC4 2.10.4, internal commit ID 778, was released February 11, 2014. Its changes included a new unicode script from |Rain| and a fix for $(IP) support taken from EPIC5 for FreeBSD porters.
Source references
- Upstream commit
70a655b6and KNOWNBUGS: October 30, 2026 changes, including authentication, regex consumers, command parsing, message splitting, and topline limits. - Upstream revision 3107: a new
JOINreplaces stale channel state after the network behind a ZNC connection reconnects. - UPDATES: dated EPIC6 development announcements from August 2024 through October 2026.
- Repository tag
epic5-2.0,source/irc.c: version name, internal release date, and commit ID; tag commit075087c1records the release. - Repository commit
8390b7ef,source/irc.candUPDATES: EPIC5 1.1.10 release identity and contemporary encoding/function changes. - Repository commit
d0ac3ed1,source/irc.c: EPIC5 1.1.8, release date20140404, and commit ID 1775. - Repository commits
1ed00810,66d46a70,82e6832d, and7aa00123: Unicode case handling, string functions,encodingctl(), andfix_width()changes leading to those releases.