ИздаванС Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Haxe 4.0

На Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° инструмСнтариум Haxe 4.0, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° СдноимСнния ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° високо Π½ΠΈΠ²ΠΎ със силно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½Π΅, крос-ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ ΠΈ стандартна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° C++, HashLink/C, JavaScript, C#, Java, PHP, Python ΠΈ Lua, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ компилация Π½Π° JVM, HashLink/JIT, Flash ΠΈ Neko Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄, с Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ собствСнитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° всяка Ρ†Π΅Π»Π΅Π²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. Код Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ разпространява сС ΠΎΡ‚ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· GPLv2 ΠΈ стандартна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π·Π° Haxe Neko ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° MIT.

Π•Π·ΠΈΠΊΡŠΡ‚ Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ към изразяванС със силно писанС. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π·Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ, ΠΎΠ±Ρ‰ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅.
Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Haxe Π΅ близък Π΄ΠΎ ECMAScript ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° сС Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ характСристики ΠΊΠ°Ρ‚ΠΎ статично въвСТданС, ΠΈΠ·Π²ΠΎΠ΄ Π·Π° Π°Π²Ρ‚ΠΎΡ‚ΠΈΠΏ, ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° шаблони, Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»ΠΈ for, AST макроси, GADT (ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Π°Π»Π³Π΅Π±Ρ€ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ), абстрактни Ρ‚ΠΈΠΏΠΎΠ²Π΅, Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ структури, опростСни Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° масиви, ΠΈΠ·Ρ€Π°Π·ΠΈ Π·Π° условна компилация, ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ към ΠΏΠΎΠ»Π΅Ρ‚Π° , класовС ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ, интСрполация Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ ('My name is $name'), ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° Ρ‚ΠΈΠΏΠ° ("new Mainβ€ΉStringβ€Ί('foo')") ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅.

