የጄንቶ ፕሮጀክት የፖርታጅ 3.0 ጥቅል አስተዳደር ስርዓት አስተዋወቀ

ተረጋጋ የጥቅል አስተዳደር ስርዓት መለቀቅ ማጓጓዣ 3.0በስርጭቱ ውስጥ ጥቅም ላይ ይውላል Gentoo Linux. ይህ ክር ወደ ፓይዘን 3 የመዛወር እና የ Python 2.7 ድጋፍን የማቋረጥ ረጅም ስራን ያጠቃልላል።

ለ Python 2.7 ድጋፍ መጨረሻ በተጨማሪ ሌላ ትልቅ ለውጥ ማካተት ነበር ማመቻቸት, ይህም ከ 50-60% ጥገኝነቶችን ከመወሰን ጋር የተያያዙ ስሌቶችን ለማፋጠን አስችሏል. የሚገርመው ነገር አንዳንድ ገንቢዎች ስራውን ለማፋጠን በC/C ++ ወይም Go ውስጥ ያለውን የጥገኝነት መፍታት ኮድ እንደገና እንዲፃፍ ሀሳብ አቅርበዋል ነገር ግን ያለውን ችግር በትንሽ ደም መፋሰስ መፍታት ችለዋል።

ያለውን ኮድ መግለጽ እንደሚያሳየው አብዛኛው የስሌት ጊዜ የሚጠፋው use_reduce እና catpkgsplit ተግባራትን በተደጋገሙ የክርክር ስብስብ (ለምሳሌ የ catpkgsplit ተግባር ከ1 እስከ 5 ሚሊዮን ጊዜ ተጠርቷል) ነው። መዝገበ ቃላትን በመጠቀም የእነዚህን ተግባራት ውጤት መሸጎጫ ለማፋጠን ተተግብሯል። የ lru_cache አብሮገነብ ተግባር ለመሸጎጫ ማከማቻ በጣም ጥሩ ነበር ነገር ግን ከ3.2 ጀምሮ በ Python ልቀቶች ላይ ብቻ ነበር የሚገኘው። ከቀደምት ስሪቶች ጋር ተኳሃኝነትን ለማግኘት lru_cacheን ለመተካት አንድ ስቱብ ታክሏል ነገር ግን በ Portage 2.7 ውስጥ ለ Python 3.0 ድጋፍን ለማቆም መወሰኑ ተግባሩን በእጅጉ ያቃልለው እና ይህንን ንብርብር ያስወግዳል።

የመሸጎጫው አጠቃቀም በ ThinkPad X220 ላፕቶፕ ላይ ያለውን የ"emerge -uDvpU --with-bdeps=y @world" የስራ ጊዜን ከ5 ደቂቃ ከ20 ሰከንድ ወደ 3 ደቂቃ ከ16 ሰከንድ (63%) ቀንሶታል። በሌሎች ስርዓቶች ላይ የተደረጉ ሙከራዎች ቢያንስ የ 48% አፈፃፀም አሳይተዋል.

ለውጡን ያዘጋጀው ገንቢም የጥገኝነት መፍታት ኮድን በC++ ወይም Rust ለመቅረጽ ሞክሯል፣ ነገር ግን ከፍተኛ መጠን ያለው ኮድ ማስተላለፍ ስለሚያስፈልገው ስራው በጣም ከባድ ሆኖ ተገኝቷል፣ እና በተመሳሳይ ጊዜ፣ ይህ አጠራጣሪ ነበር። ውጤቱ ጥረቱን ያስቆማል።

ምንጭ: opennet.ru

አስተያየት ያክሉ