ක්‍රිස්ටල් ක්‍රමලේඛන භාෂාව මුදා හැරීම 1.5

Crystal 1.5 ක්‍රමලේඛන භාෂාව නිකුත් කිරීම ප්‍රකාශයට පත් කර ඇති අතර, එහි සංවර්ධකයින් විසින් Ruby භාෂාවේ සංවර්ධනයේ පහසුව C භාෂාවේ ඉහළ යෙදුම් කාර්ය සාධන ලක්ෂණය සමඟ ඒකාබද්ධ කිරීමට උත්සාහ කරයි. සමහර Ruby වැඩසටහන් වෙනස් කිරීමකින් තොරව ක්‍රියාත්මක වුවද Crystal හි වාක්‍ය ඛණ්ඩය Ruby වලට සමීප නමුත් සම්පුර්ණයෙන්ම නොගැලපේ. සම්පාදක කේතය Crystal වලින් ලියා Apache 2.0 බලපත්‍රය යටතේ බෙදා හරිනු ලැබේ.

භාෂාව ස්ථිතික වර්ග පරීක්ෂා කිරීම භාවිතා කරයි, කේතයේ විචල්‍ය වර්ග සහ ක්‍රම තර්ක පැහැදිලිව සඳහන් කිරීමට අවශ්‍ය නොවී ක්‍රියාත්මක වේ. ක්‍රිස්ටල් ක්‍රමලේඛ ක්‍රියාත්මක කළ හැකි ගොනුවලට සම්පාදනය කර ඇති අතර, මැක්‍රෝස් ඇගයීමට ලක් කර සම්පාදනය කරන අවස්ථාවේදී කේත ජනනය කෙරේ. Crystal වැඩසටහන් වලදී, C වලින් ලියා ඇති බන්ධන සම්බන්ධ කළ හැකිය. කේත ක්‍රියාත්මක කිරීම සමාන්තරව සිදු කරනු ලබන්නේ “ස්පාන්” මූල පදය භාවිතයෙන් වන අතර එමඟින් ප්‍රධාන නූල් අවහිර නොකර, තන්තු ලෙස හැඳින්වෙන සැහැල්ලු නූල් ආකාරයෙන් පසුබිම් කාර්යයක් අසමමුහුර්තව ක්‍රියාත්මක කිරීමට ඔබට ඉඩ සලසයි.

සම්මත පුස්තකාලය CSV, YAML, සහ JSON සැකසීම සඳහා මෙවලම්, HTTP සේවාදායකයන් නිර්මාණය කිරීම සඳහා වන සංරචක සහ WebSocket සහාය ඇතුළුව විශාල පොදු කාර්යයන් සමූහයක් සපයයි. සංවර්ධන ක්‍රියාවලියේදී, ක්‍රිස්ටල් භාෂාවෙන් කේත අන්තර්ක්‍රියාකාරී ලෙස ක්‍රියාත්මක කිරීම සඳහා වෙබ් අතුරු මුහුණතක් (දේශීය සත්කාරක: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 ^— අවවාදයයි: ස්ථානීය පරාමිතිය 'නම' වෙනස් නමක් ඇති FooAbstract#foo(number : 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? ක්‍රම ගොනු සහ නාමාවලි මකා දැමීම සඳහා ගොනු API වෙත එක් කර ඇත. සහ Dir#delete?, ගොනුව හෝ නාමාවලිය අස්ථානගත වී ඇත්නම් එය අසත්‍ය වේ.
  • File.tempfile ක්‍රමයේ ආරක්‍ෂාව ශක්තිමත් කර ඇත, එය දැන් ගොනු නාමය සාදන රේඛාවල ශුන්‍ය අක්ෂරවලට ඉඩ නොදේ.
  • සම්පාදක සහ පරිවර්තක ප්‍රතිදානයේ වර්ණ උද්දීපනය අක්‍රීය කරන පරිසර විචල්‍ය NO_COLOR එක් කරන ලදී.
  • පරිවර්තක මාදිලියේ වැඩ සැලකිය යුතු ලෙස වැඩිදියුණු කර ඇත.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න