6.2 KiB
0.x
0.4.0 (Next)
Breaking
- Added
Target, a string type betweenArgandNickthat forbids commas.
0.3.1 (2024-05-02)
Summary
Broadens serde support, adds support for I/O using tokio_util::codec,
extends YieldParsed to support functions returning any iterable.
Deprecations
These deprecations warn of planned breaking changes in 0.4.
YieldParsed::just_mapandYieldParsed::with_mapwill be changed to be actualmapfunctions.- The functions on
ClientMsgandServerMsgthat have analogues onClientCodecandServerCodewill be removed.
Non-Breaking
- Added
ClientCodecandServerCodecfor client-side/server-side message encoding/decoding. With thetokio-codecfeature, these types implementEncoder/Decoder. - Added
serdeimpls onClientMsg,ServerMsg, andServerMsgKindRaw. - Added
flat_mapfunctions toYieldParsedto support closures that return anyIntoIteratorwith an appropriate item type. - Added
Client::needs_run. - Broadened several existing
Deserializeimpls that only accepted'staticdeserializers. - Broadened several
Fromimpls on the string pseudosubtyes. - Fixed the SPDX license identifier. This fix was included in the crates.io release of vinezomie 0.3.0.
0.3.0 (2024-04-28)
Summary
This release is the first under the EUPL v1.2. It contains one more round of foundational improvements to the handler system, as well as a rework of how authentication is done. This should significantly improve the developer ease of use, in particular regarding writing clean, correct handlers.
Breaking
- vinezombie is now licensed under the EUPL v1.2. Previous versions remain available under the GPL v3.
- Reworked authentication.
- Rewrote
SaslandSaslLogic. - Rewrote the
Secrettrait asLoadSecret, which is meant to load secrets on construction of a surroundingSecretobject (e.g. during deserialization). This changes when secret-related errors happen and allows connection registration to be less-fallible. - Changed the SASL
Handlerto handle multiple mechanisms. - Removed
zeroizeas a feature and dependency, opting instead to reimplement its functionality. - Removed
Authenticate.MakeHandleris now implemented onnames::cmd::AUTHENTICATEinstead.
- Rewrote
- Added
Sendbounds to many things. This enablesClientto beSend. - Added
&ClientStateand&mut ClientStatearguments to handler creation and execution methods, respectively. This allows handlers to access state that is stored within aClient. - Replaced
SendContwithControlFlow<Sent>. - Changed the return type of
Handler::handletostd::ops::ControlFlow. - Changed
MakeHandlerto always return boxeddynhandlers. Additionally removed theHandlerassociated type from it. - Changed
Client::newto take aChannelSpec, which no longer needs to be passed to every call toClient::add. - Changed the registration handler to no longer return a
Registration, but instead populate the shared state inClient. - Changed
Registerand some of thedefault_functions to be more-ergonomic to work with for custom options. - Changed the names of a few string functions.
- Reorganize
Adjuster-related code. A boxedAdujsteris now held byQueueinstead ofClient. - Updated
rustlsto0.23.5. Thetlsfeature ofvinezombiedoes not pull in a crypto provider; use thecryptodefault feature to usering.
Non-Breaking
- Added a
cryptofeature to useringfor TLS and other cryptography. It will be used in future versions for SCRAM and PKA. - Added
ClientStatefor storing shared state in aClientandclient::stateto namespace a few common state variables. - Added a
CtcpVersionhandler for auto-replying to CTCP VERSION and SOURCE queries. - Added
SaslQueuefor collecting and filtering SASL mechanisms. - Added
SecretBuffor constructing sensitive byte strings. - Added a
TrimAsciistring transformation. - Added methods to
Clientto allow reusing aClientwith a new connection. - Fixed incorrect behavior resulting from not running some
edit guards' destructors (e.g. due to
std::mem::forget). - Fixed handler completion not causing the
Clientrunfunctions to return.
0.2.0 (2024-04-07)
Summary
This release brings sweeping reworks to handlers, as well as a new second-stage message parsing system. Much more work is needed to support a reasonably large set of capabilities, ISUPPORT tokens, and messages, but the foundations have been laid and are beginning to stabilize.
Breaking
- Reworked handlers. They now run in
Clientinstead of directly off of a connection and yield values through channels. - Replaced
constswithnamesand changed the constants to be expressed as zero-sized structs.- Reworked message kind names.
- Added names for some well-known capabilities and ISUPPORT tags.
- Added value parsing for a small subset these. This will be expanded.
- Reworked client registration. See the
Registerstruct and changes toRegistration. - Reworked nickname generation. See the
NickGentrait. - Reworked
ParseError. - Changed how one adds messages to
Queue. SeeQueue::edit. - Changed the names of a few methods on
Splitter(untilfamily). - Replaced the trait for I/O timeouts in sync code with
ReadTimeoutandWriteTimeout. - Removed the
Borrow<str>impl fromNumericdue toclippy::impl_hash_borrow_with_str_and_bytes.
Non-Breaking
- The MSRV has been reduced to 1.70 and is now enforced by CI.
- Added
Clientto contain a connection, queue, and message handlers. - Added
Mode(as in channel/user modes) and collections of modes. - Added the ability for
Queueusers to label outbound messages. - Added
oneshotchannels andparkerfor use in synchronous contexts. - Added
Bidirfor using two unidirectional streams as a bidirectional one. - Added an experimental unsafe trait for types that can become owning
(e.g.
Bytes). The full benefits require a better borrow checker, and so this trait's use throughout the codebase is inconsistent and very limited. It may even be removed in a later version.
0.1.0 (2023-08-10)
Initial release!