Π Π°Π·Π½ΠΎΠ΅

ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ: Sorry, this page can’t be found.

16.07.2023

ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ — Π―Π½Π΄Π΅ΠΊΡΒ ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ. Π‘ΠΏΡ€Π°Π²ΠΊΠ°

БохраняйтС ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ Π² ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ°Ρ…: это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ иностранных языков. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своими ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈΠ»ΠΈ сами ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΈΡ… ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС доступныС ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ, Π²Π²Π΅Ρ€Ρ…Ρƒ страницы Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ .

  1. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π² ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ
  2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ
  3. ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ
  4. Π£Ρ‡ΠΈΡ‚ΡŒ слова
  5. РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ устройствами, Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ с ЯндСкс ID.

Π’ ΠΎΠΊΠ½Π΅ с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ . БСрвис автоматичСски Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π² ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ Π˜Π·Π±Ρ€Π°Π½Π½ΠΎΠ΅.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ, Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ ΠΈΠ»ΠΈ создайтС Π½ΠΎΠ²ΡƒΡŽ.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ слова. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ:

  1. Π’ мСню доступных ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ .

  2. НазовитС ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ.

  3. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Сю с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.

  4. НаТмитС Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ Π½Π° всСх устройствах, Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ с ЯндСкс ID ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ .

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° тСматичСскиС ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ, созданныС ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π―Π½Π΄Π΅ΠΊΡΒ ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ:

  1. Π’ мСню доступных ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ.

  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ.

  3. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСрвис для запоминания слов Π½Π° иностранном языкС:

  1. Π’ мСню доступных ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ свою ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ, ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ Π˜Π·Π±Ρ€Π°Π½Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ подписались.

  2. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π£Ρ‡ΠΈΡ‚ΡŒ слова.

  3. ЛистайтС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ со словами ΠΈ отслСТивайтС прогрСсс.

НС ΠΌΠΎΠ³Ρƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ слово ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π² Π˜Π·Π±Ρ€Π°Π½Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π² ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • Π’Ρ‹ Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² сСрвисС. Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β β†’ Π’ΠΎΠΉΡ‚ΠΈ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚.

  • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ максимально допустимый ΠΎΠ±ΡŠΠ΅ΠΌΒ β€” 300 символов.

  • ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΎ максимальноС количСство слов Π² ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ΅. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 2500 ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ². Π£Π΄Π°Π»ΠΈΡ‚Π΅ старыС записи ΠΈ сохранитС Π½ΠΎΠ²Ρ‹Π΅.

НС Π²ΠΈΠΆΡƒ своих ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ ΠΈ подписок

Π’Ρ‹ Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² сСрвисС. Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β β†’ Π’ΠΎΠΉΡ‚ΠΈ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚.

НС ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ

Бинхронизация происходит автоматичСски, Π½ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ .

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² слуТбу ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ

Qui-Quo β€” систСма создания ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ Ρ‚ΡƒΡ€ΠΎΠ² β„–1 Π² России ΠΈ БНГ

Π‘Π°Π³Π΄Π΅Π΅Π²Π° Лариса, Π³. ΠšΡƒΡ€Π³Π°Π½, «ВуристичСская компания Азимут»

Как ΠΆΠ΅ пСрСвСрнулся наш взгляд Π½Π° ΠΏΠΎΠ΄Π±ΠΎΡ€ Ρ‚ΡƒΡ€ΠΎΠ² послС знакомства с Qui-Quo!!! Когда ΠΎΠ½ Π½Π°ΠΌ всё объяснил, ΠΏΠΎΠΊΠ°Π·Π°Π» всС Π΅Ρ‘ возмоТности, ΠΌΡ‹ Π±Ρ‹Π»ΠΈ просто Π² шокС! Как ΠΌΡ‹ Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Π΅Π· Qui-Quo ΠΆΠΈΠ»ΠΈ!!!

ΠžΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ сСйчас ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½-Π»Π°ΠΉΠ½ туристов … Π° ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ затрачиваСтся Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚Π°ΠΊΠΈΠΌΠΈ туристами! НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ 24 часа Π² сутки ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту страну, Ρ‚Ρƒ страну…

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ истории

АлиСва Π–Π°Π½Π½Π°, Π³. Москва, «ГорячиС Ρ‚ΡƒΡ€Ρ‹ ΠΏΡ€. ВСрнадского»

Π’ΠΎΡ‚ ΠΎΠ½ΠΎ «Π§ΡƒΠ΄ΠΎ»!!! НаконСц-Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ позаботился ΠΎ нас! Π’Π°ΠΊ приятно, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄ΡƒΠΌΠ°Π΅Ρ‚ ΠΎ нашСм Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ± удобствах ΠΈ ΠΎ Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ…. НС знаю ΠΊΠ°ΠΊ я Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΆΠΈΠ»Π° Π±Π΅Π· вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΠΊΠ°ΠΊ ΠΆΠ΅ приятно, ΠΊΠΎΠ³Π΄Π° Π·Π°Ρ…ΠΎΠ΄ΠΈΡˆΡŒ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΡƒΡ€Ρ‹ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅Π±Π΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ всС ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ, ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌ Π΅Ρ‰Π΅ ΠΈ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ всС это!!! Π’Π°ΡˆΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΌΠ΅Π½ΠΈΠ»Π° всС Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ способы ΠΏΠΎ поиску Ρ‚ΡƒΡ€ΠΎΠ² для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ истории

Π•Π²Π³Π΅Π½ΠΈΠΉ Π”Π°Π½ΠΈΠ»ΠΎΠ²ΠΈΡ‡, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ УК Π‘Π»Π΅Ρ‚Π°Ρ‚ΡŒ.Ρ€Ρƒ

Π‘Π΅Ρ‚ΡŒ турагСнтств Π‘Π»Π΅Ρ‚Π°Ρ‚ΡŒ.Ρ€Ρƒ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° основания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сСрвис Qui-Quo для составлСния качСствСнных ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ Ρ‚ΡƒΡ€ΠΎΠ². Наши Ρ‚ΡƒΡ€Π°Π³Π΅Π½Ρ‚Ρ‹ особСнно ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ Π΅Π³ΠΎ удобство, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния Π² рассылки ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΠΈΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.

НСкотороС врСмя Π½Π°Π·Π°Π΄ Π‘Π»Π΅Ρ‚Π°Ρ‚ΡŒ.Ρ€Ρƒ ΠΈ Qui‑Quo объСдинили усилия для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ сСрвиса. Π’Π΅ΠΏΠ΅Ρ€ΡŒ российскиС Ρ‚ΡƒΡ€Π°Π³Π΅Π½Ρ‚Ρ‹…

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ истории

ΠšΡƒΡΡ‚ΠΎΠ²Π° Зоя, Π³. ΠšΡ€Π°ΡΠ½ΠΎΠ΄Π°Ρ€, Β«Venera-TourΒ»

Π’Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚Π΅ Π½Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ) ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ стал ΠΠΠœΠΠžΠ“Πž ΠΏΡ€ΠΎΡ‰Π΅! ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π°ΠΆΠ°Π» Π³Π°Π»ΠΎΡ‡ΠΊΡƒ ΠΈ всС!! НС Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° листик ΠΎΡ‚Π΅Π»ΡŒ, Π΄Π°Ρ‚Ρ‹, количСство Π½ΠΎΡ‡Π΅ΠΉ ΠΈ Ρ‚.Π΄. Одним ΠΊΠ»ΠΈΠΊΠΎΠΌ ΠΌΡ‹ пСрСносим Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ туристам, Π² свою CRM.

ΠœΡ‹ попросили ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ шаблон письма ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всС ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ туристу…

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ истории

Π•ΠΊΠ°Ρ‚Π΅Ρ€ΠΈΠ½Π° Рудас, Π³. ДнСпропСтровск, «ЭкспрСсс-Π’ΡƒΡ€Β»

Когда Π² нашСм офисС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Qui-Quo-Quo Ρ‚ΠΎΠ»ΡŒΠΊΠΎ появилась, Ρ‡Π°ΡΡ‚ΡŒ Π½Π°ΡˆΠΈΡ… сотрудников ΠΎΡ‚Π½Π΅ΡΠ»Π°ΡΡŒ ΠΊ Π½Π΅ΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ скСптичСски. Π‘Ρ‡ΠΈΡ‚Π°Π»ΠΈ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΌΠΈΠ½ΡƒΡ‚ ΠΏΡΡ‚ΡŒ. ΠœΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ сСмь.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ Π²ΠΎ врСмя ΠΏΠΎΠ΄Π±ΠΎΡ€Π° Ρ‚ΡƒΡ€ΠΎΠ² практичСски всю Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π° мСня ΠΈ ΠΌΠΎΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³ Π΄Π΅Π»Π°Π΅Ρ‚ Qui-Quo β€” Π½Π°ΠΌ остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ поиска Π½Π° сайтах ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Π²ΡˆΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹…

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ истории

Π‘ΠΊΠΎΡ€ΠΈΠΊ Ульяна, Π³. Москва, Β«Π›ΠΈΠ»ΠΈ Вурс»

ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΠΌΡ‹ΡΠ»ΡŒΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΡ‡Π»Π° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΊ сСрвису Qui-Quo, Π±Ρ‹Π»ΠΎ: «Если это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‚ΠΎ это просто супСр-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ Π² ΠΏΠΎΠ΄Π±ΠΎΡ€Π΅ Ρ‚ΡƒΡ€ΠΎΠ² ΠΈ составлСнии КП ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ!Β» ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ – Ρ‚Π°ΠΊ ΠΈ Π΅ΡΡ‚ΡŒ!

Вуристы ΠΎΡ†Π΅Π½ΠΈΠ»ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ врСмя ΠΎΡ‚ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π΄ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ КП сущСствСнно ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, людям ΠΎΡ‡Π΅Π½ΡŒ нравится…

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ истории

Инга Π•Π²ΡΡŽΠΊΠΎΠ²Π°, Π³. ОдСсса, Β«Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΎΡ‚Π΄Ρ‹Ρ…Β»

ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΡΡ‚Π°Π΄ΠΈΡŽ отрицания (Π½Π΅Ρ‚, я Π±ΡƒΠ΄Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ письма, ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅), Π³Π½Π΅Π²Π° (НЕВ, Π― Π‘Π£Π”Π£ ΠžΠ’ΠŸΠ ΠΠ’Π›Π―Π’Π¬ ПИБЬМА, КАК РАНЬШЕ), компромисса (Π»Π°Π΄Π½ΠΎ, эту нСдСлю я Π±ΡƒΠ΄Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ письма с Qui-Quo) ΠΈ Π²ΠΎΡ‚ спустя Π΄Π²Π° мСсяца ΠΌΠ½Π΅ ΡƒΠΆΠ΅ тяТСло сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Qui-Quo.

Π”ΠΎΡ€ΠΎΠ³ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹, Π½Π΅ ΡΠΎΠΏΡ€ΠΎΡ‚ΠΈΠ²Π»ΡΠΉΡ‚Π΅ΡΡŒ. ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΡƒΡ€Ρ‹ туристам с Qui-Quo это ΡƒΠ΄ΠΎΠ±Π½ΠΎ, просто, понятно ΠΈ быстро.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ истории

