《1備用-2480-EW23_Are_we_GUI_Yet.pdf》由會員分享,可在線閱讀,更多相關《1備用-2480-EW23_Are_we_GUI_Yet.pdf(16頁珍藏版)》請在三個皮匠報告上搜索。
1、Are we GUI Yet?Are we GUI Yet?An Overview of GUI Frameworks written in RustAbout meAurindam Jana/Co-Founder SixtyFPS GmbHSixtyFPS GmbHGrowing popularity of Rust2022 is the first year where memory safety vulnerabilities do not represent a majority of Androids vulnerabilities.Support for using Rust fo
2、r kernel development entered into stable Linux release,Linux 6.1With the stable release,Rust has become the second language officially accepted for Linux kernel development,along with C.BlackBerry and Elektrobit announced they are collaborating on integration efforts to support the Rust programming
3、language,empowering developers to build safe,reliable and efficient automotive software.Infineons AURIX TC3xx,TC4x,TRAVEO T2G&PSoC families of microcontrollers support RustGraphical User Interface Libraries Atleast 33 options to choose from(!)Most are community driven projectsVery few are mature and
4、 easy-to-useComparing 4 popular GUI librariesOther popular GUI librariesUses the WebView.Declarative UI using RSX.Backend Logic needs to be implemented in Rust.Connection between User Interface and Backend Logic is via built-in methods.Dioxus Desktop is built off Tauri.Dioxus Architecture and Implem
5、entationProgrammingJavaScript or RustDesktopYes,via WebView provided by the OSMobileAlpha release in Dec 2022EmbeddedNoWebNoUses the WebView provided by the OS to render an HTML/JS frontend.For the User Interface,one can choose either JavaScript or Rust.Backend Logic needs to be implemented in Rust.
6、Connection between User Interface and Backend Logic is via built-in methods.credits:Lukas Kalbertodt/https:/ Subjective OverviewStability/Maturity1.0,big community,has sponsors,multiple developers,has Governance pageDocumentationFairly good;lots of templates;could use more guide-level docs for backe
7、nd;crate docs could be betterDeveloper ExperienceFrontend instant reload;browser dev tools;good CLI toolsPerformanceStartup time till final UI380msInput delay23 framescredits:Lukas Kalbertodt/https:/ and SupportLicenseMITSupportCommunity only Architecture and ImplementationProgrammingRust,Elm-like/r
8、eactiveDesktopYes,wgpu basedMobileNoEmbeddedNoWebExperimentalElm-inspired(reactive)GUI library.Uses wgpu for rendering on desktop.experimental web backend to create DOM for rendering.All code in Rust.credits:Lukas Kalbertodt/https:/ Subjective OverviewStability/Maturity0.7,experimental,active develo
9、pment since 2019DocumentationGood crate docs,but lacking guide-level docs;book basically non-existent;many examplesDeveloper ExperienceAlways recompile;debug overlay with performance metricsPerformanceStartup time till final UI230msInput delay3 framescredits:Lukas Kalbertodt/https:/ and SupportLicen
10、seMITSupportCommunity only Architecture and ImplementationProgrammingRust,Immediate modeDesktopYes,backend-agnostic,default backend is OpenGL-basedMobileNoEmbeddedNoWebPartial,via WASM and WebGLImmediate mode GUI using OpenGL for custom rendering.All code in Rust.credits:Lukas Kalbertodt/https:/ Sub
11、jective OverviewStability/Maturity0.20,“in active development”,“interfaces in flux”,“lacks features”,active development since 2019,mainly one devDocumentationGood crate docs;many examplesDeveloper ExperienceAlways recompilePerformanceStartup time till final UI280msInput delay2 framescredits:Lukas Ka
12、lbertodt/https:/ and SupportLicenseMITSupportCommunity only Architecture and ImplementationProgrammingC+or JavaScript or Rust/DeclarativeDesktopYes,backend-agnostic,default backend is OpenGL-basedMobileNoEmbeddedYes,backend-agnostic,Open-GL,DMA-2D,Framebuffer,LinebufferWebPartial,via WASM and WebGLR
13、enders natively on Desktop and Embedded.Compiled to WASM for Web.User Interface is defined in a declarative language.Backend Logic can be implemented in Rust,C+or JavaScript.credits:Lukas Kalbertodt/https:/ Subjective OverviewStability/MaturityUpcoming 1.0,growing community,multiple developers,has p
14、aying customersDocumentationAlright-missing widget and property search,good tutorialsDeveloper ExperienceVS Code extension,Live-Preview on host and target,Language Server ProtocolPerformanceStartup time till final UI116msInput delay12 framescredits:Lukas Kalbertodt/https:/ and SupportLicenseAttribut
15、ion license,GPLv3 or ProprietarySupportCommunity and PaidSummaryTauriIcedEguiSlintProgrammingJavaScript,RustRustRustC+,JavaScript,RustModeWebViewElm-like ReactiveImmediateDeclarativePlatformsDesktopDesktopDesktop,WebEmbedded,Desktop,WebStability/Maturity1.0,has sponsors,multiple devs0.7,experimental
16、0.20,“interfaces in flux”,mainly 1 devUpcoming 1.0,paying customers,multiple devsDev ExperienceFrontend instant reload;browser dev tools;good CLI toolsAlways recompile;debug overlay with performance metricsAlways recompileVS Code extension,Live-Preview on host and target,Language Server ProtocolPerformanceStartup time:380msInput delay:23 framesStartup time:230msInput delay:3 framesStartup time:280msInput delay:2 framesStartup time:116msInput delay:1-2 framesSupportCommunityCommunityCommunityCommunity&CommercialQuestions?Questions?Aurindam Janaaurindam.janaslint- Hall 4,Stand 4-306