Skip to content

Latest commit

 

History

History
146 lines (129 loc) · 21.6 KB

File metadata and controls

146 lines (129 loc) · 21.6 KB
lang am
direction ltr
source AGENTS.md
status complete
generator scripts/sync_docs_i18n.py
source_hash 5036d004829b1c2da0991b637aa735da9cdf2f3e8e42ac760ff651e60d25d433
source_last_modified 2026-01-31T07:37:05.947018+00:00
translation_last_reviewed 2026-02-07
translator machine-google-reviewed

ወኪሎች መመሪያዎች

እነዚህ መመሪያዎች እንደ የካርጎ የስራ ቦታ በተደራጀው አጠቃላይ ማከማቻ ላይ ተፈጻሚ ይሆናሉ።

ፈጣን ጅምር

  • የስራ ቦታን ይገንቡ: cargo build --workspace
  • ግንባታዎች 20 ደቂቃ ያህል ሊወስዱ ይችላሉ; ለግንባታ ደረጃዎች የ20 ደቂቃ ጊዜ ማብቂያ ይጠቀሙ።
  • ሁሉንም ነገር ይሞክሩ: cargo test --workspace (ይህ ሩጫ ብዙውን ጊዜ ብዙ ሰዓታትን እንደሚወስድ ልብ ይበሉ ፣ በዚህ መሠረት ያቅዱ)
  • Lint በጥብቅ: cargo clippy --workspace --all-targets -- -D warnings
  • የቅርጸት ኮድ፡ cargo fmt --all (እትም 2024)
  • አንድ crate ይሞክሩ: I18NI0000040X
  • አንድ ሙከራ ያሂዱ: I18NI0000041X
  • ስዊፍት ኤስዲኬ፡ የስዊፍት ጥቅል ሙከራዎችን ለማስፈጸም ከIrohaSwift ማውጫ swift test አሂድ።
  • አንድሮይድ ኤስዲኬ፡ ከ I18NI0000044X ሩጫ JAVA_HOME=$(/usr/libexec/java_home -v 21) ANDROID_HOME=~/Library/Android/sdk ANDROID_SDK_ROOT=~/Library/Android/sdk ./gradlew test

አጠቃላይ እይታ

  • Hyperledger Iroha የብሎክቼይን መድረክ ነው
  • የ DA/RBC ድጋፍ በዋናው ሥሪት ይለያል፡ Iroha 2 በአማራጭ DA/RBC እንዲነቃ ማድረግ ይችላል። Iroha 3 DA/RBC የነቃ ብቻ ሊሆን ይችላል።
  • IVM የ IVM Iroha ምናባዊ ማሽን ነው
  • Kotodama ለ IVM .ko ፋይል ቅጥያ ለጥሬ ኮንትራት ኮድ የሚጠቀም እና በፋይል ወይም በሰንሰለት ሲቀመጥ ወደ ባይትኮድ ያጠናቅራል። በተለምዶ፣ .ቶ ባይት ኮድ በሰንሰለት ላይ ተዘርግቷል።
    • ማብራሪያ፡ I18NT0000004X Iroha ቨርቹዋል ማሽን (IVM) ላይ ያነጣጠረ እና IVM ባይትኮድ (.to) ያመነጫል። እሱ “risc5”/RISC-Vን እንደ ራሱን የቻለ አርክቴክቸር አላነጣጠረም። RISC-V-እንደ ኢንኮዲንግ በማከማቻው ውስጥ በሚታዩበት ቦታ፣ የIVM የማስተማሪያ ቅርጸቶች ትግበራ ዝርዝሮች ናቸው እና በሃርድዌር ላይ የሚታይ ባህሪ መቀየር የለባቸውም።
  • Norito የ Iroha የውሂብ ተከታታይ ኮድ ነው
  • መላው የስራ ቦታ የ Rust መደበኛ ቤተ-መጽሐፍት (std) ላይ ያነጣጠረ ነው። WASM/no-std ግንባታዎች አይደገፉም እና ለውጦችን ሲያደርጉ ግምት ውስጥ መግባት የለባቸውም።## የማከማቻ መዋቅር
  • Cargo.toml በማከማቻው ስር የስራ ቦታን ይገልፃል እና ሁሉንም የአባላት ሳጥኖች ይዘረዝራል።
  • crates/ - የ Iroha ክፍሎችን በመተግበር የዝገት ሳጥኖች. እያንዳንዱ ሳጥን የራሱ ንዑስ ማውጫ አለው፣ በተለይም src/tests/examples/ እና I18NI0000053X ይይዛል።
    • አስፈላጊ ሳጥኖች የሚከተሉትን ያካትታሉ:
      • iroha - ከፍተኛ-ደረጃ ቤተ-መጽሐፍት ዋና ተግባራትን በማዋሃድ።
      • irohad – ዴሞን ሁለትዮሽ የመስቀለኛ መንገድ አተገባበርን ያቀርባል።
      • ivm - የ Iroha ምናባዊ ማሽን።
      • iroha_cli - ከኖድ ጋር መስተጋብር ለመፍጠር የትዕዛዝ-መስመር በይነገጽ።
      • iroha_coreiroha_data_modeliroha_crypto እና ሌሎች ደጋፊ ሳጥኖች።
  • IrohaSwift/ - ፈጣን ጥቅል ለደንበኛው/ሞባይል ኤስዲኬ። ምንጮቹ የሚኖሩት በI18NI0000062X ነው እና አሃዱ በTests/IrohaSwiftTests/ ስር ይሞክራል። የስዊፍት ስብስብን ለመለማመድ swift testን ከዚህ ማውጫ ያሂዱ።
  • integration_tests/ - በtests/ ስር ያሉ የአካለ-ክፍል ሙከራዎችን የሚያስተናግድ የጭነት ሳጥን።
  • data_model/ - በሙከራዎች እና በሰነዶች ውስጥ ጥቅም ላይ የዋለ የናሙና የውሂብ ሞዴል ፍቺዎች።
  • docs/ - የፕሮጀክት ሰነዶች እና የንድፍ ማስታወሻዎች. የማርክ ማድረጊያ ምንጮች በI18NI0000069X ውስጥ ይኖራሉ።
  • pytests/ - Python ላይ የተመሰረቱ ሙከራዎች እና የደንበኛ አጠቃቀምን የሚያሳዩ ምሳሌዎች።
  • scripts/ - በልማት እና በ CI ቧንቧዎች ውስጥ ጥቅም ላይ የዋሉ የመገልገያ ስክሪፕቶች።
  • examples/ios/ እና examples/ios/NoritoDemoXcode/ - የስዊፍት ኤስዲኬን የሚያሳዩ የ iOS መተግበሪያዎች ናሙና; በ IrohaSwift ጥቅል ላይ ተመርኩዘው የራሳቸውን XCTest ኢላማዎች ያካትታሉ።
  • defaults/ እና I18NI0000076X - የማዋቀሪያ ፋይሎች እና የጂት መንጠቆዎች በአስተዋጽዖ አበርካቾች ጥቅም ላይ ይውላሉ።
  • nix-appimage/ እና Nix ፋይሎች - ሊባዙ ለሚችሉ ግንባታዎች እና ማሸጊያዎች መገልገያ።##የልማት የስራ ሂደት
  • ዋና ትግበራዎች በ I18NI0000078X ውስጥ ናቸው
  • የውሂብ ሞዴል በ I18NI0000079X ውስጥ ነው
  • ለውጦችን በሚያደርጉበት ጊዜ ሁሉንም ሳጥኖች መመልከትዎን ያረጋግጡ።
  • ማንኛውንም የCargo.lock ፋይሎችን አይቀይሩ
  • አዲስ ሳጥኖችን ወደ Cargo.toml ከመጨመር ይቆጠቡ; በሚቻልበት ጊዜ አስፈላጊውን ተግባር በነባር ሳጥኖች ውስጥ ተግባራዊ ማድረግ።
  • አንዳንድ ስራዎች በጣም ትልቅ ከሆኑ, መስራትዎን አይቃወሙ. ይልቁንስ ስራውን ሰብረው TODOs ጨምሩ እና የሚችሏቸውን ክፍሎች ይተግብሩ።
  • ትልቅ ተግባር ወይም ጥያቄ በመጣ ቁጥር በራስ ሰር ወደ ትንንሽ እርምጃ መውሰድ እና ተግባሩን ሙሉ በሙሉ ውድቅ ከማድረግ ይልቅ ተገቢውን የሶፍትዌር ምህንድስና አፈፃፀም ይቀጥሉ።
  • ማንኛውንም ማበረታቻዎችን ማድረግን አይቀበሉ።
  • አዲስ ክሪፕቶግራፊክ ፕሪሚቲቭስ፣ ኦፕኮድ ወይም ከፍተኛ ሒሳብ ሲታከሉ የሃርድዌር ማጣደፍን ለMETAL፣ NEON፣ SIMD፣ CUDA ወዘተ ያዘምኑ፣ በሚቻልበት ሃርድዌር ላይ የሃርድዌር ማጣደፍ እና ትይዩነት ለመጠቀም ይሞክሩ።
  • አመክንዮ ከተቀየረ ሁሉም የ.md ፋይሎች እና የውስጠ-ምንጭ ኮድ አስተያየቶች ከቅርብ ጊዜ ተግባራት ጋር የተዘመኑ መሆናቸውን ያረጋግጡ።
  • ሁሉም የተጨመሩ አመክንዮዎች የ IVM አጠቃቀምን በማይጎዳ መልኩ መደረጉን ያረጋግጡ በብሎክቼይን መቼት ውስጥ በ P2P አውታረመረብ ላይ ያሉ የተለያዩ ኖዶች የተለያዩ ሃርድዌር አላቸው ፣ ግን አሁንም ተመሳሳይ የግቤት እገዳ ሲሰጥ ውጤቱ ተመሳሳይ መሆን አለበት።
  • ስለ ባህሪ ወይም የአተገባበር ዝርዝሮች ጥያቄዎችን ሲመልሱ መጀመሪያ ተዛማጅ የኮድ መንገዶችን ያንብቡ እና ምላሽ ከመስጠትዎ በፊት እንዴት እንደሚሰሩ መረዳትዎን ያረጋግጡ።
  • ውቅር፡ ለሁሉም የአሂድ ጊዜ ባህሪ ከአካባቢ ተለዋዋጮች ይልቅ iroha_config መለኪያዎችን ይምረጡ። አዲስ ቁልፎችን ወደ I18NI0000082X (ተጠቃሚ → ትክክለኛ → ነባሪዎች) እና እሴቶችን በግንባታ ሰሪዎች ወይም በጥገኝነት መርፌ (ለምሳሌ፣ አስተናጋጅ አዘጋጅ) በግልፅ ይጨምሩ። ማንኛውንም አካባቢን መሰረት ያደረጉ መቀያየሪያዎችን ለገንቢ ምቾት ብቻ በሙከራዎች ያስቀምጡ እና በምርት መንገዶች ላይ አይተማመኑ። ከአካባቢ ተለዋዋጮች በስተጀርባ ያለውን የመላኪያ ባህሪያትን አንደግፍም—የምርት ባህሪ ሁል ጊዜ ከውቅረት ፋይሎቹ የመነጨ መሆን አለበት፣ እና እነዚህ ውቅሮች አስተዋይ የሆኑ ነባሪዎችን ማጋለጥ አለባቸው ስለዚህ አዲስ መጤ ሪፖውን ለመዝጋት፣ ሁለትዮሾችን ለማስኬድ እና ሁሉም ነገር እሴቶችን በእጅ ሳያስተካክል “ልክ ይሰራል”።
    • ለIVM/I18NT0000005X v1 ጥብቅ የጠቋሚ-ABI አይነት ፖሊሲ ሁል ጊዜ ተፈጻሚ ይሆናል። የ ABI-ፖሊሲ መቀያየር የለም; ኮንትራቶች እና አስተናጋጆች የ ABI ፖሊሲን ያለ ምንም ቅድመ ሁኔታ ማክበር አለባቸው።
  • በ IVM syscalls ወይም opcodes ውስጥ ጥቅም ላይ የዋለ ማንኛውንም ነገር በሮች አትስጡ; እያንዳንዱ የIroha ግንባታ በመስቀለኛ መንገዱ ላይ የመወሰን ባህሪን ለመጠበቅ እነዚያን የኮድ መንገዶች መላክ አለበት።
  • ተከታታይነት፡ ከሰርዴ ይልቅ በየቦታው I18NT0000008X ይጠቀሙ። ለሁለትዮሽ ኮዴኮች norito::{Encode, Decode} ይጠቀሙ; ለ JSON የ norito::json አጋዥዎችን/ማክሮዎችን (norito::json::from_*to_*፣ I18NI0000087X፣ Value) ይጠቀሙ እና ወደ I18NI000000089X በጭራሽ አይመለሱም። በቀጥታ I18NI0000090X/I18NI0000091X ጥገኞችን በሳጥኖች ውስጥ አታክል; ሰርዴ ከውስጥ የሚፈለግ ከሆነ፣ በNorito's መጠቅለያዎች ይተማመኑ።
  • CI ጠባቂ፡ I18NI0000092X SCALE (parity-scale-codec) በNorito የቤንችማርክ ማሰሪያ ውስጥ ብቻ እንደሚታይ ያረጋግጣል። የተከታታይ ኮድ ከነካህ በአካባቢው አሂድ።
  • Norito የሚጫኑ ጭነቶች አቀማመጣቸውን ማሳወቅ አለባቸው፡ ወይ የስሪት ቁጥር ካርታዎች ወደ ቋሚ ባንዲራ ስብስብ፣ ወይም የNorito አርዕስት ባንዲራዎቹን መፍታት ያውጃል። የታሸጉ ቅደም ተከተሎችን ከሂዩሪስቲክስ አይገምቱ; የጄኔሲስ መረጃ ተመሳሳይ ህግን ይከተላል.- ብሎኮች ጸንተው መሰራጨት አለባቸው ቀኖናዊውን I18NI0000094X ቅርጸት (I18NI0000095X/I18NI0000096X) በመጠቀም የስሪት ባይት ቅድመ ቅጥያ ከ Norito አርእስት ጋር። ባዶ ጭነት አይደገፍም።
  • ማንኛውንም ጊዜያዊ ወይም ያልተሟላ አተገባበር የሚያብራራ የTODO: አስተያየት ያክሉ።
  • ሁሉንም የዝገት ምንጮችን በ I18NI0000098X (እትም 2024) ይቅረጹ።
  • ሙከራዎችን አክል፡ ለእያንዳንዱ አዲስ ወይም ለተሻሻለ ተግባር ቢያንስ አንድ አሃድ ሙከራን ያረጋግጡ፣ በ #[cfg(test)] መስመር ውስጥ ወይም በ crate tests/ ማውጫ ውስጥ የተቀመጠ።
  • cargo testን በአገር ውስጥ ያሂዱ፣ ማንኛውንም የግንባታ ችግሮችን ያስተካክሉ እና ማለፉን ያረጋግጡ። ይህንን ለአንድ የተወሰነ ሳጥን ብቻ ሳይሆን ለጠቅላላው ማከማቻ ያድርጉት።
  • ለተጨማሪ የሊንት ቼኮች cargo clippy -- -D warnings በአማራጭ ያሂዱ።