ΠšΡƒΠ»ΠΈΠΊΠΎΠ²Π° Π›ΡŽΠ΄ΠΌΠΈΠ»Π°, Π³. Π”ΠΎΠΌΠΎΠ΄Π΅Π΄ΠΎΠ²ΠΎ, Β«Π˜Π½Ρ‚ΡƒΡ€ΠΈΡΡ‚ Магазин ΠŸΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠΉΒ»

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€ΡƒΡ‚ΠΈΠ½Ρ‹ – Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π² ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅! ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠΊΠ°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ 3 турагСнтства рассказала, Ρ‡Ρ‚ΠΎ Π΅Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ попросили ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠΌ ΠšΠ’Π˜-ΠšΠ’Πž ΠΈ ΠΎΠ½Π° согласилась, Ρ‚.ΠΊ. дСньги ΡΠΌΠ΅ΡˆΠ½Ρ‹Π΅, Π° польза ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°.) оказалось, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сущСствуСт ΡƒΠΆΠ΅ 3 (ВРИ!!!) Π³ΠΎΠ΄Π°, это ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅, сколько я Π² турагСнтском бизнСсС ΠΈ всС это врСмя я Π΅ΠΉ Π½Π΅ пользовалась! Π‘Ρ€ΠΎΡ‡Π½ΠΎ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒ Π² офис ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ эту Ρ‡ΡƒΠ΄ΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ)

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ истории

ΠœΠ°Ρ€Ρ‚ΡΠ½ Алла, Π³. Москва, Β«Π£Π›Π•Π’ΠΠ•Πœ.Π Π£Β»

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ удобная, экономит нашС врСмя Π½Π° ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ ΠΎΡ‚Π΅Π»Π΅ΠΉ, сортировку ΠΏΠΎ Ρ†Π΅Π½Π΅, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ писСм своим туристам Π² симпатичном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ для мСня это просто нСзамСнимая услуга Π² Ρ€Π°Π±ΠΎΡ‚Π΅, спасибо Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‰ΠΈΠΊΠ°ΠΌ. Π–Π΅Π»Π°ΡŽ Π²Π°ΠΌ дальнСйшСго процвСтания.

Π”ΠΈΠ»ΡŒΠ±Ρ€Π° Π˜Π»ΡΡ…ΡƒΠ½ΠΎΠ²Π°, Π³. Π‘ΠΈΡˆΠΊΠ΅ΠΊ, Β«GSSADΒ»

Qui-Quo — это Ρ‚ΠΎΡ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ наша «ΠŸΡ€Π°Π²Π°Ρ Π ΡƒΠΊΠ°» — «ΠŸΠ°Π»ΠΎΡ‡ΠΊΠ° Π’Ρ‹Ρ€ΡƒΡ‡Π°Π»ΠΎΡ‡ΠΊΠ°» — «Π’ΠΎΠ»ΡˆΠ΅Π±Π½Π°Ρ ΠΏΠ°Π»ΠΎΡ‡ΠΊΠ°»!

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ сСрвис — Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ достоинствах Qui-Quo ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ это наша «Π’ΠΎΠ»ΡˆΠ΅Π±Π½Π°Ρ Π ΡƒΡ‡ΠΊΠ°», со сказочными возмоТностями станСт Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ нашСго ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ!!!

ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ компиляции Π·Π°ΠΌΡ‹ΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ компилятора | Google для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ замыкания позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ компиляция, начиная ΠΎΡ‚ простого удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ агрСссивным прСобразованиям ΠΊΠΎΠ΄Π°.

ΠŸΠ ΠžΠ‘Π•Π›_Π’ΠžΠ›Π¬ΠšΠž

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ компиляции WHITESPACE_ONLY

удаляСт ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΠ· вашСго ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ удаляСт Ρ€Π°Π·Ρ€Ρ‹Π²Ρ‹ строк, Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, посторонниС Π·Π½Π°ΠΊΠΈ прСпинания (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π». Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ JavaScript Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ исходному JavaScript.

Вранспиляция языковых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ, Ссли Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ языковой Ρ€Π΅ΠΆΠΈΠΌ отличаСтся ΠΎΡ‚ языкового Ρ€Π΅ΠΆΠΈΠΌΠ° Π²Π²ΠΎΠ΄Π°. Π‘ΠΌ. --language_in ΠΈ --language_out Π² Π€Π»Π°Π³ΠΈ ΠΈ ΠΎΠΏΡ†ΠΈΠΈ.

Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ компиляции обСспСчиваСт наимСньшСС сТатиС ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡƒΡ€ΠΎΠ²Π½ΠΈ.

ΠŸΠ ΠžΠ‘Π’Π«Π•_ΠžΠŸΠ’Π˜ΠœΠ˜Π—ΠΠ¦Π˜Π˜

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ компиляции SIMPLE_OPTIMIZATIONS выполняСт Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊΠ°ΠΊ WHITESPACE_ONLY , Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ выполняСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСньшС. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ SIMPLE_OPTIMIZATIONS ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, это Π½Π΅ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ скомпилированным JavaScript ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ JavaScript.

Π‘Π±ΠΎΡ€Π½ΠΈΠΊ с SIMPLE_OPTIMIZATIONS всСгда сохраняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ синтаксичСски ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ JavaScript ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π΅ обращаСтся ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ строковыС ΠΈΠΌΠ΅Π½Π° (ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ eval() ΠΈΠ»ΠΈ вызывая toString для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ).

SIMPLE_OPTIMIZATIONS β€” ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ компиляции ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π ΠΠ‘Π¨Π˜Π Π•ΠΠΠ«Π•_ΠžΠŸΠ’Π˜ΠœΠ˜Π—ΠΠ¦Π˜Π˜

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ компиляции ADVANCED_OPTIMIZATIONS выполняСт Ρ‚Π΅ ΠΆΠ΅ прСобразования, Ρ‡Ρ‚ΠΎ ΠΈ SIMPLE_OPTIMIZATIONS , Π½ΠΎ добавляСт мноТСство Π±ΠΎΠ»Π΅Π΅ агрСссивных Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ для достиТСния самоС высокоС сТатиС ΠΈΠ· всСх Ρ‚Ρ€Π΅Ρ… ΡƒΡ€ΠΎΠ²Π½ΠΈ. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ADVANCED_OPTIMIZATIONS сТимаСт JavaScript Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСвосходит возмоТности Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту ΠΊΡ€Π°ΠΉΠ½ΠΎΡΡ‚ΡŒ сТатиС, ADVANCED_OPTIMIZATIONS Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ прСдполоТСния ΠΎ скомпилированном ΠΊΠΎΠ΄Π΅. Если ваш ΠΊΠΎΠ΄ Π½Π΅ соотвСтствуСт ΠΊ этим прСдполоТСниям,

ADVANCED_OPTIMIZATIONS Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ запускаСтся.

НапримСр, ΠΊΠΎΠ΄, скомпилированный с ADVANCED_OPTIMIZATIONS ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с нСскомпилированный ΠΊΠΎΠ΄, Ссли Π²Ρ‹ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠΌΠ΅Ρ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… шагов для обСспСчСния ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. Если Π²Ρ‹ Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ внСшниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ свойства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ ссылки Π² вашСм ΠΊΠΎΠ΄Π΅, Closure Compiler Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ссылки Π² вашСм ΠΊΠΎΠ΄Π΅, вызывая нСсоотвСтствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² вашСм ΠΊΠΎΠ΄Π΅ ΠΈ Π²ΠΎ внСшнСм ΠΊΠΎΠ΄Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Π ΠΠ‘Π¨Π˜Π Π•ΠΠΠ«Π•_ΠžΠŸΠ’Π˜ΠœΠ˜Π—ΠΠ¦Π˜Π˜

, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Advanced Compilation ΠΈ ЭкстСрны.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ADVANCED_OPTIMIZATIONS Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • Π±ΠΎΠ»Π΅Π΅ агрСссивноС ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅:

    ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ с SIMPLE_OPTIMIZATIONS Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ADVANCED_OPTIMIZATIONS Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ свойства.

  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° :

    ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ с

    ADVANCED_OPTIMIZATIONS удаляСт ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎ нСдоступСн. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Π² сочСтании с большими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· большого Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС, ΠΊΡ€ΠΎΠΌΠ΅ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°.

  • глобальноС встраиваниС:

    ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ с ADVANCED_OPTIMIZATIONS замСняСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с Ρ‚Π΅Π»ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ трансформация извСстна ΠΊΠ°ΠΊ «встраиваниС». ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ встраиваСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ опрСдСляСт, Ρ‡Ρ‚ΠΎ встраиваниС бСзопасно ΠΈ экономит мСсто. Π‘Π±ΠΎΡ€Π½ΠΈΠΊ с ADVANCED_OPTIMIZATIONS Ρ‚Π°ΠΊΠΆΠ΅ встраиваСт константы ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΠ³Π΄Π° компилятор опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ бСзопасно.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ компиляции

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс слуТбы Closure Compiler, API слуТбы ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ настройки ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ компиляции .

Π’ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС слуТбы Closure Compiler

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ компиляции Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС слуТбы Closure Compiler, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Π² ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ€Π°Π·Π΄Π΅Π»Π° интСрфСйс.

Π’ API слуТбы компилятора закрытия

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ компиляции Π² API сСрвиса Closure Compiler, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ_компиляции со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ WHITESPACE_ONLY , SIMPLE_OPTIMIZATIONS , ΠΈΠ»ΠΈ ADVANCED_OPTIMIZATIONS , ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠΈΡ‚ΠΎΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

#!/usr/bin/python2. 4
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ httplib, urllib, sys
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ = urllib.urlencode([
    ('code_url', sys.argv[1]),
    ('ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ_компиляции', 'Π”ΠžΠŸΠžΠ›ΠΠ˜Π’Π•Π›Π¬ΠΠ«Π•_ΠžΠŸΠ’Π˜ΠœΠ˜Π—ΠΠ¦Π˜Π˜'),
    ('Ρ„ΠΎΡ€ΠΌΠ°Ρ‚_Π²Ρ‹Π²ΠΎΠ΄Π°', 'тСкст'),
    ('output_info', 'скомпилированный_ΠΊΠΎΠ΄'),
  ])
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ = { "Π’ΠΈΠΏ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°": "application/x-www-form-urlencoded" }
conn = httplib.HTTPSConnection('closure-compiler.appspot.com')
conn.request('POST', '/compile', ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ)
ΠΎΡ‚Π²Π΅Ρ‚ = conn.getresponse()
Π΄Π°Π½Π½Ρ‹Π΅ = ΠΎΡ‚Π²Π΅Ρ‚.Ρ‡Ρ‚Π΅Π½ΠΈΠ΅()
Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅
соСдинСниС.Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ()
 

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Closure Compiler

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ компиляции Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Closure Compiler, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ„Π»Π°Π³ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки --compilation_level с Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠ· WHITESPACE_ONLY , ΠŸΠ ΠžΠ‘Π’ΠžΠ™ , ΠΈΠ»ΠΈ ADVANCED , ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

java -jarcompiler. jar --ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ_компиляции Π ΠΠ‘Π¨Π˜Π Π•ΠΠΠ«Π•_ΠžΠŸΠ’Π˜ΠœΠ˜Π—ΠΠ¦Π˜Π˜ --js hello.js
 

Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Π°Ρ компиляция | Rust Blog

Π― помню, ΠΊΠ°ΠΊ Π²ΠΎ врСмя ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ 1.0 Π½Π° юбилСйной ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ВстрСча Bay Area Meetup, Аарон Π’ΡƒΡ€ΠΎΠ½ рассказал ΠΎ Dropbox, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎ сих ΠΏΠΎΡ€ Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ использованиСм Rust Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅. Π―Π΄Ρ€ΠΎ Команда рСгулярно ΡΠ²ΡΠ·Ρ‹Π²Π°Π»Π°ΡΡŒ с Π½ΠΈΠΌΠΈ , сказал ΠΎΠ½, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ ΠΈΡ…, Π·Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ? И ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ всСгда: быстрСС компилируСтся… ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Rust, Π½Π΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ это Π²Ρ‹Π·Π²Π°Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ смСшок Ρƒ аудитория. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции Π½Π° самом Π΄Π΅Π»Π΅ Π±Ρ‹Π»ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΌ событиСм Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Rust достиг вСрсии 1.0, хотя Π΄ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° большая Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊ этой Ρ†Π΅Π»ΠΈ пошСл Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… основ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… компилятор, ΠΈ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Один ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ строится Π½Π° этом Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ врСмя компиляции для Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов, это инкрСмСнтная компиляция . Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Π°Ρ компиляция позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΊΡ€Π΅ΠΉΡ‚, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ быстрому Ρ†ΠΈΠΊΠ» рСдактирования-компиляции-ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

БСгодня ΠΌΡ‹ анонсируСм Π°Π»ΡŒΡ„Π°-Π²Π΅Ρ€ΡΠΈΡŽ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции, которая Π·Π½Π°ΠΌΠ΅Π½ΡƒΠ΅Ρ‚ собой Π²Π°ΠΆΠ½ΡƒΡŽ Π²Π΅Ρ…Ρƒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ врСмя с Π½Π°Ρ‡Π°Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°, всС основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° мСстС, большая Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π° сдСлано. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ это Π² Π½ΠΎΡ‡Π½ΠΎΠΉ вСрсии компилятора:

 rustc -Zincremental=<ΠΏΡƒΡ‚ΡŒ> ./main.rs
 

Π­Ρ‚ΠΎ запустит компилятор Π² ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ любой <ΠΏΡƒΡ‚ΡŒ> Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π² качСствС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° кэша ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции. ΠœΡ‹ Ρ‚ΠΎΠΆΠ΅ работая Π½Π°Π΄ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Cargo, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π²Π½Ρ‹ΠΌ, позволяя Π²Π°ΠΌ просто Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π³Ρ€ΡƒΠ·, инкрСмСнтная сборка . Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, инкрСмСнтная компиляция Π±ΡƒΠ΄Π΅Ρ‚ доступна ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ»Π΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ.

ΠŸΡ€ΠΈ этом инкрСмСнтная компиляция Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ производству : Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сбои, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ случаи, ΠΊΠΎΠ³Π΄Π° фактичСского сокращСния Π½Π΅Ρ‚. Π²ΠΎ врСмя компиляции ΠΈ, самоС Π³Π»Π°Π²Π½ΠΎΠ΅, Π½Π°ΠΌ всС Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ рСгрСссионныС тСсты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎ скомпилированныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ всСгда ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ β€” Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ. Над Однако Π² блиТайшиС нСсколько нСдСль ΠΈ мСсяцСв ΠΌΡ‹ сосрСдоточимся Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ рСализация Π½Π°Π΄Π΅ΠΆΠ½Π° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния коррСктности, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Π΅, постСпСнныС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ эффСктивности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π³Π΄Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’ этом сообщСнии Π±Π»ΠΎΠ³Π° Π±ΡƒΠ΄Π΅Ρ‚ рассказано, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½Π° инкрСмСнтная компиляция. для Π½Π°Ρ‡Π°Π»Π°, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ наша рСализация, ΠΊΠ°ΠΊΠΎΠ²Π° Π΅Π΅ тСкущая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° статус, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ‡Ρ‚ΠΎ планируСтся Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ внСсти свой Π²ΠΊΠ»Π°Π΄, Ссли Π²Ρ‹ Ρ‚Π°ΠΊ склонны.

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ программиста тратится Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс рСдактирования-компиляции-ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ :

  • Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ нСбольшоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (часто Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ),
  • Π²Ρ‹ позволяСтС компилятору пСрСвСсти ΠΊΠΎΠ΄ Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†
  • Π²Ρ‹ запускаСтС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ»ΠΈ ΠΊΡƒΡ‡Ρƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

ПослС этого ΠΎΠ½ возвращаСтся ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΡˆΠ°Π³Ρƒ, дСлая ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ нСбольшоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ знаниями, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи Π»Π΅ΠΆΠΈΡ‚ Π² основС нашСй повсСднСвной Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ врСмя останавливаСтся, оТидая, ΠΏΠΎΠΊΠ° компилятор создаст ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅ β€” Π² ΠΈΠ΄Π΅Π°Π»Π΅ достаточно ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ стрСсс умствСнного Ρ‚Ρ€ΡƒΠ΄Π°. ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ контСкста: Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΎΡΡ‚Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π² Π·ΠΎΠ½Π΅. ПослС всС, Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ рСгрСссивного вСсСлья, ΠΏΠΎΠΊΠ° Ρ€ΠΆΠ°Π²Ρ‡ΠΈΠ½Π° бутстрапы.

Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ компиляция β€” это способ использования Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ нСбольшиС измСнСния ΠΌΠ΅ΠΆΠ΄Ρƒ компиляциями Π²ΠΎ врСмя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса программирования: МногиС, Ссли Π½Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ, измСнСния, сдСланныС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сСансами компиляции, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ локальноС влияниС Π½Π° машинном ΠΊΠΎΠ΄Π΅ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° исходном ΡƒΡ€ΠΎΠ²Π½Π΅, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, Π±ΠΈΡ‚ Π·Π° Π±ΠΈΡ‚ΠΎΠΌ. Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ компиляция Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° ​​на Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΈΠ· Π½ΠΈΡ… Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. частСй насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΈ этом пСрСдСлывая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚ объСм Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ фактичСски Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½.

ΠœΡ‹ ΡƒΠΆΠ΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ постСпСнноС вычислСниС Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ части Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… вычислСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… вычислСния. Одна ΠΈΠ· основных стратСгий, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для достиТСния этой Ρ†Π΅Π»ΠΈ, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ большоС вычислСниС. (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) Π² Π²ΠΈΠ΄Π΅ составного мноТСства Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ…, взаимосвязанных вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°. КаТдоС ΠΈΠ· этих ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… вычислСний даст ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ надСюсь ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ использовал Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, избавляя нас ΠΎΡ‚ нСобходимости ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ снова.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Π°Π»Π³Π΅Π±Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° a+bΓ—c постСпСнно. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ выраТСния ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· с ΠΎΠ΄Π½ΠΈΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для a , b ΠΈ c , Π° Π·Π°Ρ‚Π΅ΠΌ оцСнивая Π΅Π³ΠΎ сСкунду врСмя с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ для ΠΈ . Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ 1 , B Π±ΡƒΠ΄Π΅Ρ‚ 2 , Π° C Π±ΡƒΠ΄Π΅Ρ‚ 3 :

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ «сохранили» ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹, ΠΌΡ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, Ρ‡Ρ‚ΠΎ bΓ—c β€” это 6 , Π° a+bΓ—c β€” это 7 . Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°ΡƒΠ½Π΄, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ a+bΓ—c , Ссли ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ a Π½Π° 4 . Однако, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ вычисляСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ извСстно, Ρ‡Ρ‚ΠΎ bΓ—c = 6 , поэтому Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ это вычислСниС. снова ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ (a = 4) + (bΓ—c = 6) . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ вычислили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нашСго выраТСния всСго Π·Π° ΠΎΠ΄ΠΈΠ½ шаг вмСсто Π΄Π²ΡƒΡ…, Ρ‡Ρ‚ΠΎ избавляСт нас сплошноС ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ эта схСма транслируСтся Π² компилятор.

Бпособ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² компиляторС Rust, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: просто: сСанс ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции слСдуСт Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ шаги Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС, Ρ‡Ρ‚ΠΎ ΠΈ сСанс ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ компиляции. Однако ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ ΠΏΠΎΡ‚ΠΎΠΊ достигаСт Ρ‚ΠΎΡ‡ΠΊΠΈ, Π³Π΄Π΅ ΠΎΠ½ собираСтся Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ значСния. Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΎΠ½ попытаСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ этот Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠ· кэша ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции. вмСсто этого Π½Π° дискС. Если Π² кэшС Π΅ΡΡ‚ΡŒ допустимая запись, компилятор ΠΌΠΎΠΆΠ΅Ρ‚ просто ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ вычислСниС этого ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° (ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎ) ΠΎΠ±Π·ΠΎΡ€ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… этапов компиляции ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ:

Π‘Π½Π°Ρ‡Π°Π»Π° компилятор Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚ исходный ΠΊΠΎΠ΄ Π² абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ. (АБВ). Π—Π°Ρ‚Π΅ΠΌ AST ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ„Π°Π·Ρƒ Π°Π½Π°Π»ΠΈΠ·Π°, которая Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ MIR для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ПослС этого, Ссли Π°Π½Π°Π»ΠΈΠ· ошибок Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ, этап codegen ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ MIR ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π΅Π΅ Π²Π΅Ρ€ΡΠΈΡŽ машинного ΠΊΠΎΠ΄Π°, создавая ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π·Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ исходного ΠΊΠΎΠ΄Π°. На послСднСм шагС всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π»ΠΈΠ½ΠΊΡƒΡŽΡ‚ΡΡ вмСстС. Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΈΠ»ΠΈ исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ.

Бравнивая это с нашим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π°Π»Π³Π΅Π±Ρ€Ρ‹ Π²Ρ‹ΡˆΠ΅, части AST ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° a , b ΠΈ c , Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Ρ…ΠΎΠ΄Π°ΠΌΠΈ для нашСго ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ вычислСния, ΠΈ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ пробираСмся Ρ‡Π΅Ρ€Π΅Π· процСсс компиляции. ΠšΡƒΡΠΎΡ‡ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ МИР ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΡΠ²Π»ΡΡŽΡ‚ΡΡ нашими ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ , Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ записям кэша ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… вычислСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ сохранили для bΓ—c ΠΈ a+bΓ—c . Π“Π΄Π΅ запись кэша выглядит ΠΊΠ°ΠΊ bΓ—c = 6 Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π»Π³Π΅Π±Ρ€Ρ‹, это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ translate_to_obj_file(mir1, mir2, mir3) = <Π±ΠΈΡ‚Ρ‹ obj-Ρ„Π°ΠΉΠ»Π°> Π² случаС компилятора.

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠΊΠ° это каТСтся довольно простым: вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² сСкунду врСмя, просто Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· кСша. ВсС становится слоТно, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ допустимо Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· кСша ΠΈΠ»ΠΈ Ссли ΠΌΡ‹ приходится ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

БущСствуСт Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для модСлирования ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ этапа вычислСний. Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ ΠΈΡ… ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Β«Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΒ» простым способом: Π³Ρ€Π°Ρ„Ρ‹ зависимостСй . Выглядит это Ρ‚Π°ΠΊ: ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСдставлСн ΠΊΠ°ΠΊ ΡƒΠ·Π΅Π» Π² ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π³Ρ€Π°Ρ„Π΅. прСвосходит Π² Π³Ρ€Π°Ρ„ΠΈΠΊ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, прСдставляСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠ»ΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ влияСт Π½Π° Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с Π°Π»Π³Π΅Π±Ρ€ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это выглядит Π² ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρƒ нас Π΅ΡΡ‚ΡŒ ΡƒΠ·Π»Ρ‹ для Π²Ρ…ΠΎΠ΄ΠΎΠ² a , b ΠΈ c , ΠΈ ΡƒΠ·Π»Ρ‹ для ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ bΓ—c ΠΈ a+bΓ—c . ΠšΡ€Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊΠ°ΠΊ Π½Π΅Ρ‚ ΡΡŽΡ€ΠΏΡ€ΠΈΠ·: Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Ρ€Π΅Π±Ρ€ΠΎ ΠΎΡ‚ bΓ—c Π΄ΠΎ b ΠΈ ΠΎΠ΄Π½ΠΎ Π΄ΠΎ c , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ вычислСнии б×с . Для a+bΓ—c это Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, кстати, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Π³Ρ€Π°Ρ„ являСтся Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΈΠΌ вычислСниС ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ Π΄Π΅Ρ€Π΅Π²Π°. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ зависимости ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ацикличСскими Π³Ρ€Π°Ρ„Π°ΠΌΠΈ , ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π±Ρ‹, Ссли Π±Ρ‹ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ нашим вычислСниям Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ bΓ—c+c :

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ эту структуру Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π΅ΠΉ вопросы Ρ„ΠΎΡ€ΠΌΡ‹ «Ссли X измСнился, являСтся Π»ΠΈ Y Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ?Β». ΠœΡ‹ просто Π±Π΅Ρ€Π΅ΠΌ ΡƒΠ·Π΅Π» прСдставляСт Y ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС Π²Ρ…ΠΎΠ΄Ρ‹ Y зависит ΠΎΡ‚ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½ΠΎ послС всСх Ρ€Π΅Π±Π΅Ρ€, исходящих ΠΈΠ· Y . Если ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· этих Π²Ρ…ΠΎΠ΄ΠΎΠ² измСнился, Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π»ΠΈ для Y , большС нСльзя ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ.

ΠŸΡ€ΠΈ компиляции Π² ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΌΡ‹ всСгда строим Π³Ρ€Π°Ρ„ зависимостСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· записываСтся какая-Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»), ΠΌΡ‹ записываСм, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ частям Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ обращаСмся ΠΏΡ€ΠΈ этом.

