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

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

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

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

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

  • Құрастырушы абстрактілі әдісті жүзеге асыруда және оның анықтамасында аргумент атауларының сәйкестігін тексеруді қосты. Атау сәйкессіздігі болса, ескерту енді шығарылады: дерексіз класс FooAbstract абстракт def foo(сан: Int32) : Nil соңы Foo < FooAbstract def foo(name : Int32) : Nil p атауының соңы 6 | def foo(name : Int32) : Nil ^— Ескерту: 'name' позициялық параметрі қайта анықталған FooAbstract#foo(number : Int32) әдісінің 'санына' сәйкес келеді, оның атауы басқаша және аталған аргументтің өтуіне әсер етуі мүмкін.
  • Түрленбеген әдіске айнымалы мәнге аргумент тағайындаған кезде, аргумент енді сол айнымалының түріне шектеледі. class Foo @x : Int64 def initialize(x) @x = x # x параметрі теріледі @x end end
  • Әдістердің немесе макростардың параметрлеріне аннотациялар қосуға мүмкіндік береді. def foo(@[МүмкінUnused] x); аяқталды # Жарайды
  • Константаларды кортеждерде индекстер мен атаулар ретінде пайдалануға қолдау қосылды. KEY = "s" foo = {s: "String", n: 0} foo[KEY].size қояды
  • Файлдар мен каталогтарды жою үшін File API-ге жаңа File#delete әдістері қосылды. және Dir#delete?, егер файл немесе каталог жоқ болса, қатені қайтарады.
  • File.tempfile әдісінің қорғауы күшейтілді, ол енді файл атауын құрайтын жолдарда бос таңбаларға рұқсат бермейді.
  • NO_COLOR айнымалы ортасы қосылды, ол компилятор мен интерпретатор шығысында түсті бөлектеуді өшіреді.
  • Аудармашы режиміндегі жұмыс айтарлықтай жақсарды.

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

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