ሰነድ

  • ሁልጊዜ የሣጥን ደረጃ ሰነዶችን ያክሉ፡ እያንዳንዱን ሳጥን ይጀምሩ ወይም የሙከራ ሣጥን በአጭር የውስጥ ዶክ አስተያየት (//! ...)።
  • በማንኛውም ቦታ (የውህደት ሙከራዎችን ጨምሮ) #![allow(missing_docs)] ወይም የንጥል ደረጃ #[allow(missing_docs)] አይጠቀሙ። የጎደሉ ሰነዶች በስራ ቦታው ውስጥ ተከልክለዋል እና ሰነዶች በመጻፍ መስተካከል አለባቸው።
  • Norito ኮዴክ፡ norito.md በሪፖ ስርው ላይ ለቀኖናዊ ሽቦ አቀማመጥ እና የአተገባበር ዝርዝሮች ይመልከቱ። የNorito ስልተ ቀመር ወይም አቀማመጦች ከተቀየሩ norito.mdን በተመሳሳይ PR ያዘምኑ።
  • ቁሳቁሶችን ወደ አካዲያን በሚተረጉሙበት ጊዜ በኩኒፎርም የተፃፈ የትርጉም አተረጓጎም ያቅርቡ። ፎነቲክ በቋንቋ ፊደል መጻፍን ያስወግዱ፣ እና ትክክለኛ የጥንት ቃላት ሲጠፉ ሀሳቡን የሚጠብቁ ግጥማዊ የአካዲያን ግምቶችን ይምረጡ።

ABI Evolution (ኤጀንቶች ምን ማድረግ አለባቸው)

ማስታወሻ፡ የመጀመሪያ ልቀት መመሪያ

  • ይህ የመጀመሪያው ልቀት ነው እና አንድ ነጠላ የኤቢአይ ስሪት (V1) አለን። እስካሁን ምንም V2 የለም። ከዚህ በታች ሁሉንም ከABI-ነክ የዝግመተ ለውጥ እቃዎች እንደ የወደፊት መመሪያ ይያዙ; ለአሁን፣ ኢ18NI00000108X ብቻ ኢላማ ያድርጉ። የውሂብ ሞዴል እና ኤፒአይዎች እንዲሁ በመጀመሪያ የተለቀቁ ናቸው እና ለመላክ እንደ አስፈላጊነቱ በነፃነት ሊለወጡ ይችላሉ፤ ያለጊዜው መረጋጋት ይልቅ ግልጽነት እና ትክክለኛነትን ይመርጣሉ።

አጠቃላይ፡-

  • የ ABI ፖሊሲ ያለ ምንም ቅድመ ሁኔታ በ v1 (ሁለቱም syscall surface እና pointer-ABI አይነቶች) ተፈጻሚ ነው። የሩጫ ጊዜ መቀየሪያዎችን አይጨምሩ።

  • ለውጦች በሃርድዌር እና በእኩዮች መካከል ቆራጥነትን መጠበቅ አለባቸው። በተመሳሳይ PR ውስጥ ሙከራዎችን እና ሰነዶችን ያዘምኑ።

  • syscals ካከሉ/ ካነሱ/ እንደገና ከቆጠሩ፡-

    • ivm::syscalls::abi_syscall_list() ያዘምኑ እና እንደታዘዘ ያድርጉት። is_syscall_allowed(policy, number) የታሰበውን ወለል እንደሚያንጸባርቅ ያረጋግጡ።
    • በአስተናጋጆች ውስጥ አዳዲስ ቁጥሮችን መተግበር ወይም ሆን ብሎ አለመቀበል; ያልታወቁ ቁጥሮች ወደ VMError::UnknownSyscall ካርታ ማድረግ አለባቸው።
    • ወርቃማ ሙከራዎችን ያዘምኑ;
      • crates/ivm/tests/abi_syscall_list_golden.rs
      • crates/ivm/tests/abi_hash_versions.rs (መረጋጋት + ስሪት መለያየት)
  • የጠቋሚ-ABI ዓይነቶችን ካከሉ፡-

    • አዲሱን ተለዋጭ ወደ ivm::pointer_abi::PointerType ያክሉ (አዲስ የ u16 መታወቂያ ይመድቡ ፣ ነባር መታወቂያዎችን በጭራሽ አይቀይሩ)።
    • ለትክክለኛው abi_version ካርታ ivm::pointer_abi::is_type_allowed_for_policy ያዘምኑ።
    • crates/ivm/tests/pointer_type_ids_golden.rs ያዘምኑ እና አስፈላጊ ከሆነ የፖሊሲ ሙከራዎችን ያክሉ።
  • አዲስ የ ABI ስሪት ካስተዋወቁ፡

    • ካርታ ProgramMetadata.abi_versionivm::SyscallPolicy እና Kotodama ማጠናከሪያውን በማዘመን አዲሱን እትም ሲጠየቅ ለመልቀቅ።
    • abi_hashን ያድሱ (በivm::syscalls::compute_abi_hash) እና መገለጫዎች አዲሱን ሃሽ መክተታቸውን ያረጋግጡ።
    • በአዲሱ እትም ስር ለተፈቀዱ/ያልተፈቀዱ syscalls እና ጠቋሚ ዓይነቶች ሙከራዎችን ያክሉ።
  • መግቢያ እና መግለጫዎች;

    • መግቢያ I18NI0000122X/abi_hash በሰንሰለት መገለጫዎች ላይ እኩልነትን ያስፈጽማል; ይህንን ባህሪ እንደተጠበቀ ያቆዩት።
    • iroha_core/tests/ ውስጥ ለመጨመር / ለማዘመን ሙከራዎች: አዎንታዊ (ተዛማጅ abi_hash) እና አሉታዊ (አለመጣጣም) ጉዳዮች።- ሰነዶች እና የሁኔታ ዝመናዎች (ተመሳሳይ PR):
    • crates/ivm/docs/syscalls.md (ኤቢ ኢቮሉሽን ክፍል) እና ማንኛውም የሳይክል ሠንጠረዦችን ያዘምኑ።
    • status.md እና roadmap.mdን ከ ABI ለውጦች እና የሙከራ ዝመናዎች አጭር ማጠቃለያ ጋር ያዘምኑ።

የፕሮጀክት ሁኔታ እና እቅድ

  • በሣጥኖች ውስጥ አሁን ላለው የማጠናቀር/የአሂድ ጊዜ ሁኔታ status.md በሬፖ ስር ላይ ያረጋግጡ።
  • ቅድሚያ ለተሰጣቸው TODOs እና የትግበራ እቅድ roadmap.md ያረጋግጡ።
  • ስራውን ከጨረሱ በኋላ, በ status.md ውስጥ ሁኔታን ያዘምኑ እና roadmap.md በአስደናቂ ተግባራት ላይ ያተኩሩ.

ወኪል የስራ ፍሰት (ለኮድ አርታዒዎች/ራስ-ሰር)

  • በማንኛውም መስፈርት ላይ ማብራሪያ ከፈለጉ ከጥያቄዎ ጋር የChatGPT ጥያቄን ያቁሙ እና ይቅረጹ፣ ከዚያ ከመቀጠልዎ በፊት ለተጠቃሚው ያካፍሉ።
  • ለውጦችን በትንሹ እና በስፋት ያቆዩ; በተመሳሳዩ መጣፊያ ውስጥ የማይዛመዱ አርትዖቶችን ያስወግዱ።
  • አዲስ ጥገኛዎችን ከመጨመር ይልቅ ውስጣዊ ሞጁሎችን ይመርጣሉ; Cargo.lock አያርትዑ።
  • በሃርድዌር የተጣደፉ ዱካዎችን ለመጠበቅ የባህሪ ባንዲራዎችን ይጠቀሙ (ለምሳሌ፡ simd፣ I18NI0000135X) እና ሁል ጊዜ የሚወስን የውድቀት ዱካ ያቅርቡ።
  • ውጽዓቶች በሃርድዌር ላይ ተመሳሳይ መሆናቸውን ያረጋግጡ; በማይወስኑ ትይዩ ቅነሳዎች ላይ ከመተማመን ይቆጠቡ።
  • ይፋዊ ኤፒአይዎች ወይም ባህሪ ሲቀየሩ ሰነዶችን እና ምሳሌዎችን ያዘምኑ።
  • የNorito አቀማመጥ ዋስትናዎችን ለመጠበቅ በiroha_data_model ውስጥ ተከታታይ ለውጦችን ከዙር ጉዞ ሙከራዎች ጋር ያረጋግጡ።
  • የውህደት ሙከራዎች እውነተኛ ባለብዙ-አቻ አውታረ መረቦችን ይፈትሉ; የሙከራ ኔትወርኮችን በሚገነቡበት ጊዜ ቢያንስ 4 አቻዎችን ይጠቀሙ (ነጠላ-አቻ ውቅሮች አይወክሉም እና በ Sumeragi ውስጥ ሊገድቡ ይችላሉ)።
  • በፈተናዎች ውስጥ DA / RBC ን ለማሰናከል አይሞክሩ (ለምሳሌ በ DevBypassDaAndRbcForZeroChain); DA ተፈፃሚ ሆኗል እና ያ ማለፊያ ዱካ በአሁኑ ጊዜ በsumeragi ውስጥ በስምምነት ጅምር ላይ ተዘግቷል።
  • የQC ምልአተ ጉባኤ በድምጽ ሰጪዎች (min_votes_for_commit) መሟላት አለበት። የተመልካች መደረቢያ በተገኝነት/በቅድሚያ/በቅድሚያ የምልአተ ጉባኤ ቼኮች ላይ አይቆጠርም፣ስለዚህ QCዎችን ያጠቃልሉት በቂ አረጋጋጭ ድምጾች ከደረሱ በኋላ ነው።
  • በDA የነቃ መግባባት አሁን ለውጦችን ከማየትዎ በፊት ረዘም ያለ ጊዜ ይጠብቃል (የምልአተ ጉባኤ ጊዜ ማብቂያ = block_time + 4 * commit_time) RBC/ተገኝነት QC በቀስታ አስተናጋጆች ላይ እንዲያልቅ።

የአሰሳ ምክሮች

  • የፍለጋ ኮድ: rg '<term>' እና ፋይሎችን ዘርዝር: fd <name>.
  • ሳጥኖችን ያስሱ: fd --type f Cargo.toml crates | xargs -I{} dirname {}.
  • ምሳሌዎችን/አግዳሚ ወንበሮችን በፍጥነት ያግኙ፡fd . crates -E target -t d -d 3 -g "*{examples,benches}"
  • Python ጠቃሚ ምክር: አንዳንድ አካባቢዎች python አይሰጡም; ስክሪፕቶችን በሚያሄዱበት ጊዜ በምትኩ python3 ይሞክሩ።

የፕሮክ-ማክሮ ሙከራዎች

  • የክፍል ሙከራዎች፡- ለንጹህ ትንተና፣ codegen ረዳቶች እና መገልገያዎች (ፈጣን ፣ ምንም ማጠናከሪያ አልተሳተፈም)።
  • የዩአይ ፈተናዎች (trybuild)፡- የማጠናቀር ባህሪን እና የዲሪቭ/ፕሮክ-ማክሮን ምርመራዎችን ለማረጋገጥ (ስኬት እና የሚጠበቁ የሽንፈት ጉዳዮች በ.stderr) ለማረጋገጥ ይጠቀሙ።
  • ማክሮዎችን ሲጨምሩ / ሲቀይሩ ሁለቱንም ይምረጡ፡ የክፍል ሙከራዎች ለውስጣዊ አካላት + የተጠቃሚን ፊት ለፊት ለሚመለከቱ ባህሪ እና የስህተት መልዕክቶች የዩአይ ሙከራዎች።
  • ድንጋጤን ያስወግዱ; ግልጽ የሆኑ ምርመራዎችን (ለምሳሌ፣ በsyn::Error ወይም proc_macro_error)። መልዕክቶችን በተረጋጋ ሁኔታ ያቆዩ እና ሆን ተብሎ ለሚደረጉ ለውጦች .stderr ያዘምኑ።

የመሳብ ጥያቄ መልእክት

የለውጦቹ አጭር ማጠቃለያ እና እርስዎ የሮጧቸውን ትዕዛዞች የሚገልጽ የTesting ክፍል ያካትቱ።