రూబీ 3.1.0 విడుదల చేయబడింది, ఇది ప్రోగ్రామ్ డెవలప్మెంట్లో అత్యంత ప్రభావవంతమైన డైనమిక్ ఆబ్జెక్ట్-ఓరియెంటెడ్ ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు పెర్ల్, జావా, పైథాన్, స్మాల్టాక్, ఈఫిల్, అడా మరియు లిస్ప్ యొక్క ఉత్తమ లక్షణాలను కలిగి ఉంది. ప్రాజెక్ట్ కోడ్ BSD ("2-క్లాజ్ BSDL") మరియు "రూబీ" లైసెన్స్ల క్రింద పంపిణీ చేయబడింది, ఇది GPL లైసెన్స్ యొక్క తాజా సంస్కరణను సూచిస్తుంది మరియు GPLv3కి పూర్తిగా అనుకూలంగా ఉంటుంది.
ప్రధాన మెరుగుదలలు:
- రైల్స్ ఫ్రేమ్వర్క్ను ఉపయోగించే రూబీ ప్రోగ్రామ్ల పనితీరును మెరుగుపరచడానికి మరియు అనేక పద్ధతులను కాల్ చేసే చొరవలో భాగంగా Shopify ఇ-కామర్స్ ప్లాట్ఫారమ్ డెవలపర్లచే సృష్టించబడిన కొత్త ప్రయోగాత్మక ప్రాసెస్లో JIT కంపైలర్, YJIT జోడించబడింది. మునుపు ఉపయోగించిన MJIT JIT కంపైలర్ నుండి ప్రధాన వ్యత్యాసం, ఇది మొత్తం పద్ధతులను ప్రాసెస్ చేయడంపై ఆధారపడి ఉంటుంది మరియు C భాషలో బాహ్య కంపైలర్ను ఉపయోగిస్తుంది, YJIT లేజీ బేసిక్ బ్లాక్ వెర్షన్ (LBBV)ని ఉపయోగిస్తుంది మరియు ఇంటిగ్రేటెడ్ JIT కంపైలర్ను కలిగి ఉంటుంది. LBBVతో, JIT మొదట పద్ధతి యొక్క ప్రారంభాన్ని మాత్రమే కంపైల్ చేస్తుంది మరియు అమలు సమయంలో ఉపయోగించిన వేరియబుల్స్ మరియు ఆర్గ్యుమెంట్ల రకాలు నిర్ణయించబడిన తర్వాత కొంత సమయం తరువాత మిగిలిన వాటిని కంపైల్ చేస్తుంది. YJITని ఉపయోగిస్తున్నప్పుడు, రైల్స్బెంచ్ పరీక్షను అమలు చేస్తున్నప్పుడు పనితీరులో 22% పెరుగుదల మరియు లిక్విడ్-రెండర్ పరీక్షలో 39% పెరుగుదల నమోదు చేయబడింది. YJIT ప్రస్తుతం x86-64 ఆర్కిటెక్చర్ ఉన్న సిస్టమ్లలో unix-వంటి OS లకు మద్దతు ఇవ్వడానికి పరిమితం చేయబడింది మరియు డిఫాల్ట్గా నిలిపివేయబడింది (సక్రియం చేయడానికి, కమాండ్ లైన్లో “--yjit” ఫ్లాగ్ను పేర్కొనండి).
- పాత MJIT JIT కంపైలర్ యొక్క మెరుగైన పనితీరు. పట్టాలను ఉపయోగించే ప్రాజెక్ట్ల కోసం, డిఫాల్ట్ గరిష్ట కాష్ పరిమాణం (--jit-max-cache) 100 నుండి 10000 సూచనలకు పెంచబడింది. 1000 కంటే ఎక్కువ సూచనలతో ఉన్న పద్ధతుల కోసం JITని ఉపయోగించడం ఆపివేయబడింది. Zeitwerk ఆఫ్ రైల్స్కు మద్దతు ఇవ్వడానికి, తరగతి ఈవెంట్ల కోసం TracePoint ప్రారంభించబడినప్పుడు JIT కోడ్ విస్మరించబడదు.
- ఇది పూర్తిగా తిరిగి వ్రాయబడిన debug.gem డీబగ్గర్ను కలిగి ఉంది, ఇది రిమోట్ డీబగ్గింగ్కు మద్దతు ఇస్తుంది, డీబగ్ చేయబడిన అప్లికేషన్ను నెమ్మది చేయదు, అధునాతన డీబగ్గింగ్ ఇంటర్ఫేస్లతో (VSCode మరియు Chrome) ఏకీకరణకు మద్దతు ఇస్తుంది, మల్టీ-థ్రెడ్ మరియు బహుళ-ప్రాసెస్ అప్లికేషన్లను డీబగ్ చేయడానికి ఉపయోగించవచ్చు, అందిస్తుంది REPL కోడ్ ఎగ్జిక్యూషన్ ఇంటర్ఫేస్, అధునాతన ట్రేసింగ్ సామర్థ్యాలను అందిస్తుంది, కోడ్ స్నిప్పెట్లను రికార్డ్ చేయగలదు మరియు రీప్లే చేయగలదు. మునుపు అందించబడిన డీబగ్గర్ lib/debug.rb బేస్ డిస్ట్రిబ్యూషన్ నుండి తీసివేయబడింది.
- కాల్ బ్యాక్ ట్రేస్ రిపోర్ట్లలో ఎర్రర్ల దృశ్యమాన హైలైట్ అమలు చేయబడింది. అంతర్నిర్మిత మరియు డిఫాల్ట్-ప్రారంభించబడిన జెమ్ ప్యాకేజీని ఉపయోగించి ఎర్రర్ ఫ్లాగింగ్ అందించబడింది error_highlight. ఎర్రర్ ఫ్లాగింగ్ని నిలిపివేయడానికి, మీరు “--disable-error_highlight” సెట్టింగ్ని ఉపయోగించవచ్చు. $ రూబీ test.rb test.rb:1:in " ": 1 కోసం నిర్వచించబడని పద్ధతి "సమయం":పూర్ణాంకం (NoMethodError) 1.టైమ్ {} ^^^^^ మీ ఉద్దేశ్యం? సార్లు
- ఇంటరాక్టివ్ లెక్కల షెల్ IRB (REPL, రీడ్-ఎవల్-ప్రింట్-లూప్) నమోదు చేసిన కోడ్ను స్వయంచాలకంగా పూర్తి చేస్తుంది (మీరు టైప్ చేస్తున్నప్పుడు, ఇన్పుట్ కొనసాగించడానికి ఎంపికలతో సూచన ప్రదర్శించబడుతుంది, వాటి మధ్య మీరు ట్యాబ్ లేదా Shift+తో తరలించవచ్చు. ట్యాబ్ కీ). కొనసాగింపు ఎంపికను ఎంచుకున్న తర్వాత, ఎంచుకున్న అంశంతో అనుబంధించబడిన డాక్యుమెంటేషన్ను ప్రదర్శించే డైలాగ్ బాక్స్ సమీపంలో ప్రదర్శించబడుతుంది. పూర్తి డాక్యుమెంటేషన్ను యాక్సెస్ చేయడానికి కీబోర్డ్ షార్ట్కట్ Alt+dని ఉపయోగించవచ్చు.
- భాషా సింటాక్స్ ఇప్పుడు హాష్ లిటరల్స్ మరియు కీవర్డ్ ఆర్గ్యుమెంట్లలోని విలువలను ఫంక్షన్లకు కాల్ చేస్తున్నప్పుడు దాటవేయడానికి అనుమతిస్తుంది. ఉదాహరణకు, “{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).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
- సింగిల్-లైన్ నమూనా మ్యాచ్లలో, మీరు కుండలీకరణాలను వదిలివేయవచ్చు: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
- RBS రకం ఉల్లేఖన భాష, ప్రోగ్రామ్ యొక్క నిర్మాణాన్ని మరియు ఉపయోగించిన రకాలను గుర్తించడానికి మిమ్మల్ని అనుమతిస్తుంది, “<” చిహ్నాన్ని ఉపయోగించి టైప్ పారామితుల యొక్క ఎగువ పరిమితిని పేర్కొనడానికి మద్దతును జోడించింది, సాధారణ రకాల మారుపేర్లకు మద్దతుని జోడించింది, అమలు చేసిన మద్దతు రత్నాల నిర్వహణ కోసం సేకరణలు, మెరుగైన పనితీరు మరియు అంతర్నిర్మిత మరియు ప్రామాణిక లైబ్రరీల కోసం అనేక కొత్త సంతకాలను అమలు చేసింది.
- సమగ్ర అభివృద్ధి పరిసరాల కోసం ప్రయోగాత్మక మద్దతు TypePro స్టాటిక్ టైప్ ఎనలైజర్కు జోడించబడింది, ఇది స్పష్టమైన రకం సమాచారం లేకుండా కోడ్ విశ్లేషణ ఆధారంగా RBS ఉల్లేఖనాలను రూపొందిస్తుంది (ఉదాహరణకు, TypeProని VSCode ఎడిటర్తో ఏకీకృతం చేయడానికి యాడ్-ఆన్ తయారు చేయబడింది).
- బహుళ అసైన్మెంట్లను ప్రాసెస్ చేసే క్రమం మార్చబడింది. ఉదాహరణకు, గతంలో “foo[0], bar[0] = baz, qux” అనే వ్యక్తీకరణ యొక్క భాగాలు baz, qux, foo, bar ఆర్డర్లో ప్రాసెస్ చేయబడ్డాయి, కానీ ఇప్పుడు foo, bar, baz, qux.
- VWA (వేరియబుల్ విడ్త్ కేటాయింపు) మెకానిజంను ఉపయోగించి స్ట్రింగ్ల కోసం మెమరీ కేటాయింపు కోసం ప్రయోగాత్మక మద్దతు జోడించబడింది.
- అంతర్నిర్మిత జెమ్ మాడ్యూల్స్ యొక్క నవీకరించబడిన సంస్కరణలు మరియు ప్రామాణిక లైబ్రరీలో చేర్చబడినవి. net-ftp, net-imap, net-pop, net-smtp, మ్యాట్రిక్స్, ప్రైమ్ మరియు డీబగ్ ప్యాకేజీలు అంతర్నిర్మితంగా ఉన్నాయి.
మూలం: opennet.ru