Ukukhishwa kolimi lohlelo lweCrystal 1.16

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

Engeza amazwana