10 poin oleh GN⁺ 2024-02-04 | 2 komentar | Bagikan ke WhatsApp
  • Pkl(dibaca seperti Pickle) adalah bahasa pemrograman untuk menghasilkan konfigurasi, yang sebelumnya digunakan secara internal oleh Apple lalu di-open-source dan diumumkan rilis pertamanya
    • "Configuration that is Programmable, Scalable, and Safe"

  • Bahasa statis seperti JSON, YAML, dan Property Lists memiliki keterbatasan saat kompleksitas meningkat
  • Pkl bertujuan menciptakan keseimbangan antara bahasa statis dan bahasa pemrograman tujuan umum

Tur singkat Pkl

  • Menyertakan fitur seperti class, function, loop, dan anotasi tipe agar sintaksnya familier bagi developer dan mudah dipelajari
  • File Pkl digunakan untuk mendefinisikan skema konfigurasi, dan juga untuk mendefinisikan data konfigurasi lainnya
  • Program Pkl dapat dengan mudah dirender ke format umum seperti YAML, JSON, dan XML

Validasi bawaan

  • Data harus valid, dan di Pkl validitas dicapai dengan menggunakan anotasi tipe.
  • Anotasi tipe dapat mendefinisikan constraint, dan constraint yang gagal akan memunculkan evaluation error.

Berbagi paket

  • Pkl menyediakan kemampuan untuk memublikasikan paket dan mengimpornya sebagai dependency di dalam proyek
  • Paket dapat dengan mudah dibuat dan dipublikasikan melalui GitHub Releases, dan dependency dapat dikelola melalui proyek

Language binding

  • Pkl dapat menghasilkan konfigurasi sebagai output teks, dan juga dapat di-embed sebagai library di bahasa lain.
  • Skema Pkl dapat dihasilkan menjadi class/struct dalam bahasa target, dengan dukungan untuk Swift, Go, Java, Kotlin, dan lainnya

Dukungan editor

  • Bertujuan menghadirkan pengalaman terbaik untuk menulis Pkl
  • Menyediakan dukungan yang kaya untuk editor JetBrains, termasuk plugin IntelliJ
  • Menyediakan fitur seperti autocomplete, navigasi, dan validasi, serta berencana mendukung Language Server Protocol

Langkah berikutnya

  • Menyarankan panduan mendetail tentang Pkl, referensi bahasa, dan komunikasi melalui GitHub Discussions
  • Merekomendasikan sample repository untuk contoh penggunaan Pkl, unduhan CLI, dan pemasangan plugin editor

Pendapat GN⁺:

  • Pkl adalah bahasa pemrograman baru yang dibuat untuk mengatasi kompleksitas pengelolaan konfigurasi, dan tampaknya akan berguna bagi para developer.
  • Fitur validasi bawaan dan berbagi paket dapat meningkatkan reusabilitas dan maintainability kode.
  • Binding ke berbagai bahasa dan dukungan editor memungkinkan Pkl diterapkan di lebih banyak lingkungan pengembangan, sehingga membantu developer mengelola konfigurasi dengan lebih mudah.

2 komentar

 
secret3056 2024-02-05

Saya sempat bertanya-tanya, ternyata ada binding Go. Sepertinya Apple juga cukup banyak menggunakan Go.
apple/pkl-go: Binding Pkl untuk bahasa pemrograman Go

 
GN⁺ 2024-02-04
Opini Hacker News
  • Ringkasan komentar Hacker News:
    • 25 tahun lalu, sebagian besar program menyediakan fitur konfigurasi dan bantuan melalui GUI. Konfigurasi disimpan dalam file ini atau registri Windows, dan juga bisa diedit secara manual. Sekarang kita harus menggunakan bahasa pemrograman berbentuk biner berukuran 87MB untuk menghasilkan file konfigurasi, dan untuk menjalankan bahasa ini sendiri kita juga harus membuat file konfigurasi secara manual. Dalam situasi seperti ini, rasanya nanti akan dibutuhkan framework 500GB, dan itu pun untuk bahasa pemrograman yang dipakai membuat file konfigurasi. Pengembang modern tampak seperti bekerja menciptakan masalah.
    • Pkl adalah salah satu alat terbaik yang pernah digunakan secara internal di Apple, dan menyenangkan melihatnya kini dirilis sebagai open source. Satu tim berhasil memigrasikan beberapa kloc konfigurasi k8s ke pkl, lalu memakai pkl untuk menulis konfigurasi bagi dua alat pemantauan, menghasilkan situs dokumentasi statis, dan mendefinisikan alert yang menghubungkan semuanya. Alat ini layak direkomendasikan, dan sangat menyenangkan bisa memakainya lagi.
    • Pkl dibangun menggunakan framework GraalVM Truffle, serta mendukung kompilasi runtime dengan Futamura projection. Sudah lama bekerja bersama Apple untuk proyek ini, dan sangat senang akhirnya bisa melihat kode sumbernya. (Komentar dari pengembang GraalVM)
    • Kemampuan mengambil resource HTTP, membaca file dari file system, dan sifat Turing-complete adalah fitur yang tidak terduga untuk bahasa konfigurasi. Muncul pertanyaan apakah kompleksitas seperti ini memang layak.
    • Setelah membaca dokumentasinya sedikit, terasa mereka terlalu terpaku pada gagasan membuat bahasa sebagai definisi skema dan pembawa nilai minimum. Ada kekhawatiran tentang mode kegagalan tak terduga akibat penggunaan berlebihan. Namun mungkin inilah fitur intinya: siapa pun yang menambahkan pkl ke perangkat lunak pada akhirnya ikut berpartisipasi dalam menghasilkan monster konfigurasi. Ini berangkat dari asumsi bahwa sistem yang terpadu akan lebih baik daripada kekacauan tanpa struktur.
    • Tersedia plugin dan extension untuk IntelliJ, Visual Studio Code, dan Neovim, serta dukungan Language Server Protocol akan segera ditambahkan. Sulit memahami mengapa mereka tidak mengimplementasikan LSP lebih dulu (atau bahkan satu-satunya). Semua editor sudah mendukung LSP secara bawaan, jadi implementasi terpisah seharusnya tidak diperlukan.
    • Setelah lama memikirkan bahasa konfigurasi, dan mengalami hubungan cinta-benci dengan skema, ada kesimpulan bahwa tipe yang kaya tidak diinginkan dalam konfigurasi. Lebih baik menggunakan bahasa pemrograman bertipe statis, sementara dalam bahasa konfigurasi cukup memakai string, array, dan hash map sebagai tipe, lalu mendorong semua validasi tipe ke tahap parsing.
    • Mirip Cue, tetapi lebih primitif, kurang berprinsip, dan ditulis dalam Java.
    • Sulit memahami masalah apa yang ingin diselesaikan Pkl. Setelah membaca judulnya, kesannya Pkl adalah bahasa konfigurasi baru yang lebih baik seperti TOML, tetapi setelah membaca artikelnya, justru terasa bahwa Pkl adalah bahasa untuk menghasilkan konfigurasi. Pkl tampaknya merupakan alat abstraksi yang membantu membangun dan menggunakan ulang konfigurasi dengan cara yang lebih terstandarisasi, bukan file konfigurasi itu sendiri. Misalnya, ketika ada konfigurasi Terraform atau Cloudformation yang ingin dibagikan atau diulang di beberapa proyek, cara termudah biasanya adalah menyalinnya ke proyek lain lalu mengubah beberapa baris agar sesuai. Apakah Pkl membantu menyelesaikan masalah seperti ini, atau ada hal lain yang terlewat?