[ON] Доступен язык программирования OCaml 5.4.0

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6001
ОС: gnu/linux

[ON] Доступен язык программирования OCaml 5.4.0

Сообщение rssbot »

Опубликован релиз языка программирования OCaml 5.4.0, промышленного функционального языка программирования с акцентом на выразительность и безопасность разрабатываемого программного обеспечения. В OCaml сочетается функциональное ядро, императивные возможности, объектная система и модульная система.
Код инструментария для языка OCaml распространяется под лицензией LGPL.


Среди других языков программирования OCaml выделяется своей универсальностью и практичностью, делая тем самым его хорошим выбором для разработки сложных систем. Основные особенности OCaml включают автоматическое управление памятью, функции первого класса, статическую типизацию, полиморфизм, поддержку неизменяемых структур данных, автоматический вывод типов и алгебраические типы данных с сопоставлением шаблонов.


Основные изменения и улучшения в OCaml 5.4.0:
  • Именованные кортежи (Labelled tuples), позволяющие давать имена членам кортежа и затем использовать эти имена для обращения к ним.

    Код:

    let point = ~x:1, ~y:2
    (* val point : x:int * y:int = (~x:1, ~y:2) *)

    let ( * ) (x,~dx) (y, ~dx:dy) =
    x*.y, ~dx:(x *. dy +. y *. dx )

    (* val ( * ) : float * dx:float -> float * dx:float -> float * dx:float *)

    let mult_dx x y =
    let ~dx, .. = x * y in
    dx
  • Неизменяемые массивы и единый синтаксис для "_ array", "_ iarray" и "floatarray".

    Код:

    [|1; 2; 3|]

    ([|1; 2; 3|] : _ iarray)

    ([|1.; 2.; 3.|] : floatarray)
  • Встроенный атрибут "atomic" для полей записей, требующий использования атомарных операций для работы над ними.

    Код:

    type 'a mpsc_list = { mutable head:'a list; mutable tail: 'a list [@atomic] }

    let rec push t x =
    let before = Atomic.Loc.get [%atomic.loc t.tail] in
    let after = x :: before in
    if not (Atomic.Loc.compare_and_set [%atomic.loc t.tail] before after) then
    push t x
    ...
  • Новые модули в стандартной библиотеке: Pair, Pqueue, Repr, Iarray.
    • Модуль Pair для работы с парами;

      Код:

      let ones = Pair.map_fst succ (0,1)
    • Модуль Pqueue - очередь с приоритетом;

      Код:


      module Int_pqueue = Pqueue.MakeMin(Int)
      let q = Int_pqueue.of_list [4;0;5;7]
      let some_zero = Int_pqueue.pop_min q
    • Модуль Repr содержит функции физического и структурного сравнения;

      Код:

      let f = Repr.phys_equal (ref 0) (ref 0)
    • Модуль Iarray для работы с неизменяемыми массивами;

      Код:

      let a = Iarray.init 10 Fun.id
      let b = Iarray.map succ a
  • Восстановлен режим “очистки памяти при выходе”. Этот режим позволяет многократно запускать среду выполнения OCaml в программах на языке C, которые используют библиотеки OCaml. Он также полезен для уменьшения шума при отслеживании утечек памяти в коде C, выполняемого в среде OCaml. Чтобы избежать проблем с "cancellation", все домены объединяются перед выходом из среды выполнения OCaml.
  • Новый раздел в документации по профилированию OCaml-программ в среде Linux и MacOS.
  • Множественные улучшению среды выполнения, кодогенерации, около тридцати новых функций в стандартной библиотеке, почти дюжина улучшенных сообщений об ошибках, более пятидесяти исправлений ошибок.


Источник: https://www.opennet.ru/opennews/art.shtml?num=64035
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 11.10.2025 07:45, всего редактировалось 2 раза.
Причина: Updated upstream
Спасибо сказали: