4 releases (2 breaking)
0.3.1 | May 2, 2024 |
---|---|
0.3.0 | Apr 28, 2024 |
0.2.0 | Apr 7, 2024 |
0.1.0 | Aug 10, 2023 |
#984 in Network programming
232 downloads per month
460KB
10K
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.
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
Licensed under the EUPL-1.2-only, summarized here. You agree for any contributions submitted by you for inclusion into vinezombie to be redistributed under this license.
The EUPL is a copyleft license that covers network usage. It requires attribution and that works that incorporate vinezombie be made available to users (including users over a network connection) under a compatible copyleft license (GPL v2, LGPL/GPL/AGPL v3, MPL v2, EUPL v1.2, or refer to the license text for a full list and more information). It also requires that changes to vinezombie in distributed works be disclosed and made available under the EUPL.
However, the license is not automatically viral over linking or IPC, and vinezombie's interfaces may be reproduced for interoperability with software that uses it.
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–10MB
~130K SLoC