Nim 1.4.0 programlama dilinin piyasaya sürülmesi

Bu Eylül ayında birinci yıl dönümünü kutlayan sistem programlama dili Nim'in yeni bir sürümü yayınlandı. ilk kararlı sürüm. Dil, söz dizimi açısından Python'a benzer ve performans açısından neredeyse C++'a benzer. Buna göre SSS Dil büyük ölçüde (katkı sırasına göre) ödünç alınmıştır: Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


C/C++/Objective-C/JS'de derleme yeteneği sayesinde her yerde çalışır. Destekler makrolar, FKÖ, jenerik, ve kesintiler, sıcak kod değiştirme ve daha fazlası. Lisans: MİT.

En önemli değişiklikler:

  • ARC'nin algoritmasını kullanan ancak aynı zamanda döngüsel referansları özel bir şekilde işleyen yeni bir ORC çöp toplayıcı var. -gc:orc seçeneğiyle etkinleştirilir. ARC/ORC farklılıkları hakkında harika bir makale var.

  • Nesnenin değişebilirliği için ek bir kontrol sağlayan katı işlev tanımlarına yönelik bir mod eklenmiştir. Pragma {.experimental: "strictFuncs".} veya --experimental:strictFuncs anahtarı aracılığıyla etkinleştirilir.

  • From anahtar sözcüğü artık operatör olarak kullanılabilir.

  • .noalias pragma eklendi. Anahtar kelimenin sağlayabileceği verimliliği artırmak için C kısıtlama anahtar kelimesiyle eşleşir.

  • Belirli uyarılar artık --warningAsError[X]:on|off aracılığıyla hatalara dönüştürülebilir.

  • Yeni komut: nim r main.nim [args...], main.nim'i derleyip çalıştırır ve --usenimcache'i içerir, böylece sonuç nim c ile aynı mantığı kullanarak $nimcache/main$exeExt'te saklanır - Kaynaklar değişmediğinde yeniden derlemekten kurtulmak için r. Örnek:

nim r derleyici/nim.nim --help # ilk kez derlendi
echo 'içe aktarma işletim sistemi; echo getCurrentCompilerExe()' | nim r - # bu da işe yarıyor
nim r derleyici/nim.nim --fullhelp # yeniden derleme olmadan
nim r —nimcache:/tmp main # ikili dosya /tmp/main'e kaydedildi

  • Derleyicinin hata/uyarı mesajlarını nerede oluşturduğunu gösterecek yeni bir ipucu -hint:msgOrigin eklendi. Bu, mesajın nereden geldiği belli olmadığında yardımcı olur.

  • Arka ucu değiştirmek için —backend:js|c|cpp|objc (veya -b:js, vb.) işareti eklendi.

  • İkili dosyaların nimcache'e gönderilmesi için --usenimcache bayrağı eklendi.

  • Kaldırılan anahtarlar: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Nimsuggest yardımcı programı artık yalnızca ön bildirimi değil, aynı zamanda bir def isteğinin uygulama konumunu da gösteriyor.

Ayrıca standart kitaplığa birçok değişiklik ve birçok hata düzeltmesi eklendi.

Kaynak: linux.org.ru