Hacker News

Zig – io_uring ati Grand Central Dispatch std.Io imuṣẹ gbele

Zig – io_uring ati Grand Central Dispatch std.Io imuṣẹ gbele Iwadii yii n lọ sinu io_uring, ṣe ayẹwo iwulo rẹ ati ipa ti o pọju. Mojuto Agbekale Bo Akoonu yii ṣawari: Awọn ilana ipilẹ ati...

10 min read Via ziglang.org

Mewayz Team

Editorial Team

Hacker News

Iwe-ikawe boṣewa ti Zig ti de ibi-iṣẹlẹ pataki kan: abinibiio_uringati Grand Central Dispatch (GCD) backends fun std.Io ti de ni ifowosi, ti o mu iṣẹ ṣiṣe giga, I/O abinibi-ipilẹ-ede asynchronous I/O si ọkan ninu eto igbalode ti o ni ileri julọ. Fun awọn olupilẹṣẹ ti n kọ awọn amayederun ti o ṣe agbara awọn iru ẹrọ iṣowo ti iran-tẹle - bii ẹrọ ṣiṣe-module 207 lẹhin Mewayz - idagbasoke yii ṣe afihan akoko tuntun ti ṣiṣe ẹhin ati iwọn.

Kini io_uring ati Kilode ti O Ṣe Pataki fun Awọn ohun elo ode oni?

Ifihan ni Linux kernel 5.1,io_uringjẹ iṣẹ ṣiṣe giga ti I/O asynchronous ti o yipada ni ipilẹṣẹ bi awọn ohun elo ṣe nlo pẹlu ẹrọ ṣiṣe. Awọn awoṣe I/O ti aṣa fi agbara mu awọn eto lati ṣe awọn ipe eto kọọkan fun kika kọọkan tabi iṣẹ kikọ - awọn irin-ajo iyipo ti o gbowolori ti o dẹkun iṣẹ ṣiṣe ni iwọn. io_uring rọpo eyi pẹlu ifipamọ oruka ti o pin laarin aaye olumulo ati ekuro, gbigba awọn ohun elo laaye lati fi silẹ ati pari awọn ẹgbẹẹgbẹrun awọn iṣẹ I/O pẹlu iwọn kekere.

Ipa ilowo jẹ iyalẹnu. Awọn olupin wẹẹbu, awọn apoti isura infomesonu, ati awọn iru ẹrọ SaaS ti o mu ẹgbẹẹgbẹrun awọn asopọ nigbakanna ni anfani lẹsẹkẹsẹ lati ori Sipiyu ti o dinku ati lairi kekere. Fun Syeed ti n ṣiṣẹ awọn olumulo 138,000 ti nṣiṣe lọwọ kọja awọn modulu pato 207 - faili ti nfa kọọkan ka, awọn ibeere data data, ati awọn ibeere nẹtiwọọki - iyatọ laarin julọ I/O ati io_uring le tumọ taara si awọn ilọsiwaju akoko idahun ati idinku idiyele idiyele amayederun.

"io_uring jẹ ijiyan ni afikun pataki julọ si Linux I/O ni ọdun mẹwa kan. Nipa yiyọkuro ọrọ-iyipada-iyipada si ori ti awọn syscalls ti aṣa, o jẹ ki awọn eto aaye olumulo le sunmọ iṣelọpọ ohun elo aise - oluyipada ere fun eyikeyi ohun elo nibiti I/O jẹ igo.”

Bawo ni Grand Central Dispatch Ṣe ibamu sinu Itan Zig std.Io?

Lakoko ti io_uring jẹ Linux-pato, Apple'sGrand Central Dispatch (GCD)ti pẹ ti ṣiṣẹ bi iṣaju iṣaju akọkọ ati ilana fifiranṣẹ iṣẹ-ṣiṣe lori macOS ati iOS. GCD ṣe itọju o tẹle ara sinu awoṣe ti o da lori isinyi, ngbanilaaye ẹrọ ṣiṣe lati ṣeto iṣẹ ni aipe kọja awọn ohun kohun Sipiyu ti o wa laisi awọn olupilẹṣẹ pẹlu ọwọ ti n ṣakoso awọn adagun okun.

Nipa ibalẹ awọn ẹhin mejeeji labẹ isokan std.Io abstraction, ẹgbẹ Zig ti ṣaṣeyọri nkan ti o nira nitootọ: oju kan async I/O API kan ti o ṣajọ si abinibi, idiomatic async primitives lori mejeeji Linux ati awọn iru ẹrọ Apple. Eyi tumọ si awọn eto Zig ti a kọ lodi si std.Io laifọwọyi lo io_uring lori olupin Linux ati GCD lori awọn ẹrọ idagbasoke macOS - pẹlu ẹka-ipilẹ kan pato odo ni koodu ohun elo.

