Droider & Turtlex
Turtlex Turtlex
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Ρ‚Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ пиксСльной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² Rust, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Ρ‚ΡŒ эффСкты слоСв Π½Π° Π»Π΅Ρ‚Ρƒ? Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ, ΠΏΠΎ-Ρ‚Π²ΠΎΠ΅ΠΌΡƒ, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» ΠΈ быстрым, ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ.
Droider Droider
Π”Π°, ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π° Rust – это ΠΊΡ€ΡƒΡ‚ΠΎΠΉ Ρ…Π°ΠΊ. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈ основной Ρ†ΠΈΠΊΠ» Π½Π° Rust для скорости, Π° интСрфСйс Π²Ρ‹Π²Π°Π»ΠΈΠ²Π°ΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π²Ρ€ΠΎΠ΄Π΅ crossterm, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ слоями Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅. Для скриптов встрой нСбольшой VM – Lua ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Wasm – Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ эффСкты ΠΊ слоям Π½Π° Π»Π΅Ρ‚Ρƒ, Π±Π΅Π· пСрСкомпиляции. Π”Π°Π½Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈ Π² плоских слайсах, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ структуры с ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π±ΠΈΡ‚Π°ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСля, ΠΈ выполняй вычислСния с использованиСм SIMD Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’Π°ΠΊ интСрфСйс Π±ΡƒΠ΄Π΅Ρ‚ быстрым, скрипты – Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ, ΠΈ Ρ‚Ρ‹ всё Ρ€Π°Π²Π½ΠΎ смоТСшь Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ чистого Π²ΠΈΠ΄Π° пиксСльной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Волько ΠΏΠΎΠΌΠ½ΠΈ: Ρ‡Π΅ΠΌ большС Ρ‚Ρ‹ ΡΡ‚Π°Ρ€Π°Π΅ΡˆΡŒΡΡ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ максимум, Ρ‚Π΅ΠΌ большС придётся ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ. Π Π°Π·Π±Π΅ΠΉ всё Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ – Ρ‚Π°ΠΊ Π²Ρ‹ΠΆΠΈΠ²Π΅ΡˆΡŒ Π² этом хаосС.
Turtlex Turtlex
ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ – связка packed slices ΠΈ SIMD – это классика. Волько ΠΏΠΎΠΌΠ½ΠΈ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ слой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ‹ Π²Ρ‹Π½ΠΎΡΠΈΡˆΡŒ Π² Lua ΠΈΠ»ΠΈ Wasm, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠΌ мСстом; ΠΎΠ΄ΠΈΠ½ Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ просто ΡƒΠ±ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π”Π΅Ρ€ΠΆΠΈ ядро Π΄Π²ΠΈΠΆΠΊΠ° Π½Π° Rust, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒ Ρ‚ΠΎΠ½ΠΊΠΈΠΉ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ API для VM, ΠΈ провСряй ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ…ΡƒΠΊ нСбольшим Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠΌ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ эффСкт. Π’Π°ΠΊ β€œΠ±Π΅ΡΠΏΠΎΡ€ΡΠ΄ΠΎΠΊβ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ, ΠΈ пиксСльная Π³Ρ€Π°Ρ„ΠΈΠΊΠ° останСтся Ρ‡Π΅Ρ‚ΠΊΠΎΠΉ.
Droider Droider
Π—Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слСди, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Π±Ρ‹Π»Π° Π»Ρ‘Π³ΠΊΠΎΠΉ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ сошлись – Π½Π΅ хочСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё Π·Π°Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΠ»ΠΎ ΠΈ ΡƒΠΏΠ°Π»ΠΎ посрСди Ρ€Π°Π±ΠΎΡ‚Ρ‹ с пиксСлями. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉ ΠΊΠΎΠ²Ρ‹Ρ€ΡΡ‚ΡŒΡΡ. ΠœΡ‹ сдСлали всё, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΈ.
Turtlex Turtlex
Π Π°Π΄, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ присоСдинился. Π― ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, Π±Π΅Π· ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΉ, собСру всю Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρƒ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° ошибки ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ слияниСм. Π§Ρ‚ΠΎ ΠΈΠ· эффСктов слоёв Ρ…ΠΎΡ‡Π΅ΡˆΡŒ сначала ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?
Droider Droider
ΠœΠΎΠΆΠ΅Ρ‚, сначала ΠΊΠΈΠ½Π΅ΠΌ Ρ‚ΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅Ρ…Ρƒ – нСбольшой сдвиг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅Ρ‚ строки ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ. Π­Ρ‚ΠΎ быстро, ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚Π²ΠΎΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ эффСктно смотрится, ΠΊΠΎΠ³Π΄Π° наТимаСшь Backspace. ΠŸΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ настоящий слой ΡˆΡƒΠΌΠ° добавляй. Π£Π΄Π°Ρ‡ΠΈ с тСстами Π½Π° уязвимости.