Π£Π΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° запись здСсь. Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компилятор сохраняСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Π½Π°Π΄ ΠΊΠ°ΠΊΠΈΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ (ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ это Π² Ρ„ΠΎΠ½ Π² локальной памяти ΠΏΠΎΡ‚ΠΎΠΊΠ°). Π­Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π³Ρ€Π°Ρ„ΠΈΠΊ зависимости. И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ 90Β 147, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ 90Β 148 для вычислСния. Ρ‚Π°ΠΊΠΆΠ΅ отслСТиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°: ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΎ ΡƒΠΆΠ΅ находится Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π²ΠΈΠ΄ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° поиска для ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ записи. ΠœΡ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ этот Ρ„Π°ΠΊΡ‚, сдСлав эти поиск ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Ρ€Π΅Π±Ρ€Π° Π² Π³Ρ€Π°Ρ„Π΅ зависимостСй: всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° запись доступ, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это читаСтся, ΠΈ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это читаСтся вмСсто (Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π»). Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΎΠ±Π° ΠΊΠΎΠ½Ρ†Π° края зависимости ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊ. Π’ ΠΊΠΎΠ½Ρ†Π΅ сСансов компиляции ΠΌΡ‹ всС наши Π΄Π°Π½Π½Ρ‹Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ связаны, Π² основном автоматичСски:

