מעלדונג פון די קריסטאַל פּראָגראַממינג שפּראַך 1.5

די מעלדונג פון די Crystal 1.5 פּראָגראַממינג שפּראַך איז ארויס, די דעוועלאָפּערס פון וואָס זענען טריינג צו פאַרבינדן די קאַנוויניאַנס פון אַנטוויקלונג אין די רובי שפּראַך מיט די הויך אַפּלאַקיישאַן פאָרשטעלונג כאַראַקטעריסטיש פון די C שפּראַך. קריסטאַל ס סינטאַקס איז נאָענט צו, אָבער נישט גאָר קאַמפּאַטאַבאַל מיט, רובי, כאָטש עטלעכע רובי מגילה לויפן אָן מאַדאַפאַקיישאַן. דער קאַמפּיילער קאָד איז געשריבן אין קריסטאַל און פונאנדערגעטיילט אונטער די אַפּאַטשי 2.0 דערלויבעניש.

די שפּראַך ניצט סטאַטיק טיפּ קאָנטראָלירונג, ימפּלאַמענאַד אָן די נויט צו בפירוש ספּעציפיצירן די טייפּס פון וועריאַבאַלז און אופֿן אַרגומענטן אין דעם קאָד. קריסטאַל מגילה זענען קאַמפּיילד אין עקסעקוטאַבלע טעקעס, מיט מאַקראָס עוואַלואַטעד און קאָד דזשענערייטאַד אין די צונויפנעמען צייט. אין קריסטאַל מגילה, עס איז מעגלעך צו פאַרבינדן ביינדינגז געשריבן אין C. פּאַראַלעליזאַטיאָן פון קאָד דורכפירונג איז דורכגעקאָכט מיט די "רויג" קיווערד, וואָס אַלאַוז איר צו פירן אַ הינטערגרונט אַרבעט ייסינגקראַנאַסלי, אָן בלאַקינג די הויפּט פאָדעם, אין די פאָרעם פון לייטווייט פֿעדעם גערופֿן פייבערז.

די סטאַנדאַרט ביבליאָטעק גיט אַ גרויס גאַנג פון פּראָסט פאַנגקשאַנז, אַרייַנגערעכנט מכשירים פֿאַר פּראַסעסינג CSV, YAML און JSON, קאַמפּאָונאַנץ פֿאַר קריייטינג הטטפּ סערווערס און WebSocket שטיצן. בעשאַס דער אַנטוויקלונג פּראָצעס, עס איז באַקוועם צו נוצן די "קריסטאַל שפּיל" באַפֿעל, וואָס דזשענערייץ אַ וועב צובינד (localhost:8080 דורך פעליקייַט) פֿאַר ינטעראַקטיוו דורכפירונג פון קאָד אין די קריסטאַל שפּראַך.

הויפּט ענדערונגען:

  • В компилятор добавлена проверка соответствия имён аргументов в реализации абстрактного метода и в его определении. В случае несоответствия имён теперь выводится предупреждение: abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— Warning: positional parameter ‘name’ corresponds to parameter ‘number’ of the overridden method FooAbstract#foo(number : Int32), which has a different name and may affect named argument passing
  • При присвоении аргументу нетипизированного метода значения переменной, данный аргумент теперь ограничивается типом этой переменной. class Foo @x : Int64 def initialize(x) @x = x # параметр x получит тип @x end end
  • Разрешено добавление аннотаций в параметры методов или макросов. def foo(@[MaybeUnused] x); end # OK
  • Добавлена поддержка использования констант в качестве индексов и имён в кортежах. KEY = «s» foo = {s: «String», n: 0} puts foo[KEY].size
  • В API File для удаления файлов и каталогов добавлены новые методы File#delete? и Dir#delete?, возвращающие false в случае отсутствия файла или каталога.
  • Усилена защита метода File.tempfile, который теперь не допускает нулевые символы в стоках, формирующих имя файла.
  • Добавлена переменная окружения NO_COLOR, отключающая выделение цветом в выводе компилятора и интерпретатора.
  • Значительно улучшена работа в режиме интерпретатора.

מקור: opennet.ru

לייגן אַ באַמערקונג