I started writing this because I live in Cambodia and all the dictionary apps meet at least two of the following criteria: Slow, Online-only, Incomplete. So I started making .slob files for aard dictionary to help with learning the Khmer language. But aard only searches inside the headwords and there was no iOS port for my coworkers. I looked at other programs (like stardict), but they didn't seem to have any releases in ages and were super buggy. So a couple years ago I made a SQLite3 based web app so that it'd be easy to share with other people. But I couldn't help feeling like maybe SQLite wasn't the right solution. (SQLite databases aren't compressed, and the runtime for SQLite is 1.3mb and I still had to hack it to get it to work for my dictionary, kinda slow and if I was to make more indexes the file size would balloon drastically. Also I hate editing database files)
So a few months ago I wrote my own binary dictionary format and it's fast and tiny and has some really nice features. For the dictionaries I just write a tsv file and use my generator program to turn it into a .peak.zst file.
I put together examples for a bunch of different languages, but Khmer is the most complete one. See the list at https://peakslab.org