Ninja: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рдмрдЬрд╛рдп рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдЕрдЧре░ 2018  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ninja-build/ninja

рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рддреЗрдЬрд╝ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрдХреНрд╕рд░ рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдВрддрд░рд┐рдХ, рдЬреИрд╕реЗ рдХрд┐ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╣реИрд╢, рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрдгрдп рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдореИрдВ рдЧрд┐рдЯ рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдкрд░реЗрд╢рд╛рди рд╣реИ рдХрд┐ рдмрд╕ рд╢рд╛рдЦрд╛рдПрдВ рдмрджрд▓рдирд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рд╢рд╛рдЦрд╛ рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдКрдВрдЧрд╛, рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рдХреЛ рдирд╣реАрдВ рдЫреВрдКрдВрдЧрд╛ рдФрд░ рдлрд┐рд░ рдореВрд▓ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдХреБрдЫ рднреА рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╣реИрд╢ рдпрд╛ рдЕрдиреНрдп рдРрд╕реА рдЖрдВрддрд░рд┐рдХ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдВрдЬрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкрд░ рд╣реИрд╢рд┐рдВрдЧ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ #929 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдкреИрдЪ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде, рдЬреИрд╕рд╛ рдХрд┐ https://github.com/moroten/ninja/commits/hashed рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред hash_input = 1 рдЪрдпрдирд┐рдд рдирд┐рдпрдореЛрдВ рдкрд░ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдореЗрд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдмрдЧ рд╣реИ рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓реЗрдВ stat рдмрд╣реБрдд рдмрд╛рд░ рд╣реЛрддреА рд╣реИрдВ, O(n^2) рдХреЗ рдмрдЬрд╛рдп O(n) ред рдмрдЧ рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдореИрдВ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВред рдЗрд╕рд▓рд┐рдП, рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ #1021 рдореЗрдВ рдмрдЧ рд╕реЗ рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИрд╢рд┐рдВрдЧ рдХреЛ рдирд┐рдВрдЬрд╛ рдХрд╛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рджрд╕реНрдп рдмрдирд╛рдирд╛ рд╣реИ, рдпрд╛рдиреА рд╣реИрд╢ рдХреЛ рдмрд┐рд▓реНрдб рд▓реЙрдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИред SHA256 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ Bazel рдХреЗ рджреВрд░рд╕реНрде рдирд┐рд╖реНрдкрд╛рджрди API рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рд╣реЛрдЧрд╛ред рдПрдХ рд╕реА ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди https://gitlab.com/bloomberg/recc/ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рд╕реЗ рд╢рд╛рдпрдж рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред

рд╕рднреА 15 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

929 рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рднрд▓реЗ рд╣реА рдЗрд╕реЗ рд░реЛрдЬрд╛рдирд╛ рд╣рдЬрд╛рд░реЛрдВ рдмрд┐рд▓реНрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ (рдПрдХ рдХрд╛рдВрдЯрд╛ рдореЗрдВ) рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред

929 рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП ccache рдпрд╛ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддрд░рд╣ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдзреНрд╡рдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдЗрд╕реЗ рдмрд┐рд▓реНрдб рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред

рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдлреНрд▓реИрдЧ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рдХреНрдпреЛрдВрдХрд┐ рддрдм рд╣реИрд╢рд┐рдВрдЧ рд╕рднреА рдирд┐рдпрдореЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред рд╣реИрд╢рд┐рдВрдЧ рдЬреИрд╕реЗ рд▓рд┐рдВрдХ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рднреА рдЗрдирдкреБрдЯ рдорд╣рдВрдЧреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдЙрдирдХреА рдЬреНрдЮрд╛рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЕрдЪреНрдЫреЗ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВред рдЙрд╕ рднреЗрдж рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рд╡рд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрднреА-рдХрднреА рд╣реА рдирд╣реАрдВред

рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рддрд░реНрдХ рдХрд╛ рдЬрд╡рд╛рдм: рд╣рд╛рдБ, рдпрд╣ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдб рд▓реВрдк рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣рдХреАрдХрдд рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдЬрдм рдПрдХрд▓ рдзрд╛рдЧреЗ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ (рдпрд╛рдиреА рдПрдХ рдзрд╛рдЧреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдирд┐рдпрдо рдЦрддреНрдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдбрд┐рдкреНрд╕рд▓реЙрдЧ + рд╣реИрд╢рд▓реЙрдЧ + ...))ред рддрднреА рд╣реИрд╢рд┐рдВрдЧ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИред рд╡рд░рдирд╛ рд╕рд┐рдВрдЧрд▓ рдереНрд░реЗрдб рд▓реВрдк рд╡реИрд╕реЗ рднреА рдЬреЙрдм рдЦрддреНрдо рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ -j1000 рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рднреА рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рдирд┐рдВрдЬрд╛ рдХреЛ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ред (рдФрд░ рдлрд╛рд╕реНрдЯ-рдлрд┐рдирд┐рд╢рд┐рдВрдЧ рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдП, рд╣реИрд╢рд┐рдВрдЧ рд╡реИрд╕реЗ рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред)

рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдмрдбрд╝рдмрдбрд╝рд╛рд╣рдЯ рд╣реИрд╢ рдХреЗ рд╕рд╛рде рд╣реИрд╢рд┐рдВрдЧ рдХрд╛рдлреА рддреЗрдЬ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдмрдбрд╝реА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣реИрд╢ рд╣реЛрдиреЗ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣реИрд╢рд┐рдВрдЧ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ (рдФрд░ рдирд┐рд░реНрднрд░рддрд╛) рдХреЛ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдареАрдХ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреИрд╢ рд╕реЗ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рд╣реИрд╢рд┐рдВрдЧ рд╣реЛрддрд╛ рд╣реИ (рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░), рд╕рдордЧреНрд░ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдЖрдорддреМрд░ рдкрд░ рдХрд╛рдлреА рд╣рдж рддрдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, #929 рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдСрдкреНрдЯ-рдЗрди рд╣реИ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреАрдордд рдХреЗ рдЖрддрд╛ рд╣реИ (рдЗрдл-рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛)ред

рд╣реИрд╢рд┐рдВрдЧ рдЬреИрд╕реЗ рд▓рд┐рдВрдХ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рднреА рдЗрдирдкреБрдЯ рдорд╣рдВрдЧреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдЙрдирдХреА рдЬреНрдЮрд╛рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЕрдЪреНрдЫреЗ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд▓рд┐рдВрдХрд░ рдХреЛ рдЗрдирдкреБрдЯ рдХреА рд╣реИрд╢рд┐рдВрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд░реВрдкрдг рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рдЬрдм рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдмрджрд▓реА рдЬрд╛рддреА рд╣реИрдВ)ред рдЪреВрдВрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдХрд▓рди рдЯреБрдХрдбрд╝реЗ-рдЯреБрдХрдбрд╝реЗ рдЦрддреНрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╣реИрд╢ рдЧрдгрдирд╛ рддрдм рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рдмрд┐рд▓реНрдб рдЪрд▓ рд░рд╣рд╛ рд╣реЛ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдмрддрд╛рдпрд╛)ред

рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде), рддреЛ рд╣рдо рдХреЗрд╡рд▓ рд╢реБрджреНрдз рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХрд┐ рдордзреНрдпрд╡рд░реНрддреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдПред рдЗрд╕рд╕реЗ рдХрдо рд╕реЗ рдХрдо "рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдЧрд┐рдЯ рд╢рд╛рдЦрд╛рдПрдВ рдкреВрд░реНрдг рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИрдВ" рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧреАред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрднреА-рдХрднреА рд╣реА рдирд╣реАрдВред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ: рдЕрдЧрд░ рдореИрдВ рдПрдХ рд╣реА рд╢рд╛рдЦрд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рддреЗрдЬреА рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЕрдЧрд░ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╢рд╛рдЦрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрднреА-рдХрднреА рд╣реА рдирд╣реАрдВред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ: рдЕрдЧрд░ рдореИрдВ рдПрдХ рд╣реА рд╢рд╛рдЦрд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рддреЗрдЬреА рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЕрдЧрд░ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╢рд╛рдЦрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЧреИрд░-рд╣реИрд╢рд┐рдВрдЧ рд╕реЗ рд╣реИрд╢рд┐рдВрдЧ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣реИрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рд╢рд╛рдпрдж рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ рдпрд╛ рдмрд╛рд╣рд░ рд╣реИ) рддрд╛рд░реАрдЦ рдХреА рдЕрдЧрд░ рдЖрдкрдиреЗ рдЭрдВрдбрд╛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реИрд╢рд┐рдВрдЧ рдЕрднреА рднреА рдкрд╣рд▓реЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрджрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХреБрдЫ рдмрд┐рд▓реНрдб рдХреБрдЫ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреНрдпрд╛рджрд╛рддрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реЗрд░рд┐рд╕реНрдЯрд┐рдХ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИ)ред

