11 poin oleh GN⁺ 2025-09-17 | 2 komentar | Bagikan ke WhatsApp
  • Alat perekam terminal asciinema CLI 3.0 telah ditulis ulang sepenuhnya dengan Rust, menambahkan fitur upgrade format file dan live streaming terminal
  • Dengan adopsi Rust, kini tersedia binary statis, waktu mulai yang cepat, serta integrasi AVT yang mempermudah konkurensi dan penanganan system call, sekaligus menyiapkan fondasi untuk implementasi fitur baru
  • Format baru asciicast v3 memperkenalkan timing berbasis interval (delta) untuk event, metadata term yang lebih terstruktur, event keluar "x", dan komentar baris # untuk meningkatkan kemudahan pengeditan dan daya ekspresi
  • Live streaming terminal tersedia dalam dua mode: server bawaan lokal dan relay jarak jauh (self-hosted/server resmi), dengan buffering adaptif sesuai kondisi jaringan untuk pengalaman menonton yang mulus
  • Filosofi dasar kini ditegaskan kembali sebagai Local-first: rec mewajibkan nama file dan upload dipisahkan (upload <file>), serta prompt pemilihan server sendiri memperkuat kemudahan self-hosting dan pencegahan kebocoran data yang tidak disengaja

Rilis 3.0: asciinema CLI yang ditulis ulang dengan Rust dan peningkatan utamanya

  • asciinema CLI 3.0 resmi dirilis
  • Pada versi ini, seluruh kode ditulis ulang dengan Rust sekaligus format file rekaman di-upgrade
  • Beragam fitur seperti live streaming sesi terminal juga ditambahkan atau ditingkatkan

Penulisan ulang ke Rust dan peningkatan menyeluruh

  • CLI ditulis ulang sepenuhnya dengan Rust untuk meningkatkan pengalaman developer dan maintainability, sekaligus menyederhanakan jalur instalasi melalui distribusi binary statis, mempercepat waktu mulai, dan membuka ruang ekspansi fitur
    • Pilihan ini didasarkan pada pengalaman penulis bahwa system call dan penanganan konkurensi lebih mudah dilakukan dibanding Python, dan dengan mengintegrasikan asciinema virtual terminal (AVT) ke dalam CLI, implementasi fitur baru menjadi memungkinkan
  • Hasilnya, dari sisi performa, distribusi, dan arsitektur, telah disiapkan fondasi untuk penambahan fitur di masa depan

