ரூபி 2.7.0 நிரலாக்க மொழியின் வெளியீடு

ஒரு வருட வளர்ச்சிக்குப் பிறகு வெளியிடப்பட்டது வெளியீடு ரூபி 2.7.0, ஒரு டைனமிக் பொருள் சார்ந்த நிரலாக்க மொழி, இது நிரல் மேம்பாட்டில் மிகவும் திறமையானது மற்றும் Perl, Java, Python, Smalltalk, Eiffel, Ada மற்றும் Lisp ஆகியவற்றின் சிறந்த அம்சங்களை உள்ளடக்கியது. திட்டக் குறியீடு BSD ("2-பிரிவு BSDL") மற்றும் "Ruby" உரிமங்களின் கீழ் விநியோகிக்கப்படுகிறது, இது GPL உரிமத்தின் சமீபத்திய பதிப்பைக் குறிக்கிறது மற்றும் GPLv3 உடன் முழுமையாக இணக்கமானது. ரூபி 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 இல் குறிப்பிட்ட வகுப்புகள், தொகுதிகள் மற்றும் முறைகள் பற்றிய குறிப்புத் தகவலைப் பார்க்க அனுமதிக்கிறது. பைண்டிங்#irb மூலம் காட்டப்படும் குறியீட்டைக் கொண்ட கோடுகளின் வண்ணத் தனிப்படுத்தல் மற்றும் அடிப்படை வகுப்பு பொருட்களை ஆய்வு செய்ததன் முடிவுகள் வழங்கப்படுகின்றன.

    ரூபி 2.7.0 நிரலாக்க மொழியின் வெளியீடு

  • சில மல்டி த்ரெட் ரூபி பயன்பாடுகளின் செயல்பாட்டின் போது ஏற்படும் நினைவக துண்டு துண்டாக இருப்பதால் நினைவகத்தின் ஒரு பகுதியை சிதைத்து, மெதுவான செயல்பாட்டின் சிக்கல்களைத் தீர்க்கும் மற்றும் நினைவக நுகர்வு அதிகரிக்கும். குவியல் மீது பொருட்களை பேக் செய்ய முன்மொழியப்பட்டது GC.compact முறை, இது பயன்படுத்தப்படும் நினைவகப் பக்கங்களின் எண்ணிக்கையைக் குறைக்கவும், செயல்பாடுகளுக்கான குவியலை மேம்படுத்தவும் உங்களை அனுமதிக்கிறது.
    CW (நகல்-எழுதுதல்).

  • மேற்கொள்ளப்பட்டது பட்டியலில் உள்ள நிலை ("def foo(a,b,c)") மற்றும் முக்கிய வார்த்தைகள் ("def foo(key: val)") ஆகியவற்றின் அடிப்படையில் வாதங்களை பிரிக்க தயார். முக்கிய வார்த்தைகள் மற்றும் நிலையின் அடிப்படையிலான தானியங்கு வாத மாற்றம் நிறுத்தப்பட்டது மற்றும் ரூபி 3.0 கிளையில் ஆதரிக்கப்படாது. குறிப்பாக, கடைசி வாதத்தை முக்கிய அளவுருக்களாகப் பயன்படுத்துவதும், முக்கிய அடிப்படையிலான வாதங்களை கடைசி ஹாஷ் அளவுருவாக அனுப்புவதும், கடைசி வாதத்தை நிலை மற்றும் முக்கிய அளவுருக்களாகப் பிரிப்பதும் நிறுத்தப்பட்டது.

    டெஃப் ஃபூ (விசை: 42); முடிவு; foo({key: 42}) # எச்சரிக்கை
    def foo (**kw); முடிவு; foo({key: 42}) #எச்சரிக்கை
    டெஃப் ஃபூ (விசை: 42); முடிவு; foo(**{key: 42}) # சரி
    def foo (**kw); முடிவு; foo(**{key: 42}) # சரி

    def foo(h, **kw); முடிவு; foo(முக்கிய: 42) #எச்சரிக்கை
    def foo(h, key: 42); முடிவு; foo(முக்கிய: 42) #எச்சரிக்கை
    def foo(h, **kw); முடிவு; foo({key: 42}) # சரி
    def foo(h, key: 42); முடிவு; foo({key: 42}) # சரி

    def foo(h={}, key: 42); முடிவு; foo("விசை" => 43, முக்கிய: 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(முக்கிய: 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) end; foo(**h) # [] h = {}; def foo(a) end; foo(**h) # {} மற்றும் எச்சரிக்கை
    h = {}; def foo(*a) end; foo(h) # [{}] h = {}; def foo(a) end; foo(h) # {}

  • திறன் தொகுதி அளவுருக்களுக்கு முன்னிருப்பாக எண்ணிடப்பட்ட மாறி பெயர்களைப் பயன்படுத்துதல்.

    [1, 2, 3].ஒவ்வொன்றும் { @1 ஐ வைக்கிறது } # போன்ற [1, 2, 3].ஒவ்வொரு { |i| நான் வைக்கிறது }

  • ஆரம்ப மதிப்பு இல்லாத வரம்புகளுக்கான பரிசோதனை ஆதரவு.

    ary[..3] # ஆரி[0..3] rel.எங்கே(விற்பனை: ..100)

  • எண்ணக்கூடிய#tally முறை சேர்க்கப்பட்டது, இது ஒவ்வொரு உறுப்புக்கும் எத்தனை முறை நிகழ்கிறது என்பதைக் கணக்கிடுகிறது.

    ["a", "b", "c", "b"].tally
    #=> {"a"=>1, "b"=>2, "c"=>1}

  • தனிப்பட்ட முறை அழைப்பு "சுய" மொழியில் அனுமதிக்கப்படுகிறது

    டெஃப் ஃபூ
    இறுதியில்
    தனிப்பட்ட: foo
    சுய.foo

  • சோம்பேறி (எண்யூமரேட்டர்:: சோம்பேறி) கணக்கீட்டில் இருந்து வழக்கமான கணக்கீட்டை உருவாக்க எண்ணுபவர்:: சோம்பேறி#ஆவலாக முறை சேர்க்கப்பட்டது.

    a = %w(foo bar baz)
    e = a.lazy.map {|x| x.upcase }.வரைபடம் {|x| x + "!" }.ஆவலுடன்
    p e.class #=> கணக்கீட்டாளர்
    இ.வரைபடம் {|x| x + "?" } #=> [“FOO!?”, “BAR!?”, “BAZ!?”]

  • சோதனை JIT கம்பைலரின் வளர்ச்சி தொடர்ந்தது, இது ரூபி மொழியில் பயன்பாடுகளின் செயல்திறனை கணிசமாக மேம்படுத்தும். ரூபியில் முன்மொழியப்பட்ட JIT கம்பைலர் முதலில் C குறியீட்டை வட்டுக்கு எழுதுகிறது, அதன் பிறகு அது இயந்திர வழிமுறைகளை உருவாக்க வெளிப்புற C கம்பைலரை அழைக்கிறது (GCC, Clang மற்றும் Microsoft VC ++ ஆதரிக்கப்படுகிறது). புதிய பதிப்பு, தேவைப்பட்டால், இன்லைன் வரிசைப்படுத்தலுக்கான ஒரு முறையை செயல்படுத்துகிறது, தொகுப்பின் போது தேர்வுமுறை முறைகளின் தேர்ந்தெடுக்கப்பட்ட பயன்பாடு, "--jit-min-calls" இன் இயல்புநிலை மதிப்பு 5 இலிருந்து 10000 ஆகவும், "--jit-max-cache" ஆகவும் அதிகரிக்கப்பட்டுள்ளது. 1000 முதல் 100 வரை.
  • CGI.escapeHTML, Monitor மற்றும் MonitorMixin இன் மேம்படுத்தப்பட்ட செயல்திறன்.
  • தொகுதி#பெயர், உண்மை
  • RubyVM ::InstructionSequence#to_binary முறையால் உருவாக்கப்பட்ட பைனரி கோப்புகளின் அளவு குறைக்கப்பட்டது;
  • உள்ளமைக்கப்பட்ட கூறுகளின் புதுப்பிக்கப்பட்ட பதிப்புகள் உட்பட
    பண்ட்லர் 2.1.2, ரூபிஜெம்ஸ் 3.1.2,
    ரேக் 1.4.15,
    CSV 3.1.2, REXML 3.2.3,
    ஆர்எஸ்எஸ் 0.2.8,
    StringScanner 1.0.3;

  • நூலகங்கள் அடிப்படை விநியோகத்திலிருந்து வெளிப்புற ரத்தின தொகுப்புகளுக்கு மாற்றப்பட்டன
    CMath (cmath மாணிக்கம்),
    ஸ்கேன்ஃப் (ஸ்கேன்ஃப் ரத்தினம்),
    ஷெல் (ஷெல் ரத்தினம்),
    சின்க்ரோனைசர் (ஒத்திசைவு ரத்தினம்),
    நூல்கள் வெயிட் (த்வைட் ஜெம்),
    E2MM (e2mmap ரத்தினம்).

  • இயல்புநிலை stdlib தொகுதிகள் rubygems.org இல் வெளியிடப்படுகின்றன:
    அளவுகோல்,
    cgi,
    பிரதிநிதி,
    நீளமாக,
    நெட் பாப்,
    நிகர எஸ்எம்டிபி,
    திறந்த 3,
    கடை,
    சிங்கிள்டன். மானிட்டர் தொகுதிகள் rubygems.org க்கு நகர்த்தப்படவில்லை
    பார்வையாளர்,
    நேரம் முடிந்தது,
    ட்ரேசர்,
    உரி,
    yaml, இது ரூபி-கோருடன் மட்டுமே அனுப்பப்படுகிறது.

  • ரூபியை உருவாக்க இப்போது C99 தரநிலையை ஆதரிக்கும் C கம்பைலர் தேவைப்படுகிறது.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்