د روبي پروګرام کولو ژبه 2.7.0 خوشې کول

د یو کال پرمختګ وروسته خپور شوی خوشې کول روبی 2.7.0..، د متحرک اعتراض پر بنسټ د برنامه کولو ژبه چې د برنامې پراختیا کې خورا مؤثره ده او د پرل ، جاوا ، پایتون ، سمالټک ، ایفل ، اډا او لیسپ غوره ځانګړتیاوې پکې شاملې دي. د پروژې کوډ د BSD ("2-کلاز BSDL") او "روبي" جوازونو لاندې ویشل شوی ، کوم چې د GPL جواز وروستي نسخې ته اشاره کوي او د GPLv3 سره په بشپړ ډول مطابقت لري. روبي 2.7 اووم لوی ریلیز دی چې د پلان شوي پرمختیایی پروسې برخې په توګه رامینځته کیږي چې پکې د ځانګړتیاو لوړولو لپاره یو کال ځانګړي کول او د 2-3 میاشت پیچ خوشې کول شامل دي.

اصلي پرمختګونه:

  • تجربوي ملاتړ د نمونې سره سمون (د نمونې سره سمون خوري) په ورکړل شوي څیز باندې تکرار کول او ارزښت ټاکل که چیرې د نمونې سره سمون ولري.

    قضیه [0, [1, 2, 3]] په [a, [b, *c]] pa #=> 0 کې
    pb #=> 1
    pc #=> [2, 3] پای

    قضیه {a: 0، b: 1}
    in{a:0,x:1}
    : د لاسرسي وړ
    په {a: 0، b: var} کې
    p var #=> 1
    پای

  • د متقابل محاسبې شیل irb (REPL, Read-Eval-Print-Loop) اوس د څو لاین ترمیم امکان لري، د لوستلو سره مطابقت لرونکي کتابتون په کارولو سره پلي کیږي کرښهپه روبی لیکل شوی د rdoc لپاره ملاتړ مدغم شوی ، کوم چې په irb کې د مشخصو ټولګیو ، ماډلونو او میتودونو په اړه د حوالې معلوماتو لیدو ته اجازه ورکوي. د Binding#irb له لارې ښودل شوي کوډ سره د لینونو رنګ روښانه کول او د بیس کلاس شیانو تفتیش پایلې چمتو شوي.

    د روبي پروګرام کولو ژبه 2.7.0 خوشې کول

  • د کمپیکٹ کثافاتو راټولونکی (Compaction GC) اضافه شوی چې کولی شي د حافظې ساحه خرابه کړي ، د ورو فعالیت ستونزې حل کړي او د حافظې ټوټې کیدو له امله د حافظې مصرف ډیر کړي چې د څو څو اړخیز روبي غوښتنلیکونو عملیاتو پرمهال پیښیږي. په ټوټو کې د شیانو بسته کولو لپاره وړاندیز شوی د GC.compact میتود د کارولو لپاره د حافظې مخونو شمیر کمولو او د عملیاتو لپاره هپ اصلاح کول
    CoW (کاپي پر لیکلو).

  • ترسره کړی دی په لیست کې د موقعیت پراساس جلا دلیلونو ته چمتو کول ("def foo(a,b,c)") او کلیدي کلمې ("def foo(key: val)"). د کلیدي کلمو او موقعیت پراساس د اتوماتیک دلیل تبادله له مینځه وړل شوې او د روبي 3.0 څانګه کې به ملاتړ ونلري. په ځانګړې توګه، دا د وروستي دلیل د کلیدي پیرامیټونو په توګه کارول، د کلیدي کلمې پر بنسټ دلیلونو ته د وروستي هش پیرامیټر په توګه لیږدولو لپاره، او وروستی دلیل په موقعیتي او کلیدي پیرامیټونو ویشل شوی.

    def foo(key: 42); پای foo({key: 42}) #خبردار
    def foo (** kw)؛ پای foo({key: 42}) #خبردار
    def foo(key: 42); پای foo(**{key: 42}) # سمه ده
    def foo (** kw)؛ پای foo(**{key: 42}) # سمه ده

    def foo(h, **kw); پای foo(key: 42) #خبردار
    def foo(h, key: 42); پای foo(key: 42) #خبردار
    def foo(h, **kw); پای foo({key: 42}) # سمه ده
    def foo(h, key: 42); پای foo({key: 42}) # سمه ده

    def foo(h={}, key: 42); پای foo("key" => 43, key: 42) #خبردار
    def foo(h={}, key: 42); پای foo({"key" => 43, key: 42}) # خبرداری ورکړل شوی
    def foo(h={}, key: 42); پای foo({"key" => 43}, key: 42) # سمه ده

    def foo(opt={}); پای foo (کیلي: 42) # سمه ده

    def foo(h, **nil); پای foo(key: 1) # دلیل تېروتنه
    def foo(h, **nil); پای foo(**{key: 1}) # دلیل تېروتنه
    def foo(h, **nil); پای foo("str" ​​=> 1) # دلیل تېروتنه
    def foo(h, **nil); پای foo({key: 1}) # سمه ده
    def foo(h, **nil); پای foo({"str" ​​=> 1}) # سمه ده

    h = {}; def foo(*a) پای؛ foo(**h) # [] h = {}; def foo(a) پای؛ foo(**h) # {} او خبرداری
    h = {}; def foo(*a) پای؛ foo(h) # [{}] h = {}; def foo(a) پای؛ foo(h) # {}

  • فرصت د بلاک پیرامیټونو لپاره د ډیفالټ لخوا د شمیر شوي متغیر نومونو کارول.

    [1, 2, 3]. هر { @1 } # لکه [1, 2, 3]. هر {|i| اچوي }

  • د رینجونو لپاره تجربه لرونکي ملاتړ پرته له کوم ابتدايي ارزښت.

    ary[..3] # ورته ورته ary[0..3] rel.where( sales: ..100)

  • د شمیرنې وړ # ټلی میتود اضافه شوی، کوم چې شمیرل کیږي چې هر عنصر څو ځله واقع کیږي.

    ["ا"، "ب"، "ج"، "ب"]. ټالی
    #=> {"a" => 1, "b" => 2, "c" => 1}

  • د "ځان" لفظي سره د شخصي میتود کال اجازه ورکړل شوې

    خنثی کول
    پای
    شخصي:foo
    self.foo

  • اضافه شوی شمیرونکی::Lazy#eager میتود د سست (شمیرونکی::سست) شمیرنې څخه منظم شمیرنې رامینځته کولو لپاره.

    a = %w(foo bar باز)
    e = a.lazy.map {|x| x.upcase }.نقشه {|x| x + "!" }. لیواله
    p e.class #=> شمیرونکی
    e.map {|x| x + "؟" } #=> [“FOO!؟”، “بار!؟”، “باز!؟”]

  • د تجربوي JIT کمپیلر پراختیا دوام لري ، کوم چې کولی شي د روبي ژبه کې د غوښتنلیکونو فعالیت د پام وړ ښه کړي. په روبي کې وړاندیز شوی JIT کمپیلر لومړی ډیسک ته C کوډ لیکي ، بیا وروسته دا د ماشین لارښوونې رامینځته کولو لپاره بهرني C کمپیلر ته زنګ وهي (GCC ، کلینګ او مایکروسافټ VC ++ ملاتړ کیږي). نوې نسخه د اړتیا په صورت کې د انلاین ګمارنې لپاره میتود پلي کوي، د تالیف په جریان کې د اصلاح کولو طریقو غوره غوښتنلیک، د "-jit-min-calls" اصلي ارزښت له 5 څخه 10000 ته لوړ شوی، او "-jit-max-cache" له 1000 څخه تر 100 پورې
  • د CGI.escapeHTML، مانیټر او مانیټر مکسین ښه فعالیت.
  • ماډل # نوم، true.to_s، false.to_s، او nil.to_s ډاډ ترلاسه کوي چې یو تار بیرته راستانه شوی چې د ټاکل شوي اعتراض لپاره بدل شوی نه وي.
  • د RubyVM::InstructionSequence#to_binary میتود لخوا رامینځته شوي د بائنری فایلونو اندازه کمه شوې؛
  • د جوړ شوي اجزاوو تازه شوي نسخې، په شمول
    بنډلر 2.1.2، RubyGems 3.1.2،
    Racc 1.4.15،
    CSV 3.1.2, REXML 3.2.3,
    RSS 0.2.8,
    د تار سکینر 1.0.3;

  • کتابتونونه د اساسی توزیع څخه خارجی قیمتی کڅوړو ته لیږدول شوی
    CMath (cmath gem)،
    Scanf (scanf gem)
    شیل (شیل جوهر)
    همغږي کوونکي (د همغږي جوهر)،
    تارونه انتظار (تیر جوهر)
    E2MM (e2mmap gem).

  • د ډیفالټ stdlib ماډلونه په rubygems.org کې خپاره شوي دي:
    معیار ،
    cgi
    استازي
    ګیټوپټلنګ
    خالص پاپ،
    خالص smtp،
    خلاص3,
    پلورنځی
    سنگلټن د څار ماډلونه rubygems.org ته نه دي لیږدول شوي
    څارونکی
    وخت خلاص شو،
    تعقیبونکی
    یوری
    yaml، کوم چې یوازې د روبي کور سره لیږدول کیږي.

  • د روبي جوړول اوس د C کمپیلر ته اړتیا لري چې د C99 معیار ملاتړ کوي.

سرچینه: opennet.ru

Add a comment