రూబీ ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల 3.2

రూబీ 3.2.0 విడుదల చేయబడింది, ఇది ప్రోగ్రామ్ డెవలప్‌మెంట్‌లో అత్యంత ప్రభావవంతమైన డైనమిక్ ఆబ్జెక్ట్-ఓరియెంటెడ్ ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు పెర్ల్, జావా, పైథాన్, స్మాల్‌టాక్, ఈఫిల్, అడా మరియు లిస్ప్ యొక్క ఉత్తమ లక్షణాలను కలిగి ఉంది. ప్రాజెక్ట్ కోడ్ BSD ("2-క్లాజ్ BSDL") మరియు "రూబీ" లైసెన్స్‌ల క్రింద పంపిణీ చేయబడింది, ఇది GPL లైసెన్స్ యొక్క తాజా సంస్కరణను సూచిస్తుంది మరియు GPLv3కి పూర్తిగా అనుకూలంగా ఉంటుంది.

ప్రధాన మెరుగుదలలు:

  • CRuby ఇంటర్‌ప్రెటర్ యొక్క ప్రారంభ పోర్ట్ జోడించబడింది, ఇది వెబ్ బ్రౌజర్‌లో లేదా వామ్‌టైమ్ వంటి స్వతంత్ర రన్‌టైమ్‌లలో అమలు చేయడానికి WebAssembly ఇంటర్మీడియట్ కోడ్‌లోకి కంపైల్ చేస్తుంది. విడిగా నడుస్తున్నప్పుడు ఆపరేటింగ్ సిస్టమ్‌తో ప్రత్యక్ష పరస్పర చర్య కోసం, WASI (WebAssembly సిస్టమ్ ఇంటర్‌ఫేస్) API ఉపయోగించబడుతుంది. ఇతర విషయాలతోపాటు, WASI పైన VFS రేపర్ అందించబడింది, ఇది మొత్తం రూబీ అప్లికేషన్‌ను ఒకే వామ్ ఫైల్ రూపంలో ప్రెజెంటేషన్‌లో ప్యాక్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. బ్రౌజర్‌లో రన్ చేయడం ట్రైరూబీ వంటి శిక్షణ మరియు డెమో వెబ్ సేవలను రూపొందించడానికి ఉపయోగించవచ్చు. ప్రస్తుత అభివృద్ధి దశలో, థ్రెడ్ APIని ఉపయోగించని ప్రాథమిక మరియు బూట్‌స్ట్రాప్ టెస్ట్ సూట్‌లను పోర్ట్ విజయవంతంగా పాస్ చేస్తుంది. పోర్ట్ ఫైబర్స్, మినహాయింపులు లేదా చెత్త సేకరణకు కూడా మద్దతు ఇవ్వదు.
  • రైల్స్ ఫ్రేమ్‌వర్క్‌ని ఉపయోగించే రూబీ ప్రోగ్రామ్‌ల పనితీరును పెంచే చొరవలో భాగంగా Shopify ఇ-కామర్స్ ప్లాట్‌ఫారమ్ డెవలపర్‌లు రూపొందించిన YJIT ఇన్-ప్రాసెస్ JIT కంపైలర్, చాలా మెథడ్‌లను స్థిరంగా మరియు సిద్ధంగా ఉన్నట్లు ప్రకటించబడింది. ఉత్పత్తి ఉపయోగం. మునుపు ఉపయోగించిన MJIT JIT కంపైలర్ నుండి ప్రధాన వ్యత్యాసం, ఇది మొత్తం పద్ధతులను ప్రాసెస్ చేయడంపై ఆధారపడి ఉంటుంది మరియు C భాషలో బాహ్య కంపైలర్‌ను ఉపయోగిస్తుంది, YJIT లేజీ బేసిక్ బ్లాక్ వెర్షన్ (LBBV)ని ఉపయోగిస్తుంది మరియు ఇంటిగ్రేటెడ్ JIT కంపైలర్‌ను కలిగి ఉంటుంది. LBBVతో, JIT మొదట పద్ధతి యొక్క ప్రారంభాన్ని మాత్రమే సంకలనం చేస్తుంది మరియు అమలు సమయంలో ఉపయోగించిన వేరియబుల్స్ మరియు ఆర్గ్యుమెంట్‌ల రకాలు నిర్ణయించబడిన తర్వాత కొంత సమయం తర్వాత మిగిలిన వాటిని కంపైల్ చేస్తుంది. YJIT Linux, MacOS, BSD మరియు ఇతర UNIX ప్లాట్‌ఫారమ్‌లలో x86-64 మరియు arm64/aarch64 ఆర్కిటెక్చర్‌ల కోసం అందుబాటులో ఉంది.

    రూబీ వలె కాకుండా, YJIT కోడ్ రస్ట్ భాషలో వ్రాయబడింది మరియు సంకలనం కోసం rustc 1.58.0+ కంపైలర్ అవసరం, కాబట్టి YJIT బిల్డ్ డిఫాల్ట్‌గా నిలిపివేయబడుతుంది మరియు ఐచ్ఛికం. YJITని ఉపయోగిస్తున్నప్పుడు, వివరణను ఉపయోగించడంతో పోలిస్తే yjit-బెంచ్ పరీక్షను అమలు చేస్తున్నప్పుడు పనితీరులో 41% పెరుగుదల నమోదు చేయబడింది.

    రూబీ ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల 3.2

  • బాహ్య డేటాను అసమర్థమైన మరియు సమయం తీసుకునే సాధారణ వ్యక్తీకరణలలో (ReDoS) ప్రాసెస్ చేస్తున్నప్పుడు సేవా దాడుల తిరస్కరణకు వ్యతిరేకంగా అదనపు రక్షణ జోడించబడింది. మెమొరైజేషన్ టెక్నిక్‌ని ఉపయోగించే మ్యాచింగ్ అల్గోరిథం గణనీయంగా మెరుగుపరచబడింది. ఉదాహరణకు, '/^a*b?a*$/ =~ "a" * 50000 + "x"' వ్యక్తీకరణ యొక్క అమలు సమయం 10 నుండి 0.003 సెకన్లకు తగ్గించబడింది. ఆప్టిమైజేషన్ ఖర్చు మెమరీ వినియోగంలో పెరుగుదల, దీని వినియోగం ఇన్‌పుట్ డేటా పరిమాణం కంటే సుమారు 10 రెట్లు ఎక్కువ. రెగ్యులర్ ఎక్స్‌ప్రెషన్‌ని తప్పనిసరిగా ప్రాసెస్ చేయాల్సిన సమయం ముగియడాన్ని (ఉదాహరణకు, “Regexp.timeout = 1.0”) నిర్వచించే సామర్థ్యం రెండవ భద్రతా ప్రమాణం.
  • syntax_suggest మోడ్ చేర్చబడింది, ఇది తప్పిపోయిన లేదా అదనపు ముగింపు “ముగింపు” వ్యక్తీకరణకు సంబంధించిన లోపాల కారణాలను నిర్ధారించడంలో సహాయపడుతుంది. సరిపోలని `ముగింపు', తప్పిపోయిన కీవర్డ్ (`డూ', `డెఫ్`, `ఇఫ్`, మొదలైనవి) ? 1 తరగతి కుక్క > 2 డిఫ్‌బార్క్ > 3 ఎండ్ 4 ఎండ్
  • రకాలు మరియు ఆర్గ్యుమెంట్‌లకు సంబంధించిన ఎర్రర్‌ల కోసం ఆర్గ్యుమెంట్‌లను గుర్తు పెట్టగల సామర్థ్యం ఎర్రర్ లొకేషన్ డిస్‌ప్లే మోడ్‌కు జోడించబడింది, ఉదాహరణకు: test.rb:2:`+'లో: nil పూర్ణాంకం (TypeError) sum = ary లోకి బలవంతం చేయబడదు [0] + ఆరీ [1] ^^^^^^
  • ఆర్గ్యుమెంట్‌ల సెట్‌లను ఇతర పద్ధతులకు దారి మళ్లించడానికి కొత్త సింటాక్స్ జోడించబడింది: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler ప్రతిపాదించబడింది - పాత MJIT JIT కంపైలర్ యొక్క రూపాంతరం, రూబీ భాషలో తిరిగి వ్రాయబడింది. MJIT ఒక MJIT వర్కర్ థ్రెడ్‌లో అమలు కాకుండా ప్రత్యేక ప్రక్రియలో నడుస్తుందని నిర్ధారించబడింది.
  • బండ్లర్ 2.4లో, డిపెండెన్సీ ప్రాసెసింగ్ పబ్‌గ్రబ్ వెర్షన్ డిటెక్టర్‌ని ఉపయోగిస్తుంది, డార్ట్ లాంగ్వేజ్ కోసం పబ్ ప్యాకేజీ మేనేజర్‌లో కూడా ఉపయోగించబడుతుంది. గతంలో ఉపయోగించిన Molinillo అల్గారిథమ్ RubyGemsలో ఉపయోగించడం కొనసాగుతుంది, కానీ భవిష్యత్తులో PubGrub ద్వారా కూడా భర్తీ చేయబడుతుంది.
  • అంతర్నిర్మిత జెమ్ మాడ్యూల్స్ యొక్క నవీకరించబడిన సంస్కరణలు మరియు ప్రామాణిక లైబ్రరీలో చేర్చబడినవి.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి