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

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

ዋና ማሻሻያዎች:

  • የሙከራ ድጋፍ ስርዓተ-ጥለት ማዛመድ (ስርዓተ-ጥለት ማዛመድ), ይህም በተሰጠው ነገር ላይ ለመድገም እና ከስርዓተ-ጥለት ጋር የሚዛመድ ከሆነ ዋጋ እንዲሰጡ ያስችልዎታል.

    ጉዳይ [0, [1, 2, 3]] በ [a, [b, *c]] pa #=> 0 ውስጥ
    pb #=> 1
    pc #=> [2, 3] መጨረሻ

    ጉዳይ {a: 0, b: 1}
    በ{a: 0, x: 1} ውስጥ
    : የማይደረስ
    በ{a: 0, b: var} ውስጥ
    p var #=> 1
    መጨረሻ

  • በይነተገናኝ ስሌቶች ሼል irb (REPL፣ Read-Eval-Print-Loop) አሁን ባለብዙ መስመር አርትዖትን ያሳያል፣ ከንባብ መስመር ጋር ተኳሃኝ ቤተ-መጽሐፍትን በመጠቀም ተግባራዊ ያደርጋል። ደግመህበሩቢ ተፃፈ። ለ rdoc ድጋፍ የተቀናጀ ሲሆን ይህም በተወሰኑ ክፍሎች ፣ ሞጁሎች እና ዘዴዎች ላይ የማመሳከሪያ መረጃን በ irb ውስጥ ለማየት ያስችላል። በBinding#irb በኩል ከሚታየው ኮድ ጋር የመስመሮችን ቀለም ማድመቅ እና የመሠረት ክፍል ዕቃዎችን የመመርመር ውጤት ቀርቧል።

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

  • የታመቀ ቆሻሻ ሰብሳቢ (ኮምፓክሽን ጂሲ) ታክሏል የማህደረ ትውስታ ክልልን ማበላሸት ፣ የዘገየ አፈፃፀም ችግሮችን በመፍታት እና በአንዳንድ ባለብዙ ባለ ክር ሩቢ አፕሊኬሽኖች ስራ ወቅት በሚከሰተው የማህደረ ትውስታ መቆራረጥ የተነሳ የማህደረ ትውስታ ፍጆታን ይጨምራል። ክምር ላይ እቃዎችን ለማሸግ የሚል ሀሳብ አቅርቧል የ GC.compact ዘዴ፣ ያገለገሉትን የማህደረ ትውስታ ገጾች ብዛት እንዲቀንሱ እና ክምርን ለኦፕሬሽኖች እንዲያመቻቹ ያስችልዎታል።
    CoW (በመገልበጥ-በመፃፍ)።

  • ተሸክሞ መሄድ በዝርዝሩ ውስጥ ባለው አቀማመጥ ("def foo(a,b,c)") እና ቁልፍ ቃላት ("def foo (ቁልፍ: ቫል)") ላይ በመመስረት ክርክሮችን ለመለየት ማዘጋጀት. በቁልፍ ቃላት እና አቀማመጥ ላይ የተመሰረተ ራስ-ሰር የክርክር ልወጣ ተቋርጧል እና በ Ruby 3.0 ቅርንጫፍ ውስጥ አይደገፍም. በተለይም የመጨረሻውን ነጋሪ እሴት እንደ ቁልፍ ቃል መለኪያ መጠቀም፣ በቁልፍ ቃል ላይ የተመሰረቱ ክርክሮችን እንደ መጨረሻው የሃሽ ፓራሜትር ለማለፍ እና የመጨረሻውን ክርክር በቦታ እና በቁልፍ ቃል መመዘኛዎች መከፋፈል ተቋርጧል።

    def foo (ቁልፍ: 42); መጨረሻ; foo({ቁልፍ፡ 42}) # አስጠንቅቋል
    def foo (**kw); መጨረሻ; foo({ቁልፍ፡ 42}) # አስጠንቅቋል
    def foo (ቁልፍ: 42); መጨረሻ; foo(**{ቁልፍ፡ 42}) # እሺ
    def foo (**kw); መጨረሻ; foo(**{ቁልፍ፡ 42}) # እሺ

    def foo(h, **kw); መጨረሻ; foo (ቁልፍ፡ 42) # አስጠንቅቋል
    def foo(h፣ ቁልፍ፡ 42); መጨረሻ; foo(ቁልፍ፡ 42) # አስጠንቅቋል
    def foo(h, **kw); መጨረሻ; foo({ቁልፍ፡ 42}) # እሺ
    def foo(h፣ ቁልፍ፡ 42); መጨረሻ; foo({ቁልፍ፡ 42}) # እሺ

    def foo(h={}፣ ቁልፍ፡ 42); መጨረሻ; foo("ቁልፍ" => 43፣ ቁልፍ፡ 42) # አስጠንቅቋል
    def foo(h={}፣ ቁልፍ፡ 42); መጨረሻ; foo({"ቁልፍ" => 43፣ ቁልፍ፡ 42}) # አስጠንቅቋል
    def foo(h={}፣ ቁልፍ፡ 42); መጨረሻ; foo({"ቁልፍ" => 43}፣ ቁልፍ፡ 42) # እሺ

    def foo(opt={}); መጨረሻ; foo( ቁልፍ፡ 42 ) # እሺ

    def foo (h, ** nil); መጨረሻ; foo(ቁልፍ፡ 1) # የመከራከሪያ ነጥብ ስህተት
    def foo (h, ** nil); መጨረሻ; foo(**{ቁልፍ፡ 1}) # የመከራከሪያ ስህተት
    def foo (h, ** nil); መጨረሻ; foo("str"=> 1) # የመከራከሪያ ነጥብ ስህተት
    def foo (h, ** nil); መጨረሻ; foo({ቁልፍ፡ 1}) # እሺ
    def foo (h, ** nil); መጨረሻ; foo({"str"=> 1}) # እሺ

    ሸ = {}; def foo (*a) አንድ መጨረሻ; foo(** ሰ) # [] h = {}; def foo (a) አንድ መጨረሻ; foo(** ሰ) # {} እና ማስጠንቀቂያ
    ሸ = {}; def foo (*a) አንድ መጨረሻ; foo(h) # [{}] h = {}; def foo (a) አንድ መጨረሻ; foo(ሰ) # {}

  • ዕድል በነባሪነት የተቆጠሩ ተለዋዋጭ ስሞችን በመጠቀም የማገጃ መለኪያዎች።

    [1, 2, 3].እያንዳንዱ { ያስቀምጣል @1 } # ተመሳሳይ [1, 2, 3].እያንዳንዱ { |i| ይላል}

  • የመጀመሪያ ዋጋ ለሌላቸው ክልሎች የሙከራ ድጋፍ።

    ary[..3] # ከary[0..3] rel.የት ጋር ይመሳሰላል(ሽያጭ፡..100)

  • Enumerable#tally ዘዴ ታክሏል፣ይህም እያንዳንዱ ንጥረ ነገር ስንት ጊዜ እንደተከሰተ ይቆጥራል።

    ["a", "b", "c", "b"]]
    #=> {“a”=>1፣ “b”=>2፣ “c”=>1}

  • የግል ዘዴ ጥሪ ከ"ራስ" ጋር ተፈቅዷል

    def foo
    መጨረሻ
    የግል: fo
    እራስ.ፉ

  • ተጨምሯል መመዝገቢያ :: ሰነፍ # ጉጉ ዘዴ ከሰነፍ ቆጣሪ (ኢንዩመሬተር :: ሰነፍ) መደበኛ ቆጠራ ለማመንጨት።

    a = %w(foo bar baz)
    ሠ = a.lazy.map {|x| x.upcase }. ካርታ {|x| x + "!" }. ጉጉት።
    p e.class #=> ቆጣቢ
    ካርታ {|x| x + "?" } #=> [“FOO!?”፣ “BAR!?”፣ “BAZ!?”]

  • የሙከራ ጂአይቲ ማቀናበሪያ እድገቱ ቀጥሏል፣ ይህም በ Ruby ቋንቋ የመተግበሪያዎችን አፈጻጸም በእጅጉ ሊያሻሽል ይችላል። በሩቢ ውስጥ የቀረበው የጂአይቲ ኮምፕሌተር በመጀመሪያ ሲ ኮድ ወደ ዲስክ ይጽፋል ፣ ከዚያ በኋላ የማሽን መመሪያዎችን ለማመንጨት ውጫዊ C compiler ይደውላል (GCC ፣ Clang እና Microsoft VC ++ ይደገፋሉ)። አዲሱ እትም አስፈላጊ ከሆነ የመስመር ላይ ማሰማራት ዘዴን ይተገብራል ፣ በሚጠናቀርበት ጊዜ የማመቻቸት ሁነታዎችን መምረጥ ፣ የ "--jit-min-calls" ነባሪ እሴት ከ 5 ወደ 10000 እና "--jit-max-cache" ይጨምራል። ከ 1000 እስከ 100.
  • የተሻሻለ የCGI.escapeHTML፣ Monitor እና MonitorMixin አፈጻጸም።
  • ሞዱል#ስም፣ እውነት.ቶ_ስ፣ ሐሰተኛ.to_s እና nil.to_s ለተጠቀሰው ነገር ያልተለወጠ ሕብረቁምፊ መመለሱን ያረጋግጣል።
  • በ RubyVM የመነጩ ሁለትዮሽ ፋይሎች መጠን :: መመሪያ ቅደም ተከተል # ወደ_ሁለትዮሽ ዘዴ ቀንሷል;
  • ጨምሮ አብሮ የተሰሩ አካላት የተዘመኑ ስሪቶች
    ቅርቅብ 2.1.2፣ RubyGems 3.1.2፣
    ራክ 1.4.15፣
    CSV 3.1.2፣ REXML 3.2.3፣
    RSS 0.2.8፣
    ሕብረቁምፊ ስካነር 1.0.3;

  • ቤተ-መጻሕፍቶች ከመሠረታዊ ፓኬጅ ወደ ውጫዊ የጌጣጌጥ ፓኬጆች ተወስደዋል
    CMath (የሴሜትሪክ ዕንቁ)
    ስካንፍ (ስካንፍ ዕንቁ)፣
    ዛጎል (የዛጎል ዕንቁ)
    ማመሳሰል (ማመሳሰል ዕንቁ)፣
    ThreadsWait (እንቁ!)
    E2MM (e2map gem)።

  • ነባሪ የstdlib ሞጁሎች በ rubygems.org ላይ ታትመዋል፡-
    መለኪያ፣
    ሲጂ
    ተወካይ
    ረጅም ርቀት
    ኔት-ፖፕ ፣
    የተጣራ smtp,
    ክፍት 3,
    ፕላስተር፣
    ነጠላ ቶን. ሞጁሎች ወደ rubygems.org አልተወሰዱም።
    ተመልካች፣
    ጊዜው አልቋል,
    መከታተያ
    ዩሪ፣
    yaml, በሩቢ-ኮር ውስጥ ብቻ የሚቀርቡት.

  • Ruby መገንባት አሁን የC99 ስታንዳርድን የሚደግፍ C compiler ያስፈልገዋል።

ምንጭ: opennet.ru

አስተያየት ያክሉ