เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฒเบ Google เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ libc เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš LLVM

เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฒเบ Google เบเบปเบเบ‚เบถเป‰เบ™เบกเบฒ เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฒเบ‡เป„เบ›เบชเบฐเบ™เบต LLVM เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบซเบผเบฒเบเป€เบงเบ—เบต (Libc) เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ LLVM. เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡, Google เบšเปเปˆเบžเปเปƒเบˆเบเบฑเบš libc เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™ (glibc, musl) เปเบฅเบฐเบšเปเบฅเบดเบชเบฑเบ”เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบซเบกเปˆ, เป€เบŠเบดเปˆเบ‡เบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ LLVM.

เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ LLVM เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ›เบฐเบเบญเบšเบ‚เบญเบ‡ Google. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบงเปˆเบฒเบ–เป‰เบฒ Google เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒ libc เบ‚เบญเบ‡เบ•เบปเบ™เปเบฅเป‰เบง, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบˆเบถเปˆเบ‡เบšเปเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ•เบปเบ™เบ—เบฑเบ™เบ—เบตเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ LLVM, เป€เบŠเบดเปˆเบ‡เบชเบฐเป€เบซเบ™เบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš C ++ (Libc ++), เปเบ•เปˆเบšเปเปˆเบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบชเปเบฒเบฅเบฑเบš C. ( libc).

เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบงเบฒเบ‡โ€‹เปเบœเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปƒเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹, เบ„เปˆเบญเบเป†โ€‹เป€เบžเบตเปˆเบกโ€‹เบ—เบฐโ€‹เบงเบตโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹. เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹เปƒเบซเป‰โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบญเบญเบโ€‹เปเบšเบšโ€‹เป€เบ›เบฑเบ™โ€‹เบŠเบฑเป‰เบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เปเบฅเบฐโ€‹เบฅเบฐโ€‹เบšเบปเบš Libcโ€‹, เบˆเบฒเบโ€‹เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบเบฑเบ‡โ€‹เบšเปเปˆโ€‹เบ—เบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบขเบทเบกโ€‹. เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบ–เบดเบ‡เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, Libc เปƒเบซเบกเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš Libc. เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐ x86-64, Linux, เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ (เบเบฒเบ™เป‚เบซเบผเบ”เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบญเบฑเบ™เบ”เบฑเบšเบชเบญเบ‡).

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เบเบฑเบ‡โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ•เบปเป‰เบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒ, เปเบ•เปˆโ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป„เบงเป‰โ€‹เปเบฅเป‰เบงโ€‹:

  • Modularity เปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบ›เบฑเบ”เบŠเบฐเบเบฒเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” granular เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบŠเบธเบ” monolithic;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเปƒเบ™เป‚เบซเบกเบ” เบžเบฒเบšเบฅเบงเบก (Position-independent executables) เปเบฅเบฐเบšเปเปˆเบกเบต PIE. เบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡ CRT (C runtime) เปเบฅเบฐ PIE loader เบชเปเบฒเบฅเบฑเบš statically linked executables;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบ”เป‰เบงเบเบเบฒเบ™เป€เบžเบตเปˆเบก POSIX เปเบฅเบฐเบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบชเบฐเป€เบžเบฒเบฐเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบกเบตเบขเบนเปˆ;
  • เบˆเบปเปˆเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เบเบฑเบšเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบœเบนเป‰เบ‚เบฒเบ เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเป€เบžเบตเปˆเบกเบžเบงเบเบกเบฑเบ™เป€เบกเบทเปˆเบญเบˆเปเบฒเป€เบ›เบฑเบ™. เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ Clang เปเบฅเบฐ libc++;
  • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเปƒเบŠเป‰เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท LLVM, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เปƒเบŠเป‰เบขเบฒเบ‚เป‰เบฒเป€เบŠเบทเป‰เบญเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš fuzz เบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบซเบ™เบถเปˆเบ‡เปƒเบ™เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ LLVM เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡ libc เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท LLVM, เปเบ•เปˆเบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง, เป€เบกเบทเปˆเบญเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบเบตเบ”เบ‚เบทเป‰เบ™, เบžเบงเบเป€เบ‚เบปเบฒเปƒเบŠเป‰เบซเปเบชเบฐเบซเบกเบธเบ” musl, เป€เบŠเบดเปˆเบ‡เบ‚เบฝเบ™เป„เบ”เป‰เบ”เบต, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ•เปˆเบฒเบ‡เป†, เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเบเบฑเบ‡ musl เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ LLVM เปเบฅเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบฑเบ™เป€เบ›เบฑเบ™ fork synchronized เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ•เบปเป‰เบ™เบ•เป.

เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป€เบŠเบฑเปˆเบ™เบเบฑเบ™ เบชเบฐเปเบ”เบ‡เบญเบญเบ เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ Musl, เบœเบนเป‰เบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเป‚เบ•เป‰เบ–เบฝเบ‡เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เบชเบฐเป€เบซเบ™เบตเบ‚เบญเบ‡ Google เปเบฅเบฐเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒ Libc เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ LLVM เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบšเปเปˆเบ”เบตเบซเบผเบฒเบ:

  • เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบฎเบฑเบเบชเบฒ Libc เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰, เปเบฅเบฐเบกเบตเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบชเบนเบ‡เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบงเบฝเบเบ—เบตเปˆเบเบฒเบเบซเบผเบฒเบ. เบšเบฑเบ™เบซเบฒเบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบฅเบฐเบซเบฑเบ”, เปเบ•เปˆเปƒเบ™เบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš, เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบŠเบฑเป‰เบ™เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบ„เบตเบเบ‚เบฝเบ™เปƒเบ™ C / C ++, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบžเบฒเบชเบฒเบญเบทเปˆเบ™เป†, runtime เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เป‚เบ”เบ Libc. เบงเบดเบ—เบตเบเบฒเบ™เบซเบปเบงเบซเบ™เป‰เบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡ nuances เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Libc, เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบเบฑเบšเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ.
  • เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบปเบ‡เบเบญเบ™เบชเบฒเบกเบฒเบ”เบ—เปเบฒเบฅเบฒเบ Libc, เปเบ•เปˆเบŠเบธเบเบเบนเป‰เปƒเบซเป‰เบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡, เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™ hack เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบžเบฒเบโ€‹เปƒเบ•เป‰โ€‹เบเบฒเบ™โ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบ–เปเบฒโ€‹เบ‚เบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เปเบซเบผเปˆเบ‡โ€‹เป€เบ›เบตเบ”โ€‹เบ‚เบญเบ‡โ€‹เบšเปโ€‹เบฅเบดโ€‹เบชเบฑเบ”โ€‹เบˆเบฐโ€‹เบ”เบถเบ‡โ€‹เบœเป‰เบฒโ€‹เบซเบปเปˆเบกโ€‹เป„เบ›โ€‹เบชเบนเปˆโ€‹เบ„เบงเบฒเบกโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ‚เบญเบ‡โ€‹เบšเปโ€‹เบฅเบดโ€‹เบชเบฑเบ”โ€‹, เป€เบžเบทเปˆเบญโ€‹เบœเบปเบ™โ€‹เป€เบชเบโ€‹เบซเบฒเบโ€‹เบœเบปเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ”โ€‹เบ‚เบญเบ‡โ€‹เบŠเบธเบกโ€‹เบŠเบปเบ™โ€‹. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบ bug เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™, เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒ Libc เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบš bug เบ™เบตเป‰เบเปˆเบงเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚ bug เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. Apple เปƒเบŠเป‰ BSD libc fork เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เปเบฅเบฐ Google เปƒเบŠเป‰ musl fork เปƒเบ™ Fuchsia. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ musl เปเบกเปˆเบ™เบงเปˆเบฒเบฅเบฒเบงเป„เบ”เป‰เบ–เบทเบเบ•เบดเบ”เบ•เปเปˆเบชเปˆเบงเบ™เปƒเบซเบเปˆเป‚เบ”เบเบ—เบฐเบ™เบฒเบเบ„เบงเบฒเบกเป€เบžเบทเปˆเบญเบŠเบตเป‰เปเบˆเบ‡เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”, เปเบ•เปˆเบšเปเปˆเป€เบ„เบตเบเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เปเปˆเป€เบžเบทเปˆเบญเบŠเบตเป‰เปเบˆเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เปเบฅเบฐเบฅเบปเบšเบเบงเบ™เบเบฑเบšเบชเบฒเบ‚เบฒเบ‚เบญเบ‡เบฅเบฒเบง.
  • เบเบฒเบ™เบ‚เบฒเบ”เบงเบฑเบ”เบ—เบฐเบ™เบฐเบ—เปเบฒ monoculture เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ libc เปเบฅเบฐเบเบฒเบ™เบชเบธเบกเปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เป‚เบ”เบเบ„เบงเบฒเบกเป€เบซเบฑเบ™เบ”เบตเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™, เป€เบŠเบดเปˆเบ‡เบเบฐเบ•เบธเป‰เบ™เปƒเบซเป‰เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบŠเป‰เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบœเบนเบเบกเบฑเบ”เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฐเป€เบžเบฒเบฐ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡ musl เบ•เปเปˆเบ•เป‰เบฒเบ™เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ‚เบญเบ‡เบฅเบฒเบงเปƒเบ™ LLVM, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ•เปเปˆเบ•เป‰เบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ libc เบžเบฒเบเปƒเบ™ LLVM, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡ libc เบˆเบฐเบชเบนเบ™เป€เบชเบเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบŠเบฑเป‰เบ™เบ—เปเบฒเบญเบดเบ”เบชเปเบฒเบฅเบฑเบš. LLVM, เปเบฅเบฐเบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”เบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบŠเบฑเป‰เบ™เบชเบญเบ‡.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™