Π—Π°Ρ‚Π΅ΠΌ этот Π³Ρ€Π°Ρ„ зависимостСй сохраняСтся Π² кэшС ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ вмСстС с записями кэша, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ описываСт.

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ сСанса компиляции ΠΌΡ‹ опрСдСляСм, ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (=ΡƒΠ·Π»Ρ‹ AST) измСнились ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсиСй. Учитывая Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΈ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ всС записи кэша, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹, ΠΈ просто ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΡ… ΠΈΠ· кСша:

ВсС, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ»ΠΎ этот этап ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ кСша, ΠΌΠΎΠΆΠ½ΠΎ бСзопасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²ΠΎ врСмя Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСанса компиляции.

Π•ΡΡ‚ΡŒ нСсколько прСимущСств автоматичСскоС отслСТиваниС зависимостСй ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΡ‹ Π½Π°Π½ΠΈΠΌΠ°ΡŽΡ‚. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ встроСн Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ API компилятора, ΠΎΠ½ Π±Ρ‹Ρ‚ΡŒ Π² курсС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² компиляторС, ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ случайно Π·Π°Π±ΡƒΠ΄ΡŒ ΠΎ. И Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ всС Π΅Ρ‰Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ объявляя ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ мСстС) Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ консСрвативный, Π½ΠΎ всС ΠΆΠ΅ Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉΒ» Π³Ρ€Π°Ρ„ΠΈΠΊ зависимостСй : это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° коэффициСнт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования, Π½ΠΎ это Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ использованию Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ….

Π”Ρ€ΡƒΠ³ΠΎΠΉ аспСкт Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ систСма Π½Π΅ пытаСтся ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ зависимости Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΎΠ½ просто отслСТиваСт. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ наши (Π΅Ρ‰Π΅ Π½Π΅ написанныС) рСгрСссионныС тСсты , с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, даст описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π³Ρ€Π°Ρ„ зависимостСй для Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ фактичСский Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΈ эталонный Π³Ρ€Π°Ρ„ΠΈΠΊ достигнуты. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² , сниТая риск Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈ компилятор, ΠΈ test case ΡΠΎΠ³Π»Π°ΡΡƒΡŽΡ‚ΡΡ с Ρ‚Π΅ΠΌ ΠΆΠ΅, Π½ΠΎ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послСдствия Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ:

  • Π“Ρ€Π°Ρ„ΠΈΠΊ зависимостСй ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ фактичСскиС зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ частями исходный ΠΊΠΎΠ΄ ΠΈ части Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.
  • Если Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΡƒΠ·Π΅Π», доступный ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π½Π°ΠΏΡ€. Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх функциях, Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ опрСдСлСния этого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с нуля, Π±Π΅Π· этого Π½ΠΈΠΊΡƒΠ΄Π°.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции ΠΎΡ‡Π΅Π½ΡŒ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊ структурС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ вносимым измСнСниям. ИзмСнСниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π² исходном ΠΊΠΎΠ΄Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ вСсь кэш ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции. Однако ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° измСнСния Ρ€Π΅Π΄ΠΊΠΈΠΉ случай, ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв приходится Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.

Для ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π°Π»ΡŒΡ„Π°-вСрсии, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ сдСлали Ρ‡Ρ‚ΠΎ? Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· взглянСм Π½Π° этапы компиляции ΠΈ особСнно Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π² срСднСм Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… тратится ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, компилятор Rust Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Ρ‹ ΠΊΠΎΠ΄Π΅Π³Π΅Π½Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли эту Ρ„Π°Π·Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ хотя Π±Ρ‹ Π½Π° Ρ‡Π°ΡΡ‚ΡŒ Π±Π°Π·Ρ‹ ΠΊΠΎΠ΄Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ здСсь ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ самоС большоС влияниС Π½Π° врСмя компиляции достигнуто.

