Útgáfa Crystal 1.16 forritunarmálsins hefur verið gefin út, sem forritarar eru að reyna að sameina þægindin við þróun á Ruby tungumálinu og háum forritaframmistöðu sem einkennir C tungumálið. Setningafræði Crystal er nálægt Ruby en er ekki fullkomlega samhæfð við Ruby, þó að sum Ruby forrit keyri án breytinga. Þjálfarakóðinn er skrifaður í Crystal og dreift undir Apache 2.0 leyfinu.
Tungumálið notar kyrrstæða tegundathugun, sem er útfærð án þess að þurfa að tilgreina sérstaklega tegundir breyta og aðferðarrökum í kóðanum. Kristalforrit eru sett saman í keyranlegar skrár, með fjölvi metin og kóða myndaður við þýðingu. Í Crystal forritum er hægt að tengja bindingar sem eru skrifaðar í C. Samhliða keyrslu kóða er framkvæmd með því að nota „spawn“ lykilorðið, sem gerir þér kleift að keyra bakgrunnsverkefni í ósamstilltum ham án þess að loka á aðalþráðinn, í formi léttra þráða sem kallast trefjar.
Staðlaða bókasafnið býður upp á safn af dæmigerðum aðgerðum, þar á meðal verkfæri til að vinna úr CSV, YAML og JSON, íhluti til að búa til HTTP netþjóna og WebSocket stuðning. Meðan á þróun stendur er hægt að nota skipunina „crystal play“, sem býr til vefviðmót (sjálfgefið localhost:8080) fyrir gagnvirka keyrslu á Crystal kóða.
Helstu breytingar:
- Bætt var við tilraunastuðningi fyrir keyrslu léttþráða (fiber) í aðskildum keyrslusamhengjum (Execution Contexts), sem gerir kleift að framkvæma verkefni samsíða á skilvirkari hátt - að loka á þræði í einu samhengi leiðir ekki til stöðvunar á keyrslu í öðru. mt_context = Fiber::ExecutionContext::MultiThreaded.new("worker-threads", 4) 10 sinnum gera mt_context.spawn gera do_something enda enda gtk = Fiber::ExecutionContext::Isolated.new("Gtk") gera Gtk.main enda gtk.wait
- Slice.literal aðferðin veitir nú tegundarályktun fyrir þætti sem eru í sneið og bætir við stuðningi við að vinna í túlk.
- Stærð og alignof fjölva veita upplýsingar um stöðugar tegundir.
- Nýjar aðferðir hafa verið bættar við staðlaða bókasafnið: Indexable#find, #find!, EventLoop#wait_readable og #wait_writable.
- Þýðandinn hefur langa útgáfu af "-o" valkostinum, "--output", og möguleikinn á að tilgreina möppu í stað skráar hefur verið útfærður (skráarnafnið verður valið í samræmi við nafn skráarinnar með kóðanum).
- Skjalaframleiðandinn hefur nú möguleika á að hafa einka- og verndaða hluti, sem og hluti í bókasafnsbindingum (lib, fun, union, cstruct, external, type) í skjölunum.
- Í "File.match?" aðferð Nýtt reiknirit fyrir samsvörun skráarslóða hefur verið innleitt, sem hefur eytt nokkrum vandamálum og takmörkunum. Til dæmis, stafslepping („\\t“ gríman passar við „\t“ en ekki „t“ stafinn), slóðaskipting („a**“ gríman passar við „ab“ en mistekst fyrir „ab/c“, á meðan „**/a“ gríman passar við „a“), hreiður mynstur (“{[}]}“ gríman passar við „}“), og sviðin-] eru réttar núna (höndluð)
- Viðskeytin "?" hafa verið úrelt í nöfnum færibreyta í skilgreiningum (defs), fjölvi og kubbum. Og "!".
- Í aðferðunum Enumerable#sum og #product hefur sjálfvirk ákvörðun á skilategundinni verið fjarlægð ef stakategundin er stéttarfélag. Þegar þessar aðferðir eru kallaðar þarf nú að tilgreina gerðina sérstaklega, til dæmis, í stað „[1, 10000000000_u64].sum“ ætti að skrifa „[1, 10000000000_u64].sum(0_u64)“.
- HTTP::Request tryggir rétta þáttun vefslóðahluta.
- Bætti við stuðningi við LLVM 20 þýðandasvítuna.
- Símtölin til LLVM::ABI og LLVM::TargetMachine#abi hafa verið úrelt.
Heimild: opennet.ru
