Gjuha e programimit Crystal 1.0 është e disponueshme

U publikua gjuha e programimit Crystal 1.0. Ky lëshim është shënuar si lëshimi i parë domethënës, i cili përmblodhi 8 vjet punë dhe shënoi stabilizimin e gjuhës dhe gatishmërinë për përdorim në projekte të punës. Në degën 1.x do të mbështetet përputhshmëria prapa dhe garanton mungesën e ndryshimeve në gjuhë dhe bibliotekën standarte që ndikojnë negativisht në ndërtimin dhe funksionimin e kodit ekzistues.

Lëshimet 1.0.y do të përfshijnë vetëm korrigjime, ndërsa versionet 1.x.0 do të ofrojnë funksionalitete të reja dhe ndryshime të konsiderueshme, duke mbajtur përputhshmërinë me kodin. Ide të reja dhe ndryshime potencialisht jo të përputhshme do të zhvillohen në një degë të veçantë, mbi të cilën më pas do të formohet lëshimi Crystal 2.0. Disa mundësi të Crystal 1.0 janë shpallur si preliminare dhe, përkundër pranisë në degën 1.0, ato nuk janë nën mbështetje zyrtare. Mes këtyre mundësive janë monogopizimi, funksionimi në platformën Windows, përdorimi në sisteme me procesorë ARM.

Kujtojmë se zhvilluesit e Crystal përpiqen të kombinojnë lehtësinë e zhvillimit në gjuhën Ruby me performancën e lartë të aplikacioneve, që është tipike për gjuhën C. Sintaksa e Crystal është e ngjashme me gjuhën Ruby, por nuk është plotësisht e përputhshme me të, megjithatë disa programe ruby ekzekutohen pa modifikim. Kodi i kompilatorit është shkruar në gjuhën Crystal dhe shpërndahet nën licencën Apache 2.0.

Në gjuhë aplikohet kontrolli statik i tipeve, i realizuar pa nevojën për të specifikuar në mënyrë eksplicite tipet e variablave dhe argumenteve të metodave në kod. Programet në Crystal kompilohen në skedarë ekzekutues, me llogaritjen e makrove dhe gjenerimin e kodit gjatë kompilimit. Në programet në gjuhën Crystal lejohet lidhja e bindeve, të shkruara në gjuhën C. Parallelizimi i ekzekutimit të kodit arrihet përmes fjalës kyçe "spawn", e cila lejon nisjen e një detyre në sfond në mënyrë asinkrone, pa bllokuar rrjedhën kryesore, në formën e rrjedhave të lehta, të njohura si fibra (Fiber).

Biblioteka standarde ofron një set të madh funksionesh tipike, duke përfshirë mjete për përpunimin e CSV, YAML dhe JSON, komponentë për krijimin e serverëve HTTP dhe mbështetje për WebSocket. Gjatë zhvillimit, është e dobishme të përdorni komandën "crystal play" e cila krijon një ndërfaqe web (në mënyrë default localhost:8080) për ekzekutimin interaktiv të kodit në gjuhën Crystal.

Ndryshimet kryesore:

  • NĂ« tuplet lejohet qasja e indeksuar nĂ« elemente tĂ« llojeve tĂ« ndryshme, pasi kompajleri ka informacion mbi llojin e çdo elementi. PĂ«r shembull: tuple = {1, "hello", 'x'} v = tuple[0..1] # do tĂ« japĂ« {1, "hello"} typeof(v) # => Tuple(Int32, String)
  • NĂ« literalĂ«t e vargjeve dhe karaktereve, pĂ«rdorimi i pĂ«rshkrimeve tĂ« zĂ«vendĂ«simit nĂ« sekvencat Escape Unicode, si "\uD834", Ă«shtĂ« i ndaluar. PĂ«r kodimin e vlerave tĂ« rastĂ«sishme duhet tĂ« pĂ«rdoret nota "\x".
  • NĂ« bibliotekĂ«n standarde janĂ« hequr njĂ« sasi e madhe e definicionĂ«ve, makrove dhe metodave qĂ« ishin shĂ«nuar si tĂ« papĂ«rdorshĂ«m. Duke pĂ«rfshirĂ« metodat Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill etj.
  • NĂ« makrotĂ« getter dhe property tani Ă«shtĂ« e nevojshme tĂ« specifikohet lloji i kthimit.
  • Metoda e rrumbullakimit tĂ« parazgjedhur Ă«shtĂ« modifikuar nĂ« TIES_EVEN ("rrumbullakimi i bankierit", deri nĂ« numrin mĂ« tĂ« afĂ«rt tĂ« plotĂ«, dhe pĂ«r situata kufitare deri nĂ« numrin mĂ« tĂ« afĂ«rt tĂ« çiftĂ«). NĂ« Number#round Ă«shtĂ« shtuar parametri RoundingMode, i cili lejon zgjedhjen e metodĂ«s sĂ« rrumbullakimit. Mes metodave tĂ« disponueshme janĂ«: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • NĂ« koleksione Ă«shtĂ« garantuar puna e Enumerable#flat_map dhe Iterator#flat_map me elemente tĂ« llojeve tĂ« ndryshme.
  • GjatĂ« serializimit tĂ« sekvencave Enum tani pĂ«rdoren prezantimet nĂ« formĂ« string me nĂ«nvizim.
  • Llojet e pĂ«rcaktuara nĂ« modulĂ«n XML janĂ« transferuar nga pĂ«rdorimi i struct nĂ« class.
  • PĂ«r arsye sigurie, Ă«shtĂ« ndĂ«rprerĂ« dekodimi i emrave tĂ« Cookie, si dhe kodimi dhe dekodimi i vlerave tĂ« Cookie (rikodimi Ă«shtĂ« transferuar nĂ« duar tĂ« kornizave dhe aplikacioneve). Metoda HTTP::Cookies.from_headers Ă«shtĂ« ndarĂ« nĂ« dy varianta pĂ«r serverĂ«sh dhe klientĂ«t.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster