WASI 0.3.0 ოფიციალურად გამოვიდა. განახლება WebAssembly-ის განვითარებაში მნიშვნელოვან ეტაპს წარმოადგენს, რადგან ის კომპონენტების მოდელს ასინქრონულ პრიმიტივებზე აფუძნებს. ეს ცვლილება დეველოპერებს საშუალებას აძლევს, უფრო ერგონომიულად და ეფექტურად იმუშაონ.
WASI 0.2-ში ასინქრონული მუშაობისთვის გარკვეული სირთულეების გადალახვა იყო საჭირო, თუმცა 0.3 ვერსიაში ეს პროცესი გამარტივდა. ახალი სტანდარტი დეველოპერებს აძლევს საშუალებას, იგივე ფუნქციონალი ბევრად უფრო მარტივი სტრუქტურით განახორციელონ.
wasi:cli და ფაილური სისტემა
wasi:cli-ის სტრუქტურა ძირითადად უცვლელი დარჩა, თუმცა stdio-ს მიმართულებით მნიშვნელოვანი ცვლილებაა. თუ ადრე მონაცემთა ნაკადს იმპერატიულად წერდით, ახლა თქვენ გადასცემთ stream<u8>-ს და იღებთ future-ს, რომელიც ოპერაციის დასრულებისას ააქტიურდება.
ანალოგიური მიდგომაა ფაილურ სისტემაშიც: ნაკადური კითხვა-წერა ახლა stream-ისა და future-ის კომბინაციით მუშაობს, ხოლო დირექტორიების გადათვლა რესურსზე დაფუძნებული იტერატორის ნაცვლად, პირდაპირ ნაკადად (stream) გარდაიქმნა.
ქსელური კავშირები და სოკეტები
wasi:sockets-ში რადიკალური ცვლილებებია. ქსელური წვდომის სპეციალური რესურსი მთლიანად გაუქმდა. ნაცვლად იმისა, რომ ქსელური წვდომა თითოეულ ფუნქციაში გაგვეტარებინა, ის ახლა world imports-ის მეშვეობით ხდება.
TCP და UDP სოკეტების მართვა ბევრად უფრო გამარტივდა. ადრე არსებული შუალედური მდგომარეობები, როგორიცაა connect-in-progress, აღარ არსებობს. ყველაფერი ჩანაცვლდა მარტივი ასინქრონული ფუნქციებით, რაც კოდს უფრო სუფთას და ადვილად წასაკითხს ხდის.
wasi:http და ახალი არქიტექტურა
wasi:http-ში რესურსების რაოდენობა რვადან ორამდე შემცირდა. ეს ყველაზე თვალსაჩინო ცვლილებაა. ახლა არსებობს მხოლოდ request და response, რაც ამარტივებს მოთხოვნებისა და პასუხების მართვას.
| WASI 0.2 (wasi:io) | WASI 0.3 (Component Model) |
|---|---|
| resource pollable | future |
| resource input-stream | stream |
| resource output-stream | stream (written-to direction) |
| poll(list) | await on a future (runtime-handled) |
| subscribe() on resource | return a future from the call |
| start-foo / finish-foo | foo: async func(...) |
ასევე, დაემატა ახალი worlds middleware-ისთვის. ეს ნიშნავს, რომ კომპონენტები, რომლებიც მოთხოვნის გზაზე დგანან, პირველხარისხოვან მხარდაჭერას იღებენ. handler-ი ახლა უკვე ასინქრონული ფუნქციაა, რაც WASI 0.2-ის შეზღუდვებს აუქმებს.
სახელების სტანდარტიზაცია
wasi:clocks-ის ცვლილებები ძირითადად სახელწოდებებს ეხება. wall-clock გადაკეთდა system-clock-ად, ხოლო datetime — instant-ად. ეს ცვლილება ემსახურება სხვა ეკოსისტემებთან, მათ შორის POSIX-თან და Rust-ის სტანდარტებთან თავსებადობას.


დისკუსია
0 კომენტარი
ჯერ კომენტარი არ არის — იყავი პირველი.