Ukukhishwa kolimi lohlelo lwe-Crystal 1.16 kushicilelwe, abathuthukisi balo abazama ukuhlanganisa ukunethezeka kwentuthuko ngolimi lwesiRuby nesici sokusebenza esiphezulu solimi C. I-syntax ye-Crystal iseduze, kodwa ayihambisani ngokugcwele ne-Ruby, nakuba ezinye izinhlelo ze-Ruby zisebenza ngaphandle kokuguqulwa. Ikhodi yokuhlanganisa ibhalwe nge-Crystal futhi isatshalaliswa ngaphansi kwelayisensi ye-Apache 2.0.
Ulimi lisebenzisa ukuhlola kohlobo olungaguquki, okusetshenziswa ngaphandle kwesidingo sokucacisa ngokusobala izinhlobo zokuguquguquka nama-agumenti endlela kukhodi. Izinhlelo ze-Crystal zihlanganiswa zibe amafayela asebenzisekayo, nama-macros ahloliwe kanye nekhodi ekhiqizwa ngesikhathi sokuhlanganisa. Ezinhlelweni ze-Crystal, kungenzeka ukuxhuma izibopho ezibhalwe ku-C. Ukufana kokukhishwa kwekhodi kwenziwa kusetshenziswa igama elingukhiye elithi "spawn", elikuvumela ukuthi uqhube umsebenzi wangemuva kwimodi ye-asynchronous ngaphandle kokuvimbela intambo eyinhloko, ngendlela yezintambo ezilula ezibizwa ngokuthi ama-fibers.
Ilabhulali evamile inikeza isethi yemisebenzi evamile, okuhlanganisa amathuluzi okucubungula i-CSV, YAML, ne-JSON, izingxenye zokudala amaseva e-HTTP nosekelo lwe-WebSocket. Ngesikhathi sokuthuthukiswa, ungasebenzisa umyalo "we-crystal play", okhiqiza isixhumi esibonakalayo sewebhu (localhost:8080 ngokuzenzakalelayo) ukuze usebenzise ngokuhlanganyela ikhodi ye-Crystal.
Izinguquko eziyinhloko:
- Kwengezwe usekelo lokuhlola lokusebenzisa imicu engasindi (i-fiber) ezimongweni zokusebenza ezihlukene (Izimo Zokusebenzisa), okuvumela ukwenziwa kwemisebenzi okuhambisanayo okusebenza kahle kakhulu - ukuvinjwa kochungechunge komunye umongo akuholeli ekumisweni kokwenza kwenye. mt_context = Fiber::ExecutionContext::MultiThreaded.new("worker-threads", 4) 10.times do mt_context.spawn do do_something end gtk = Fiber::ExecutionContext::Isolated.new("Gtk") end Gtkwa.
- Indlela ye-Slice.literal manje ihlinzeka ngohlobo lwencazelo yezakhi eziqukethwe ucezu, futhi yengeza usekelo lokusebenza kumhumushi.
- Usayizi we-macros kanye ne-alignof macros inikeza ulwazi mayelana nezinhlobo ezizinzile.
- Izindlela ezintsha zengeziwe kumtapo wolwazi ojwayelekile: Indexable#find, #find!, EventLoop#wait_readable, kanye nokuthi #wait_writable.
- Umhlanganisi unenguqulo ende yenketho ethi "-o", "--output", futhi nekhono lokucacisa uhla lwemibhalo esikhundleni sefayela selisetshenzisiwe (igama lefayela lizokhethwa ngokuvumelana negama lefayela elinekhodi).
- Ijeneretha yemibhalo manje inamandla okufaka izinto eziyimfihlo nezivikelekile, kanye nezinto ezikusibopho selabhulali (lib, fun, union, cstruct, outside, type) kumadokhumenti.
- Ku-"File.match?" indlela I-algorithm entsha yokufanisa umzila wefayela isetshenzisiwe, eqede izinkinga ezithile kanye nemikhawulo. Isibonelo, ukweqa uhlamvu (imaski ethi "\\t" ifanelana ne-"\t" kodwa hhayi uhlamvu luka-"t"), ukuhlukaniswa kwendlela (imaski ethi "a**" ifanelana ne-ab" kodwa yehluleke ku-"ab/c", kuyilapho imaski ethi "**/a" ifanelana no-"a"), amaphethini afakwe esidlekeni (imaski "{[}]}" ifana "}"), kanye nobubanzi (isibambo se-"[-a-]" manje sesiyimaski "[a-]".
- Izijobelelo "?" ahoxisiwe emagameni amapharamitha ezincazelweni (defs), ama-macros, namabhulokhi. Futhi "!".
- Ezindleleni Ezibalwayo#isamba kanye nethi #product, ukunqunywa okuzenzakalelayo kohlobo lokubuyisela kususiwe uma uhlobo lwe-elementi luyinyunyana. Uma ubiza lezi zindlela, manje udinga ukucacisa ngokucacile uhlobo, isibonelo, esikhundleni sokuthi "[1, 10000000000_u64].sum" kufanele ubhale "[1, 10000000000_u64].sum(0_u64)".
- I-HTTP::Isicelo siqinisekisa ukuhlukaniswa okulungile kwezingxenye ze-URL.
- Ukwesekwa okwengeziwe kwe-LLVM 20 compiler suite.
- Amakholi aya ku-LLVM::ABI ne-LLVM::TargetMachine#abi ahoxisiwe.
Source: opennet.ru
