27 сентября 2026 г.
ttfx переносит оптимизации в Rust: черновик на 25% быстрее asm
27 сентября черновой Rust-код ttfx в среднем оказался в 1,25 раза быстрее asm. В нём остались оптимизации для AVX-512, AVX2, SSE2 и Neon.

DHH
@dhh
Дэниел колдует над Rust-версией asm-улучшений для ttfx с оптимизациями под конкретный CPU. Обожаю! Мне всё равно, какой код написали мои агенты. Вот за такие технические задачки я и готов залипнуть 😄🤘
Пока в работе, но в среднем примерно в 10,7 раза быстрее исходного Rust-кода и в 1,25 раза быстрее asm-версии. Всё по-прежнему написано на Rust, с оптимизациями под AVX-512, AVX2, SSE2 и Neon.
· 46,5 тыс. просмотров
Раньше ttfx ускорял эффекты asm-движком. Новый черновик возвращает эти оптимизации в Rust.
26 сентября v0.4.0 добавила asm для всех 37 эффектов. На Ryzen 9 9955HX этот движок был в 9,8 раза быстрее прежнего Rust-кода и в 322 раза быстрее TerminalTextEffects 0.15.0 на CPython 3.14.7. Новый черновик уже показывает 10,7 раза к исходному Rust-коду.
Как устроено. На x86-64 ttfx сам выбирает версию под CPU от SSE2 до AVX-512. На других архитектурах и без NASM он переключается на Rust. Для asm-сборки на x86_64 Linux нужен NASM 3.0 или новее из `$NASM` или `PATH`, иначе сборка предупредит и сделает pure-Rust binary. `TTFX_ASM_SHOW_TIER=1` показывает выбранный движок, `TTFX_ASM=0` отключает asm, `TTFX_ASM=force` требует его и завершает программу с кодом 3 при отказе, а `TTFX_ASM_TIER=n` фиксирует версию под CPU.
Собрать и запустить. Текущую версию можно собрать так: - `git clone https://github.com/omacom-io/ttfx.git` - `cd ttfx` - `cargo build --release`
Проверка запуска: `git log --oneline -10 | ./target/release/ttfx matrix`. CLI принимает pipe, например `ls -la | ttfx decrypt`, показывает справку через `ttfx <effect> --help` и генерирует completion для bash и zsh. Замер 9,8 раза делали на canvas 200×50 с текстом 190×46, без кадровой частоты, с выводом в `/dev/null` и лучшим результатом из 3–5 запусков.
PR #40 переносит asm-движок на aarch64 Linux: на Apple M3 заявлены 5,7 раза к Rust для 32 из 37 эффектов.
Первоисточник