ИмСя это Π² Π²ΠΈΠ΄Ρƒ, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Ρ‚ΠΎΠ³ΠΎ, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ это Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ вСрсия ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ: Ссли компилятор Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ X сСкунд ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ компиляции вашСго ящика, Ρ‚ΠΎΠ³Π΄Π° инкрСмСнтная компиляция Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя компиляции максимум Π½Π° эти X сСкунд.

Другая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, которая ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ большоС влияниС Π½Π° Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π°Π»ΡŒΡ„Π°-вСрсия β€” . Π‘Ρ‚Π΅ΠΏΠ΅Π½ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ отслСТивания зависимостСй . ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ наши Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ зависимостСй, ΠΈ тСкущая рСализация Π΄Π΅Π»Π°Π΅Ρ‚ это скорСС Π³Ρ€ΡƒΠ±ΠΎΠ²Π°Ρ‚ΠΎ мСстами. НапримСр, Π³Ρ€Π°Ρ„ΠΈΠΊ зависимости Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² impl . Как слСдствиС, компилятор Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ всС . ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ этого ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½. Π­Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ большС ΠΊΠΎΠ΄Π°, Ρ‡Π΅ΠΌ это строго Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ тСкущая рСализация Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ситуации. Π‘Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ сцСнарий, ΠΊΠΎΠ³Π΄Π° 100% ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ящика ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ящик Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с нСсколькими ящиками, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ящики Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Π½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, сборка ΠΊΡ€Π΅ΠΉΡ‚Π° Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· Π² ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π½Π΅ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ отслСТиваниС Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ компиляция постСпСнно Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ быстрСС (ΠΊΠ°ΠΊ Π² случаС ящика рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ). Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ инкрСмСнтная компиляция Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π΅ΠΌ обычная сСссия компиляции, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΌΠ΅Π½Π΅Π΅ эффСктивном ΠΊΠΎΠ΄Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния.

Π’ послСднСм столбцС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ пСрСстроСниС ящика, ΠΊΠΎΠ³Π΄Π° Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнилось. Для ΠΊΡ€Π΅ΠΉΡ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ компилятор Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ оптимизация Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, syntex-syntax ΠΈΠ»ΠΈ regex , Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сущСствСнным: инкрСмСнтная пСрСстройка Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всСго ΠΎΠΊΠΎΠ»ΠΎ 22% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ полная пСрСстройка потрСбуСтся для syntex-syntax , Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 16% для regex ΠΈ ΠΌΠ΅Π½Π΅Π΅ 10% для тСстового ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° all.rs ящика futures-rs.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, для Ρ‚Π°ΠΊΠΎΠ³ΠΎ ящика, ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° futures-rs , которая ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ°Π»ΠΎ машинного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ компиляции, тСкущая вСрсия ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ компиляция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ большого значСния: ΠΎΠ½Π° всСго Π½Π° 3% быстрСС, Ρ‡Π΅ΠΌ компиляция ΠΈΠ· Ρ†Π°Ρ€Π°ΠΏΠ°Ρ‚ΡŒ.

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²Π»ΠΈΡΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ измСнСния, внСсСнныС Π² ящик рСгулярного выраТСния . ΠΈΠΌΠ΅Ρ‚ΡŒ врСмя ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ пСрСсборки:

Π¦ΠΈΡ„Ρ€Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ компиляции Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ зависит ΠΎΡ‚ Π»ΠΎΡ‚ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ измСнСния, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊ ΠΊΠΎΠ΄Ρƒ. Для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с ΠΎΡ‡Π΅Π½ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ эффСкта ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ использованию (ΠΊΠ°ΠΊ Π² случаС Ошибка::ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°() , ΠΈΠ»ΠΈ dfa::write_vari32() ). Если ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ повлияСт Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Compiler::new() , ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ³ΠΎ сокращСния врСмя компиляции. Но ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ эти измСрСния взяты ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Они Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠΠ»ΡŒΡ„Π°-вСрсия прСдставляСт собой ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠΊΠ²ΠΎΠ·Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ компиляция для компилятора Rust, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ возмоТностСй для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ. Ρ€Π°Π·Π΄Π΅Π» ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии ΡƒΠΆΠ΅ ΠΈΠ·Π»ΠΎΠΆΠΈΠ» Π΄Π²Π΅ основныС оси, вдоль ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности:

  • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ MIR ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ компилятору ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ всС большС ΠΈ большС шагов.

  • Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ отслСТиваниС зависимостСй Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π» мСньшС Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний ΠΏΡ€ΠΈ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ кСша.

Π£ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΎΠ±ΠΎΠΈΡ… этих направлСниях ΡΠ΄Π΅Π»Π°ΡŽΡ‚ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ эффСктивным ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΌΡ‹ с самого Π½Π°Ρ‡Π°Π»Π° ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ Π² сторону остороТности, скорСС Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ компилятор ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ссли ΠΌΡ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ наш отслСТиваниС зависимостСй сдСлало ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдСланный.

  • ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ автоматичСских тСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ удостовСрятся, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ систСмы Π½Π΅ Ρ€Π΅Π³Ρ€Π΅ΡΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ . Π­Ρ‚ΠΎ Ρ‚Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π³Π΄Π΅ заинтСрСсованныС Π»ΠΈΡ†Π° ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ свой Π²ΠΊΠ»Π°Π΄ с ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π―Π·Ρ‹ΠΊ Rust ΠΈ тСстовая срСда, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ слоТныС внутрСнности рСализация компилятора. Если Π²Ρ‹ заинтСрСсованы Π² ΠΏΡ€Ρ‹ΠΆΠΊΠ°Ρ…, Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ отслСТивания Π½Π° GitHub ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ!

  • ΠœΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ инструмСнт Cargo (Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Cargo ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Π° для бСспроблСмной установки ΠΈ использования), которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ git, компилируя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вСрсии исходного ΠΊΠΎΠ΄Π° ΠΈ сбор Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ эффСктивности ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎ инкрСмСнтная компиляция ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ компиляциСй.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *