Crystal бағдарламалау тілінің шығарылымы 1.2

Crystal 1.2 бағдарламалау тілінің шығарылымы жарияланды, оны әзірлеушілер Ruby тіліндегі әзірлеудің ыңғайлылығын Си тіліне тән жоғары қолданбалы өнімділікпен біріктіруге тырысады. Crystal синтаксисі Ruby-ге жақын, бірақ толық үйлесімді емес, дегенмен кейбір Ruby бағдарламалары өзгертусіз жұмыс істейді. Компилятор коды Crystal тілінде жазылған және Apache 2.0 лицензиясы бойынша таратылады.

Тіл кодтағы айнымалылар түрлерін және әдіс аргументтерін нақты көрсету қажеттілігінсіз жүзеге асырылатын статикалық типті тексеруді пайдаланады. Кристалды бағдарламалар орындалатын файлдарға жинақталады, макростар бағаланады және компиляция уақытында код жасалады. Crystal бағдарламаларында С тілінде жазылған байлауларды қосуға болады. Кодты орындауды параллельдеу «spawn» түйінді сөзі арқылы жүзеге асырылады, ол негізгі ағынды блоктамастан, талшықтар деп аталатын жеңіл жіптер түрінде фондық тапсырманы асинхронды түрде орындауға мүмкіндік береді.

Стандартты кітапхана CSV, YAML және JSON өңдеу құралдарын, HTTP серверлерін жасауға арналған құрамдастарды және WebSocket қолдауын қоса алғанда, жалпы функциялардың үлкен жинағын қамтамасыз етеді. Әзірлеу процесінде Crystal тіліндегі кодты интерактивті орындау үшін веб-интерфейсті (әдепкі бойынша localhost:8080) генерациялайтын «кристалды ойнату» командасын пайдалану ыңғайлы.

Негізгі өзгерістер:

  • Негізгі сыныптың элементіне жалпы сыныптың ішкі сыныбын тағайындау мүмкіндігі қосылды. Foo(T) класы; соңғы класс Bar(T) < Foo(T); соңы x = Foo x = Bar
  • Макростар енді for цикліндегі мәнді елемеу үшін астын сызуды пайдалана алады. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Макростарға «файл_бар?» әдісі қосылды. файлдың бар-жоғын тексеру үшін.
  • Стандартты кітапхана енді 128 биттік бүтін сандарды қолдайды.
  • Indexable::Mutable(T) модулі BitArray және Deque сияқты жинақтар үшін кеңейтілген операцияларды жүзеге асырады. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = шын # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • XML ішінен белгілі бір аттар кеңістігін шығару үшін XML::Node#namespace_definition әдісі қосылды.
  • IO#write_utf8 және URI.encode әдістері ескірген және оларды IO#write_string және URI.encode_path арқылы ауыстыру керек.
  • 32-биттік x86 архитектурасына қолдау көрсету екінші деңгейге ауыстырылды (дайын пакеттер енді жасалмайды). ARM64 архитектурасын қолдаудың бірінші деңгейіне көшу дайындалуда.
  • Windows платформасына толық қолдау көрсету бойынша жұмыс жалғасуда. Windows ұяшықтарына қолдау қосылды.
  • MacOS үшін x86 процессорлары бар құрылғыларда да, Apple M1 чипі бар жабдықта да жұмыс істейтін әмбебап пакет қосылды.

Ақпарат көзі: opennet.ru

пікір қалдыру