askalono icon indicating copy to clipboard operation
askalono copied to clipboard

Replace `rmp-serde` with `msgpacker`

Open Jake-Shadle opened this issue 1 month ago • 0 comments

rmp-serde is basically unmaintained so multiple PRs (https://github.com/3Hren/msgpack-rust/pull/372 and https://github.com/3Hren/msgpack-rust/pull/366) to resolve the paste advisory have been lingering (in the latter case for over half a year).

I briefly looked for replacement crates and msgpacker seemed to be the best option of those I could find, so this just replaces rmp-serde with msgpacker, keeping backwards compatibility with caches serialized with rmp-serde.

Note that msgpacker is not a drop in replacement for rmp-serde thus the "manual" implementation of some pieces. Note that rmp-serde has a config that can change some of these, but askalono serialized with the default config so that's all I needed to cover.

  1. rmp-serde serializes structs as fixed arrays, where the length of the array is the number of fields, unlike msgpacker which just serializes with the array length prefix.
  2. The same thing applies to tuples.

Personally, after having done this work, I'm wondering if it would not eventually be better to remove the dependency altogether in favor of just having a simple inline implementation, perhaps based off msgpack, as this crate's usage is quite simple and the format doesn't really change.

Resolves: #101

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Jake-Shadle avatar Nov 19 '25 17:11 Jake-Shadle