Crystal ծրագրավորման լեզվի թողարկում 1.5

Հրապարակվել է Crystal 1.5 ծրագրավորման լեզվի թողարկումը, որի մշակողները փորձում են համատեղել Ruby լեզվով մշակման հարմարավետությունը C լեզվին բնորոշ հավելվածների բարձր կատարողականի հետ։ Crystal-ի շարահյուսությունը մոտ է, բայց ոչ լիովին համատեղելի Ruby-ին, չնայած այն հանգամանքին, որ որոշ ruby ​​ծրագրեր աշխատում են առանց վերամշակման: Կազմողի կոդը գրված է Crystal-ով և տարածվում է Apache 2.0 լիցենզիայի ներքո:

Լեզուն օգտագործում է ստատիկ տիպի ստուգում, որն իրականացվում է առանց կոդի մեջ փոփոխականների տեսակների և մեթոդի արգումենտների հստակ նշելու անհրաժեշտության։ Բյուրեղային ծրագրերը կազմվում են գործարկվող ֆայլերի մեջ՝ մակրո գնահատմամբ և կոմպիլյացիայի ժամանակ կոդերի ստեղծմամբ: Crystal ծրագրերում թույլատրվում է միացնել C լեզվով գրված կապերը։ Կոդի կատարման զուգահեռացումն իրականացվում է օգտագործելով «spawn» հիմնաբառը, որը թույլ է տալիս կատարել ֆոնային առաջադրանք ասինխրոն ռեժիմով, առանց հիմնական շարանը արգելափակելու, թեթև թելերի տեսքով, որը կոչվում է մանրաթել (Fiber):

Ստանդարտ գրադարանը տրամադրում է ընդհանուր գործառույթների մեծ շարք, ներառյալ CSV, YAML և JSON-ի հետ աշխատելու գործիքներ, HTTP սերվերներ կառուցելու բաղադրիչներ և WebSocket աջակցություն: Մշակման գործընթացում հարմար է օգտագործել «crystal play» հրամանը, որը ստեղծում է վեբ ինտերֆեյս (լռելյայն՝ localhost:8080)՝ Crystal լեզվով ինտերակտիվ կոդի կատարման համար։

Խոշոր փոփոխություններ.

  • Կազմողն ավելացրել է աբստրակտ մեթոդի իրականացման և դրա սահմանման մեջ փաստարկների անվանումների համապատասխանության ստուգում: Անվան անհամապատասխանությունն այժմ նախազգուշացում է առաջացնում. վերացական դաս FooAbstract աբստրակտ def foo(համարը՝ Int32) . Nil end class Foo < FooAbstract def foo(անունը՝ Int32) : Nil p անվան վերջ վերջ 6 | def foo(name : Int32) : Nil ^— Զգուշացում. «name» դիրքային պարամետրը համապատասխանում է FooAbstract#foo (համարը: Int32), որն ունի այլ անուն և կարող է ազդել անվանված արգումենտի փոխանցման վրա։
  • Երբ փոփոխականի արժեքը վերագրում եք անտիպ մեթոդի արգումենտին, այդ արգումենտն այժմ սահմանափակվում է այդ փոփոխականի տեսակով: class Foo @x. Int64 def initialize(x) @x = x # պարամետր x կլինի @x տիպի վերջի վերջ
  • Մեթոդների կամ մակրոների պարամետրերին ծանոթագրություններ ավելացնելը թույլատրվում է: def foo (@[MaybeUsed] x); վերջ #Լավ
  • Ավելացվել է աջակցություն հաստատունները որպես ինդեքսներ և անուններ բազմոցներում օգտագործելու համար: KEY = "s" foo = {s: "String", n: 0} դնում է foo[KEY].size
  • Ֆայլի API-ում ավելացվել են File#delete? նոր մեթոդներ՝ ֆայլերը և գրացուցակները ջնջելու համար: և Dir#delete?, որոնք վերադարձնում են false, եթե ֆայլը կամ գրացուցակը գոյություն չունի:
  • Ամրապնդեց File.tempfile մեթոդի պաշտպանությունը, որն այժմ թույլ չի տալիս ֆայլի անուն ձևավորող տողերի զրոյական նիշերը:
  • Ավելացվեց NO_COLOR միջավայրի փոփոխական՝ կոմպիլյատորի և թարգմանչի ելքում գունային ընդգծումն անջատելու համար:
  • Զգալիորեն բարելավվել է աշխատանքը թարգմանչի ռեժիմում:

Source: opennet.ru

Добавить комментарий