Π”ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π΅ Π΅Π·ΠΈΠΊΡŠΡ‚ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ OCaml 5.4.0

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π΅ вСрсия 5.4.0 Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ OCaml, ΠΏΡ€ΠΎΠΌΠΈΡˆΠ»Π΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ с Π°ΠΊΡ†Π΅Π½Ρ‚ Π²ΡŠΡ€Ρ…Ρƒ изразитСлността ΠΈ бСзопасността Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ΠΎΡ‚ΠΎ софтуСрно осигуряванС. Π’ 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 срСда. Π—Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с β€žΠΎΡ‚ΠΌΡΠ½Π°β€œ, всичко Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ сС обСдинява ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π° ΠΎΡ‚ OCaml срСдата Π·Π° изпълнСниС.
  • Нов Ρ€Π°Π·Π΄Π΅Π» Π² докумСнтацията Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° OCaml ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π² срСда Linux ΠΈ MacOS.
  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ подобрСния Π½Π° срСдата Π·Π° изпълнСниС, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄, ΠΎΠΊΠΎΠ»ΠΎ тридСсСт Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄ΡƒΠ·ΠΈΠ½Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ пСтдСсСт ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster