Rust 1.93.1 Dirilis: Tiga Regresi Kritis dari 1.93.0 Diperbaiki
Programming Rust #rust #release #patch #rustup

Rust 1.93.1 Dirilis: Tiga Regresi Kritis dari 1.93.0 Diperbaiki

A
Abd. Asis
5 min read
Bagikan:

Dua minggu setelah Rust 1.93.0 dirilis pada 22 Januari 2026, tim rilis Rust meluncurkan patch release 1.93.1 pada 12 Februari 2026. Ini bukan rilis fitur — melainkan respons cepat terhadap tiga regresi yang masuk bersama 1.93.0 dan mempengaruhi workflow nyata developer.

Patch release seperti ini adalah tanda ekosistem yang matang. Alih-alih membiarkan bug bertahan sampai siklus rilis berikutnya (enam minggu), tim Rust memilih merilis perbaikan secepat mungkin begitu regresi terkonfirmasi. Bagi developer yang aktif menggunakan rustfmt, clippy, atau membangun binary WebAssembly, pembaruan ini relevan untuk segera diaplikasikan.

Artikel ini membahas konteks Rust 1.93.0 yang membawa perubahan substansial, lalu menjelaskan ketiga bug yang diperbaiki di 1.93.1 beserta cara update.


Apa yang Berubah di Rust 1.93.0

Sebelum memahami bug yang diperbaiki, perlu diketahui perubahan apa yang masuk di 1.93.0 — karena ketiga regresi itu lahir dari sana.

Musl 1.2.5 untuk Target Linux Statis

Rilis 1.93.0 memperbarui bundled musl libc dari versi 1.2.3 ke 1.2.5 untuk semua target *-linux-musl. Perubahan ini membawa perbaikan signifikan pada DNS resolver musl — binary statis Linux kini lebih andal saat menangani DNS records besar dan recursive nameservers. Ini penting bagi developer yang mendistribusikan executable statis di lingkungan container atau sistem tanpa dynamic linking.

Global Allocator Bisa Pakai Thread-Local Storage

Sebelum 1.93.0, membuat global allocator kustom yang menggunakan thread_local! atau std::thread::current berisiko menyebabkan re-entrancy — allocator memanggil dirinya sendiri secara rekursif saat mencoba mengalokasikan memori untuk thread state. Rust 1.93.0 menyelesaikan masalah ini dengan mengizinkan global allocator yang ditulis di Rust untuk menggunakan kedua konstruk tersebut tanpa konflik, selama mereka mengandalkan system allocator di bawahnya.

cfg Attributes pada Inline Assembly

Fitur ini memungkinkan #[cfg] diterapkan pada baris individual di dalam blok asm!, global_asm!, atau naked_asm!. Sebelumnya, untuk mengkondisikan instruksi assembly tertentu, seluruh blok asm! harus diulang. Sekarang cukup tandai baris yang relevan:

use std::arch::asm;

fn get_cpu_feature_flag() -> u32 {
    let result: u32;
    unsafe {
        asm!(
            "mov eax, 1",
            "cpuid",
            #[cfg(target_feature = "avx2")]
            "and ecx, 0x10000000",
            #[cfg(not(target_feature = "avx2"))]
            "xor ecx, ecx",
            "mov {0:e}, ecx",
            out(reg) result,
            options(nostack)
        );
    }
    result
}

Dengan #[cfg] per baris, kode inline assembly menjadi lebih bersih tanpa duplikasi blok untuk setiap kondisi kompilasi.

23 API Baru yang Distabilkan

1.93.0 juga menstabilkan cukup banyak API, di antaranya:

  • String::into_raw_parts dan Vec::into_raw_parts — mengekstrak pointer mentah, panjang, dan kapasitas dari String/Vec sekaligus
  • Operasi integer unchecked: unchecked_neg, unchecked_shl, unchecked_shr — aritmatika tanpa pemeriksaan overflow untuk konteks unsafe yang butuh performa maksimal
  • Metode slice-to-array: as_array dan as_mut_array untuk konversi slice ke fixed-size array reference
  • VecDeque::pop_front_if — menghapus elemen depan hanya jika memenuhi predikat tertentu
  • Duration::from_nanos_u128 — membuat Duration dari nilai u128 nanoseconds, berguna untuk presisi tinggi

Tiga Regresi yang Diperbaiki di 1.93.1

Internal Compiler Error pada rustfmt

