
Cloudflare ներկայացնում է tsrs՝ TypeScript կոմպիլյատորի Rust պորտը
Cloudflare-ը, VoidZero-ն և Owner.com-ի Max Schwenk-ը TypeScript թիմի հետ համատեղ ստեղծում են tsrs-ը՝ TypeScript կոմպիլյատորի Rust պորտը, Oxc գործիքաշարի կազմում, ստուգումներն արագացնելու և հիշողության սպառումը նվազեցնելու համար։
Հավատարիմ Rust պորտ
Cloudflare-ը և VoidZero-ն Owner.com-ի Max Schwenk-ի հետ աշխատում են tsrs-ի վրա՝ TypeScript կոմպիլյատորի Rust պորտի։ Նախագիծը ինկուբացվում է Oxc JavaScript կոմպիլյատորի գործիքաշարի կազմում և մշակվում է TypeScript թիմի հետ սերտ համագործակցությամբ։ Հայտարարված նպատակն այն է, որ մշակողները ավելի քիչ ժամանակ ծախսեն կոդի ստուգումների սպասելիս և ավելի շատ ժամանակ հատկացնեն ստեղծագործմանը, ինչպես նաև TypeScript-ը դառնա ավելի արագ և հիշողության առումով ավելի խնայող։
Թիմերը նշում են, որ սա TypeScript-ի fork չէ։ Նրանք ասում են, որ TypeScript թիմը պետք է պահպանի լիակատար վերահսկողությունը լեզվի դիզայնի և ուղղության նկատմամբ, իսկ Rust պորտը պետք է սերտորեն հետևի upstream-ի որոշումներին, հակառակ դեպքում ժամանակի ընթացքում կդառնա անհամատեղելի։ Rust-ով գրված TypeScript-ը ձգտում է լինել հավատարիմ պորտ։ Փորձնական թողարկումը կարելի է տեղադրել npm-ից՝ 'npm install tsrs' հրամանով, և գործարկել՝ 'npx tsrs' հրամանով։
Արդյունավետության և հիշողության վերաբերյալ պնդումներ
Թիմերի հրապարակած վաղ benchmark-ները ցույց են տալիս, որ tsrs-ը մինչև 8 անգամ ավելի արագ է և օգտագործում է մոտավորապես 70%-ով ավելի քիչ հիշողություն, քան TypeScript 7.0-ը, երբ օգտագործվում է տիպերի ստուգման նույն թվով աշխատող։ Նրանք նշում են, որ համեմատությունն անցկացվել է TypeScript թիմի հետ միասին՝ նույն կոնֆիգուրացիան ապահովելու համար։ TypeScript 7.1 beta-ն արդեն իսկ մինչև 2,5 անգամ ավելի արագ է, քան TypeScript 7.0-ը, և այդ օպտիմիզացիաների մի մասը բերվել է tsrs-ից upstream։
Լռելյայնորեն tsrs-ը տրամադրվում է ադապտիվ կոնֆիգուրացիայով, որը կախված է մեքենայի տեսակից։ Այդ լռելյայն ռեժիմն օգտագործում է ավելի շատ հիշողություն, սակայն ավելի արագ է։ Թիմերը նաև նշում են, որ որոշ հանրային benchmark-ներ օգտագործում են ավելի մեծ մեքենաներ կամ TypeScript-ի լռելյայնից տարբեր պարամետրեր, ինչը կարող է փոխել արդյունավետության մասին պնդումները։
Ինչու է Rust-ը կարևոր ոչ միայն արագությամբ
Թիմերի խոսքով՝ պորտի նախկին փորձերը սահմանափակ հաջողություն են ունեցել, և միակ հաջողվածը TypeScript թիմի՝ JavaScript-ից Go պորտն է։ Նրանք պնդում են, որ ավելի արագ TypeScript-ի պահանջարկը դեռևս գոյություն ունի։ Rust-ը ներկայացվում է որպես WebAssembly-ի համար ավելի հարմար տարբերակ, քանի որ Go-ն WebAssembly-ի կոմպիլյացնելիս իր հետ բերում է նաև Go-ի աղբահավաքը, մինչդեռ Rust-ի հիշողության մոդելը թույլ է տալիս ուղղակի հիշողության փոխազդեցություն WebAssembly հյուրի և հոսթի միջև։
Cloudflare Workers-ը վաղուց աջակցում է WebAssembly-ին, և ընկերությունը վերջերս հայտարարեց Workers-ում Rust-ի նատիվ աջակցության մասին՝ wasm-bindgen-ի համար Emscripten target-ի միջոցով։ Թիմերի խոսքով՝ հիշողության փոքր ծավալը գործնական է դարձնում build և deployment համակարգերը Workers-ում սեղմ ցիկլերով գործարկելը, և նույնիսկ ամբողջովին իզոլացված մշակման գործիքաշարերի գործարկումը Cloudflare-ում, բրաուզերում, ներկառուցված սարքերում կամ IoT հավելվածներում։
Սպասարկումը և հաջորդ քայլերը
Cloudflare-ը նշում է, որ Theo Browne-ի հետ աշխատում է tsc-rs-ը և tsrs-ը մեկ փաթեթում միավորելու ուղղությամբ, որը կաջակցի TypeScript-ի բոլոր հնարավորություններին, ներառյալ Language Server Protocol-ը և content mappers-ը։ Սպասարկման պլանը կառուցված է Vinext-ի մոդելով. ամեն առավոտ agent-ը վերանայում է փոփոխությունները, ստանում է diff-երը և բացում tracking issue-ներ, իսկ ամեն գիշեր համատեղելիության մատրիցը վերականգնվում է Vinext-ի դեմ Next.js-ի թեստային հավաքածուն գործարկելով։ Երբ բացեր են հայտնաբերվում, agent-ները կարող են կառուցել վերարտադրություն, տեղափոխել համապատասխան թեստերը և առաջարկել ուղղումներ։
Թիմերը նշում են, որ ուշադիր կլինեն, որպեսզի չշեղվեն upstream TypeScript-ից, և կփորձեն արդյունավետության բարելավումները վերադարձնել TypeScript-ի Go կոդի բազա։ Նրանք ընդունում են առկա տարբերությունները, օրինակ՝ ախտորոշիչ հաղորդագրությունների տպման հերթականությունը, և նպատակ ունեն դրանք հասցնել նվազագույնի՝ կայուն թողարկում հրապարակելու պահին։ Cloudflare-ը նաև նշում է, որ Oxc-ի թիմը վերակառուցում է կոդը արագության, հիշողության օգտագործման և սպասարկելիության համար, և որ tsrs-ի ավելի խորը ինտեգրացիաները կարող են ներառել տիպերին հաշվի առնող lint կանոններ Oxlint-ում։
Աղբյուրներ: Cloudflare · The New Stack
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։