Kuburitswa kweCrystal 1.16 programming language kwaburitswa, vagadziri vacho vari kuyedza kubatanidza iko kureruka kwebudiriro mumutauro weRuby nehunyanzvi hwekuita kwekushandisa kwemutauro weC. Syntax yaCrystal iri padyo ne, asi haienderane zvizere ne, Ruby, kunyangwe mamwe mapurogiramu eRuby achimhanya asina kugadziridzwa. Iyo compiler kodhi yakanyorwa muCrystal uye yakagoverwa pasi peiyo Apache 2.0 rezinesi.
Mutauro unoshandisa static type checking, iyo inoshandiswa pasina chikonzero chekutsanangura zvakajeka marudzi ezvinyorwa uye nzira nharo mukodhi. Zvirongwa zveCrystal zvinounganidzwa kuita mafaera anogona kuitiswa, ane macros akaongororwa uye kodhi inogadzirwa panguva yekuunganidza. Mune mapurogiramu eCrystal, zvinokwanisika kubatanidza zvisungo zvakanyorwa muC. Parallelization yekodhi yekushandiswa kunoitwa uchishandisa "spawn" keyword, iyo inokubvumira kuti uite basa rekumashure mune asynchronous mode pasina kuvhara tambo huru, nenzira yezvinyoro zvishoma zvinonzi fibers.
Iyo raibhurari yakajairika inopa seti yeakajairwa mabasa, kusanganisira maturusi ekugadzirisa CSV, YAML, uye JSON, zvikamu zvekugadzira HTTP maseva uye WebSocket rutsigiro. Munguva yekusimudzira, unogona kushandisa iyo "crystal play" murairo, iyo inoumba webhu interface (localhost:8080 by default) yekudyidzana kuuraya kweCrystal code.
Shanduko huru:
- Yakawedzera tsigiro yekuyedza yekumhanyisa tambo dzakareruka (fiber) munzvimbo dzakasiyana dzekuuraya (Execution Contexts), iyo inobvumira kuti iwedzere kunyatso enderana kuita kwemabasa - kuvharira tambo mune imwe mamiriro hakuregi kuurayiwa mune imwe. mt_context = Fiber::ExecutionContext::MultiThreaded.new(«worker-threads», 4) 10.times do mt_context.spawn do do_something end end gtk = Fiber::ExecutionContext::Isolated.new(«Gtk») kuguma gtk.
- Nzira yeSlice.literal yava kupa kubuda kwemhando yezvinhu zviri muchidimbu, uye inowedzera tsigiro yekushanda mumuturikiri.
- Saiziof uye alignof macros inopa ruzivo nezve yakagadzikana mhando.
- Nzira itsva dzakawedzerwa kuraibhurari yakajairika: Indexable#find, #find!, EventLoop#wait_readable, uye #wait_writable.
- Iyo compiler ine vhezheni refu ye "-o" sarudzo, "--output", uye kugona kududzira dhairekitori panzvimbo yefaira kwaitwa (zita refaira richasarudzwa zvinoenderana nezita refaira rine kodhi).
- Iyo jenareta yezvinyorwa ikozvino ine kugona kusanganisa zvakavanzika uye zvakadzivirirwa zvinhu, pamwe nezvinhu zviri muraibhurari zvinosungirwa (lib, mafaro, mubatanidzwa, cstruct, kunze, mhando) mune zvinyorwa.
- Mu "File.match?" nzira Nzira itsva yefaira inoenderana nealgorithm yakaitwa, iyo yakabvisa mamwe matambudziko nemiganhu. Semuyenzaniso, kutiza hunhu (iyo "\\ t" mask inoenderana "\t" asi isiri iyo "t" hunhu), kupatsanura nzira (iyo "a**" mask inoenderana ne "ab" asi inotadza ne "ab/c", ukuwo "**/a" mask ichienderana ne "a"), mapatani akaiswa madendere (iyo "{[}]}" masiki inowirirana "}"), uye mitsara (machisi "[--]" ndiwo machisi
- The suffixes "?" zvakadzikiswa mumazita emaparamita mune tsananguro (defs), macros, uye zvibhuroko. Uye "!".
- MuEnumerable#sum uye #chigadzirwa nzira, iyo otomatiki yekumisikidza yemhando yekudzoka yakakosha yakabviswa kana chinhu chemhando chiri mubatanidzwa. Paunenge uchidana nzira idzi, iwe unofanira ikozvino kunyatso tsanangura rudzi, semuenzaniso, panzvimbo ye "[1, 10000000000_u64].sum" unofanira kunyora "[1, 10000000000_u64].sum(0_u64)".
- HTTP ::Chikumbiro chinovimbisa kupatsanurwa kwakaringana kwezvikamu zveURL.
- Yakawedzera rutsigiro rweLLVM 20 compiler suite.
- Mafoni kuLLVM::ABI neLLVM::TargetMachine#abi adzimwa.
Source: opennet.ru
