Rantai alat Nim

Pengenalan perintah utama Nim: compile, run, doc, nimpretty, serta pengelola paket nimble.

Daftar isi

Pemasangan Nim tidak hanya menyertakan compiler, tetapi juga rangkaian alat baris perintah (command line) untuk mengompilasi, menjalankan, mendokumentasikan, memformat kode, dan mengelola paket. Topik ini mendemonstrasikan nim c, nim r, nim doc, nimpretty, dan nimble satu per satu dengan keluaran nyata dari compiler Nim 2.4.0. Dua berkas contoh menyertai topik ini, sehingga setiap perintah dapat diulang persis di terminal.

Mengompilasi dan menjalankan#

Perintah nim c mengompilasi berkas .nim menjadi biner melalui backend C. Berkas kalkulator.nim berikut digunakan sepanjang bagian ini, berisi dua proc, yaitu fungsi dalam Nim, beserta komentar dokumentasi yang diawali tanda ##:

nim kalkulator.nim
## Kalkulator kecil untuk mencoba rantai alat Nim.

proc tambah(a, b: int): int =
  ## Mengembalikan hasil penjumlahan a dan b.
  result = a + b

proc kurang(a, b: int): int =
  ## Mengembalikan hasil pengurangan a dan b.
  result = a - b

echo "24 + 18 = ", tambah(24, 18)
echo "24 - 18 = ", kurang(24, 18)

Kompilasi dilakukan dengan satu perintah, lalu biner hasilnya dipanggil seperti program lain:

bash
# mengompilasi kalkulator.nim menjadi biner
nim c --hints:off kalkulator.nim
# menjalankan biner hasil kompilasi
./kalkulator
text Keluaran
24 + 18 = 42
24 - 18 = 6

Sakelar --hints:off menyembunyikan hint, yaitu pesan progres compiler, agar keluaran contoh tetap ringkas. Hint yang disembunyikan itu sesungguhnya berisi informasi berguna saat kompilasi bermasalah, misalnya berkas konfigurasi yang dibaca, daftar berkas yang dikompilasi, jumlah baris yang dihasilkan, dan lokasi biner keluarannya. Tanpa sakelar tambahan, hasilnya berupa biner dengan pemeriksaan penuh yang cocok untuk pengembangan, sedangkan sakelar -d:release menghasilkan biner yang lebih cepat untuk distribusi.

Nama binernya mengikuti nama modulnya, yaitu kalkulator, dan diletakkan di direktori kerja saat kompilasi dijalankan. Kode antara (nimcache) pada Linux disimpan di direktori cache pengguna, bukan di samping berkas sumber, sehingga direktori proyek hanya menampung berkas sumber dan biner hasilnya. Rilis 2.4.0 menambahkan pula kompilasi inkremental paralel melalui sakelar --ic:on, yang membangun ulang hanya bagian yang berubah dan mempercepat siklus sunting, kompilasi, dan pengujian.

Dua langkah itu dapat digabungkan dengan nim r, yang mengompilasi sekaligus menjalankan program:

bash
# mengompilasi sekaligus menjalankan kalkulator.nim
nim r --hints:off kalkulator.nim
text Keluaran
24 + 18 = 42
24 - 18 = 6

Keluarannya identik karena program yang sama yang dieksekusi, sedangkan argumen yang diletakkan setelah nama berkas diteruskan ke program. Alur kerja harian umumnya menggunakan nim r selama kode masih sering berubah, sedangkan nim c saja digunakan ketika biner akan dipindah atau didistribusikan.

Dokumentasi dengan nim doc#

Komentar yang diawali tanda ## adalah komentar dokumentasi, yaitu teks yang dibaca alat dokumentasi, bukan komentar biasa yang sekadar diabaikan compiler. Perintah nim doc membaca komentar tersebut dan menghasilkan dokumentasi berformat HTML dari simbol yang diekspor:

bash
# membuat dokumentasi HTML dari komentar ## pada berkas sumber
nim doc --hints:off kalkulator.nim
# menampilkan berkas yang dihasilkan
ls htmldocs
text Keluaran
kalkulator.html
nimdoc.out.css

Dokumentasi diletakkan di folder htmldocs yang berisi satu berkas HTML per modul beserta lembar gaya nimdoc.out.css. Berkas kalkulator.html memuat tanda tangan tambah dan kurang lengkap dengan teks komentar dokumentasinya, sehingga halaman itu dapat dibuka langsung di browser. Dokumen hanya menampilkan simbol yang diekspor, yaitu simbol yang dapat diakses dari modul lain, sehingga detail internal proc tidak ikut ditampilkan. Karena itu, komentar dokumentasi paling bermanfaat bila ditulis pada setiap proc yang diekspor, sebagaimana pustaka standar Nim yang halaman dokumentasinya juga dihasilkan dari komentar ## pada kode sumbernya. Lokasi keluaran dapat dipindahkan dengan sakelar --outdir, indeks antarmodul diatur melalui --index, dan seluruh proyek dapat didokumentasikan sekaligus dengan sakelar --project.

Memformat dengan nimpretty#

