Crystal 1.0 programlingvo havebla

La liberigo de la Crystal 1.0 programlingvo okazis. La eldono estas markita kiel la unua signifa eldono, kiu resumis 8 jarojn da laboro kaj markis la stabiligon de la lingvo kaj ĝian pretecon por uzi en laborprojektoj. La branĉo 1.x konservos malantaŭan kongruecon kaj certigos, ke ne estas ŝanĝoj al la lingvo aŭ norma biblioteko, kiuj negative influas la konstruon kaj funkciadon de ekzistanta kodo.

Eldonoj de versio 1.0.y inkluzivos nur negravajn korektojn, dum versioj 1.x.0 enkondukos novajn funkciojn kaj signifajn ŝanĝojn, samtempe konservante kodan kongruecon. Novaj ideoj kaj eble nekongruaj ŝanĝoj estos evoluigitaj en aparta branĉo, kiu poste formos la bazon por la eldono Crystal 2.0. Kelkaj funkcioj de Crystal 1.0 estas deklaritaj preparaj kaj, malgraŭ ĉeestado en la branĉo 1.0, ne estas kovritaj de oficiala subteno. Ĉi tiuj funkcioj inkluzivas plurfadenadon, platforman subtenon, kaj... Windows, uzu sur sistemoj kun ARM-procesoroj.

Ni rememoru, ke Crystal-programistoj provas kombini la oportunon de evoluo en la Ruby-lingvo kun la alta aplikaĵa rendimento eneca en la C-lingvo. La sintakso de Crystal estas proksima al, sed ne plene kongrua kun, Ruby, kvankam kelkaj Ruby-programoj funkcias sen modifo. La kompilkodo estas skribita en Crystal kaj distribuita sub la licenco Apache 2.0.

La lingvo uzas statikan tipkontroladon, efektivigitan sen la bezono eksplicite specifi la specojn de variabloj kaj metodoargumentojn en la kodo. Kristalaj programoj estas kompilitaj en ruleblajn dosierojn, kun makrooj taksitaj kaj kodo generita en kompiltempo. En Kristalaj programoj, estas eble ligi ligojn skribitajn en C. Paraleligo de koda ekzekuto estas efektivigita per la ŝlosilvorto "spawn", kiu ebligas al vi ruli fonan taskon nesinkrone, sen bloki la ĉefan fadenon, en formo de malpezaj fadenoj nomataj fibroj.

La norma biblioteko disponigas grandan aron da senmarkaj funkcioj, inkluzive de iloj por pritrakti CSV, YAML, kaj JSON, komponantojn por konstrui HTTP-servilojn kaj WebSocket-subtenon. Dum la disvolva procezo, estas oportune uzi la komandon "kristalludado", kiu generas retan interfacon (localhost:8080 defaŭlte) por interaga koda ekzekuto en la Crystal-lingvo.

Ĉefaj ŝanĝoj:

  • Opoj permesas indeksitan aliron al elementoj de malsamaj tipoj ĉar la kompililo scias kia tipo estas ĉiu elemento. Ekzemple: opo = {1, “saluton”, ‘x’} v = opo[0..1] # produktos {1, “saluton”} typeof(v) # => Opo (Int32, Ŝnuro)
  • Ŝnuroj kaj literaj literoj ne permesas la uzon de anstataŭaj mallongigoj en Unikodaj eskapaj sekvencoj kiel "\uD834". Por kodi arbitrajn valorojn, uzu la notacion "\x".
  • En la norma biblioteko, granda parto de difinoj, makrooj kaj metodoj kiuj antaŭe estis markitaj kiel malnoviĝintaj estis forigitaj. Inkluzive de metodoj Aro, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill, ktp.
  • La ricevilo- kaj proprietaj makrooj nun postulas la revenan tipon esti specifita.
  • La defaŭlta ronda metodo estis ŝanĝita al TIES_EVEN ("la rondigo de bankisto", al la plej proksima entjero, kaj por limaj situacioj al la plej proksima para nombro). La parametro RoundingMode estis aldonita al Number#round, permesante al vi elekti la rondigan metodon. Disponeblaj metodoj inkluzivas: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • Enumerable#flat_map kaj Iterator#flat_map funkcias kun elementoj de miksitaj tipoj en kolektoj.
  • Seriigo de Enum-sekvencoj nun uzas substrekitajn kordprezentojn.
  • La tipoj difinitaj en la XML-modulo estis movitaj de uzado de struct al klaso.
  • Pro sekurecaj kialoj, la malkodado de kuketo-nomoj, same kiel la kodado kaj malkodado de kuketo-valoroj, estas ĉesigita (la rekodado nun estas la respondeco de kadroj kaj aplikaĵoj). La metodo HTTP::Cookies.from_headers estas dividita en du variaĵojn por serviloj kaj klientoj.

fonto: opennet.ru

Aĉetu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj 🔥 Aĉetu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster