Apple menerbitkan Pkl, bahasa pengaturcaraan konfigurasi

Apple telah menggunakan sumber terbuka pelaksanaan bahasa konfigurasi Pkl, yang mempromosikan model konfigurasi-sebagai-kod. Kit alat berkaitan Pkl ditulis dalam Kotlin dan diterbitkan di bawah lesen Apache. Pemalam untuk bekerja dengan kod dalam bahasa Pkl disediakan untuk persekitaran pembangunan IntelliJ, Visual Studio Code dan Neovim. Penerbitan pengendali LSP (Language Server Protocol) dijangka dalam masa terdekat.

Pkl menggabungkan ciri-ciri bahasa deklaratif yang mudah difahami dengan ciri-ciri lanjutan bahasa tujuan am. Bahasa ini menyokong anotasi jenis, kelas, fungsi, ungkapan pengiraan, keadaan dan gelung. Pkl boleh digunakan untuk menjana konfigurasi statik dalam pelbagai format, seperti JSON, YAML dan XML, dan untuk menjana modul untuk memproses format konfigurasi tertentu dalam aplikasi dalam pelbagai bahasa pengaturcaraan.

Binding untuk menyepadukan Pkl ke dalam aplikasi disediakan untuk Java, Kotlin, Go dan Swift. Modul untuk penyepaduan dengan rangka kerja Spring dicadangkan secara berasingan. Pengikatan membenarkan, berdasarkan konfigurasi dalam bahasa Pkl, untuk membuat pakej siap sedia dan modul dengan kelas untuk bekerja dengan konfigurasi yang diterangkan dalam aplikasi. Pakej konfigurasi boleh diterbitkan ke repositori dan diimport sebagai kebergantungan, membolehkan kod Pkl dikongsi antara projek yang berbeza.

Bahasa ini menyediakan alat yang fleksibel untuk mentakrifkan keadaan dan menyemak ketepatan nilai, membolehkan anda mengenal pasti ralat dalam konfigurasi akhir sebelum ia digunakan dalam aplikasi. Sebagai contoh, anda boleh menentukan julat nilai yang sah ("port: Int(this > 1000)" atau "age: Int(isBetween(0, 130))"), sama ada ia diperlukan atau tidak dan format (“Kod zip: String(padan(Regex("\\d{5}")))"). Jika anda menetapkan nilai yang tidak memenuhi syarat, pengesah akan membuang ralat (contohnya, jika anda cuba memberikan nilai 1001 kepada parameter yang ditakrifkan sebagai "Int(ini > 1000)").

Sebagai contoh, dalam bahasa Pkl anda boleh menulis modul Application.pkl dengan templat konfigurasi untuk menyambung ke DBMS: modul Nama hos aplikasi: Port rentetan: Persekitaran UInt16: Pangkalan data persekitaran: Pangkalan data kelas Pangkalan data { nama pengguna: Kata laluan rentetan: Hos rentetan: Port rentetan: UInt16 dbName: String } typealias Environment = "dev"|"qa"|"prod"

Seterusnya, anda boleh terus mencipta fail konfigurasi yang menggunakan modul ini untuk menyemak ketepatan nilai: meminda "Application.pkl" nama hos = "localhost" port = 3599 persekitaran = "dev" pangkalan data { hos = "localhost" port = 5786 nama pengguna = “admin” kata laluan = read("env:DATABASE_PASSWORD") dbName = "myapp" }

Dan juga tulis penjana untuk mengautomasikan menukar nombor port untuk empat DBMS berbeza: import “Application.pkl” hidden db: Application.Database = new { hos = “localhost” nama pengguna = “admin” kata laluan = read(“env:DATABASE_PASSWORD” ) dbName = "myapp" } sidecars { untuk (offset dalam Senarai(0, 1, 2, 3)) { (db) { port = 6000 + offset } } }

Jika mahu, anda boleh mengeksport konfigurasi dalam format yang berbeza, contohnya, YAML: sidecars: - nama pengguna: kata laluan admin: hos pemburu2: port localhost: 6000 dbName: myapp - nama pengguna: kata laluan admin: hos pemburu2: port localhost: 6001 dbName : myapp - nama pengguna: kata laluan admin: hos hunter2: port localhost: 6002 dbName: myapp - nama pengguna: kata laluan admin: hos hunter2: port localhost: 6003 dbName: myapp

Gambar rajah konfigurasi Pkl juga boleh ditukar kepada kelas atau struktur untuk dibenamkan dalam kod aplikasi. Sebagai contoh, anda boleh menjana pengikatan untuk Kotlin: import kotlin.Int import kotlin.Long import kotlin.String data class Application( val hostname: String, val port: Int, val environment: Environment, val database: Database ) { data class Pangkalan data( nama pengguna val: String, kata laluan val: String, hos val: String, port val: Int, val dbName: String ) Persekitaran kelas enum( nilai val: String ) { DEV("dev"), QA("qa") , PROD( "prod"); mengatasi keseronokan keString() = nilai } }

Sumber: opennet.ru

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster