Why PubConvert is written in Rust
I know nobody picks a converter based on the language it is written in. But the language is the reason this one behaves the way it does, so I wanted to write down why.
PubConvert is not affiliated with Microsoft. We built our own conversion engine from independent analysis of real Publisher documents we own or have rights to use, so people can keep working with .pub files without Publisher installed. Microsoft Publisher and .pub are Microsoft's. We use those names only to describe what the product opens.
This is why we wrote it in Rust. Everything we have figured out to date has to be boringly repeatable. Same file, same engine, same page and predictable output every time. There is no garbage collector shuffling memory around mid-render, which means a layout that looks right today looks right next month. It also means when a page comes out wrong we can investigate instead of guessing.
Publisher files are untrusted input. Some are truncated, or were emailed through something that ate a few bytes. In Rust, running off the end of a damaged file is an error the engine handles and reports. It is not a crash that takes down whatever else the engine was doing, and it is not a silent half-page. If your file is broken, the engine figures that out, which is more useful than a blank preview.