- OxCaml, OCaml için performans odaklı genişlemeler ekleyen, hızla değişen bir genişleme setidir; Jane Street’in prodüksiyon derleyicisi olarak kullanılır ve OCaml iyileştirmelerini denemek için bir alan görevi görür
- Performansı belirleyen program davranışlarını güvenli, kullanışlı ve öngörülebilir biçimde kontrol etmeyi hedefler; ancak karmaşıklığı yalnızca gerektiği kodlara yükleyen bir tasarımı benimser
- Geçerli tüm OCaml programları OxCaml’de de geçerlidir; bu nedenle yeni bir dilden çok OCaml’in evrimleşmiş bir hali gibi hissettirmeyi amaçlar
- Genişlemeler; veri yarışlarını statik olarak dışlayan eşzamanlılık, bellek yerleşimi ve SIMD erişimi, tahsis kontrolü ve polymorphic parameters, include functor, labeled tuples, immutable arrays gibi kullanım kolaylığı özelliklerine ayrılır
- Açık kaynaklıdır ancak genişlemelerin kararlılığı veya geriye dönük uyumluluğu garanti edilmez; dune·opam uyumlu paket yönetimi ile LSP, biçimlendirici ve dokümantasyon üretim araçlarını içeren değiştirilmiş bir OCaml araç seti sunar
OxCaml’in hedefleri ve tasarım ilkeleri
- OxCaml, OCaml programlama dili için hızla değişen bir genişleme setidir
- Jane Street’in prodüksiyon derleyicisi olarak kullanılır
- Aynı zamanda OCaml’i performans odaklı programlamaya uygun biçimde geliştirmek için bir deney alanıdır
- Zamanla bazı genişlemeleri upstream OCaml’e katkı olarak sunmayı umar
- Performans açısından önemli program davranışlarını güvenli, kullanışlı ve öngörülebilir şekilde kontrol etmek temel tasarım hedefidir
- Güvenlik, programcı üretkenliği ve doğru kodun dağıtıma alınması için önemli bir özellik olarak görülür
- Kullanışlılık, aşırı anotasyon gerektirmeden kontrol gücü sunmaya odaklanır
- Genişletilmiş tür sisteminde de OCaml’in tür çıkarımını korumaya çalışır
- Öngörülebilirlik, yalnızca OCaml koduna bakarak performans özelliklerini anlamayı kolaylaştıran niteliği korumaya ve geliştirmeye yöneliktir
- Temel performans ayrıntılarını tür düzeyinde açıkça görünür kılma yaklaşımı benimsenir
- pay-as-you-go yaklaşımıyla, daha fazla optimizasyon olanağı sunarken bu olanakları kullanmayan koda ek karmaşıklık dayatmaz
- Geçerli tüm OCaml programları OxCaml’de de geçerlidir
- OxCaml, yeni bir dilden ziyade OCaml’in daha iyi bir sürüme evrilmiş hali gibi hissettirmeyi amaçlar
- OCaml’in temel tasarım anlayışını, güvenliğini, sadeliğini ve üretkenliğini korumaya çalışır
Genişleme alanları ve kullanım koşulları
- OxCaml genişlemeleri, performans kontrolü ve dil kullanım kolaylığı etrafında birkaç alana ayrılır
- Fearless concurrency: Tür sistemine yapılan eklemelerle veri yarışlarını statik olarak dışlar
- Layouts: Programcıların verinin bellek yerleşimini belirlemesine ve SIMD işlemci genişlemelerine yerel olarak erişmesine olanak tanır
- Control over allocation: Tahsisi kontrol ederek GC baskısını azaltır ve programı önbellek açısından verimli ve deterministik hale getiren araçlar sunar
- Quality of life: Günlük işlerde faydalı bulunan genişlemeleri de içerir
- Polymorphic parameters
- Include functor
- Labeled tuples
- Immutable arrays
- OxCaml açık kaynaklıdır ve deneysel kullanıcılara açıktır
- Özellikle araştırmacıların ve deney yapan kullanıcıların sistemi deneyip geri bildirim vermesi beklenir
- OxCaml genişlemeleri güçlü biçimde deneysel nitelik taşır; kararlılık veya geriye dönük uyumluluk garanti etmez
- Buna karşın OCaml ile geriye dönük uyumluluk korunur
- Kullanım kolaylığı için değiştirilmiş standart OCaml araç seti sunulur
- dune ve opam ile uyumlu paket yönetimi
- LSP sunucusu üzerinden editör entegrasyonu
- Kaynak kod biçimlendirme
- Dokümantasyon üretimi
- Jane Street’in açık kaynak kütüphaneleri ve araçları iki biçimde yayımlanır
- upstream OCaml için olan sürüm, OxCaml genişlemeleri çıkarılmış halidir
- OxCaml için olan sürüm, genişlemeleri aktif biçimde kullanan halidir
- Tüm genişlemeler çıkarılabilir olmadığından bazı kütüphaneler yalnızca OxCaml’e özel sunulur
- Gerekli genişlemeler upstream’e entegre edilirse, ilgili kütüphanelerin OCaml uyumlu sürümlerini yayımlamayı planlar
Henüz yorum yok.