Format file asciicast v3

  • Format file asciicast v3 menjadi evolusi yang memperbaiki berbagai kekurangan yang muncul pada v2
  • Timestamp absolut di v2 diganti dengan timing berbasis interval (delta), sehingga masalah penyesuaian massal timestamp berikutnya saat event disisipkan atau dihapus dapat diatasi
  • Header disusun ulang dengan mengelompokkan metadata terkait terminal di bawah key term, serta mendukung event "x" (exit) untuk menyimpan status akhir sesi
  • Komentar baris (#) di dalam file kini diizinkan untuk meningkatkan keterbacaan dan kemudahan pengelolaan
  • Cuplikan contoh disediakan untuk menunjukkan struktur dan komposisi event stream secara intuitif
  • Format baru ini sudah didukung oleh asciinema server dan asciinema player

Live streaming terminal

  • Mode lokal: menyediakan stream yang bisa ditonton di jaringan yang sama melalui server HTTP bawaan, sebagai mode privacy-first di mana data hanya dikirim ke browser penonton
    • CLI dibundel dengan asciinema player terbaru sehingga bisa langsung diputar, meski mungkin perlu membuka port firewall
  • Mode jarak jauh: menggunakan asciinema server (resmi atau self-hosted) sebagai relay untuk mendistribusikan stream melalui URL yang bisa dibagikan
    • Kedua mode dapat digunakan secara bersamaan sehingga konfigurasi distribusi bisa disesuaikan dengan kebutuhan
  • Player menyeimbangkan latensi rendah dan pencegahan buffer underrun melalui buffering adaptif berbasis pengukuran latensi jaringan secara real-time
  • Server mendukung perekaman stream otomatis, namun server operasional asciinema.org saat ini menonaktifkan perekaman dan menerapkan kebijakan batas 1 stream simultan
    • Untuk self-hosting, perekaman aktif secara default dan tidak ada batas stream simultan

Kembali ke Local-first

  • Di masa lalu, asciinema rec memasukkan perilaku upload ke dalam alur default, yang menimbulkan risiko publikasi tanpa sadar dan kebocoran informasi
    • Pada 2.4, prompt pilihan sebelum upload diperkenalkan sebagai persiapan transisi; di 3.0, hal ini dipisahkan lebih tegas dengan nama file wajib, penghapusan fungsi upload dari rec, dan perintah eksplisit upload <file>
  • Filosofi dasar kini dipertegas sebagai local-first, dengan alur yang didesain ulang agar pengguna memutuskan publikasi/berbagi secara sadar
    • Penggunaan lokal sepenuhnya didukung penuh, dan publikasi hanya dilakukan secara eksplisit saat diperlukan

Penguatan kemudahan self-hosting

  • Saat pertama kali menggunakan upload, stream, atau auth, akan muncul prompt pemilihan URL server, yang menawarkan asciinema.org sebagai default namun menyimpan pilihan instance sesuai maksud pengguna
    • Sebelumnya ini juga bisa ditentukan lewat file konfigurasi atau environment variable, tetapi kini penetapan menjadi lebih mudah di lingkungan interaktif seperti VM baru atau Dev container
  • Ini tidak hanya meningkatkan kemudahan penggunaan self-hosting, tetapi juga berfungsi sebagai lapisan keamanan tambahan untuk mencegah upload eksternal yang tidak diinginkan

Distribusi dan panduan penggunaan

  • Diperlukan waktu hingga paket tersedia di repository paket tiap distribusi
  • Sementara itu, binary pra-build untuk GNU/Linux dan macOS dapat diunduh dari rilis GitHub, atau pengguna dapat membangun dari source
  • Release note dan riwayat perubahan detail dapat dilihat di dokumen release notes dan CHANGELOG di GitHub

2 komentar

 
xguru 2025-09-17

Saya sempat berpikir bukankah 3.0 sudah pernah rilis? Jadi saya cari-cari, ternyata itu adalah tulisan dari tahun 2021 yang mengumumkan bahwa saat Player ditulis ulang dengan Rust, ukurannya akan menjadi 4 kali lebih kecil dan 50 kali lebih cepat.

Asciinema - Rekam dan bagikan layar terminal
Asciinema 3.0 - 4 kali lebih kecil, 50 kali lebih cepat

 
GN⁺ 2025-09-17
Komentar Hacker News
  • Asciinema benar-benar alat yang keren, saya memakainya saat merekam semua demo TerminalTextEffects, dan Asciinema GIF Generator (AGG) mengubah file asciicast menjadi GIF terminal berkualitas tinggi, jadi demo bisa dengan mudah dipasang di repositori atau dokumentasi TerminalTextEffects
    Output file raw atau metode seperti termsvg kurang cocok untuk TTE karena menghasilkan data yang sangat besar ke stdout
    Lihat tautan dokumentasi AGG dan repositori TerminalTextEffects

    • Saya sedang menikmati menghias motd server atau pesan startup dengan TTE acak setiap kali dilewati
      Contoh buatan saya bisa dilihat di sini

    • Efek prompt ini benar-benar indah, ada gunanya atau tidak saya harap terus dibuat, saya bisa terpaku menontonnya
      TTE terasa seperti efek fantastis dari window manager Compiz yang dulu pertama kali membuat saya memakai Linux, tapi diwujudkan di terminal
      Saya penasaran bagaimana cara menerapkan TTE ke tmux atau vim sesekali seperti screensaver, apakah perlu dihubungkan lewat pipe, lebih baik pakai alias, dan semacamnya
      Saya ingin tahu biasanya dipakai bagaimana, dibuat awalnya untuk kegunaan apa, dan sekarang dimanfaatkan seperti apa
      Semoga terus dikembangkan

    • t-rec juga alat yang sangat berguna, bisa merekam window yang diinginkan lalu menjadikannya video atau gif
      Tidak sepenuhnya sama, tapi kalau hanya ingin cepat membagikan gif terminal, kadang t-rec lebih mudah

    • File GIF 15MB benar-benar tidak masuk akal
      Tidak bisa dinavigasi, teks tidak bisa dipilih, dan membuang bandwidth 15 kali lipat
      Sangat disayangkan memindahkan teks yang bisa dikompresi dengan baik, mudah dinavigasi, dan aksesibel ke video dalam format terburuk
      Setidaknya akan bagus jika ikut disertakan file raw asciinema atau tautan ke web viewer, sehingga bisa dimuat cepat dan mendukung jeda/navigasi/salin-tempel
      GIF yang hanya berputar cepat hampir tidak menyampaikan maksud apa pun selain kepada pembuatnya sendiri

  • Situs asciinema.org sekarang sedang kebanjiran trafik karena terlalu populer, CPU server yang terhubung ke stream btop mencapai 95%
    Contoh stream tersebut bisa dilihat di sini
    Meski begitu, server Elixir/Phoenix yang berjalan di atas BEAM tetap melayani dengan baik di tengah banyak request dan penggunaan CPU tinggi — inilah kekuatan BEAM
    Saat ini masih bertahan hanya dengan 2 VM ber-RAM 2GB, tapi rasanya sebentar lagi perlu scale up

    • Di era ketika semua infrastruktur condong ke cloud, mengejutkan melihat layanan seterkenal ini berjalan stabil hanya di dua VM 2GB
      Itu bahkan lebih sedikit daripada RAM laptop kelas menengah zaman sekarang, tapi tetap lancar

    • Setelah infrastrukturnya langsung diperbesar, sekarang kembali stabil dan responsif

    • Stream btop saat ini patah-patah parah dan penggunaan CPU terus melonjak liar antara 0% sampai 100%
      Saya jadi penasaran apakah layanannya sedang terus crash lalu restart

    • Hidup BEAM selamanya!

    • Sedikit tips, sebaiknya kurangi interval refresh btop, kalau dijalankan di 100ms btop akan memakan CPU cukup besar

  • Klien Asciinema terus berganti dari Python → Golang → Python → Rust
    Bisa juga melihat dokumen sejarahnya dan blog terkait

    • Untuk proyek seperti ini rasanya tidak terlalu penting diimplementasikan dengan bahasa apa, karena semua bahasa akan memberi performa yang mirip
      Karena codebase-nya kecil, dipindahkan ke bahasa mana pun dampak fungsionalnya minim, jadi menurut saya tidak masalah terus ditulis ulang ke bahasa yang paling memotivasi pengembang

    • Menarik juga
      Menurut saya sebagian besar masalah Go seharusnya bisa diketahui lebih dulu bahkan sebelum mulai menulis kode, hanya dengan riset sederhana pun isu packaging seperti itu sudah merupakan keluhan yang valid pada 2016, tapi kemudian terselesaikan setelah Go modules
      Setelah itu, penulisan ulang beruntun ke ClojureScript, Elixir, dan Rust sulit dilepaskan dari kesan mengejar tren teknologi
      Pergantian bahasa sesering ini menurunkan kepercayaan terhadap rekayasa teknisnya

  • Saya punya afeksi terhadap Asciinema, dan mendukung proyek ini lewat kontribusi kecil serta donasi
    Saya juga merekomendasikan melihat panduan donasi dan bagaimana Asciinema akan terlihat saat menyelesaikan masalah sistem Linux (replay SadServers)

  • Asciinema jelas merupakan alat/produk terbaik yang pernah saya pakai
    Alur autentikasi/upload lewat CLI rapi dan intuitif, jadi walaupun perlu beberapa langkah sama sekali tidak terasa merepotkan
    CLI lain juga ada yang desainnya mirip, tapi Asciinema terasa sama sekali tidak mengganggu

  • Selamat atas pencapaian yang sangat keren ini
    Tapi saya berharap asciinema juga punya fitur bawaan untuk langsung menyimpan sebagai SVG atau GIF
    Dengan begitu bisa langsung disisipkan ke file Markdown tanpa aplikasi konversi terpisah, dan usability-nya akan jadi lebih baik

  • Sebagai penggemar berat Asciinema, menurut saya pekerjaan kali ini sangat keren
    Untuk fitur live streaming, saya pernah merakit sesuatu yang mirip di atas stream milik s2.dev, tempat saya menjadi salah satu co-founder, dan dengan struktur seperti ini sepertinya bisa dilakukan tanpa relay perantara
    Secara pribadi saya suka melihat btop ditampilkan secara real-time
    Untuk referensi struktur live streaming, dokumen ini akan membantu

  • Sekarang setelah ada fitur streaming terminal real-time, akan lucu kalau ada yang menambahkan avatar vtuber ASCII art sebagai overlay di atas terminal

    • Ide ini mengingatkan pada Max Headroom v0.2
  • Asciinema, proyek elixir favorit saya, sekarang bahkan ditulis ulang juga dalam Rust
    Saya sangat menyukai perkembangan ini
    Saya penasaran apakah mereka juga menambahkan fitur untuk otomatis menyensor/memantau informasi sensitif seperti secret atau key dari perintah, sekarang kan ada banyak LLM ringan jadi mestinya lebih mudah daripada dulu

    • CLI-nya memang ditulis ulang dalam Rust, tapi servernya masih Elixir/Phoenix, dan bagian itu cocok sekali untuk fitur seperti pemfilteran informasi sensitif

    • Bukankah dulu awalnya memang dibuat dengan Python?

    • Saya agak bertanya-tanya apakah pertanyaan soal pemfilteran otomatis secret/key dari perintah itu serius atau bercanda

  • Alasan streamer Twitch biasanya memakai dua komputer adalah karena satu dipakai untuk menampilkan layar siaran, dan satu lagi untuk menjalankan OBS serta capture HDMI
    Kalau memanfaatkan fitur live streaming baru Asciinema, developer yang bekerja hanya di konsol/terminal sepertinya bisa langsung men-stream layar terminal dari mesin dev ke mesin OBS tanpa capture HDMI
    Bagi segelintir kecil streamer pemrograman, Asciinema 3 bisa jadi alternatif yang sungguh nyata

    • Dengan streaming Asciinema, hampir tidak ada dampak performa, jadi konfigurasi dual device seperti ini tidak diperlukan
      Setup 2PC dulu muncul karena beban CPU dari encoding x264, tetapi sekarang kalau encoding dilakukan dengan GPU (Nvidia NVENC), bebannya hampir tidak terasa
      OBS x264 praktis tidak dibutuhkan lagi kecuali untuk rekaman offline seperti video YouTube

    • Alasan streamer Twitch memakai 2PC adalah untuk mencegah benturan resource saat menyiarkan game yang banyak memakai GPU
      Selain itu, ini juga mencegah crash driver saat bermain game memengaruhi stream

    • Setup perlengkapan siaran seperti ini pada dasarnya untuk membagi beban encoding video, jadi untuk streamer pemrograman yang hanya bekerja di konsol rasanya memang tidak perlu