lingo.dev@0.138.5
lingodotdev/lingo.devlingo.dev@0.138.5Aug 19, 2026by github-actions[bot]
AI Summary
Performance optimizations for `lingo.dev run` significantly reduce the time taken for projects with many bucket paths and locales by minimizing redundant lockfile writes.
Key Highlights
- Writes the `i18n.lock` pattern section once instead of performing full read-modify-write cycles for every locale.
- Optimized lockfile loading by attempting a plain parse first before running the full deduplication pass.
- Serialization of writes ensures efficiency without changing the contents of `i18n.lock`.
Full Release Notes
### Patch Changes - [#2191](https://github.com/lingodotdev/lingo.dev/pull/2191) [`fa77c24`](https://github.com/lingodotdev/lingo.dev/commit/fa77c24701e19be876f746edbc22a188f0812b5a) Thanks [@cherkanovart](https://github.com/cherkanovart)! - Speed up `lingo.dev run` on projects with many bucket paths and locales. Every translation task rewrote the whole `i18n.lock`, so a run performed `patterns × locales` full read-modify-write cycles to persist `patterns` sections. Since every target locale of a bucket path derives its checksums from the same source data, all but the first write per pattern stored identical bytes. A run now writes a pattern's section once, and those writes are serialized against each other. Loading the lockfile also ran the deduplication pass — a full CST parse plus a re-serialization of the entire file — on every load. Deduplication only repairs a hand-merged lockfile, which is exactly the case `YAML.parse` rejects, so the load now tries the plain parse first and falls back to the repair path only when that fails. Malformed and hand-merged lockfiles keep loading exactly as before. The contents of `i18n.lock` are unchanged.