Bug pertama adalah internal compiler error (ICE) yang muncul saat compiler mencoba memulihkan kata kunci yang digunakan sebagai identifier non-keyword. Dalam banyak kasus, ini mempengaruhi rustfmt secara langsung — tool yang biasa dijalankan sebagai pre-commit hook atau CI step.

ICE adalah kategori bug paling mengganggu di compiler: bukannya error pesan yang jelas, developer mendapat crash dengan backtrace panjang yang tidak informatif. Jika rustfmt tiba-tiba crash di proyek yang sebelumnya normal setelah update ke 1.93.0, ini penyebabnya.

False-Positive pada clippy::panicking_unwrap

Bug kedua mempengaruhi lint clippy::panicking_unwrap. Clippy secara keliru melaporkan warning pada kode yang sebenarnya aman — khususnya saat ada akses field dengan implicit dereference. Contoh pola yang bisa memicu false-positive ini:

struct Config {
    value: Option<String>,
}

fn process(config: &Config) {
    if config.value.is_some() {
        // Clippy 1.93.0 salah melaporkan ini sebagai panicking
        let val = config.value.as_ref().unwrap();
        println!("{}", val);
    }
}

Kode di atas sudah benar — unwrap() tidak akan panic karena guard is_some() sebelumnya. Tapi Clippy 1.93.0 tidak mengenali pola ini dengan benar saat ada implicit dereference di tengah rantai akses. 1.93.1 memperbaiki analisis ini.

Kebocoran File Descriptor pada Target wasm32-wasip2

Bug ketiga bersifat lebih spesifik: kebocoran file descriptor pada target wasm32-wasip2. Ini adalah regresi yang diperkenalkan oleh pembaruan dependensi terkait WebAssembly. Jika membangun binary untuk target WASI Preview 2, binary yang dikompilasi dengan 1.93.0 berpotensi membocorkan file descriptor — yang di lingkungan serverless atau runtime sandbox bisa menyebabkan resource exhaustion.

Perbaikan ini juga datang dengan catatan: hanya komponen yang didistribusikan melalui rustup yang otomatis mendapat perbaikan. Developer yang menggunakan build toolchain lain perlu memverifikasi dependensi mereka sendiri.


Update ke 1.93.1

Jika menggunakan rustup, satu perintah sudah cukup:

rustup update stable

Verifikasi bahwa update berhasil dengan memeriksa versi aktif:

rustc --version
rustc 1.93.1 (3a85a5cfe 2026-02-12)

Untuk project yang menggunakan rust-toolchain.toml atau rust-toolchain file, perbarui nilai channel atau version secara eksplisit:

# rust-toolchain.toml
[toolchain]
channel = "1.93.1"

Catatan

Beberapa hal yang perlu diingat saat menerapkan update ini:

  • Jika rustfmt crash setelah update ke 1.93.0, update ke 1.93.1 menyelesaikan masalah tersebut tanpa perlu perubahan kode.
  • Developer yang menggunakan target wasm32-wasip2 sebaiknya segera update — kebocoran file descriptor di runtime WASI bisa berdampak nyata pada stabilitas aplikasi.
  • False-positive Clippy biasanya tidak memblokir build kecuali konfigurasi CI menggunakan #[deny(clippy::all)]. Jika ada warning yang tiba-tiba muncul di kode yang sebelumnya bersih, cek apakah itu clippy::panicking_unwrap.
  • Rilis 1.94.0 sudah dijadwalkan — patch release ini tidak mengganggu siklus rilis reguler enam mingguan.

Kesimpulan

Rust 1.93.1 adalah pengingat bahwa ekosistem Rust cukup matang untuk merespons regresi dengan cepat tanpa menunggu siklus rilis penuh. Tiga perbaikan di release ini — compiler stability untuk rustfmt, analisis Clippy yang lebih akurat, dan kebersihan resource pada target WASI — langsung menyentuh workflow developer sehari-hari. Update sekarang, lanjutkan eksplorasi fitur-fitur baru yang masuk di 1.93.0 dan yang akan datang di 1.94.0.

Referensi

  1. 1Announcing Rust 1.93.1 — The Rust Programming Language Blog
  2. 2Announcing Rust 1.93.0 — The Rust Programming Language Blog
  3. 3Rust 1.93.1 Changelog — releases.rs

Tentang Penulis

Abd. Asis

Abd. Asis

Software Developer dan Laravel Programmer dari Madura, Indonesia. Passionate tentang PHP, Laravel, dan teknologi web modern.

Artikel Terkait

Artikel lain yang mungkin menarik untuk kamu