command-line tools should not explicitly flush writable files
MKVToolNix 30.0.0 started aggressively flushing all writable files before closing them, to work around bugs in operating systems where the buffers are lost if users do things right after the close is done. Never mind that this is the wrong layer to fix such bugs in (impairing systems without such bugs, and what stops the user from doing whatever it is while the flush is going on?), this has severe effects on performance due to all the extra blocking. This is especially notable in the command-line tools. (Text below copied from my comment on issue 2469.)
I transcode on a machine with 128GiB RAM but slow disks: this change causes blocking while the output of my encoding chain is dumped to disk (rather than doing them in parallel with the next phase of the encoding, as it would if the OS was doing the flushing). For operations that do mkvextract/mkvmerge on large encodes' uncompressed intermediate states, this can cause catastrophic slowdowns, sometimes adding in excess of thirty minutes to each transcode while the writes proceed and block everything.
(For the encode I just ran, this change added 54 minutes to the transcode, the time required for mkvextract to pointlessly flush 80GiB to disk rather than dumping it into the OS cache for mkvmerge to read straight back in and then flush that much again, rather than doing the whole lot within seconds, deleting the first file so the OS never needed to write it out at all, then dumping the 80GiB of final output out in the background.)
It might be justifiable to flush still-open files from the GUI, perhaps on GUI close, but doing it in the command-line tools is probably a bad idea. Unlike with a text editor or something, you cannot tell whether or not these files are actually significant output that warrants fsyncing at all, and even if it is you don't want to block the tools because the caller might well be intended to do something else while the enormous spans of time needed to write out video go past. If you block on the write, that becomes impossible.
(Superb tools, as witnessed by the fact that I'm a fairly heavy user but have never needed to make a single bug report before now. The command-line tools just work, and every time I've needed them to do some obscure thing I found they already did it.)