Rhyddhau iaith raglennu Crystal 1.16

Mae rhyddhau iaith raglennu Crystal 1.16 wedi'i gyhoeddi, y mae ei ddatblygwyr yn ceisio cyfuno cyfleustra datblygiad yn yr iaith Ruby Γ’ nodwedd perfformiad cymhwysiad uchel yr iaith C. Mae cystrawen Crystal yn agos at, ond nid yn gwbl gydnaws Γ’, Ruby, er bod rhai rhaglenni Ruby yn rhedeg heb eu haddasu. Mae'r cod casglwr wedi'i ysgrifennu yn Crystal a'i ddosbarthu o dan drwydded Apache 2.0.

Mae'r iaith yn defnyddio gwirio math statig, sy'n cael ei weithredu heb fod angen nodi'n benodol y mathau o newidynnau a dadleuon dull yn y cod. Mae rhaglenni grisial yn cael eu crynhoi yn ffeiliau gweithredadwy, gyda macros yn cael eu gwerthuso a chod yn cael ei gynhyrchu ar amser llunio. Mewn rhaglenni Crystal, mae'n bosibl cysylltu rhwymiadau a ysgrifennwyd yn C. Perfformir cyfochrog gweithredu cod gan ddefnyddio'r allweddair "silio", sy'n eich galluogi i redeg tasg gefndir mewn modd asyncronig heb rwystro'r prif edau, ar ffurf edafedd ysgafn o'r enw ffibrau.

Mae'r llyfrgell safonol yn darparu set o swyddogaethau nodweddiadol, gan gynnwys offer ar gyfer prosesu CSV, YAML, a JSON, cydrannau ar gyfer creu gweinyddion HTTP a chefnogaeth WebSocket. Yn ystod y datblygiad, gallwch ddefnyddio'r gorchymyn "crystal play", sy'n cynhyrchu rhyngwyneb gwe (localhost:8080 yn ddiofyn) ar gyfer gweithredu cod Crystal yn rhyngweithiol.

Newidiadau mawr:

  • Ychwanegwyd cefnogaeth arbrofol ar gyfer rhedeg edafedd ysgafn (ffibr) mewn cyd-destunau gweithredu ar wahΓ’n (Cyd-destunau Gweithredu), sy'n caniatΓ‘u gweithredu tasgau'n gyfochrog yn fwy effeithlon - nid yw blocio edafedd mewn un cyd-destun yn arwain at stopio gweithredu mewn un arall. mt_context = Fiber::ExecutionContext::MultiThreaded.new("worker-threads", 4) 10.gwaith gwneud mt_context.spawn gwneud do_something diwedd diwedd gtk = Fiber::ExecutionContext::Isolated.new("Gtk") gwneud Gtk.main diwedd gtk.wait
  • Mae'r dull Slice.literal bellach yn darparu allbwn o'r math o elfennau sydd wedi'u cynnwys mewn tafell, ac yn ychwanegu cefnogaeth ar gyfer gweithio mewn cyfieithydd.
  • Mae maint ac aliniad macros yn darparu gwybodaeth am fathau sefydlog.
  • Mae dulliau newydd wedi'u hychwanegu at y llyfrgell safonol: Indexable#find, #find!, EventLoop#wait_readable, a #wait_writable.
  • Mae gan y crynhoydd fersiwn hir o'r opsiwn "-o", "--output", ac mae'r gallu i nodi cyfeiriadur yn lle ffeil wedi'i weithredu (bydd enw'r ffeil yn cael ei ddewis yn unol ag enw'r ffeil gyda'r cod).
  • Bellach mae gan y generadur dogfennaeth y gallu i gynnwys gwrthrychau preifat a gwarchodedig, yn ogystal Γ’ gwrthrychau mewn rhwymiadau llyfrgell (lib, hwyl, undeb, cstruct, allanol, math) yn y ddogfennaeth.
  • Yn y "File.match?" dull Mae algorithm paru llwybr ffeil newydd wedi'i weithredu, sydd wedi dileu rhai problemau a chyfyngiadau. Er enghraifft, nod dianc (mae'r mwgwd "\\t" yn cyfateb i \t" ond nid y nod "t"), hollti llwybr (mae'r mwgwd "a**" yn cyfateb i "ab" ond yn methu ag "ab/c", tra bod y mwgwd "**/a" yn cyfateb i "a"), patrymau nythu (mae'r mwgwd "{[}]}" yn cyfateb i "}"), a'r ystodau (y mwgwd "[esa-")." bellach yn cyfateb yn gywir.
  • Mae'r Γ΄l-ddodiaid "?" wedi'u anghymeradwyo yn enwau paramedrau mewn diffiniadau (defs), macros, a blociau. Ac "!".
  • Yn y dulliau Enumerable#sum a #product, mae'r penderfyniad awtomatig o'r math dychwelyd wedi'i ddileu os yw'r math elfen yn undeb. Wrth alw'r dulliau hyn, mae angen i chi nawr nodi'r math yn benodol, er enghraifft, yn lle β€œ[1, 10000000000_u64].sum” dylech ysgrifennu β€œ[1, 10000000000_u64].sum(0_u64)”.
  • HTTP::Mae cais yn sicrhau dosrannu rhannau URL yn gywir.
  • Cefnogaeth ychwanegol i'r gyfres casglu LLVM 20.
  • Mae'r galwadau i LLVM::ABI a LLVM ::TargetMachine#abi wedi'u diystyru.

    Ffynhonnell: opennet.ru
Prynu gwesteio dibynadwy ar gyfer gwefannau sydd Γ’ diogelwch DDoS, gweinyddwyr VPS VDS πŸ”₯ Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster