deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Sindre Sorhus, SOML'ü yayınladı: Tipleri sözdizimine sabitleyen bir yapılandırma formatı

Sindre Sorhus, bir değerin tipinin içeriğinden değil yazılış biçiminden geldiği taslak spesifikasyonlu bir yapılandırma dili olan SOML'ü yayınladı; JSON'ın katılığını, yorum dostu ve düşük gürültülü bir sözdizimiyle birleştiriyor.

Sindre Sorhus, SOML'ü yayınladı: Tipleri sözdizimine sabitleyen bir yapılandırma formatı

Verimli bir geliştiriciden yeni bir yapılandırma dili

Sindre Sorhus, adı espirili biçimde "Sindre's Objectively Marvelous Language" kelimelerinin kısaltması olan SOML yapılandırma dosyası formatını yayınladı. Projenin deposu 2 Kasım 2026'da Hacker News ana sayfasında görünür görmez tartışmaya açıldı ve spesifikasyonun bir taslak olduğu, geri bildirimlerin memnuniyetle karşılandığı uyarısıyla başlıyor.

README'ye göre SOML, JSON'ın temel modelini — nesne ve dizilerden oluşan ağaç yapısını — ve katılığını korurken, noktalama yükünü atıyor ve JSON'ın hiç sunmadığı şeyleri ekliyor: yorumlar, literal dizeler, blok dizeler, tarihler, anlar (instant) ve süreler.\n

Tek kural: sözdizimi, içerik değil

Format tek bir ilkeye dayanıyor: bir değerin yazılış biçimi tipini belirler ve tip, içerik incelenerek asla değiştirilmez. 123 bir tamsayıdır; '123' bir dizgedir. Dizeler her zaman tırnak taşır; bu yüzden boolean ya da sayıya benzeyen çıplak bir kelime yalnızca bir çözümleme hatasıdır — country: no, ünlü YAML tuzağı gibi false'a dönüşmez, reddedilir.

Kullanım kolaylığı vaadi basit. Bir dosyanın en üst düzeyi süslü parantez gerektirmez, anahtarlar tırnak istemez (tire kullanılabilir) ve satır sonları virgüllerin yerini alır. Yorumlar — hem # satırları hem /* */ blokları — boşluk izin verilen her yerde bulunabilir. Tek tırnaklı dizeler literaldir; böylece Windows yolları ve düzenli ifadeler kaçış karakteri gerektirmez, çift tırnak kaçış dizileri sunar. Çok satırlı metinler, kapanış sınırlayıcısının sütununa göre girintisi azaltılan blok dizelere yazılır.

2026-09-19 gibi tarihler, 2026-09-19T14:00:00Z gibi anlar ve 1h30m gibi süreler birinci sınıf değerlerdir; böylece okuyucu, timeout: 30 değerinin hangi birimi taşıdığını hiç merak etmek zorunda kalmaz. Tamsayılar 64 bite kadar kesindir ve kayan noktalı sayılardan ayrı bir tip olarak kalır — spesifikasyon bilinçli olarak 3 ile 3.0'ı farklı tutar — ve format, alt çizgi ayırıcıları, ikili, sekizli ve onaltılı literaller ile infinity ekler.

Yapısal olarak süslü parantezler ve satır sonları anlamı taşır; girinti tamamen görseldir. Sekmeler, boşluklar ve kopyala-yapıştır — girintinin metin olduğu blok dizelerin dışında — bir belgeyi YAML'daki gibi sessizce değiştiremez.

Mevcut formatlardan daha az acıttığı yer

README'nin çerçevesine göre JSON titiz ama gürültülü — her yerde süslü parantez, tırnak ve virgül, hiç yorum yok — buna karşılık YAML elle yazması kolay ama zihni yorucu. Belge, yaygın kullanılan YAML çözümleyicilerindeki somut hataları listeliyor: YAML 1.1'i izleyen PyYAML no'yu false yapar, 01234'ü sekizli 668 değeri olarak okur ve 22:22'yi 60 tabanlı bir sayı olarak yorumlar; hatta YAML 1.2 bile version: 3.10 değerini 3.1 kayan noktalı sayısı olarak ele alır; js-yaml 9007199254740993 gibi büyük bir tamsayıyı 9007199254740992'ye daraltır; PyYAML yinelenen anahtarların sonuncusunu sessizce tutar; ve YAML'ın varsayılan blok skalerleri sondaki satır sonunu eklerken SOML'ün blok dizeleri bunu eklemmez.

SOML buna karşılık olarak yinelenen anahtarları, tek başına kalmış vekil karakterleri (surrogate) ve aralık dışı sayıları kesin hata yaparak ve tüm anahtarların dize olmasını zorunlu kılarak yanıt verir — 404: anahtarı '404'dür, asla tamsayı ya da boolean değildir.

Uygulamalar arasındaki uzlaşma için tasarlanmış bir spesifikasyon

İki taahhüt daha öne çıkıyor. Birincisi, kurallı (canonical) biçim: eşit değerler eşit baytlara kodlanmalıdır; bu da dosyaları özetleme, imzalama ve karşılaştırma için uygun hale getirir. Kuralları spesifikasyonun parçası olan ayrı bir biçimlendirici, yorumları, üye sırasını ve her değerin yazımını korur; tanımlı düzenleme kuralları da bir aracın bir belgenin geri kalanını bozmadan tek bir değeri yeniden yazmasını sağlar. İkincisi, dil bilgisi ileri bakma olmadan tek geçişte çözümlenir ve her uygulama, yaklaşık 1.000 durum içeren paylaşımlı, dilden bağımsız bir uyum (conformance) paketini çalıştırmak zorundadır — bu da YAML'ı parçalayan çözümleyiciler arası sapmayı önlemeye yönelik açık bir girişimdir.

Neden önemli

Yapılandırma formatları uzun ömürlü altyapılardır; bir öğleden sonra verilen karar bir projeyi on yıl boyunca zorlayabilir. SOML'ün asıl bahsi sözdizimi değil birlikte çalışabilirliktir: kurallı bir kodlama, spesifikasyonla tanımlı bir biçimlendirici ve bir uyum paketi, tam olarak mevcut formatları yoran parçalanmayı — YAML 1.1'e karşı 1.2, bir çözümleyicinin tuhaflığına karşı diğerininki — hedefliyor. Sorhus, açık kaynak JavaScript dünyasının en verimli geliştiricileri arasında ve yardımcı kütüphaneleri çok sayıda npm projesinin içinde; bu da SOML'e çoğu format önerisinin hiç sahip olmadığı bir dağıtım kanalı sağlıyor. Aleyhinde olanlar ise şunlar: spesifikasyon açıkça bir taslak, deponun dışındaki araç desteği henüz kanıtlanmış değil ve JSON ile YAML'ın yerini almak editör desteği, şema ekosistemleri ve yıllarca sürecek benimseme gerektiriyor. İzlenecek ayrıntı uyum paketi — diğer uygulamalar onu sadakatle benimserse SOML insan tarafından yazılan yapılandırma için güvenilir bir varsayılan haline gelebilir; olmazsa hoş bir lehçe olarak kalmayı risk eder.

  • #config-format
  • #developer-tools
  • #open-source
  • #file-formats
  • #npm

İlgili yazılar