Repository navigation
akou 1.2.5
1.2.5 — the last ways a stopped or crashed Worker kept its model memory are closed
1.2.4 made akou give its model memory back in the common cases. Four rarer ones were left, and in each about 2.2 GB stayed in the process until it restarted: the Worker was stopped, or died of an error, while Parakeet was still loaded. Now every Worker that may hold models is asked to free them before it is stopped, and waits out a model load rather than being stopped in the middle of it. The 8-hour soak did not run for this release: the soak never reaches these four paths, and nothing else in the app changed. Instead we measured each path on a Linux server, before and after the fix, as the memory of the server process 20 s after the event.
Server and desktop
- A call's final pass that runs past its time budget, or is stopped at quit, frees its models (#437). It now stops at its next piece and frees its models before it goes: 2171 MB kept before, 22 MB after.
- A job Worker that hits an uncaught error frees its models (#437). The job fails as before, and the Worker is retired cleanly: 2199 MB kept before, 16 MB after. This also fixes a job Worker that crashed between jobs and kept being used, so the next job sent to it never answered.
- A live Worker that crashes frees its models (#437). It is replaced as before: 2197 MB kept before, 36 MB after.
- A job cancelled during a slow model load frees its models (#437). The Worker waits for the load to finish, then frees what it loaded: 2172 MB kept before, 18 MB after.
One case is still out of reach: a Worker whose thread truly dies keeps its memory until the process exits, because Bun runs no finalizers when it tears down a dead Worker. Errors in akou's own code are now caught and reported, so they no longer kill a Worker that way.
Behind the scenes
- A second stable release can now ship on the same day as the one before it, once the terms have been read again that day (#438).
Signed and notarized. The app and the akou command line are signed with a Developer ID and notarized by Apple, so macOS opens them without an extra step, and the microphone and system audio grants should survive updates. Coming from 0.6.0 or older, which were not signed, macOS asks for both grants once more. The speech models are downloaded on first run. See docs/getting-started.md.
What's Changed
- fix(asr): stop four rarer ways a Worker kept 2.2 GB of model memory for good by @GeiserX in #437
- fix(release): let a second release ship on the day of the first once its terms reading is done by @GeiserX in #438
- release: 1.2.5, the last ways a stopped or crashed Worker kept 2.2 GB of model memory are closed by @GeiserX in #439
Full Changelog: v1.2.4...v1.2.5