2.0.0

New release 2.0.0
Added by David Demelier over 1 year ago

I'm glad to announce the availability of irccd 2.0.0 after more than two years of development.

This new version has lots of amazing new features.

Switch to JavaScript

This major version brings a new JavaScript API instead of Lua for developing plugins.

Lua was dropped for JavaScript after many disappointments about Lua's development model, features, design choices.

JavaScript was chosen because it is light, easy to sandbox and easy to learn.

The current implementation inside irccd uses duktape 1.4.0.

Transports

New transports (formerly listeners) have joined irccd.

Transports replaces listeners and are now completely two-ways.

This means that you can connect to an irccd instance and wait forever for new messages. Irccd will broadcast new messages for each IRC event, this lets you create innovative plugins even without JavaScript.

See the irccdctl watch command which uses transports.

Rules

A brand new feature similar to firewalls can now let you enable or disable events on specific criterias.

It is now possible to disable some IRC events for a specific plugin!

This lets you keep some channels where you don't want some kind of gaming plugins.

Example, this rule disables the plugin hangman on #mychannel@myserver.

[rule]
servers = "myserver" 
channels = "#mychannel" 
plugins = "hangman" 
action = drop

Logs

The logging mechanism in irccd has now its dedicated logs section.

It can now save logs to files.

Example:

[logs]
type = file
path-logs = "/var/log/irccd/log" 
path-errors = "/var/log/irccd/errors" 

More unixish options

Good daemons must have good features, the following options were added in general section:

  • uid, to change the daemon uid,
  • gid, to change the daemon gid,
  • pidfile, where to save the pid file.

Plugins

The following new plugins were added:

The following plugins where removed:

  • antiflood, currently suspended, will come back later,
  • badwords, no plans to replace it,
  • date, no plans to replace it.

New doc, new website

The documentation is now completely built within the irccd repository, making easier to show, update before a new release.

The documentation is completely built with pandoc.

As you can see, the website has completely changed with a brand new design based on bootstrap.

Improved parser

The parser can now understand multiple options on the same line (not recommended though):

[section]
option1 = value1 option2 = value2

It also understands a new include keyword, this allows splitting the configuration into multiple different files.

Note: the instruction must be at the beginning of the file.

# Comments are allowed though
@include "foo.conf" 
@include "baz.conf" 

[section]
option = value

The parser can also use lists in some options using parentheses.

[section]
option = ( "value1", "value2" )

New common patterns

The common pattern syntax has evolved in various way, they now require braces, environment variables are supported, colors and attributes are also supported.

The default keywords have been renamed to:

  • #c -> #{channel},
  • #m -> #{message},
  • #s -> #{server},
  • #t -> #{topic},
  • #T -> #{target},
  • #u -> #{origin},
  • #U -> #{nickname}.

The following keywords have been added:

  • #{command}, the full command invocation (e.g. !ask),
  • #{plugin}, the plugin name.

See the documentation for more examples about new syntax.

Monothread architecture

The irccd 1.x architecture was highly threaded and terribly complex. The new irccd 2.0.0 architecture has 0 threads except when adding new timers from the JavaScript API.

New installer

The Windows installer is now based on QtIFW and lets you selecting which components to install.


Comments