Nimpretty menyeragamkan format kode Nim, seperti jarak di sekitar operator, spasi setelah tanda baca, dan lebar indentasi, sehingga gaya penulisan konsisten antar penulis. Berkas catatan.nim berikut sengaja ditulis dengan format yang belum rapi:

nim catatan.nim
import strutils

proc kanonik(nama:string):string=
  result=toUpperAscii(nama)

echo kanonik("nim"), " ", "2.4"

Perintah nimpretty membaca berkas tersebut dan menulis versi rapi ke berkas baru karena sakelar --out disertakan:

bash
# memformat catatan.nim ke berkas baru tanpa mengubah aslinya
nimpretty --out:catatan-rapi.nim catatan.nim
# menampilkan isi berkas hasil format
cat catatan-rapi.nim
text Keluaran
import strutils

proc kanonik(nama: string): string =
  result = toUpperAscii(nama)

echo kanonik("nim"), " ", "2.4"

Tanda baca antarparameter dan di sekitar tanda sama dengan kini diberi jarak, sementara isi programnya tidak berubah sama sekali. Gaya hasilnya senada dengan format yang digunakan pustaka standar Nim, sehingga kode terlihat wajar bagi pembaca lain. Lebar indentasi dan panjang baris maksimum dapat diatur lewat --indent dan --maxLineLen, sehingga tim yang mengikuti pedoman gaya tertentu dapat menyelaraskan nimpretty dengannya tanpa konfigurasi tambahan. Format yang konsisten juga membuat perbandingan versi di git hanya memuat perubahan yang berarti, bukan perubahan jarak semata.

Mengelola paket dengan nimble#

Nimble adalah package manager, yaitu alat pemasang pustaka pihak ketiga, yang disertakan bersama compiler Nim. Ribuan paket terhimpun di nimble.directory, sedangkan informasi sebuah proyek paket disimpan dalam berkas .nimble yang menyebut nama paket, versi compiler minimum, dan daftar dependensinya. Versi nimble yang terpasang diperiksa dengan:

bash
# memeriksa versi nimble yang menyertai compiler
nimble --version
text Keluaran
nimble v0.26.2 compiled at 2026-10-28 05:49:14
git hash: couldn't determine git hash

Pemasangan paket dari indeks memerlukan koneksi internet, sehingga perintahnya tidak dijalankan di sandbox. Bentuk umumnya menggunakan nimble install diikuti nama paket, dengan jester sebagai contoh paket:

bash
# tidak-dijalankan
# memasang paket jester dari indeks nimble, membutuhkan koneksi internet
nimble install jester

nimble mengunduh paket beserta seluruh dependensinya dari repositori git, lalu menempatkannya agar dapat diimpor dari kode Nim. Saat membangun atau memasang paket, nimble memeriksa persyaratan versi compiler yang tercantum pada berkas .nimble, lalu mengunduh Nim yang cocok secara otomatis bila versi terpasang tidak memenuhinya. Paket diambil dari repositori git masing-masing, dan daftar paket resminya terbuka bagi siapa pun yang ingin mempublikasikan karyanya. Untuk proyek sendiri, nimble init menyiapkan berkas .nimble, nimble build membangun proyek tersebut, dan nimble test menjalankan pengujian paketnya. Ketiganya bekerja pada folder proyek yang sudah memiliki berkas .nimble.

Kesalahan umum#

Dua pesan berikut paling sering muncul ketika rantai alat ini dipraktikkan pertama kali. Keduanya berasal dari kebiasaan shell dan penamaan berkas, bukan dari kerusakan compiler.

  1. Error: invalid module name saat mengompilasi berkas yang namanya mengandung tanda hubung, misalnya catatan-rapi.nim. Nama modul Nim harus merupakan pengenal yang sah, sehingga tanda hubung tidak diperbolehkan pada nama berkas yang akan dikompilasi. Gunakan garis bawah sebagai gantinya, misalnya catatan_rapi.nim, atau format berkas tersebut dengan nimpretty tanpa perlu mengompilasinya. Pesan yang sama muncul pula bila nim r dipanggil terhadap berkas hasil nimpretty yang namanya bertanda hubung.
  2. command not found saat biner hasil kompilasi dipanggil tanpa awalan ./. Shell pada Linux tidak mencari program di direktori kerja saat ini, sehingga biner kalkulator harus dipanggil sebagai ./kalkulator, bukan sebagai kalkulator. Kebiasaan amannya adalah tetap berada di direktori proyek saat memanggil compiler, sehingga letak biner yang dihasilkan mudah ditebak.

Ringkasan#

  • nim c mengompilasi berkas .nim menjadi biner melalui backend C, sedangkan nim r mengompilasi sekaligus menjalankannya.
  • nim doc menghasilkan dokumentasi HTML dari komentar ## ke dalam direktori htmldocs.
  • nimpretty menyeragamkan format kode dan dapat menulis hasilnya ke berkas baru melalui --out.
  • nimble mengelola paket dari nimble.directory, dengan nimble install memasang paket beserta dependensinya.

Referensi#