Kini Ọrọ Iṣan Lẹhin Irin-ajo I/O Async ti Zig?

Ona Zig si itan async ti o duro ṣinṣin ti jẹ aṣetunṣe ni pataki. Awọn ẹya ibẹrẹ ti ede naa pẹlu idanwo async/duro sintasi ti a yọkuro lẹyin naa bi ẹgbẹ naa ṣe atunwo apẹrẹ naa. Dipo ki o ṣe ifaramọ si awoṣe concurrency kan ti a yan sinu girama ede, ẹgbẹ mojuto Zig ti yọ kuro fun Layer abstraction I/O ni ipele ile-ikawe boṣewa — ọkan ti o wa ni aropọ pẹlu awọn ilana adaṣe oriṣiriṣi.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Imọye-ọrọ yii ṣe deede pẹlu ilana apẹrẹ ti o gbooro ti Zig: ko si ṣiṣan iṣakoso ti o farapamọ, ipin gbangba, ati awọn ilana ti o ṣajọ asọtẹlẹ. Ni wiwo std.Io duro fun ipari awọn ọdun ti ariyanjiyan agbegbe, ṣiṣe apẹẹrẹ, ati awọn esi gidi-aye. Io_uring ibalẹ ati awọn ẹhin GCD jẹ ami iyipada lati idanwo si iṣelọpọ-ṣetan fun ilolupo ilolupo async ti Zig.

Kini Awọn Itumọ Iṣeṣe fun SaaS ati Awọn amayederun Platform Iṣowo?

Fun awọn ẹgbẹ ti n kọ tabi ṣe iṣiro awọn amayederun ẹhin fun awọn iru ẹrọ SaaS agbatọju pupọ, itan-akọọlẹ Zig io_uring ni ọpọlọpọ awọn ipa pataki:

  • Awọn idiyele amayederun ti o dinku:Iṣejade I/O ti o ga julọ fun olupin tumọ si awọn ẹrọ diẹ ti o nilo lati mu ẹru deede, ni ipa taara inawo awọsanma.
  • Asọtẹlẹ isọtẹlẹ ni iwọn: awoṣe ifakalẹ io_urings batched dan awọn spikes lairi ti o wọpọ labẹ ibaramu giga, imudara iriri olumulo kọja gbogbo awọn modulu ti pẹpẹ kan.
  • Cross-platform Olùgbéejáde irinṣẹ́:Pẹlu atilẹyin GCD, awọn olupilẹṣẹ lori macOS le ṣiṣẹ ọgbọn I/O kanna ni agbegbe ti o fi ranṣẹ si awọn olupin iṣelọpọ Linux - pipade aafo pipẹ ni idanwo ifaramọ.
  • Apẹrẹ eto-imudaniloju ọjọ iwaju: Bi isọdọmọ io_uring ṣe ndagba ni awọn irinṣẹ ti o wa nitosi (awọn aaye data, awọn aṣoju, awọn akoko asiko), awọn ipo atilẹyin abinibi ti Zig dara fun kikọ pẹlu ilolupo ilolupo Linux ode oni to gbooro.
  • Ailewu iranti laisi ikojọpọ idoti: Awoṣe oniwun Zig pẹlu awọn agbara idaako-odo io_uring fun iṣakoso ifipamọ ti o yọkuro gbogbo awọn isori ti awọn idun ti o wọpọ ni koodu nẹtiwọọki ipele-ipele.

Kini Awọn Ilọsiwaju Ọjọ iwaju yẹ Awọn Difelopa Wo bi ilolupo eda Yii ṣe ndagba?

Ibalẹ ti awọn ẹhin ẹhin wọnyi jẹ ibẹrẹ, kii ṣe aaye ipari. Orisirisi awọn idagbasoke tọ ipasẹ ni pẹkipẹki. Ni akọkọ, ilolupo ilolupo Zig tun n dagba ni ayika awọn abstractions ipele ti o ga julọ - Awọn olupin HTTP, awọn awakọ data data, ati awọn ilana RPC ti a ṣe lori std.Io yoo pinnu bi ede ṣe yarayara si iṣelọpọ awọn akopọ SaaS. Keji, io_uring funrararẹ tẹsiwaju lati dagbasoke; awọn ẹya biiawọn buffers ti o wa titi,awọn iṣẹ-ṣiṣe multishot, atiidibo ẹgbẹ-kernelnfunni ni afikun yara iṣẹ ṣiṣe ti ẹhin Zig le ṣafihan ni ilọsiwaju. Ẹkẹta, bi awọn akoko asiko Apejọ Web ṣe n ṣafihan awọn atọkun WASI I/O, ipele abọsita Zig gbe e si lati dojukọ agbegbe naa daradara, ti o mu ki koodu awọn ọna ṣiṣe kọ-lẹẹkan-ṣiṣe-nibikibi nitootọ.

