# v2.0.1 (pending) Initial release of `libmudtelnet` - a fork of `libtelnet-rs`. ## Bug fixes * A `SE` byte that isn't preceded by `IAC` is now properly handled as a normal byte during Telnet subnegotiation processing. * Fixed a panic when Telnet option code 0xFF is negotiated, and a truncated subnegotiation (e.g. `IAC SB IAC SE`) is received. * Multiple escaped `IAC` bytes (`e.g. IAC IAC IAC IAC`) are now properly unescaped (e.g. `IAC IAC`) instead of truncated (e.g. `IAC`). ## Features * Many API types now derive helpful traits (`Debug`, `Eq`, etc.). * An optional `arbitrary` crate feature is now available to enable generating arbitrary `event::TelnetIAC`, `event::TelnetNegotiation` and `event::TelnetSubnegotiation` instances for testing. ## Misc * CI improvements. * Fuzz testing. * Simple benchmarking. * Small performance and safety improvements (avoiding direct indexing, etc.). # v2.0.0 As of version 2.0, `libtelnet_rs` has switched over to using the `bytes` [crate](https://crates.io/crates/bytes). With this change, the method signatures for most methods that return `Vec` now return `Bytes` instead. For most situations where a `Vec` would be required, the returned value can simply be changed to utilize `Bytes::to_vec()`. To make usage of the new dependency a little bit easier, it is also re-exported as `libtelnet_rs::bytes`.