
Cloudflare-მა წარადგინა tsrs, TypeScript-ის კომპილატორის Rust-პორტი
Cloudflare, VoidZero და Owner.com-ის მაქს შვენკი TypeScript-ის გუნდთან ერთად Oxc-ის ხელსაწყოებში ქმნიან tsrs-ს, TypeScript-ის კომპილატორის Rust-პორტს, რათა დააჩქარონ შემოწმებები და შეამცირონ მეხსიერების მოხმარება.
ზუსტი Rust-პორტი
Cloudflare და VoidZero Owner.com-ის მაქს შვენკთან ერთად მუშაობენ tsrs-ზე, TypeScript-ის კომპილატორის Rust-პორტზე. პროექტი Oxc JavaScript-კომპილატორის ხელსაწყოების ნაწილად ინკუბირდება და TypeScript-ის გუნდთან მჭიდრო თანამშრომლობით მუშავდება. გამოცხადებული მიზანია, დეველოპერებმა ნაკლები დრო დახარჯონ კოდის შემოწმების მოლოდინში და მეტი დრო დაუთმონ შექმნას, ხოლო TypeScript უფრო სწრაფი გახდეს და ნაკლები მეხსიერება მოიხმაროს.
გუნდები ამბობენ, რომ ეს TypeScript-ის ფორკი არ არის. მათი თქმით, ენის დიზაინსა და მიმართულებაზე სრული კონტროლი TypeScript-ის გუნდს უნდა ჰქონდეს, ხოლო Rust-პორტმა მჭიდროდ უნდა მიჰყვეს upstream გადაწყვეტილებებს, თორემ შეუთავსებლობის რისკი არსებობს. Rust-ზე TypeScript-ის გადატანა ზუსტი პორტის შექმნას ისახავს მიზნად. ექსპერიმენტული გამოშვების დაყენება npm-იდან შესაძლებელია ბრძანებით 'npm install tsrs', ხოლო გაშვება ბრძანებით 'npx tsrs'.
წარმადობისა და მეხსიერების მაჩვენებლები
გუნდების მიერ გაზიარებული ადრეული ბენჩმარკები აჩვენებს, რომ tsrs 8-ჯერამდე უფრო სწრაფია და დაახლოებით 70%-ით ნაკლებ მეხსიერებას მოიხმარს, ვიდრე TypeScript 7.0, როცა ტიპების შემოწმების იმავე რაოდენობის worker-ები გამოიყენება. მათი თქმით, შედარება TypeScript-ის გუნდთან ერთად ჩატარდა, რათა კონფიგურაცია იგივე ყოფილიყო. TypeScript 7.1 beta უკვე 2,5-ჯერამდე უფრო სწრაფია, ვიდრე TypeScript 7.0, და ამ ოპტიმიზაციების ნაწილი tsrs-იდან upstream-ში დაბრუნდა.
ნაგულისხმევად tsrs მოდის ადაპტური კონფიგურაციით, რომელიც მანქანის ტიპზეა დამოკიდებული. ეს ნაგულისხმევი რეჟიმი მეტ მეხსიერებას იყენებს, მაგრამ კიდევ უფრო სწრაფია. გუნდები ასევე აღნიშნავენ, რომ ზოგიერთი საჯარო ბენჩმარკი უფრო დიდი ტიპის მანქანებს ან TypeScript-ის ნაგულისხმევისგან განსხვავებულ პარამეტრებს იყენებს, რამაც შეიძლება შეცვალოს წარმადობის შესახებ მტკიცებები.
რატომ არის Rust მნიშვნელოვანი არა მხოლოდ სისწრაფით
გუნდების თქმით, პორტის წინა მცდელობები შეზღუდული წარმატებით დასრულდა, და მათგან წარმატებული მხოლოდ TypeScript-ის გუნდის მიერ JavaScript-იდან Go-ზე გადატანა იყო. ისინი ამტკიცებენ, რომ უფრო სწრაფ TypeScript-ზე მოთხოვნა კვლავ არსებობს. Rust წარმოდგენილია როგორც WebAssembly-სთვის უფრო შესაფერისი ვარიანტი, რადგან Go-ს WebAssembly-ზე კომპილაცია Go-ს garbage collector-საც მოაქვს, ხოლო Rust-ის მეხსიერების მოდელი საშუალებას იძლევა, WebAssembly guest-სა და host-ს შორის მეხსიერების ურთიერთქმედება პირდაპირი იყოს.
Cloudflare Workers-ს დიდი ხანია აქვს WebAssembly-ის მხარდაჭერა, ხოლო კომპანიამ ცოტა ხნის წინ გამოაცხადა Workers-ში Rust-ის ნატიური მხარდაჭერა wasm-bindgen-ისთვის Emscripten target-ის მეშვეობით. გუნდების თქმით, მეხსიერების მცირე მოხმარება პრაქტიკულს ხდის build და deployment სისტემების ინტენსიურ ციკლებში გაშვებას Workers-ზე, და თუნდაც sandboxed development toolchain-ების გაშვებას Cloudflare-ზე, ბრაუზერში, ჩაშენებულ მოწყობილობებზე ან IoT აპლიკაციებში.
მოვლა და შემდეგი ნაბიჯები
Cloudflare ამბობს, რომ Theo Browne-თან ერთად მუშაობს tsc-rs-ისა და tsrs-ის ერთ პაკეტში გაერთიანებაზე, რომელიც TypeScript-ის ფუნქციებს, მათ შორის Language Server Protocol-სა და content mappers-ს, მხარს უჭერს. მოვლის გეგმა Vinext-ის მოდელზეა აგებული: ყოველ დილით აგენტი გადახედავს ცვლილებებს, იღებს diff-ებს და ხსნის tracking issue-ებს; ყოველ ღამეს თავსებადობის მატრიცა ხელახლა გენერირდება Vinext-ის წინააღმდეგ Next.js-ის ტესტების კომპლექტის გაშვებით. როცა ხარვეზები გამოვლინდება, აგენტებს შეუძლიათ შექმნან რეპროდუქცია, გადმოიტანონ შესაბამისი ტესტები და შესთავაზონ გამოსწორებები.
გუნდები ამბობენ, რომ იზრუნებენ, არ გადაუხვიონ upstream TypeScript-ს, და შეეცდებიან წარმადობის გაუმჯობესებები დააბრუნონ TypeScript-ის Go კოდის ბაზაში. ისინი აღიარებენ ამჟამინდელ განსხვავებებს, მაგალითად დიაგნოსტიკური შეტყობინებების დაბეჭდვის რიგს, და მიზნად ისახავენ, სტაბილურ გამოშვებამდე შეამცირონ ისინი. Cloudflare ასევე ამბობს, რომ Oxc-ის გუნდი რეფაქტორინგს ატარებს სიჩქარის, მეხსიერების მოხმარებისა და მოვლადობისთვის, და რომ tsrs-ის უფრო ღრმა ინტეგრაციები შეიძლება მოიცავდეს ტიპებზე მგრძნობიარე lint წესებს Oxlint-ში.
წყაროები: Cloudflare · The New Stack
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.