Crystal програмчлалын хэлийг гаргах 1.5

Crystal 1.5 програмчлалын хэлийг гаргасан бөгөөд хөгжүүлэгчид нь Ruby хэл дээрх хөгжүүлэлтийн тав тухыг Си хэлний хэрэглээний өндөр гүйцэтгэлтэй хослуулахыг хичээж байна. Crystal-ийн синтакс нь Ruby-тэй ойролцоо боловч бүрэн нийцдэггүй ч зарим Ruby программууд ямар ч өөрчлөлтгүйгээр ажилладаг. Хөрвүүлэгчийн код нь Crystal дээр бичигдсэн бөгөөд Apache 2.0 лицензийн дагуу түгээгддэг.

Энэ хэл нь кодын хувьсагчийн төрөл, аргументуудыг тодорхой зааж өгөх шаардлагагүйгээр статик төрлийн шалгалтыг ашигладаг. Кристал программуудыг гүйцэтгэх боломжтой файл болгон хөрвүүлж, эмхэтгэх үед макронуудыг үнэлж, кодыг үүсгэдэг. Crystal программуудад C хэл дээр бичигдсэн холбоосуудыг холбох боломжтой. Кодын гүйцэтгэлийг параллель болгох нь "үрс" түлхүүр үгийг ашиглан хийгддэг бөгөөд энэ нь үндсэн утсыг хаахгүйгээр асинхрон горимд арын даалгаврыг утас гэж нэрлэгддэг хөнгөн утас хэлбэрээр ажиллуулах боломжийг олгодог.

Стандарт номын сан нь CSV, YAML, JSON боловсруулах хэрэгслүүд, HTTP сервер үүсгэх бүрэлдэхүүн хэсгүүд, WebSocket-ийн дэмжлэг зэрэг олон тооны нийтлэг функцуудыг өгдөг. Боловсруулалтын явцад Crystal хэл дээрх кодыг интерактив байдлаар гүйцэтгэх вэб интерфэйс (анхдагчаар localhost:8080) үүсгэдэг "кристал тоглох" командыг ашиглах нь тохиромжтой.

Үндсэн өөрчлөлтүүд:

  • Хөрвүүлэгч нь хийсвэр аргыг хэрэгжүүлэх, түүний тодорхойлолтод аргументуудын нэрийн нийцтэй байдлын шалгалтыг нэмсэн. Хэрэв нэр таарахгүй бол одоо анхааруулга гаргана: хийсвэр анги FooAbstract abstract def foo(тоо : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p нэрний төгсгөл 6 | def foo(нэр : Int32) : Үгүй ^— Анхааруулга: 'name' байрлалын параметр нь дарагдсан FooAbstract#foo(тоо: Int32) аргын 'тоо' параметртэй тохирч байгаа бөгөөд энэ нь өөр нэртэй бөгөөд нэрлэсэн аргумент дамжуулахад нөлөөлж болзошгүй.
  • Аргументыг хувьсагчийн утгад төрөлжүүлээгүй аргад оноох үед аргумент нь тухайн хувьсагчийн төрлөөр хязгаарлагдана. class Foo @x : Int64 def initialize(x) @x = x # x параметрийг бичнэ @x end end
  • Арга эсвэл макроны параметрүүдэд тайлбар нэмэх боломжийг танд олгоно. def foo(@[MaybeUnused] x); төгсгөл # За
  • Тогтмол тоонуудыг индекс болон нэрээр ашиглахад дэмжлэг нэмсэн. KEY = "s" foo = {s: "String", n: 0} foo[KEY].size-г оруулна.
  • Файл, лавлах устгах шинэ File#delete? аргуудыг File API-д нэмсэн. болон файл эсвэл лавлах байхгүй бол худал буцаах Dir#delete?
  • File.tempfile аргын хамгаалалтыг бэхжүүлсэн бөгөөд энэ нь одоо файлын нэрийг бүрдүүлж буй мөрөнд хоосон тэмдэгт оруулахыг зөвшөөрдөггүй.
  • NO_COLOR орчны хувьсагчийг нэмсэн бөгөөд энэ нь хөрвүүлэгч болон орчуулагчийн гаралтад өнгө тодруулахыг идэвхгүй болгодог.
  • Орчуулагчийн горим дахь ажил мэдэгдэхүйц сайжирсан.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх