უკან დაბრუნება
Valen-ის შემქმნელმა Rust-ის ბიბლიოთეკები C-ის გარეშე დააკავშირა
SiTech AI Team2 წთ. საკითხავი

Valen-ის შემქმნელმა Rust-ის ბიბლიოთეკები C-ის გარეშე დააკავშირა

პროგრამირების ენა Valen-ის ავტორმა, Evan Ovadia-მ, აჩვენა, რომ ახალი ენის Rust-ის კოდთან დაკავშირება C-ის ABI-ის გავლით აუცილებელი არ არის: ორი კომპილერი პირდაპირ ესაუბრება ერთმანეთს და ჯენერიკებიც საზღვარს გადააღწევს.

Valen ენის ავტორმა, Evan Ovadia-მ, გამოაქვეყნა ექსპერიმენტული მიდგომა, რომელიც ახალ ენას Rust-ის კოდთან C-ის ABI-ის გავლის გარეშე აკავშირებს. The Register-მა ამ ნამუშევრის შესახებ 2026 წლის 25 სექტემბერს დაწერა.

Ovadia, Google-ის ყოფილი ინჟინერი და Mojo-ს ერთ-ერთი ძირითადი ავტორი, პროექტს 17 სექტემბერს გამოქვეყნებულ ბლოგ-პოსტში აღწერს. სახელი „ოქროს ლურსმანი“ 1869 წლის ცერემონიიდან აიღო, როცა იუტაში აშშ-ის პირველი ტრანსკონტინენტური რკინიგზა 17,6-კარატიანი ლურსმნით დაასრულეს.

Valen-ის პირველი რენდერი Rust-ის გრაფიკული ბიბლიოთეკის მეშვეობით

რატომ ჩერდება C-ის ABI ჯენერიკებთან

ბიბლიოთეკები ენებს შორის ჩვეულებრივ C-ის სახით გადადის: Rust-ის crate ფუნქციებს extern C-ის ხელშეკრულებით აქვეყნებს, ტიპებს კი repr(C)-ით, და სხვა ენები მათ უცხო ფუნქციების ინტერფეისით იყენებენ. C-ს ჯენერიკები არ აქვს, ამიტომ Rust-ის ჯენერიკული ფუნქცია გარედან ვერ გამოიძახება; სტაბილური ABI არც თავად Rust-ს აქვს.

Ovadia-ს Valen Rust-ზე უფრო სწრაფ და მოხერხებულ ალტერნატივად სურს, თან საკუთარი, wgpu-ზე დაფუძნებული გრაფიკული ბიბლიოთეკის გამოყენებაც უნდა. „მთავარი კითხვა, გადასაჭრელი მთავარი გამოცანა კი ისაა, თუ როგორ გავაკეთოთ ჯენერიკები ენებს შორის“, წერს ის.

ორი კომპილერის ცეკვა

C-ის კავშირების გენერაციის ნაცვლად Valen-ის კომპილერი ახლა თავად მართავს rustc-ს: კითხულობს Valen-ის import-ებს, აგენერირებს პატარა Rust lib.rs-ს შესაბამისი use-ებით და მას rustc_driver-ის run_compiler-ს გადასცემს, რაც Rust-ის კომპილერის ბიბლიოთეკად გაშვების საშუალებას იძლევა.

ურთულესი ნაწილი ინსტანცირებაა: ორივე მხარეს ჯენერიკებია, ამიტომ ორივე კომპილერმა ერთად უნდა გაარკვიოს, ფუნქციის რომელი კონკრეტული ვარიანტები იძახება. Ovadia-ს თქმით, სწორედ ეს არის „ცეკვა“: როცა rustc-ს Valen-ზე დაწერილი ფუნქცია სჭირდება, მას Valen-ის მონომორფიზატორი აწარმოებს. ამისთვის მან rustc-ს დაახლოებით 100 სტრიქონი დამატებითი callback-ი შემატა; ისინი დახურულ, არასტაბილურ API-ებს ეყრდნობა და upstream-ში ვერ მოხვდება, აფრთხილებს ავტორი.

პირველი რენდერი და რაც ჯერ აკლია

მტკიცებულება მაშინ მოვიდა, როცა Valen-ის პროგრამამ Rust-ის ფანჯარა გახსნა, Rust-ის trait-ის განმახორციელებელი Valen-ის closure ჯენერიკულ Rust-ის ციკლს გადასცა და საკუთარი გრაფიკული ბიბლიოთეკიდან ერთი კადრი დახატა. „ოქროს ლურსმანი ჩარტყმულია და ტრანსკონტინენტური კომპილერი დაიბადა“, წერს ის.

შემდეგი სამიზნე მეხსიერების უსაფრთხოებაა საზღვარზე. Valen-ში გამოიყენება group borrowing, კომპილაციის დროს მოქმედი მიდგომა, რომელიც საერთო ცვალებად ბმულებს უშვებს; პროტოტიპი Rust-ის საზღვარზე უკვე აკეთებს გარკვეულ borrow checking-ს. ხარვეზები კვლავ რჩება: სტრუქტურები საზღვარზე ჯერ ნულოვანი ზომის უნდა იყოს, generational references გამორთულია, არსებული Rust-ის ტიპი კი ჯერ linear-ად ვერ გამოცხადდება. რეპოზიტორია Apache 2.0 ლიცენზიით გამოქვეყნდა, თუმცა ჯერ პროტოტიპია.

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.