სიახლეები და ანალიზი
ვის შეეხება განახლება: Netflix-ის ინსტრუმენტი, TypeScript 7.1, Node 24.22 და curl-ის 22 ხვრელი
Netflix ბიბლიოთეკების ცვლილებების რადიუსს ზომავს, გამოვიდა TypeScript 7.1 beta, Node.js 24.22, Bun, Deno და curl-ის პატჩები. რას ვაახლებ დღეს და რას მოგვიანებით.
ოქტომბრის ათ დღეში განახლებები დაგროვდა: Node.js 24.22, Bun 1.4.4, Deno 2.9.8, TypeScript 7.1-ის ბეტა, curl-მა 22 მოწყვლადობა დახურა, Cloudflare-მა კი TypeScript-ის Rust-ზე პორტირება დაიწყო. Netflix-მა ამავე დროს მოყვა ინსტრუმენტზე, რომელიც ბიბლიოთეკის გამოშვებამდე აჩვენებს, ვინ იძახებს მას. ბიზნესის მფლობელისთვის, რომელსაც საკუთარი სისტემა მუშაობს, კითხვა მარტივია: აქედან რა დავაყენოთ დღეს, რა ერთ თვეში და რას არ შევეხოთ. პასუხი იმაზეა დამოკიდებული, ვის შეეხება განახლება.
რა გამოვიდა
Netflix-მა 23 ოქტომბერს აღწერა Quasar, ინსტრუმენტი ბიბლიოთეკებში ცვლილებების დაზიანების რადიუსის გასაზომად. საერთო Java-ბიბლიოთეკის ავტორი თავისი API-ის დიფს ხედავს, მაგრამ ვერ ხედავს, მრავალი რეპოზიტორიიდან ვინ იძახებს ჯერ კიდევ წასაშლელ მეთოდს და რომელ ვერსიაზე. Quasar ყველა რეპოზიტორიაში სიმბოლოების განსაზღვრებებსა და მითითებებს ინდექსავს და pull request-ის შემოწმებისას ითვლის, ვინ მიუთითებს წაშლილ ან შეცვლილ სიმბოლოებზე. აღწერაში გულწრფელობა მომეწონა: „მითითებები ვერ მოიძებნა“ ნიშნავს მხოლოდ იმას, რომ ისინი ინდექსირებულ ნაწილში არ არის, რეფლექსიამ და დინამიკურმა ჩატვირთვამ კი შეიძლება დამოკიდებული კოდი დამალოს. ინსტრუმენტი რისკს აჩვენებს და რელიზს არ კრძალავს.
TypeScript-მა 20 ოქტომბერს გამოუშვა 7.1-ის ბეტა. მასში გაჩნდა იმპორტის ატრიბუტები ambient-მოდულების დეკლარაციებში: შეგიძლიათ დაწეროთ declare module "*" with { type: "css" } და მიიღოთ შეცდომა, თუ იმპორტში ატრიბუტი დაგავიწყდათ. Cloudflare-მა იმავე დღეს წარადგინა tsrs, TypeScript-ის პორტი Rust-ზე, VoidZero-სთან და Owner.com-ის Max Schwenk-თან ერთად. მათი გაზომვებით tsrs 8-ჯერამდე უფრო სწრაფია და დაახლოებით 70 %-ით ნაკლებ მეხსიერებას იყენებს, ვიდრე TypeScript 7.0 ვორკერების იგივე რაოდენობით, ხოლო თავად 7.1 ბეტა 7.0-ზე 2,5-ჯერამდე სწრაფია. სტატუსი ექსპერიმენტულია, ფორკს არ უწოდებენ.
Node.js-მა 14 ოქტომბერს გამოუშვა 24.22.0 LTS. საყურადღებო ცვლილებებს შორის: crypto.parsePKCS12(), საერთო MAC API, util.throttle და util.debounce, StatementSync.close() sqlite-ში და net.BoundSocket-ის გადაცემა worker threads-სა და შვილობილ პროცესებში. შესწორებებიდან Hmac.digest()-ს აღვნიშნავდი, რომელსაც შეეძლო არაინიციალიზებული მეხსიერება დაებრუნებინა.
Bun-მა 22 ოქტომბერს გამოუშვა 1.4.4 39 მონაწილით; GitHub-ზე რელიზის გვერდზე მხოლოდ ინსტალაციის ბრძანებები და ბლოგის ბმულია, ამიტომ შინაარსი მის მიხედვით არ გამირჩევია. Deno-მ 21 ოქტომბერს გამოუშვა 2.9.8: deno compile ახლა დინამიკურად იმპორტირებული ლოკალური ფაილებისთვის წაკითხვის უფლებას ამოწმებს, სანდოთა სიიდან ამოიღეს კომპრომეტირებული სასერტიფიკატო ცენტრები eMudhra, ხოლო rand 0.9.x შესწორებულ ვერსიამდე აწიეს.
Ubuntu-მ 14 ოქტომბერს გამოაქვეყნა CVE-2026-92392-ისა და curl-ის სხვა მოწყვლადობების შესწორებების მიმოხილვა. Daniel Stenberg-მა 7 ოქტომბერს გააფრთხილა 22 მოწყვლადობიანი გამოშვების შესახებ, და 14 ოქტომბერს ისინი გეგმის მიხედვით გაასაჯაროვეს. ერთი მაღალი სიმძიმისაა: CVE-2026-92392, Ubuntu-ს უსაფრთხოების გუნდის შეფასებით CVSS 8.1, კოდის დისტანციური შესრულების შესაძლებლობით მავნე სერვერთან მიერთებისას. ის მხოლოდ Ubuntu 26.04 LTS-ს ეხება, დანარჩენები ყველა მხარდაჭერილ გამოშვებაში დახურულია USN-8927-1-სა და USN-8932-1-ში. დაზარალებულია როგორც curl უტილიტა, ისე libcurl ბიბლიოთეკა, ანუ ყველაფერი, რაც მასთან არის აწყობილი. პაკეტების შემოწმებას ბრძანებით apt list '?installed ?source-package(^curl$)' გვთავაზობენ.
დაზიანების რადიუსი ერთ სერვერზე
სერვისულ კომპანიას ერთ სერვერზე საიტი, API, ტელეფონია და დოკუმენტების პარსერები უდგას. Node-ის განახლება API-სა და საიტს ეხება, სისტემური curl-ის განახლება კი ყველაფერს, რაც ბმულით ფაილებს libcurl-ით ტვირთავს, სკრიპტებიდან სისტემურ უტილიტებამდე. Netflix-ის კითხვა „ვინ იძახებს ამ სიმბოლოს“ აქ უფრო მარტივად ჟღერს: რომელი კონტეინერებია ამ იმიჯიდან აწყობილი და რომელი სკრიპტებია ამ ბიბლიოთეკაზე დამოკიდებული.
როგორ არის ეს ჩემთან მოწყობილი
საიტი kononov.dev მუშაობს Next.js-ზე, Node.js 24-ზე, SQLite-სა და Docker-ზე, ასე რომ, 24.22 პირდაპირ მეხება. შიდა სერვისი „ყავა ერთად“ React-სა და TypeScript-ზეა დაწერილი და Cloudflare Workers-ის runtime-ში მუშაობს, იმავე სერვერზე 2 GB მეხსიერებით. განახლებისას ძველი ინსტანსი ახლის გაშვებამდე ჩერდება, ხოლო თუ აწყობას მეხსიერება არ ჰყოფნის, იმიჯს სერვერის გარეთ ვაწყობ. ასე ვზღუდავ რადიუსს: იმიჯი ცალკე იწყობა და მოწმდება, სერვერზე კი მზა ხვდება.
აშშ-ის PDR-კომპანიაში უსაფრთხოების საკითხები ჩემთან მოდის, და როცა მსოფლიოში დიდი მოწყვლადობა ჩნდება, ვამოწმებ, გვეხება თუ არა. სერვერები იქ Google Cloud-ში Debian-ზეა და არა Ubuntu-ზე, მაგრამ curl ნებისმიერ სისტემაში დგას. კომპანიის შიდა API მესამე ვერსიამდე მივიყვანე, და მასზე რამდენიმე აპლიკაციაა დამოკიდებული: AppSheet, სუპერაპი, საიტი, TV-ბორდი. API-ის შეცვლამდე ვამოწმებ, ვინ იძახებს მას, იგივე მეთოდით, რაც Netflix-ს აქვს, ოღონდ ინდექსის გარეშე: აპლიკაციების სია და ძებნა კოდში. TypeScript 7.1-ის ბეტასა და tsrs-ს რელიზში არ ვიღებ; რა აქვთ შიგნით, აღწერებით ვმსჯელობ.
რას გავაკეთებდი
შეადგინეთ სია, რა დგას სერვერზე და რისგან არის აწყობილი: Node-ისა და Python-ის ვერსიები და სისტემური პაკეტები საბაზო იმიჯებში.
curl და დანარჩენი სისტემური პაკეტები დღესვე განაახლეთ. Debian-სა და Ubuntu-ზე ეს apt-ია, Docker-ის იმიჯებისთვის კი საბაზო ფენის ხელახალი აწყობა.
Node 24.22 იმიჯში ჩადეთ, შემოწმებები გაუშვით და გამოუშვით წინა ვერსიაზე დაბრუნების მზა გზით.
საკუთარი API-ის შეცვლამდე იპოვეთ ყველა, ვინც მას იძახებს, და ჩაწერეთ ვერსიის გვერდით. ძველი მეთოდი მას შემდეგ წაშალეთ, რაც სია დაცარიელდება.
ფონურ პროცესებზე, რომლებიც განახლებისას ასევე გადაიტვირთება, არის სტატია ვორკერებზე. შიდა API-ზე არის გვერდი საკუთარ API-ზე, TypeScript-ზე აწყობილ სერვისზე ქეისი „ყავა ერთად“. პატჩების დაყენების ჩემი რიგი მიმოხილვაშია Node.js-ის, Python-ისა და Next.js-ის პატჩების კვირაზე, სხვისი API-ების ვერსიები მიმოხილვაში გამორთვის თარიღებზე, რელიზის ლოკალური კონვეიერი აქ. Docker-აპლიკაციის გამოშვება ვერსიის დაბრუნებით ადრე განვიხილე. მიმართულება: ინფრასტრუქტურა, რომლის გამოშვება და აღდგენა შეიძლება. თუ განახლებები დაგიგროვდათ და არ იცით, საიდან დაიწყოთ, მომიყევით, რა დგას სერვერზე. ამოცანის განხილვა.