ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Qt web-Π΄Π²ΠΈΠΆΠΊΠ° Servo, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° языкС Rust

Компания KDAB объявила ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Servo WebView для Qt, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Servo вмСсто модуля Qt WebEngine (Π½Π° Π±Π°Π·Π΅ Chromium) для отобраТСния web-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π² QML-прилоТСниях. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊ Π½Π° Qt-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ API WebView, Π·Π° счёт примСнСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ благодаря языку Rust ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ уязвимостСй, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… ошибками ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Код Servo WebView для Qt распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MPL-2.0.

Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ΄Π° Servo, написанного Π½Π° языкС Rust, Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½Π° языкС C++ задСйствована прослойка CXX-Qt. CXX-Qt позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° языкС Rust, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° Π‘++, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ Qt. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ CXX-Qt Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ подклассы QObject Π½Π° Rust, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄Π΅ Π½Π° C++, QML ΠΈ JavaScript. Π’Π°ΠΊΠΆΠ΅ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Rust-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ΄ Π½Π° Π‘++, для Ρ‡Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Rust-обвязки Π½Π°Π΄ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹ΠΌΠΈ классами QtCore ΠΈ QtGui.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Servo ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ развивался ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Mozilla, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΡˆΡ‘Π» ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡ€ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Linux Foundation. Π”Π²ΠΈΠΆΠΎΠΊ отличаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° web-страниц, распараллСливаниСм ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с DOM (Document Object Model) ΠΈ задСйствованиСм прСдоставляСмых языком Rust ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² бСзопасного программирования. Π’ΠΎ врСмя основания Servo Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Firefox Π½Π΅ ΠΌΠΎΠ³ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» соврСмСнных многоядСрных систСм ΠΈΠ·-Π·Π° использования ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… схСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. Servo ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создан с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ разбиСния ΠΊΠΎΠ΄Π° DOM ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы многоядСрных CPU. Π’ Firefox ΡƒΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ части Servo, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ CSS-Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈ систСма отрисовки WebRender.

Из Π±Π»ΠΈΠ·ΠΊΠΈΡ… ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ Ρ‚Π°ΠΊΠΆΠ΅ отмСчаСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Tauri-Servo, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ бэкСнд ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ WRY Π½Π° Π±Π°Π·Π΅ Π΄Π²ΠΈΠΆΠΊΠ° Servo, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Servo Π² прилоТСниях Π½Π° основС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Tauri (ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ с Electron ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ).

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