клас ВСст {
статична функция main() {
var Ρ…ΠΎΡ€Π° = [
"Π•Π»ΠΈΠ·Π°Π±Π΅Ρ‚" => "ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅",
"Π”ΠΆΠΎΠ΅Π»" => "Π”ΠΈΠ·Π°ΠΉΠ½"
];

Π·Π° (ΠΈΠΌΠ΅ Π² people.keys()) {
var job = Ρ…ΠΎΡ€Π°[ΠΈΠΌΠ΅];
trace('$name си ΠΈΠ·ΠΊΠ°Ρ€Π²Π° $Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°!');
}
}
}

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ вСрсия 4.0:

  • Нов синтаксис Π·Π° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏ функция "(ΠΈΠΌΠ΅:Низ, Π²ΡŠΠ·Ρ€Π°ΡΡ‚:Int)->Bool" ΠΈΠ»ΠΈ "(String, Int)->Bool" вмСсто "String->Int->Bool".
  • Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° функцията със стрСлка Π΅ "(a, b) -> a + b" вмСсто "функция (a, b) Π²Ρ€ΡŠΡ‰Π° a + b".
  • Π—Π°Ρ‰ΠΈΡ‚Π° срСщу ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΈ стойности (СкспСримСнтална функция, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, класовС ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ).
  • ΠšΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° "final" Π΅ Π·Π° ΠΏΠΎΠ»Π΅Ρ‚Π° Π½Π° клас ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΈ. "final" ΠΌΠΎΠΆΠ΅ ΡΡŠΡ‰ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π° Π΄Π° сС ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈ отмяната ΠΈΠΌ Ρ‡Ρ€Π΅Π· наслСдяванС ΠΈ Π·Π° класовС/интСрфСйси, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ наслСдСни.
  • ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° Unicode стандарт Π·Π° основния Ρ‚ΠΈΠΏ "String" Π·Π° всички Ρ†Π΅Π»ΠΈ Π½Π° компилация с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Neko.
  • Π’Π³Ρ€Π°Π΄Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, прСнаписан ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°, ΠΊΠΎΠΉΡ‚ΠΎ сСга ΠΈΠ΄Π²Π° ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Ρ‚ΠΎ Π•Π²Π°Π». Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° новия ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, скриптовСтС ΠΈ макроситС работят ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ.
  • Нова Ρ†Π΅Π»Π΅Π²Π° систСма Π·Π° компилация (target) Π₯Сшлинк - високопроизводитСлна срСда Π·Π° изпълнСниС, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° спСциално Π·Π° Haxe, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰Π° компилация Π΄ΠΎ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ Π·Π° JIT ΠΈΠ»ΠΈ C, ΠΈΠΌΠ° лСсна интСграция с C, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ниско Π½ΠΈΠ²ΠΎ.
  • Нова JVM Ρ†Π΅Π» - позволява Π²ΠΈ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ jvm Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄, ΠΊΠ°Ρ‚ΠΎ прСскочитС ΡΡ‚ΡŠΠΏΠΊΠ°Ρ‚Π° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Java ΠΊΠΎΠ΄, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Ρ„Π»Π°Π³Π° "-D jvm", ΠΊΠΎΠ³Π°Ρ‚ΠΎ насочватС Π² Java.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ внСдряванС Π² Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ конструктори, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π½Π΅ са Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ²Π°.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ статични Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Ρ‚Π΅ Ρ‚ΠΈΠΏ (ΠΊΠ°Ρ‚ΠΎ "enum") с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° "@:using(path.ToExtension)".
  • АбстрактнитС Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ "set" вСрсия Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° "@:op(a.b)" Π·Π° ΠΏΡ€Π΅Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ "obj.foo = bar".
  • Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Ρ†ΠΈΠΊΡŠΠ»Π° "for" Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° итСрация Π½Π° ΠΊΠ»ΡŽΡ‡-стойност: "for (ΠΊΠ»ΡŽΡ‡ => стойност Π² колСкция) {}".
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° xml-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Π² ΠΈΠ·Ρ€Π°Π·ΠΈ: β€žvar a = β€Ήhi/β€Ί;β€œ. ЗасСга Ρ‚Π°Π·ΠΈ функция Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° само Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ с макроси ΠΈ Π΅ Π½Π° Π΅Ρ‚Π°ΠΏ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅.
  • Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π·Π° Π½Π΅Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π² β€žΠΏΡŠΠ»Π½Π°Ρ‚Π°β€œ нотация Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ структурни Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΅: β€ž{ var ?f:Int; }" (Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚ΠΎ β€ž{ ?f:Int }").
  • БтойноститС Π½Π° Enum Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ стойности ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° функцията: "функция fooβ€ΉTβ€Ί(option:Optionβ€ΉTβ€Ί = None)".
  • Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ "enum abstract Name(BasicType) {}" Π²Π΅Ρ‡Π΅ Π½Π΅ изисква прСфикса "@:" Π² "enum".
  • Автоматично Π½ΠΎΠΌΠ΅Ρ€ΠΈΡ€Π°Π½Π΅ Π·Π° абстрактни изброявания:

    enum abstract Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum abstract Bar(String) {
    var A; // "А"
    var B; // "Π‘"
    }

  • ΠšΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° "extern" Π²Π΅Ρ‡Π΅ Π½Π΅ изисква ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° прСфикса "@:".
  • ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π° опцията "сСчива Dynamic" Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° Π½Π° класа Ρ‡Ρ€Π΅Π· Π½ΠΈΠ·ΠΎΠ²Π΅. ΠŸΡ€Π΅Π΄Π»Π°Π³Π° сС Π·Π° външни класовС ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π· изпълнСниС ΠΎΡ‚ абстрактСн Ρ‚ΠΈΠΏ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ синтаксис β€žA & Bβ€œ Π·Π° прСсичанС Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΉΡ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° само Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ структури ΠΈ ограничСния Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ°. Бтарият синтаксис Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚.
  • Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°Π·Π½ΠΈ СкзСмпляри Π½Π° β€žΠšΠ°Ρ€Ρ‚Π°β€œ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Ρ‡Ρ€Π΅Π· синтаксиса β€žvar map:Mapβ€ΉInt, Stringβ€Ί = [];β€œ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° масив.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° структура ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ "haxe.ds.ReadOnlyArray".
  • ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠΌΠ°Ρ‚ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° (β€œ@:prefix.name function() {…}”). По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ с Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ‚Π΅: β€ž#if (some.flag ... #endβ€œ.
  • Нов сСрвизСн ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° IDE, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² плъгин Π·Π° VSCode.
  • Актуализирани външни Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ (extern) Π·Π° ΡƒΠ΅Π± API ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ липсващи.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€