Fun awọn iru ẹrọ ti n ṣe pataki ṣiṣe ṣiṣe ṣiṣe - bii Mewayz, eyiti o rọ gbogbo ẹrọ ṣiṣe iṣowo sinu ṣiṣe alabapin $19–$49 fun oṣu kan — awọn ilọsiwaju ipele-ipele amayederun wọnyi. Gbogbo ere ṣiṣe ni ipele eto tumọ si yara ori fun awọn ẹya diẹ sii, awọn olumulo diẹ sii, ati awọn ala to dara julọ.

Awọn ibeere Nigbagbogbo

Ṣe io_uring jẹ ailewu lati lo ni awọn agbegbe iṣelọpọ loni?

Bẹẹni. io_uring ti wa lati Linux kernel 5.1 (2019) ati pe o jẹ iduro fun lilo iṣelọpọ. Awọn iṣẹ akanṣe pẹlu Redis, RocksDB, ati ọpọlọpọ awọn olupin nẹtiwọọki iṣẹ giga ti gba. Imuse Zig tẹle awọn atọkun ekuro kanna ati pe o yẹ fun awọn iṣẹ iṣelọpọ lori awọn pinpin Linux ode oni ti n ṣiṣẹ ekuro 5.6 tabi nigbamii fun atilẹyin ẹya ni kikun.

Ṣe Mo nilo lati tun kọ koodu Zig to wa tẹlẹ lati lo awọn atilẹyin std.Io tuntun?

Ko si awọn atunko pataki ko nilo. Ni wiwo std.Io jẹ apẹrẹ bi Layer abstraction iduroṣinṣin — koodu ohun elo ti a kọ si i yoo ni anfani laifọwọyi lati io_uring tabi ẹhin GCD ti o da lori ibi-afẹde akopọ. Igbiyanju iṣiwa akọkọ jẹ mimudojuiwọn si ẹya irinṣẹ irinṣẹ Zig lọwọlọwọ ti o pẹlu awọn ẹhin ẹhin wọnyi ati ṣiṣatunṣe koodu eyikeyi ti o ti lo tẹlẹ-ipilẹ-pato I/O syscalls taara.

Bawo ni eyi ṣe afiwe si async I/O ni Rust's Tokio tabi Go's asiko isise?

Tokio lori Lainos tun nlo io_uring nipasẹ apoti tokio-uring, botilẹjẹpe o wa lọtọ si akoko asiko Tokio aiyipada eyiti o nlo epoll. Akoko asiko Go nlo oluṣeto tirẹ pẹlu I/O ti o da lori epoll. Ọna Zig yato si ni pe std.Io jẹ rilara amuṣiṣẹpọ ni ipele API - ko si async/duro syntax - lakoko ti o tun nfiranṣẹ si awọn ipilẹṣẹ async abinibi labẹ hood. Eyi ṣe itọju kika ati yago fun iṣoro “iṣẹ awọ” ti o diju async Rust codebases.


Boya o jẹ olupilẹṣẹ ti n ṣe igbelewọn awọn ede siseto eto fun iṣẹ amayederun atẹle rẹ tabi oniwun iṣowo ti n wa awọn iru ẹrọ ti a ṣe lori daradara, imọ-ẹrọ iwọn, itọpa awọn irinṣẹ bii Zig ṣe afihan iṣipopada gbooro si iṣẹ ṣiṣe-apẹrẹ sọfitiwia akọkọ. Mewayzti wa ni itumọ ti lori ipilẹ kanna yii - jiṣẹ awọn modulu iṣowo iṣọpọ 207 si awọn olumulo 138,000 ni ida kan ti idiyele ti apejọ awọn irinṣẹ deede ni ọkọọkan. Lati CRM ati atupale si ọna asopọ-in-bio ati ifijiṣẹ dajudaju, gbogbo OS iṣowo wa ti o bẹrẹ ni $ 19 / oṣu kan. Bẹrẹ idanwo ọfẹ rẹ ni app.mewayz.com ki o si ni iriri ohun ti igbalode, apẹrẹ Syeed ti o munadoko ṣe dabi ni iṣe.