2 unstable releases

0.2.0 Apr 7, 2024
0.1.0 Aug 10, 2023

#397 in Network programming

Download history 15/week @ 2024-02-26 4/week @ 2024-03-11 104/week @ 2024-04-01 44/week @ 2024-04-08 13/week @ 2024-04-15

161 downloads per month

GPL-3.0-only

390KB
9K SLoC

vinezombie is a work in progress. Use with care. It may have bugs, and there will be further breaking 0.x releases. Expect many more features in the future.

vinezombie

A modular IRCv3 framework in Rust.

CI crates.io API docs Chat on libera.chat

vinezombie is a Rust framework for writing IRCv3 software, particularly clients/bots.

Features

  • An emphasis on correctness; without using unsafe, it should be impossible to construct a correctly-sized message that, once written, does not parse into the same message.
  • Zero-copy parsing and sharing of message data.
  • Highly-extensible parsing of IRC messages; no enums with fallback cases.
  • A client-oriented handler system for querying or updating server state.
  • First-class support for message tags and labeled-response.
  • An implementation of IRCv3 connection registration, including SASL.
  • Convenience utilities for creating asynchronous rustls connections, including connections to servers using self-signed certificates.
  • Zero mandatory dependencies; minimal optional dependencies.
  • Designed to be flexible and modular, usable as either a library or a highly pluggable framework.

Building Documentation and Examples

To build and view the documentation locally, run:

RUSTDOCFLAGS="--cfg doc_unstable" cargo +nightly doc --all-features --open

The strings diagram in doc can be re-rendered using:

d2 -t 200 -l dagre --pad 0 doc/strings.d2 doc/strings.d2.svg

vinezombie's examples may use any combination of its features, and should be built with --all-features.

License

vinezombie is licensed under the GNU GPL v3 (only). Unless otherwise specified, all contributions submitted by you for inclusion will be licensed as the rest of the library.

Disclosing the source code of bots or servers written using vinezombie to end users is also strongly encouraged, but not required.

Discussion

If you wish to discuss vinezombie's development in soft-realtime, our official IRC channel is #vinezombie on Libera.Chat. A link to a webchat is available at the top by clicking the libera.chat badge.


<jess> why vinezombie lmao
<TheDaemoness> Because. Grapevines. Undead chat protocols.
<jess> oh my god

Dependencies

~0.2–11MB
~114K SLoC