рдореИрдВрдиреЗ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкрд░ рд╣реИрд╢рд┐рдВрдЧ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ #929 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдкреИрдЪ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде, рдЬреИрд╕рд╛ рдХрд┐ https://github.com/moroten/ninja/commits/hashed рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред hash_input = 1 рдЪрдпрдирд┐рдд рдирд┐рдпрдореЛрдВ рдкрд░ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдореЗрд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдмрдЧ рд╣реИ рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓реЗрдВ stat рдмрд╣реБрдд рдмрд╛рд░ рд╣реЛрддреА рд╣реИрдВ, O(n^2) рдХреЗ рдмрдЬрд╛рдп O(n) ред рдмрдЧ рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдореИрдВ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВред рдЗрд╕рд▓рд┐рдП, рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ #1021 рдореЗрдВ рдмрдЧ рд╕реЗ рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИрд╢рд┐рдВрдЧ рдХреЛ рдирд┐рдВрдЬрд╛ рдХрд╛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рджрд╕реНрдп рдмрдирд╛рдирд╛ рд╣реИ, рдпрд╛рдиреА рд╣реИрд╢ рдХреЛ рдмрд┐рд▓реНрдб рд▓реЙрдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИред SHA256 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ Bazel рдХреЗ рджреВрд░рд╕реНрде рдирд┐рд╖реНрдкрд╛рджрди API рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рд╣реЛрдЧрд╛ред рдПрдХ рд╕реА ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди https://gitlab.com/bloomberg/recc/ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирдХрд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рд╕реЗ рд╢рд╛рдпрдж рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред

рдЗрд╕ рдмреАрдЪ рдореИрдВрдиреЗ рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ (рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд░реНрджрдирд╛рдХ рд╣реИ); рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЫреЛрдЯрд╛ рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╣рд╛рдБ рд╣реИ: https://github.com/bromite/mtool

рдЗрд╕реЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдЕрдЧрд░ рдпрд╣ рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЫреЛрдЯреА рдмрд┐рд▓реНрдб рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ (рдФрд░ рдпрд╣ рдореЗрд░реЗ рд░рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирдЧрдгреНрдп рд╕рдордп рд▓реЗрддрд╛ рд╣реИ)ред рдХреЗрд╡рд▓ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ-рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ .mtool рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЯреЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╡реИрд╢реНрд╡рд┐рдХ gitignore рдХреБрдЫ рднреА рдареАрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдореИрдВ рд╣реИрд╢рд┐рдВрдЧ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП git ls-files --stage рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ; рдпрджрд┐ рдЖрдкрдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЧрд┐рдЯ рд╕реЗ рд╣реИрд╢ рдХреЛ рдЧреИрд░-рдЕрдиреБрдХреНрд░рдорд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкреВрдЫрдирд╛ рд╕рдВрднрд╡ рд╣реИ (рд▓реЗрдХрд┐рди рдХрдо рдХреБрд╢рд▓)ред

рдлреАрдЪрд░-рд╡рд╛рд░ рдХреЛрдИ рдЙрдореНрдореАрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдВрдЬрд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ (рдЧрд┐рдЯ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдП рдмрд┐рдирд╛) рдФрд░ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдЙрди рдирд┐рдВрдЬрд╛ рдкреИрдЪ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдкрд╛рдЗрд▓рд░ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рд╣реИрд╢ рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рдВрдЬрд╛ рджреНрд╡рд╛рд░рд╛ рд╣реИрд╢ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдмрд┐рд▓реНрдб рд▓реЙрдЧ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реИрд╢рд┐рдВрдЧ рдЕрднреА рднреА рдкрд╣рд▓реЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрджрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХреБрдЫ рдмрд┐рд▓реНрдб рдХреБрдЫ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреНрдпрд╛рджрд╛рддрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реЗрд░рд┐рд╕реНрдЯрд┐рдХ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИ)ред

