Выпуск языка программирования OCaml 4.14.2

ДоступСн Π½ΠΎΠ²Ρ‹ΠΉ выпуск языка программирования OCaml 4.14.2, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ, ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, ΠΈ Π½Π°Ρ†Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° созданиС бСзопасных ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ языкС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ статичСская типизация, сборка мусора, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΡ‹, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ статичСский Π°Π½Π°Π»ΠΈΠ· Π½Π° стадии компиляции. Код инструмСнтария для языка OCaml распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ LGPL.

ИзмСнСния Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии:

  • Π’ срСдС выполнСния:
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ ΠΊ опрСдСлСниям ΠΈ дСкларированиям Π² стилС Π‘-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
    • Для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² задСйствованы строгиС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹.
    • Для macOS ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ использованиС «-flat-namespace».
    • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Bool_val(v) ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ bool Π² Π‘++;
  • Π’ систСмС сборки:
    • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС ΠΏΡƒΡ‚ΠΈ с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΈ для установки.
    • Для OpenBSD >= 7.3 ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ задСйствован Ρ„Π»Π°Π³ «-no-execute-only».
    • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ сСкциям ΠΊΠΎΠ΄Π° ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΠΈ. НуТно для ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΠ½Π³Π° Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ.
    • ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° интСграция ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния для OpenBSD >= 7.4 для устранСния ошибок с нСдопустимыми инструкциями Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… CPU.
  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ошибки:
    • ΠŸΡ€ΠΈ вычислСнии высокоуровнСвых сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ нСконсистСнтныС равСнства.
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΠΈ для ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… рСкурсивных Ρ‚ΠΈΠΏΠΎΠ².
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ctype.Escape Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… рСкурсивныС Ρ‚ΠΈΠΏΡ‹.
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ compact_allocate для ΠΎΠ±Ρ…ΠΎΠ΄Π° патологичСских случаСв, приводящих ΠΊ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡΠΆΠ°Ρ‚ΠΈΡŽ.
    • АвтоматичСскоС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ эмулируСмого fma для Visual Studio 2019+, Ρ‡Ρ‚ΠΎ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π»ΠΈΠ±ΠΎ с pre-Haswell/pre-Piledriver CPU ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ исполнСниС Π² VirtualBox. ВосстановлСн ΠΏΠ°Ρ€ΠΈΡ‚Π΅Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Windows ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ трСбуСтся явного указания ΠΎΠΏΡ†ΠΈΠΈ «—enable-imprecise-c99-float-ops».
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² caml_unregister_frametable.
    • Π‘ΠΎΠ»Π΅Π΅ разумная рСинициализация I/O ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΠΎΠ² послС fork().
    • УстранСно Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰Π΅Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠ°Π΄Ρ€ΠΎΠ² Π½Π° amd64 BSD (OpenBSD, FreeBSD, NetBSD) систСмах.
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ fix-modulo-cons компиляции Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ «try-with», «&&» ΠΈ «||».
    • Явная сборка Π½Π΅-PIE исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° 32-Ρ… Π±ΠΈΡ‚Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… x86.
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с нСпропуском Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΡƒ ΠΏΡ€ΠΈ компиляции ocamlc.opt ΠΈ ΠΏΡ€ΠΈ использовании systhread.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru