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

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

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

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

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

  • Ավելացվեց ընդհանուր դասի ենթադաս ծնող դասի տարրին նշանակելու հնարավորություն: դաս Foo (T); վերջի դասի Bar(T) < Foo(T); վերջ x = Foo x = Բար
  • Այժմ մակրոները կարող են օգտագործել ընդգծումը՝ for-ի հանգույցում արժեքն անտեսելու համար: {% _, v, i-ի համար {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% վերջ %}
  • Մակրոներին ավելացվեց «file_exists?» մեթոդը: ստուգելու ֆայլի առկայությունը:
  • Ստանդարտ գրադարանն այժմ աջակցում է 128-բիթանոց ամբողջ թվերին:
  • Ավելացվեց Indexable::Mutable(T) մոդուլը` առաջադեմ գործողությունների ներդրմամբ հավաքածուների համար, ինչպիսիք են BitArray-ը և Deque-ը: ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Ավելացվեց XML::Node#namespace_definition մեթոդը XML-ից կոնկրետ անվանատարածք հանելու համար:
  • IO#write_utf8 և URI.encode մեթոդները հնացած են և պետք է փոխարինվեն IO#write_string-ով և URI.encode_path-ով:
  • 32-բիթանոց x86 ճարտարապետության աջակցությունը տեղափոխվել է երկրորդ մակարդակ (պատրաստի փաթեթներն այլևս չեն ստեղծվում): Նախապատրաստվում է ARM64 ճարտարապետության աջակցության առաջին մակարդակ:
  • Աշխատանքները շարունակվում են Windows պլատֆորմին լիարժեք աջակցություն ապահովելու համար: Ավելացվել է Windows վարդակների աջակցություն:
  • MacOS-ի համար ավելացվել է ունիվերսալ փաթեթ, որն աշխատում է ինչպես x86 պրոցեսորներով, այնպես էլ Apple M1 չիպով սարքավորումների վրա։

Source: opennet.ru

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