рдпрд╣ рдмрд╣реБрдд рдЧрд▓рдд рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдпрд╣ рдорд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрджрд┐ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреЗрд╡рд▓ рдЫреБрдЖ рдЧрдпрд╛) рддреЛ рдирд┐рд░реНрдорд╛рдг рдЙрдк-рд░реВрдкреА рд▓реЗрдХрд┐рди рд╕рд╣реА рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрджрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХреЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рдЬрдмрд░рди рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╛ рдпрд╣ рдХрд┐ рд▓рдХреНрд╖реНрдп рдХреЛ рдЫреБрдЖ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдирдпрд╛ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рджреЛрд╣рд░реА рдЬрд╛рдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд рдирд┐рд░реНрдорд╛рдг рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдореИрдЪ рд╣реЛрдиреЗ рдкрд░ рдирд┐рдВрдЬрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдХрд╛рдо рдорд╛рди рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рддреЛ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рд╡реИрд╕реЗ рднреА рдЧрд▓рдд рдирд┐рд░реНрдорд╛рдг рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ (рд╢рд╛рдпрдж рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдг) рдЬреЛ рдПрдХ рдЕрд▓рдЧ рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ред рдХреЛрдИ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░реЗрдЧрд╛?

IMHO, рд╣реИрд╢ рдЪреЗрдХ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЬрдм рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдореИрдЪ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдиреНрдп рдЕрдиреБрдХреВрд▓рди рд╣реИред

рд╣реИрд╢ рдЪреЗрдХ рдмрд╕ рдХреБрдЫ "рдЭреВрдареЗ-рдЧрдВрджреЗ" рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕реЗ рдмрдЪреЗрдВрдЧреЗ, рдЬрдмрдХрд┐ рдореМрдЬреВрджрд╛ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рдВрдЬрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдорд╕реНрдпрд╛ рдЭреВрдареА-рдЧрдВрджреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЭреВрдареА-рд╕рд╛рдл рдЧреИрд░-рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╣реИред рдПрдХ рдЧрд┐рдЯ рдЪреЗрдХрдЖрдЙрдЯ рдЬреЛ рдХреБрдЫ рднреА рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЙрд╕реЗ рдЫреВрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдирдпрд╛ рд▓рдХреНрд╖реНрдп рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ (рд╣рд╛рдВ, рд▓реЛрдЧ рд╡рд┐рднрд┐рдиреНрди рд╡реИрдз рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХрд░рддреЗ рд╣реИрдВ)ред рдПрдХ рд╣реИрд╢ рдЪреЗрдХ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЭреВрдареА-рд╕рд╛рдл рдЧреИрд░-рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред

@rulatir рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ :) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣реА рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣реИрд╢-рдЪреЗрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдмрд╛рдЬрд╝реЗрд▓ рдФрд░ рдЕрдиреНрдп рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди-рдЯреНрд░реА рд▓рдХреНрд╖реНрдп рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрдЧреА рдпрджрд┐ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд▓рдХреНрд╖реНрдп рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рд╕рдордп рд╕реЗ рдирдП рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ?

@rulatir рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ :) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣реА рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣реИрд╢-рдЪреЗрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдмрд╛рдЬрд╝реЗрд▓ рдФрд░ рдЕрдиреНрдп рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди-рдЯреНрд░реА рд▓рдХреНрд╖реНрдп рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИрдВред

рд╣реИрд╢ рдХреИрд╕реЗ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╣рд╛рдБ рд╣реИ?

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрдЧреА рдпрджрд┐ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд▓рдХреНрд╖реНрдп рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рд╕рдордп рд╕реЗ рдирдП рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ?

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рд╣реИ рдЬреЛ "рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд" рд╕рдВрд╕реНрдХрд░рдг рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрд╕ рд▓рд╛рдн рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЙрди рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЛ рд╣реИрд╢ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

evmar picture evmar  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jlebar picture jlebar  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nico picture nico  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Alexander-- picture Alexander--  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