ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Carbonyl, ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π° основС Π΄Π²ΠΈΠΆΠΊΠ° Chromium

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Carbonyl, основанный Π½Π° Π΄Π²ΠΈΠΆΠΊΠ΅ Chromium ΠΈ способный ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Π»ΡŽΠ±Ρ‹Π΅ сайты, Π² Ρ‚ΠΎΠΌ числС YouTube. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всС Web API, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ WebGL, WebGPU ΠΈ срСдства для воспроизвСдСния Π²ΠΈΠ΄Π΅ΠΎ, Π·Π²ΡƒΠΊΠ° ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π Π°Π±ΠΎΡ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ прямом запускС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· SSH. Обвязка Π²ΠΎΠΊΡ€ΡƒΠ³ Π΄Π²ΠΈΠΆΠΊΠ° Chromium написана Π½Π° языках TypeScript, C++ ΠΈ Rust.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ html2svg, которая ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° для прСобразования HTML ΠΈ <canvas> Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ (SVG, PDF) ΠΈΠ»ΠΈ растровыС изобраТСния (PNG, JPEG, WebP), Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ задСйствована Π² качСствС основы для отрисовки Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». Для Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ задСйствованы возмоТности Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ xterm-256, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ unicode-символы Π² Ρ†Π²Π΅Ρ‚Π΅ — Π² качСствС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ пиксСля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ U+2584 («β–„»). ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сторон Π² этом символС 1:2, имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ отобраТСния Π½Π° Π΅Π³ΠΎ основС Π΄Π²ΡƒΡ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… пиксСлСй, Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‘Ρ‚ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, Π° Π½ΠΈΠΆΠ½ΠΈΠΉ — ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π°.

Для отслСТивания двиТСния ΠΌΡ‹ΡˆΠΈ, пСрСмСщСния курсора ΠΈ измСнСния Ρ†Π²Π΅Ρ‚Π° тСкста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ xterm. Для Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° xterm Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ задСйствованиС RGB-ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ 6x6x6, Π° ΠΏΡ€ΠΈ установкС Ρ€Π΅ΠΆΠΈΠΌΠ° COLORTERM — 24-разрядной ΠΏΠΎΠ»Π½ΠΎΡ†Π²Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ RGB. ВСкст отрисовываСтся Π² фиксированном Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° тСкста Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Skia ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. Код отрисовки ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΈ позволяСт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ с частотой обновлСния Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 60 FPS с минимальной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π½Π° CPU.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Carbonyl, ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π° основС Π΄Π²ΠΈΠΆΠΊΠ° Chromium
ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Carbonyl, ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π° основС Π΄Π²ΠΈΠΆΠΊΠ° Chromium
ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Carbonyl, ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π° основС Π΄Π²ΠΈΠΆΠΊΠ° Chromium


Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

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