የሩቢ ፕሮግራሚንግ ቋንቋ መለቀቅ 3.1

Ruby 3.1.0 ተለቋል፣ ተለዋዋጭ ነገር ተኮር የፕሮግራም አወጣጥ ቋንቋ በፕሮግራም ልማት ውስጥ በጣም ቀልጣፋ እና የፐርል፣ ጃቫ፣ ፓይዘን፣ ስሞልቶክ፣ ኢፍልል፣ አዳ እና ሊስፕ ምርጥ ባህሪያትን ያካትታል። የፕሮጀክት ኮድ በ BSD ("2-clause BSDL") እና "Ruby" ፈቃዶች ስር ተሰራጭቷል፣ እሱም የቅርብ ጊዜውን የጂፒኤል ፍቃድ ስሪት የሚያመለክት እና ከ GPLv3 ጋር ሙሉ በሙሉ ተኳሃኝ ነው።

ዋና ማሻሻያዎች፡-

  • የ Rails ማዕቀፍን የሚጠቀሙ እና ብዙ ዘዴዎችን የሚጠሩትን የ Ruby ፕሮግራሞችን አፈፃፀም ለማሻሻል እንደ አንድ ተነሳሽነት በ Shopify ኢ-ኮሜርስ መድረክ ገንቢዎች የተፈጠረ አዲስ በሂደት ላይ ያለ የሙከራ JIT ኮምፕሌተር YJIT ታክሏል። ቀደም ሲል ጥቅም ላይ ከዋለው MJIT JIT ኮምፕሌተር የሚለየው ቁልፍ ልዩነት ሙሉ ዘዴዎችን በማዘጋጀት ላይ የተመሰረተ እና በ C ቋንቋ ውጫዊ ማጠናከሪያን ይጠቀማል, YJIT Lazy Basic Block Versioning (LBBV) ይጠቀማል እና የተቀናጀ JIT ማጠናቀርን ይዟል. በኤልቢቢቪ፣ JIT መጀመሪያ የስልቱን መጀመሪያ ብቻ ያጠናቅራል፣ እና የቀረውን ከተወሰነ ጊዜ በኋላ ያጠናቅራል፣ በአፈፃፀም ወቅት ጥቅም ላይ የዋሉት ተለዋዋጮች እና ክርክሮች ከተወሰኑ በኋላ። YJITን በሚጠቀሙበት ጊዜ የባቡር ቤንች ሙከራን በሚያካሂዱበት ጊዜ የ22% የአፈፃፀም ጭማሪ ተመዝግቧል፣ እና በፈሳሽ-መቅረጽ ሙከራ 39% ጭማሪ ተመዝግቧል። YJIT በአሁኑ ጊዜ x86-64 አርክቴክቸር ባላቸው ስርዓቶች ላይ ዩኒክስ ለሚመስሉ ስርዓተ ክወናዎች ድጋፍ የተገደበ ነው እና በነባሪነት ተሰናክሏል (ለማንቃት በትእዛዝ መስመሩ ውስጥ ያለውን “--yjit” ባንዲራ ይጥቀሱ)።
  • የተሻሻለው የ MJIT JIT ማጠናከሪያ አፈጻጸም። Rails ለሚጠቀሙ ፕሮጀክቶች ነባሪ ከፍተኛ የመሸጎጫ መጠን (--jit-max-cache) ከ100 ወደ 10000 መመሪያዎች ጨምሯል። ከ1000 በላይ መመሪያዎች ላላቸው ዘዴዎች JIT መጠቀም ቆሟል። Zeitwerk of Railsን ለመደገፍ TracePoint ለክፍል ዝግጅቶች ሲነቃ የጂአይቲ ኮድ አይጣልም።
  • ሙሉ በሙሉ እንደገና የተጻፈ debug.gem አራሚን ያካትታል፣ የርቀት ማረምን የሚደግፍ፣ የተበላሸውን መተግበሪያ አይዘገይም ፣ ከላቁ የማረሚያ በይነገጾች (VSCode እና Chrome) ጋር መቀላቀልን ይደግፋል፣ ባለብዙ ክር እና ባለብዙ ሂደት መተግበሪያዎችን ለማረም ሊያገለግል ይችላል ፣ ያቀርባል የ REPL ኮድ ማስፈጸሚያ በይነገጽ፣ የላቀ የመከታተያ ችሎታዎችን ያቀርባል፣ የኮድ ቅንጣቢዎችን መቅዳት እና እንደገና ማጫወት ይችላል። ከዚህ ቀደም የቀረበው አራሚ lib/debug.rb ከመሠረታዊ ስርጭቱ ተወግዷል።
    የሩቢ ፕሮግራሚንግ ቋንቋ መለቀቅ 3.1
  • በመልሶ መደወል ሪፖርቶች ውስጥ ስህተቶችን ምስላዊ ማድመቅ ተተግብሯል። አብሮ የተሰራውን እና በነባሪ የነቃውን የእንቁ ፓኬጅ ስህተት_highlight በመጠቀም የስህተት ጥቆማ ቀርቧል። የስህተት መጠቆሚያን ለማሰናከል የ"--disable-error_highlight" ቅንብሩን መጠቀም ይችላሉ። $ ruby ​​​​test.rb ፈተና.rb:1: ውስጥ" ": undefined method "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ ማለትዎ ነውን? ጊዜያት
  • በይነተገናኝ ስሌቶች ቅርፊት IRB (REPL፣ Read-Eval-Print-loop) የገባውን ኮድ በራስ ሰር ማጠናቀቅን ተግባራዊ ያደርጋል (ሲተይቡ፣ ፍንጭ ለቀጣይ ግቤት አማራጮች ይታያል፣ በመካከላቸውም በትብ ወይም Shift+ መንቀሳቀስ ይችላሉ። የትር ቁልፍ)። የመቀጠያ አማራጩን ከመረጡ በኋላ ከተመረጠው ንጥል ጋር የተያያዙ ሰነዶችን የሚያሳይ የንግግር ሳጥን በአቅራቢያ ይታያል. የቁልፍ ሰሌዳ አቋራጭ Alt+d ሙሉውን ሰነድ ለመድረስ መጠቀም ይቻላል።
    የሩቢ ፕሮግራሚንግ ቋንቋ መለቀቅ 3.1
  • የቋንቋ አገባብ አሁን በሃሽ ቀጥተኛ ቃላት እና በቁልፍ ቃል ነጋሪ እሴቶች ውስጥ ተግባራትን ሲደውሉ እንዲዘለሉ ያስችላቸዋል። ለምሳሌ “{x: x, y: y}” ከሚለው አገላለጽ ይልቅ አሁን “{x:, y:}” የሚለውን መግለጽ ትችላለህ እና በ“foo(x: x, y: y)” - foo() x:, y:)"
  • ለነጠላ መስመር ጥለት ግጥሚያዎች የተረጋጋ ድጋፍ (ary => [x፣ y፣ z])፣ ከአሁን በኋላ እንደ የሙከራ ምልክት ያልተደረገባቸው።
  • በስርዓተ ጥለት ግጥሚያ ላይ ያለው የ"^" ከዋኝ አሁን የዘፈቀደ አገላለጾችን ሊይዝ ይችላል፣ ለምሳሌ፡ Prime.each_cons(2) .lazy.find_all{_1 in [n, ^(n + 2)]}. take(3) .ወደ_a #= > ? [[3, 5], [5, 7], [11, 13]
  • በነጠላ መስመር ስርዓተ-ጥለት ግጥሚያዎች፣ ቅንፎችን መተው ይችላሉ፡ [0፣ 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • የፕሮግራሙን አወቃቀር እና ጥቅም ላይ የዋሉትን ዓይነቶች ለመወሰን የሚያስችል የ RBS አይነት ማብራሪያ ቋንቋ ፣ የ “<” ምልክትን በመጠቀም የዓይነት መለኪያዎችን የላይኛውን ገደብ ለመለየት ድጋፍን አክሏል ፣ ለአጠቃላይ ዓይነቶች ተለዋጭ ስሞች ድጋፍ ፣ የተተገበረ ድጋፍ ለ እንቁዎችን ለማስተዳደር ስብስቦች፣ የተሻሻለ አፈጻጸም እና ብዙ አዳዲስ ፊርማዎችን ለአብሮገነብ እና መደበኛ ቤተ-መጻሕፍት ተተግብሯል።
  • ለተቀናጁ የልማት አካባቢዎች የሙከራ ድጋፍ በTypePro static type analyzer ላይ ተጨምሯል ፣ ይህም ያለግልጽ አይነት መረጃ በኮድ ትንተና ላይ የተመሰረተ RBS ማብራሪያዎችን ያመነጫል (ለምሳሌ ፣TypeProን ከVSCode አርታኢ ጋር ለማዋሃድ ተጨማሪ ተዘጋጅቷል)።
  • በርካታ ስራዎችን የማካሄድ ቅደም ተከተል ተቀይሯል። ለምሳሌ፣ ቀደም ሲል “foo[0]፣ bar[0] = baz፣ qux” የሚለው አገላለጽ ክፍሎች በቅደም ተከተል ባዝ፣ qux፣ foo፣ bar፣ አሁን ግን foo፣ bar፣ baz፣ qux ተካሂደዋል።
  • VWA (ተለዋዋጭ ስፋት ምደባ) ዘዴን በመጠቀም ለህብረቁምፊዎች የማህደረ ትውስታ ምደባ የሙከራ ድጋፍ ታክሏል።
  • አብሮ የተሰሩ የጌጣጌጥ ሞጁሎች እና በመደበኛ ቤተ-መጽሐፍት ውስጥ የተካተቱ የተዘመኑ ስሪቶች። የnet-ftp፣net-map፣net-pop፣net-smtp፣ማትሪክስ፣ፕራይም እና ማረም ጥቅሎች አብሮገነብ ናቸው።

ምንጭ: opennet.ru

አስተያየት ያክሉ