გადასვლა შიგთავსზე
DevelopmentSoftwareWindows4 წთ

Discord-ი Electron-ს ემშვიდობება: რატომ ცვლის Rust-ზე გადასვლა აპლიკაციას და Windows-ის ეკოსისტემას

ტექნოლოგიურ ინდუსტრიაში პროგრამული უზრუნველყოფის ოპტიმიზაცია კვლავ უმთავრეს პრიორიტეტად იქცა. ამის ნათელი მაგალითია Discord-ის გადაწყვეტილება, სრულად თქვას უარი წლების განმავლობაში გამოყენებულ პლატფორმა Electron-ზე და საკუთარი კლიენტი დაწეროს Rust-ზე. ცვლილება რადიკალურად ამცირებს ოპერატიული…

გაზიარება

ტექნოლოგიურ ინდუსტრიაში პროგრამული უზრუნველყოფის ოპტიმიზაცია კვლავ უმთავრეს პრიორიტეტად იქცა. ამის ნათელი მაგალითია Discord-ის გადაწყვეტილება, სრულად თქვას უარი წლების განმავლობაში გამოყენებულ პლატფორმა Electron-ზე და საკუთარი კლიენტი დაწეროს Rust-ზე. ცვლილება რადიკალურად ამცირებს ოპერატიული მეხსიერების (RAM) მოხმარებას და მკვეთრად ზრდის აპლიკაციის მუშაობის სისწრაფეს როგორც პერსონალურ კომპიუტერებზე, ისე სმარტფონებზე.

რატომ გახდა მეხსიერების დაზოგვა კრიტიკული?

ბოლო პერიოდში კომპიუტერული ტექნიკის ბაზარზე ოპერატიული მეხსიერების სერიოზული დეფიციტი შეიქმნა. ხელოვნური ინტელექტის მონაცემთა ცენტრების მხრიდან DRAM-ის მარაგების მასშტაბურმა ათვისებამ მეხსიერების მოდულებზე ფასები მკვეთრად გაზარდა. მაგალითად, თუ 2023 წელს Corsair Vengeance 32GB DDR5 მოდული 180 დოლარამდე ღირდა, მისი ფასი 500 დოლარზე მეტ ნიშნულამდე გაიზარდა.

შედეგად, მომხმარებლებისთვის კომპიუტერების განახლება გართულდა, 1000 დოლარამდე საფასო კატეგორიაში 16GB RAM-ის მქონე ლეპტოპების პოვნა კი სულ უფრო ძნელი ხდება. ამ ვითარებაში Microsoft იძულებული გახდა, Windows 11-ის ოპტიმიზაციაზე გაემახვილებინა ყურადღება — კომპანია სისტემას 8GB RAM-ის მქონე მოწყობილობებისთვის არგებს, აწესებს „მეხსიერების ბიუჯეტებს“ და ზღუდავს ზედმეტ წინასწარ დაინსტალირებულ პროგრამებს (bloatware). Windows-ის ხელმძღვანელმა პავან დავულურიმაც დაადასტურა, რომ მეხსიერების რესურსების კონტროლი ამჟამად ინდუსტრიის მთავარი საზრუნავია.

Discord-ის ახალი არქიტექტურა: Electron-იდან Rust-სა და GPUI-ზე

Discord-ის დესკტოპ აპლიკაცია აქამდე Electron-ზე იყო აგებული. Electron-ის მთავარი მინუსი ის არის, რომ მასში შეფუთულია Chromium-ის საკუთარი ბრაუზერული ძრავი, რაც სისტემური რესურსების დიდ ხარჯვას იწვევს. Windows-ზე Discord-ი უმოქმედო (idle) მდგომარეობაშიც კი ხშირად 1-დან 2 გიგაბაიტამდე ოპერატიულ მეხსიერებას მოიხმარდა, აქტიური გამოყენებისას კი მაჩვენებელი 4 გბ-საც აღწევდა (კომპანია აპლიკაციის ავტომატურ გადატვირთვასაც კი ტესტავდა, თუ მეხსიერება 4 გბ-ს გადააჭარბებდა).

Discord-ის თანადამფუძნებელმა და მთავარმა ტექნოლოგიურმა ოფიცერმა (CTO) სტანისლავ ვიშნევსკიმ დაადასტურა, რომ დესკტოპ აპლიკაცია მთლიანად გადაიწერება Rust-ზე, რომელსაც კომპანია ინფრასტრუქტურაში ჯერ კიდევ 2018 წლიდან იყენებს.

ტექნოლოგიური ცვლილებების დეტალები ასეთია:

  • სამომხმარებლო ინტერფეისი: Discord-მა არჩევანი შეაჩერა არა Tauri-ზე ან Microsoft-ის WinUI-ზე, არამედ GPUI-ზე. ეს არის კოდის რედაქტორ Zed-ის შემქმნელების მიერ შექმნილი Rust-ფრეიმვორკი, რომელიც ინტერფეისს პირდაპირ გრაფიკულ პროცესორზე (GPU) ხატავს და არ საჭიროებს HTML-ს.
  • მეხსიერების მკვეთრი შემცირება: ვიშნევსკის მიერ გამოქვეყნებულ ეკრანის ანაბეჭდში ახალი კლიენტი (სამუშაო სახელით „Discord Phoenix“) Windows Task Manager-ში მხოლოდ 290.2 მბ მეხსიერებას მოიხმარს. აღსანიშნავია, რომ ამ დროს აპლიკაციაში ერთდროულად ორი ანგარიში იყო გააქტიურებული. ეს ძველ მაჩვენებლებთან შედარებით დაახლოებით 70%-ით ნაკლებია.
  • ვებ-ელემენტები: სისტემური WebView გამოყენებული იქნება მხოლოდ ისეთი კომპონენტებისთვის, როგორიცაა YouTube-ის ჩაშენებული ბმულები და მინი-თამაშები (Activities).
  • უსაფრთხოება: ავტორიზაციის ტოკენი შეინახება სისტემურ საცავში (Windows 10-სა და 11-ზე ეს არის Credential Manager).

ჩატვირთვის სისწრაფე და ცვლილებები მობილურ პლატფორმებზე

ახალი არქიტექტურა რადიკალურად ცვლის პროგრამის გაშვების დროს. თუ ძველი Electron-ის აპლიკაცია ცივი ჩაშვებისას (cold start) ჯერ შავ ეკრანს, შემდეგ კი რამდენიმეწამიან „Starting“ ანიმაციას აჩვენებდა, Rust-ის ვერსია თითქმის მყისიერად, ერთ წამში იხსნება და მეგობრების სიას მომენტალურად ტვირთავს. აპლიკაციას საერთოდ აღარ ექნება „Starting“ ფანჯარა, განახლებები კი ფონურ რეჟიმში განხორციელდება.

ცვლილებები მხოლოდ კომპიუტერებს არ ეხება:

  • სმარტფონები (Android და iOS): Discord-ი უარს ამბობს React Native-ზე. მობილური აპლიკაციები შეინარჩუნებენ ნატიურ სამომხმარებლო ინტერფეისს, თუმცა ლოგიკურ კოდს დესკტოპ ვერსიასთან ერთად Rust-ის ბაზაზე გაიზიარებენ. ვიშნევსკის მიერ ნაჩვენებ ვიდეოში ძველ Android სმარტფონზე ახალი კლიენტი 1 წამში იხსნება (ძველ ვერსიას სრულ ჩატვირთვამდე თითქმის 5 წამი სჭირდებოდა).
  • ვებ-ვერსია: ბრაუზერში ინტერფეისი კვლავ HTML-ით გამოისახება, თუმცა JavaScript-ის ნაცვლად აპლიკაციის ლოგიკა WebAssembly-ზე (WASM) გადავა, რაც მას საშუალებას მისცემს, იგივე Rust-ის კოდი გამოიყენოს.

ვიზუალურად Discord-ი ზუსტად ისევე გამოიყურება და მუშაობს, როგორც აქამდე — ცვლილებები მთლიანად მის ტექნიკურ ნაწილს ეხება.

გავლენა Windows-ის ეკოსისტემაზე: კონტრასტი კონკურენტებთან

Discord-ის ეს ნაბიჯი სერიოზულ წნეხს უქმნის სხვა მსხვილ კომპანიებს, მათ შორის Meta-სა და თავად Microsoft-ს. Windows 11-ზე ბევრი პოპულარული აპლიკაცია კვლავ რესურსების მფლანგველ ტექნოლოგიებს ეყრდნობა:

  • WhatsApp-ი ნატიური აპლიკაციიდან (რომელიც 100 მბ-ზე ნაკლებ RAM-ს მოიხმარდა) გადავიდა WebView2-ზე, რის გამოც მისი მეხსიერების ხარჯი 1.2 გბ-მდე გაიზარდა.
  • Microsoft Teams-იც WebView2-ს იყენებს და უმოქმედო მდგომარეობაშიც კი დაახლოებით 963 მბ-ს იკავებს.

მიუხედავად იმისა, რომ Microsoft თავად მოუწოდებს დეველოპერებს ნატიური WinUI ჩარჩოს გამოყენებისკენ და ცდილობს Windows 11-ის ოპტიმიზაციას 8GB-იანი სისტემებისთვის, მისივე საკუთარი აპლიკაციები ჯერ კიდევ დიდ რესურსს მოითხოვს. Discord-მა კი დაამტკიცა, რომ მრავალმილიონიანი აუდიტორიის მქონე ჩატ-პლატფორმას შეუძლია ბრაუზერული ძრავების გარეშე, სუფთა და სწრაფ კოდზე იმუშაოს.

Discord-ის მარკეტინგის დირექტორის, რაიან კ. რიგნის განცხადებით, ახალი კლიენტის დახურული ტესტირება მალე დაიწყება, რათა უზრუნველყოფილი იყოს მისი სტაბილურობა და უსაფრთხოება. Rust-ზე დაფუძნებული განახლებული Discord-ი ხელმისაწვდომი იქნება Windows-ზე, macOS-სა და Linux-ზე, თუმცა საჯარო გამოშვების ზუსტი თარიღი ჯერჯერობით უცნობია.

წყაროები