Sar ir-rilaxx tal-lingwa ta 'programmar Crystal 1.0. Ir-rilaxx huwa mmarkat bħala l-ewwel rilaxx sinifikanti, li ġabar fil-qosor 8 snin ta 'xogħol u mmarkat l-istabbilizzazzjoni tal-lingwa u l-prontezza tagħha għall-użu fi proġetti ta' ħidma. Il-fergħa 1.x se żżomm kompatibilità b'lura u tiżgura li ma jkun hemm l-ebda tibdil fil-lingwa jew fil-librerija standard li jaffettwaw b'mod negattiv il-bini u t-tħaddim tal-kodiċi eżistenti.
Выпуски 1.0.y будут включать лишь корректирующие исправления, а версии 1.x.0 будут предлагать новую функциональность и значительные изменения, сохраняя при этом совместимостью с кодом. Новые идеи и потенциально несовместимые изменения будут развиваться в отдельной ветке, на базе которой в последующем будет сформирован выпуск Crystal 2.0. Некоторые возможности Crystal 1.0 объявлены как предварительные и несмотря на наличие в ветке 1.0, они не подпадают под официальную поддержку. Среди таких возможностей моногопоточность, работа на платформе Windows, использование на системах с процессорами ARM.
Ejja nfakkru li l-iżviluppaturi Crystal qed jippruvaw jgħaqqdu l-konvenjenza tal-iżvilupp fil-lingwa Ruby mal-prestazzjoni għolja tal-applikazzjoni inerenti fil-lingwa C. Is-sintassi ta' Crystal hija qrib, iżda mhux kompatibbli b'mod sħiħ ma', Ruby, għalkemm xi programmi Ruby jaħdmu mingħajr modifika. Il-kodiċi tal-kompilatur huwa miktub fi Crystal u mqassam taħt il-liċenzja Apache 2.0.
Il-lingwa tuża verifika tat-tip statiku, implimentata mingħajr il-ħtieġa li tispeċifika espliċitament it-tipi ta 'varjabbli u argumenti tal-metodu fil-kodiċi. Il-programmi Crystal huma kkompilati f'fajls eżekutibbli, b'macros evalwati u kodiċi ġġenerat fil-ħin tal-kompilazzjoni. Fil-programmi Crystal, huwa possibbli li tikkonnettja rbit miktuba f'Ċ. Il-parallelizzazzjoni tal-eżekuzzjoni tal-kodiċi titwettaq bl-użu tal-kelma prinċipali "spawn", li tippermettilek tmexxi kompitu fl-isfond b'mod asinkroniku, mingħajr ma timblokka l-ħajt prinċipali, fil-forma ta 'ħjut ħfief imsejħa fibri.
Il-librerija standard tipprovdi sett kbir ta 'funzjonijiet komuni, inklużi għodod għall-ipproċessar ta' CSV, YAML, u JSON, komponenti għall-ħolqien ta 'servers HTTP, u appoġġ WebSocket. Matul il-proċess ta 'żvilupp, huwa konvenjenti li tuża l-kmand "plays tal-kristall", li jiġġenera interface tal-web (localhost:8080 b'mod awtomatiku) għall-eżekuzzjoni interattiva tal-kodiċi fil-lingwa Crystal.
Bidliet ewlenin:
- Tuples jippermettu aċċess indiċjat għal elementi ta 'tipi differenti minħabba li l-kompilatur jaf x'tip huwa kull element. Per eżempju: tuple = {1, “hello”, ‘x’} v = tuple[0..1] # se jipproduċi {1, “hello”} typeof(v) # => Tuple(Int32, String)
- Stringi u letterali tal-karattri ma jippermettux l-użu ta' abbrevjazzjonijiet surrogati f'sekwenzi ta' ħarba Unicode bħal "\uD834". Biex tikkodifika valuri arbitrarji, uża n-notazzjoni "\x".
- Fil-librerija standard, porzjon kbir ta' definizzjonijiet, makro, u metodi li qabel kienu mmarkati bħala skaduti tneħħew. Inklużi metodi Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill, eċċ.
- Il-getter u l-makros tal-proprjetà issa jeħtieġu li jiġi speċifikat it-tip ta' ritorn.
- Il-metodu ta' arrotondament default inbidel għal TIES_EVEN ("arrotondament tal-bankier", għall-eqreb numru sħiħ, u għal sitwazzjonijiet ta' fruntiera għall-eqreb numru pari). Il-parametru RoundingMode ġie miżjud ma' Number#round, li jippermettilek tagħżel il-metodu ta' arrotondament. Metodi disponibbli jinkludu: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
- Enumerable#flat_map u Iterator#flat_map jaħdmu ma' elementi ta' tipi mħallta f'kollezzjonijiet.
- Is-serjelizzazzjoni tas-sekwenzi Enum issa tuża rappreżentazzjonijiet ta 'string ta' underscore.
- It-tipi definiti fil-modulu XML ġew imċaqalqa mill-użu ta 'struct għal klassi.
- Għal raġunijiet ta' sigurtà, id-dekodifikazzjoni tal-ismijiet tal-cookies, kif ukoll il-kodifikazzjoni u d-dekodifikazzjoni tal-valuri tal-cookies, twaqqfet (ir-rikodifikazzjoni issa hija r-responsabbiltà tal-oqfsa u l-applikazzjonijiet). Il-metodu HTTP::Cookies.from_headers ġie maqsum f'żewġ varjanti għal servers u l-klijenti.
Sors: opennet.ru
