10 puan yazan GN⁺ 2024-02-04 | 2 yorum | WhatsApp'ta paylaş
  • Pkl ("pickle" diye telaffuz edilir), yapılandırma üretmek için kullanılan bir programlama dilidir; Apple'ın kurum içinde kullandığı aracın açık kaynak haline getirilmesiyle ilk sürümü duyuruldu
    • "Programmable, Scalable, and Safe Configuration"

  • JSON, YAML ve Property Lists gibi statik diller, karmaşıklık arttığında sınırlara ulaşır
  • Pkl, statik diller ile genel amaçlı programlama dilleri arasında bir denge kurmayı hedefler

Pkl Hızlı Tur

  • Geliştiricilere tanıdık gelen sözdizimi ve kolay öğrenme için sınıflar, fonksiyonlar, döngüler ve tür notasyonları gibi özellikler içerir
  • Pkl dosyaları yapılandırma şemasını tanımlar ve başka yapılandırma verilerini tanımlamak için kullanılır
  • Pkl programları YAML, JSON, XML gibi yaygın biçimlere kolayca dönüştürülebilir

Yerleşik doğrulama

  • Veriler geçerli olmalıdır ve Pkl bunu tür notasyonlarıyla sağlar
  • Tür notasyonları kısıtları tanımlayabilir; başarısız olan kısıtlar değerlendirme hatasına yol açar

Paket paylaşımı

  • Pkl, paket yayımlama ve bunları projelerde bağımlılık olarak içe aktarma özelliği sunar
  • GitHub sürümleri üzerinden paketler kolayca oluşturulup yayımlanabilir; bağımlılıklar da proje üzerinden yönetilebilir

Dil bağları

  • Pkl, metin çıktısı olarak yapılandırma üretebilir ve başka dillere kütüphane olarak gömülebilir
  • Pkl şemaları hedef dilin sınıf/yapılarına dönüştürülebilir; Swift, Go, Java ve Kotlin gibi dilleri destekler

Editör desteği

  • Pkl yazma deneyimini mümkün olan en iyi hale getirmeyi hedefler
  • IntelliJ eklentisi dahil olmak üzere JetBrains editörleri için zengin destek sunar
  • Otomatik tamamlama, gezinme ve doğrulama gibi özellikler sağlar; ayrıca Language Server Protocol desteği planlanmaktadır

Sonraki adımlar

  • Pkl hakkında ayrıntılı kılavuzlar, dil referansı ve GitHub Discussions üzerinden iletişim önerilir
  • Pkl kullanım örnekleri için örnek depo, CLI indirmesi ve editör eklentisi kurulumu tavsiye edilir

GN⁺'un görüşü:

  • Pkl, yapılandırma yönetiminin karmaşıklığını çözmek için geliştirilen yeni bir programlama dili olarak geliştiriciler için faydalı görünüyor
  • Yerleşik doğrulama ve paket paylaşımı özellikleri, kodun yeniden kullanılabilirliğini ve bakım kolaylığını artırabilir
  • Farklı dillere bağlanabilmesi ve editör desteği, Pkl'nin daha fazla geliştirme ortamında kullanılmasını sağlayarak geliştiricilerin yapılandırma yönetimini daha kolay yapmasına yardımcı olabilir

2 yorum

 
secret3056 2024-02-05

Ben de öyle olabilir diye düşünmüştüm ama Go binding’i varmış. Görünüşe göre Apple da Go’yu epey kullanıyor.
apple/pkl-go: Go programlama dili için Pkl binding’leri

 
GN⁺ 2024-02-04
Hacker News görüşleri
  • Hacker News yorum özeti:
    • 25 yıl önce çoğu program GUI üzerinden yapılandırma özellikleri ve yardım sunuyordu. Ayarlar ini dosyalarında ya da Windows kayıt defterinde saklanıyordu ve elle de düzenlenebiliyordu. Şimdi ise yapılandırma dosyaları üretmek için 87 MB boyutunda ikili biçimde bir programlama dili kullanmak gerekiyor; üstelik bu dili çalıştırmak için bile önce yapılandırma dosyasını elle oluşturmak gerekiyor. Gidişat böyleyse yakında, yapılandırma dosyası üreten programlama dili için 500 GB’lık bir framework gerekecek gibi görünüyor. Modern geliştiriciler sanki sorun çözmekten çok sorun üretmekle meşgul.
    • Pkl, Apple içinde dahili olarak kullanılan en iyi araçlardan biriydi ve şimdi açık kaynak olarak yayımlanmış olmasına seviniyorum. Bir ekip birkaç bin satırlık k8s yapılandırmasını başarıyla pkl’ye taşıdı; ayrıca pkl kullanarak iki izleme aracı için yapılandırmalar, statik belge sitesi ve bunların hepsini birbirine bağlayan uyarı tanımları yazdı. Bu aracı tavsiye etmek isterim; yeniden kullanabilecek olmak heyecan verici.
    • Pkl, GraalVM Truffle framework’ü kullanılarak inşa edildi ve Futamura projeksiyonunu kullanan çalışma zamanı derlemesini destekliyor. Bu işi Apple ile uzun süredir yürütüyoruz ve sonunda kaynak kodunu görebiliyor olmaktan çok mutluyum. (GraalVM geliştiricisinin yorumu)
    • HTTP kaynağı çekebilme, dosya sisteminden dosya okuyabilme ve Turing-tam olma gibi özellikler bir yapılandırma dili için beklenmedik. Bu kadar karmaşıklığın gerçekten haklı olup olmadığını merak ediyorum.
    • Belgelerin bir kısmını okuyunca, şema tanımı ve dilin en düşük ortak payda işlevi görmesi fikrine fazla kapılmış gibi geldiler. Aşırı kullanımdan doğabilecek beklenmedik hata modları endişe verici. Ama belki de asıl özellik bu: pkl’yi yazılıma ekleyen herkes sonunda ortaya çıkacak yapılandırma canavarının bir parçası oluyor. Bunun dayandığı varsayım da şu: yapısız kaos yerine birleşik bir sistemin daha az kötü olacağı.
    • IntelliJ, Visual Studio Code ve Neovim için eklenti ve uzantılar sunuyor; yakında Language Server Protocol desteği de eklenecek. Neden önce LSP’yi (hatta yalnızca onu) uygulamadıklarını anlamıyorum. Tüm editörler zaten LSP’yi yerleşik olarak destekliyor, dolayısıyla ayrı uygulamalar gerekmezdi.
    • Yapılandırma dili üzerine uzun süre düşündükten ve şemalarla sevgi/nefret ilişkisi yaşadıktan sonra, yapılandırmada zengin tipler istemediğim sonucuna vardım. Statik tipli bir programlama dili kullanıp, yapılandırma dilinde sadece string, dizi ve hash map kullanmak ve tüm tip doğrulamayı ayrıştırma aşamasına itmek istiyorum.
    • Cue’ya benziyor ama daha ilkel, daha az ilkesel ve Java ile yazılmış.
    • Pkl’nin çözmeye çalıştığı problemi anlamakta zorlanıyorum. Başlığı okuyunca Pkl’nin TOML gibi yeni ve daha iyi bir yapılandırma dili olduğunu sanmıştım, ama yazıyı okuyunca Pkl’nin yapılandırma üretmek için bir dil olduğu izlenimine kapıldım. Pkl, yapılandırma dosyasının kendisinden ziyade, yapılandırmayı daha standart bir şekilde kurup yeniden kullanmaya yardımcı olan soyut bir araç gibi görünüyor. Örneğin birden fazla projede paylaşmak ya da tekrar kullanmak istediğiniz Terraform veya Cloudformation yapılandırmaları varsa, en kolay yol bunları başka projelerden kopyalayıp yapıştırmak ve projeye uyacak birkaç satırı değiştirmektir. Pkl bunun gibi sorunları çözmeye mi yardımcı oluyor, yoksa başka bir noktayı mı kaçırıyorum diye merak ediyorum.