Sealladh farsaing air emulators terminal

Beagan fhaclan bhon bhiùro eadar-theangachaidh againn: mar as trice bidh a h-uile duine a’ feuchainn ri na stuthan agus na foillseachaidhean as ùire eadar-theangachadh, agus chan eil sinn idir idir. Ach chan e cinn-uidhe rudeigin a thèid ùrachadh uair san t-seachdain. Mar sin, tha sinn air eadar-theangachadh dhut artaigil le Antoine Beaupré, a chaidh fhoillseachadh as t-earrach 2018: a dh’ aindeoin a “aois” mòr a rèir inbhean an latha an-diugh, nar beachd, chan eil an stuth air a bhuntanas a chall idir. A bharrachd air an sin, b’ e sreath de dhà artaigil a bha seo bho thùs, ach chuir sinn romhainn an cur còmhla ann an aon phost mòr.

Sealladh farsaing air emulators terminal

Tha àite sònraichte aig crìochan ann an eachdraidh coimpiutaireachd, ach anns na deicheadan mu dheireadh chaidh an toirt orra a bhith beò ri taobh na loidhne-àithne mar a dh'fhàsas eadar-aghaidh grafaigeach uile-làthaireach. Emulators terminal an àite an fheadhainn aca fhèin bràithrean bathar-cruaidh, a bha, an uair sin, mar atharrachadh air siostaman stèidhichte air cairtean punched agus suidsichean tog. Bidh sgaoilidhean ùr-nodha a’ tighinn le measgachadh de emuladairean crìochnachaidh de gach cumadh agus dath. Agus ged a tha mòran riaraichte leis a’ chrìoch àbhaisteach a tha an àrainneachd obrach a’ toirt seachad, bidh cuid gu pròiseil a’ cleachdadh bathar-bog fìor exotic gus an deasaiche slige no teacsa as fheàrr leotha a ruith. Ach, mar a chì sinn bhon artaigil seo, cha deach a h-uile ceann-uidhe a chruthachadh san aon ìomhaigh: tha iad gu math eadar-dhealaichte ann an comas-gnìomh, meud agus coileanadh.

Tha tuill tèarainteachd iongantach aig cuid de chrìochan, agus tha seata ghnìomhan gu tur eadar-dhealaichte aig a’ mhòr-chuid, bho thaic airson eadar-aghaidh tabbed gu sgrìobhadh. Ged a tha sinn thoir sùil air emulators terminal san àm a dh’ fhalbh, tha an artaigil seo na ùrachadh air an stuth a bh’ ann roimhe a chuidicheas luchd-leughaidh gus faighinn a-mach dè an ceann-uidhe a chleachdas iad ann an 2018. Bidh a 'chiad leth den artaigil a' dèanamh coimeas eadar feartan, agus tha an dàrna leth a 'measadh coileanadh.

Seo na cinn-uidhe a rinn mi ath-sgrùdadh:

Sealladh farsaing air emulators terminal

Is dòcha nach e seo na dreachan as ùire, leis gu robh mi cuingealaichte ri togalaichean seasmhach aig àm sgrìobhaidh, a bha e comasach dhomh a sgaoileadh air Debian 9 no Fedora 27. Is e an aon eisgeachd Alacritty. Tha e de shliochd cinn-uidhe luathaichte GPU agus tha e sgrìobhte ann an cànan neo-àbhaisteach agus ùr airson na h-obrach seo - Rust. Chuir mi a-mach cinn-uidhe lìn bhon lèirmheas agam (a’ gabhail a-steach an fheadhainn air Electron), oir sheall deuchainnean tòiseachaidh an coileanadh fìor dhroch.

Taic Unicode

Thòisich mi na deuchainnean agam le taic Unicode. B’ e a’ chiad deuchainn air na cinn-uidhe an sreang Unicode a thaisbeanadh bho Artaigilean Wikipedia: “é, Δ, И, ק, م, ๗, あ, 叶, 葉 and 말.” Tha an deuchainn shìmplidh seo a’ sealltainn an urrainn don cheann-uidhe obrachadh ceart air feadh an t-saoghail. chan eil ceann-uidhe xterm a’ taisbeanadh caractar Arabach cuimhne ann an rèiteachadh bunaiteach:

Sealladh farsaing air emulators terminal

Gu gnàthach, bidh xterm a’ cleachdadh a’ chruth-clò clasaigeach “stèidhichte”, a tha, a rèir fhathast an aon Vicky, aig a bheil "còmhdach susbainteach Unicode bho 1997". Tha rudeigin a’ dol air adhart sa chruth-clò seo a bheir air a’ charactar nochdadh mar fhrèam bàn agus is ann dìreach nuair a thèid cruth-clò an teacsa àrdachadh gu 20+ puing a thòisicheas an caractar mu dheireadh a’ nochdadh gu ceart. Ach, tha an “rèiteachadh” seo a’ briseadh taisbeanadh charactaran Unicode eile:

Sealladh farsaing air emulators terminal

Chaidh na dealbhan-sgrìn seo a thogail ann am Fedora 27, oir thug e toraidhean nas fheàrr na Debian 9, far nach b’ urrainn do chuid de dhreachan nas sine de chrìochan (gu sònraichte mlterm) clòidean a làimhseachadh gu ceart. Gu fortanach chaidh seo a shuidheachadh ann an dreachan nas fhaide air adhart.

A-nis mothaich mar a tha an loidhne air a thaisbeanadh ann an xterm. Tha e a 'tionndadh a-mach gu bheil an samhla Mem agus Semitic a leanas cubh thoir iomradh air sgriobtaichean stoidhle RTL (deas gu clì), mar sin gu teicnigeach bu chòir dhaibh a bhith air an taisbeanadh bho dheas gu clì. Bidh brobhsairean lìn leithid Firefox 57 a’ làimhseachadh na loidhne gu h-àrd gu ceart. Is e tionndadh nas sìmplidh de theacsa RTL am facal "Сара" ann an Eabhruidheach (Sarah). Duilleag Wiki air teacsaichean dà-thaobhach ag ràdh na leanas:

“Chan urrainn dha mòran de phrògraman coimpiutair teacsa dà-thaobhach a thaisbeanadh gu ceart. Mar eisimpleir, tha an t-ainm Eabhra "Sarah" air a dhèanamh suas de na caractaran sin (ש) (a tha a 'nochdadh air an làimh dheis), an uairsin resh (ר) agus mu dheireadh e (ה) (a bu chòir nochdadh air an taobh chlì).

Bidh mòran ionadan-uidhe a’ fàiligeadh na deuchainn seo: Alacritty, cinn-uidhe Gnome agus XFCE a thàinig bho VTE, urxvt, st agus xterm a’ taisbeanadh “Sara” ann an òrdugh cùil, mar gum biodh sinn air an t-ainm a sgrìobhadh mar “Aras”.

Sealladh farsaing air emulators terminal

Is e duilgheadas eile le teacsaichean dà-thaobhach gum feum iad a bhith air an co-thaobhadh dòigh air choireigin, gu sònraichte nuair a thig e gu bhith a’ measgachadh theacsaichean RTL agus LTR. Bu chòir do sgriobtaichean RTL ruith bho thaobh deas na h-uinneige crìche, ach dè a bu chòir tachairt dha cinn-uidhe a tha gu bunaiteach airson Beurla LTR? Chan eil uidheamachdan sònraichte aig a’ mhòr-chuid dhiubh agus tha iad a’ co-thaobhadh a h-uile teacsa air an taobh chlì (a’ gabhail a-steach Konsole). Is e na h-eisgeadan pterm agus mlterm, a tha a’ cumail ris na h-inbhean agus a’ co-thaobhadh nan loidhnichean sin gu ceart.

Sealladh farsaing air emulators terminal

Dìon cuir a-steach

Is e an ath fheart riatanach a chomharraich mi dìon an-aghaidh cuir a-steach. Ged a tha fios gu farsaing gu bheil geasan mar:

$ curl http://example.com/ | sh

nan òrdughan putaidh cur an gnìomh còd, is e glè bheag de dhaoine a tha fios gum faod òrdughan falaichte a dhol a-steach don chonsail nuair a bhios iad a’ dèanamh lethbhreac agus pasgadh bho bhrobhsair lìn, eadhon às deidh sgrùdadh faiceallach. Làrach dearbhaidh Gianna Horna gu sgoinneil a’ sealltainn cho neo-chiontach a tha an àithne:

git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git

a’ tionndadh gu bhith na leithid de bhuaireadh nuair a thèid a chuir bho làrach-lìn Horn a-steach don phort-adhair:

git clone /dev/null;
    clear;
	echo -n "Hello ";
	whoami|tr -d 'n';
	echo -e '!nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust! 
	Here'"'"'s the first line of your /etc/passwd: ';
	head -n1 /etc/passwd
	git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

Ciamar a tha e ag obair? Tha còd droch-rùnach air a thoirt a-steach don bhloc , a thèid a ghluasad a-mach à sealladh an neach-cleachdaidh a’ cleachdadh CSS.

Modh pasgadh bracketed air a dhealbhadh gu soilleir gus ionnsaighean mar sin a neodachadh. Anns a’ mhodh seo, bidh cinn-uidhe a’ cuairteachadh an teacsa pasted ann am paidhir de shreathan teicheadh ​​​​sònraichte gus innse don t-slige mu thùs an teacsa. Tha seo ag innse don t-slige gun urrainn dha caractaran sònraichte a leigeil seachad a dh’ fhaodadh a bhith san teacsa pasted. Bidh a h-uile inneal-crìochnachaidh air ais chun an xterm venerable a’ toirt taic don fheart seo, ach airson a dhol seachad ann am modh Bracketed feumaidh taic bhon t-slige no an aplacaid a tha a’ ruith air a’ cheann-uidhe. Mar eisimpleir, cleachdadh bathar-bog Leughadh GNU (an aon Bash), feumach air faidhle ~/.inputrc:

set enable-bracketed-paste on

Gu mì-fhortanach, tha làrach-deuchainn Horn cuideachd a’ sealltainn mar as urrainn dhut an dìon seo a sheachnadh tro chruth an teacsa fhèin agus ro-luath a’ cur a-steach modh Bracketed ris. Bidh seo ag obair leis nach eil cuid de chrìochan a’ sìoladh sreathan teicheadh ​​​​gu ceart mus cuir iad an cuid fhèin ris. Mar eisimpleir, nam broinn cha b’ urrainn dhomh a-riamh na deuchainnean Konsole a chrìochnachadh gu soirbheachail eadhon leis an rèiteachadh ceart .inputrc faidhle. Tha seo a’ ciallachadh gun urrainn dhut rèiteachadh an t-siostaim agad a thruailleadh gu furasta ri linn tagradh gun taic no slige nach eil air a rèiteachadh gu ceart. Tha seo gu sònraichte cunnartach nuair a bhios tu a’ logadh a-steach gu frithealaichean iomallach, far nach eil obair rèiteachaidh faiceallach cho cumanta, gu sònraichte ma tha tòrr innealan iomallach mar sin agad.

Is e fuasgladh math air an duilgheadas seo am plugan dearbhaidh paste airson a’ chrìoch urxvt, a tha dìreach ag iarraidh cead teacsa sam bith anns a bheil loidhnichean ùra a chuir a-steach. Chan eil mi air roghainn nas tèarainte a lorg airson an ionnsaigh teacsa a mhìnich Horn.

Tabaichean agus pròifilean

Is e feart mòr-chòrdte an-dràsta taic airson eadar-aghaidh tabbed, a mhìnicheas sinn mar aon uinneag crìche anns a bheil grunn ionadan-uidhe eile. Tha an gnìomh seo eadar-dhealaichte airson diofar chrìochan, agus ged nach eil cinn-uidhe xterm traidiseanta a’ toirt taic do thabaichean idir, tha an gnìomh seo aig incarnations terminal nas ùire leithid Xfce Terminal, GNOME Terminal agus Konsole. Bidh Urxvt cuideachd a’ toirt taic do thabaichean, ach dìreach ma chleachdas tu plugan. Ach a thaobh taic tabaichean fhèin, is e Terminator an stiùiriche gun teagamh: chan e a-mhàin gu bheil e a’ toirt taic dha tabaichean, ach faodaidh e cuideachd cinn-uidhe a chuir air dòigh ann an òrdugh sam bith (faic an dealbh gu h-ìosal).

Sealladh farsaing air emulators terminal

Is e feart eile de Terminator an comas na tabaichean sin “buidheann” còmhla agus na h-aon phrìomh bhuillean a chuir gu ioma-cheann-uidhe aig an aon àm, a’ toirt seachad inneal amh airson a bhith a’ coileanadh mòr-obraichean air ioma-fhrithealaiche aig an aon àm. Tha feart coltach ris cuideachd ga chur an gnìomh ann an Konsole. Gus am feart seo a chleachdadh ann an cinn-uidhe eile, feumaidh tu bathar-bog treas-phàrtaidh a chleachdadh leithid SSH brabhsair, xlax no tmux.

Bidh tabaichean ag obair gu sònraichte math nuair a thèid an càradh le pròifilean: mar eisimpleir, faodaidh aon taba a bhith agad airson post-d, taba eile airson cabadaich, agus mar sin air adhart. Tha seo a’ faighinn deagh thaic bho Konsole Terminal agus GNOME Terminal. Leigidh an dà chuid le gach taba a phròifil fhèin a chuir air bhog gu fèin-ghluasadach. Bidh Terminator cuideachd a’ toirt taic do phròifilean, ach cha b’ urrainn dhomh dòigh a lorg gus prògraman sònraichte a chuir air bhog gu fèin-ghluasadach nuair a dh’ fhosglas tu taba sònraichte. Chan eil bun-bheachd “pròifil” aig cinn-uidhe eile idir.

Ruffles

Is e an rud mu dheireadh a bhios mi a’ còmhdach sa chiad phàirt den artaigil seo coltas nan cinn-uidhe. Mar eisimpleir tha GNOME, Xfce agus urxvt a’ toirt taic do fhollaiseachd, ach tha iad air taic airson ìomhaighean cùil a leigeil sìos o chionn ghoirid, a’ toirt air cuid de luchd-cleachdaidh gluasad chun cheann-uidhe Tilix. Gu pearsanta, tha mi toilichte leis agus tha e sìmplidh x ghoireasan, a tha a’ suidheachadh an t-seata bhunaiteach de dhathan cùl-raoin airson urxvt. Ach, faodaidh cuspairean dath neo-àbhaisteach duilgheadasan adhbhrachadh cuideachd. Mar eisimpleir, Solarichte chan eil e ag obair le tagraidhean htop и IPTraf, leis gu bheil iad mu thràth a’ cleachdadh na dathan aca fhèin.

Terminal tùsail VT100 cha do chuir iad taic ri dathan, agus gu tric bha feadhainn ùra air an cuingealachadh ri paileas 256-dath. Dha luchd-cleachdaidh adhartach a bhios a’ stoidhle na cinn-uidhe aca, faodaidh molaidhean slige no bàraichean inbhe ann an dòighean iom-fhillte a bhith na chuingealachadh neònach. Gist slighean aig a bheil taic “True Colour” aig cinn-uidhe. Tha na deuchainnean agam a’ dearbhadh gu bheil cinn-uidhe stèidhichte air st, Alacritty agus VTE a’ toirt taic foirfe dha True Colour. Chan eil cinn-uidhe eile a’ soirbheachadh gu math a thaobh seo agus, gu dearbh, chan eil iad eadhon a’ taisbeanadh 256 dathan. Gu h-ìosal chì thu an eadar-dhealachadh eadar taic True Colour ann an cinn-uidhe GNOME, st agus xterm, a bhios a’ dèanamh obair mhath le seo leis a’ phaileid dhathan 256 aca, agus urxvt, a tha chan ann a-mhàin a’ fàiligeadh na deuchainn, ach eadhon a’ sealltainn cuid de charactaran frasach nan àite.

Sealladh farsaing air emulators terminal

Bidh cuid de chrìochan cuideachd a’ sgrùdadh teacsa airson pàtrain URL gus ceanglaichean a dhèanamh comasach cliogadh. Tha seo a’ buntainn ris a h-uile inneal-crìochnachaidh a thig bho VTE, fhad ‘s a tha urxvt a’ feumachdainn plugan sònraichte a dh ’atharraicheas URLan le cliog no a’ cleachdadh ath-ghoirid meur-chlàr. Crìochan eile a rinn mi deuchainn air URLan taisbeanaidh ann an dòighean eile.

Mu dheireadh, is e gluasad ùr ann an cinn-uidhe roghainn a ’bhufair scrollaidh. Mar eisimpleir, chan eil bufair scrollaidh aig st; thathas a’ gabhail ris gun cleachd an neach-cleachdaidh ioma-fhillteadair crìochnachaidh mar tmux agus GNU Screen.

Tha dìth bufairean backscroll aig Alacritty cuideachd, ach thèid a chur ris a dh’ aithghearr a thaic mar thoradh air “fios air ais farsaing” air a’ chuspair seo bho luchd-cleachdaidh. A bharrachd air na h-àrdachaidhean sin, tha a h-uile inneal-crìochnachaidh a rinn mi deuchainn a lorg mi a’ toirt taic do scrollaidh cùil.

Subtotals

Anns an dàrna pàirt den stuth (anns an dreach thùsail bha dà artaigil eadar-dhealaichte ann - timcheall air. lain) nì sinn coimeas eadar coileanadh, cleachdadh cuimhne agus latency. Ach chì sinn mar-thà gu bheil fìor easbhaidhean aig cuid de na cinn-uidhe sin. Mar eisimpleir, is dòcha gum bi luchd-cleachdaidh a bhios ag obair gu cunbhalach le sgriobtaichean RTL airson beachdachadh air mlterm agus pterm, leis gu bheil iad nas fheàrr air gnìomhan coltach ris a làimhseachadh na feadhainn eile. Rinn Konsole gu math cuideachd. Faodaidh luchd-cleachdaidh nach eil ag obair le sgriobtaichean RTL rudeigin eile a thaghadh.

A thaobh dìon an aghaidh cuir a-steach còd droch-rùnach, tha urxvt a ’seasamh a-mach air sgàth a bhuileachadh sònraichte de dhìon an aghaidh an seòrsa ionnsaigh seo, a tha gu cinnteach a’ coimhead iomchaidh dhomh. Dhaibhsan a tha a’ coimhead airson glagan is fìdeagan, is fhiach sùil a thoirt air Konsole. Mu dheireadh, is fhiach a bhith mothachail gu bheil VTE na dheagh bhunait airson cinn-uidhe, a tha a ’gealltainn taic dath, aithneachadh URL, agus mar sin air adhart. Aig a’ chiad sealladh, is dòcha gum bi an inneal-crìochnachaidh bunaiteach a thig leis an àrainneachd as fheàrr leat a ’coinneachadh ris na riatanasan gu lèir, ach fàgaidh sinn a’ cheist seo fosgailte gus an tuig sinn an coileanadh.

Leanaidh sinn leis a’ chòmhradh


San fharsaingeachd, is dòcha gu bheil coileanadh cinn-uidhe ann fhèin a’ coimhead mar dhuilgheadas fada, ach mar a thionndaidh e, tha cuid dhiubh a’ nochdadh latency iongantach àrd airson bathar-bog de sheòrsa cho bunaiteach. Cuideachd an ath rud seallaidh sinn ris an rud ris an canar gu traidiseanta “astar” (gu dearbh, is e seo an astar scrollaidh) agus caitheamh cuimhne an inneal-crìochnachaidh (leis an rabhadh nach eil seo cho èiginneach an-diugh ’s a bha e o chionn deicheadan).

Dàil

Às deidh sgrùdadh mionaideach air coileanadh crìochnachaidh, thàinig mi chun cho-dhùnadh gur e am paramadair as cudromaiche a thaobh seo an latency (ping). Anns an artaigil aige “Bidh sinn a’ clò-bhualadh le toileachas” Choimhead Pavel Fatin air cho fada ‘s a bha diofar luchd-deasachaidh teacsa agus thuirt e gum faodadh cinn-uidhe a thaobh seo a bhith nas slaodaiche na an luchd-deasachaidh teacsa as luaithe. B’ e am beachd seo a thug orm mu dheireadh na deuchainnean agam fhèin a ruith agus an artaigil seo a sgrìobhadh.

Ach dè a th’ ann an latency, agus carson a tha e cho cudromach? Anns an artaigil aige, mhìnich Fatin e mar “an dàil eadar putadh air iuchair agus an ùrachadh sgrion co-fhreagarrach” agus thuirt e "Stiùireadh air eadar-obrachadh daonna-coimpiutair", a tha ag ràdh: “Tha buaidh chudromach aig an dàil ann am fios air ais lèirsinneach air taisbeanadh coimpiutair air giùlan agus sàsachd clò-bhualadairean.”

Tha Fatin a’ mìneachadh gu bheil builean nas doimhne aig a’ phing seo na dìreach sàsachadh: “bidh taidhpeadh a’ fàs nas slaodaiche, bidh barrachd mhearachdan a’ tachairt, agus bidh teannachadh sùla is fèithe ag àrdachadh.” Ann am faclan eile, faodaidh dàil mhòr leantainn gu typos agus cuideachd càileachd còd nas ìsle, leis gu bheil e a ’leantainn gu uallach inntinneil a bharrachd air an eanchainn. Ach is e an rud a tha nas miosa gu bheil ping “a’ meudachadh cuideam sùla is fèithe, ”a tha coltach ri bhith a’ ciallachadh leasachadh leòn dreuchdail san àm ri teachd (A rèir coltais, tha an t-ùghdar a 'ciallachadh duilgheadasan le fèithean nan sùilean, cùl, gàirdeanan agus, gu dearbh, lèirsinn - timcheall air. lain) mar thoradh air cuideam ath-aithris.

Tha cuid de na buaidhean sin air a bhith aithnichte airson ùine mhòr, agus na toraidhean rannsachadh, a chaidh fhoillseachadh air ais ann an 1976 anns an iris Ergonomics, ag ràdh gu bheil dàil de 100 milliseconds “gu mòr a’ cur bacadh air astar clò-sgrìobhaidh. ” O chionn ghoirid, thug Iùl Cleachdaiche GNOME a-steach ùine freagairt iomchaidh ann an 10 milliseconds, agus ma thèid thu nas fhaide, an uairsin Rannsachadh Microsoft sealltainn gu bheil 1 millisecond air leth freagarrach.

Rinn Fatin na deuchainnean aige air luchd-deasachaidh teacsa; chruthaich e inneal so-ghiùlain ris an canar Typometer, a chleachd mi airson ping a dhearbhadh ann an emuladairean deireannach. Cumaibh cuimhne gun deach an deuchainn a dhèanamh ann am modh atharrais: ann an da-rìribh, feumaidh sinn aire a thoirt don dà chuid cuir a-steach (meur-chlàr, rianadair USB, msaa) agus toradh (bufair cairt bhidio, monitor) latency. A rèir Fatin, ann an rèiteachaidhean àbhaisteach tha e timcheall air 20 ms. Ma tha uidheamachd gèam agad, faodaidh tu am figear seo a choileanadh ann an dìreach 3 milliseconds. Leis gu bheil bathar-cruaidh cho luath againn mu thràth, chan fheum an aplacaid a latency fhèin a chuir ris. Is e amas Fatin latency an tagraidh a thoirt gu 1 millisecond, no eadhon dial a choileanadh às aonais dàil a ghabhas tomhas, ciamar a-steach IntelliJ IDEA 15.

Seo toraidhean mo thomhasan, a bharrachd air cuid de thoraidhean Fatin, gus sealltainn gu bheil an deuchainn agam ag aontachadh leis na deuchainnean aige:

Sealladh farsaing air emulators terminal

B’ e a’ chiad rud a bhuail mi an ùine freagairt nas fheàrr airson seann phrògraman leithid xterm agus mlterm. Leis an latency clàr as miosa (2,4 ms), rinn iad nas fheàrr na an inneal ùr-nodha as luaithe (10,6 ms airson st). Chan eil ceann-uidhe ùr-nodha sam bith a’ tuiteam fon ìre 10 millisecond. Gu sònraichte, chan eil Alacritty a ’coinneachadh ris an tagradh“ emuladair crìochnachaidh as luaithe a tha ri fhaighinn ”, ged a tha na sgòran aige air a dhol am feabhas bhon chiad sgrùdadh aige ann an 2017. Gu dearbh, ùghdaran a 'phròiseict mothachail air an t-suidheachadh agus tha iad ag obair gus an taisbeanadh a leasachadh. Bu chòir a thoirt fa-near cuideachd gu bheil Vim a’ cleachdadh GTK3 na òrdugh meudachd nas slaodaiche na a bhuidheann GTK2. Bhon seo faodaidh sinn a cho-dhùnadh gu bheil GTK3 a’ cruthachadh latency a bharrachd, agus tha seo ri fhaicinn anns a h-uile inneal-crìochnachaidh eile a bhios ga chleachdadh (Terminator, Xfce4 Terminal agus GNOME Terminal).

Ach, is dòcha nach bi na h-eadar-dhealachaidhean follaiseach don t-sùil. Mar a tha Fatin a’ mìneachadh, “cha leig thu leas a bhith mothachail air an dàil gus am bi buaidh aige ort.” Tha Fatin cuideachd a’ toirt rabhadh mu chlaonadh àbhaisteach: “Bidh buaireadh sam bith ann an latency (jitter) a’ cruthachadh cuideam a bharrachd air sgàth cho neo-fhaicsinneach ‘s a tha iad."

Sealladh farsaing air emulators terminal

Tha an graf gu h-àrd air a thoirt air Debian 9 fìor (sìneadh) le i3 manaidsear uinneagan. Bheir an àrainneachd seo na toraidhean as fheàrr ann an deuchainnean latency. Mar a thionndaidh e, cruthaichidh GNOME ping 20 ms a bharrachd airson a h-uile tomhas. Is e mìneachadh a dh’ fhaodadh a bhith ann airson seo gu bheil prògraman ann le giullachd sioncronaich de thachartasan cuir a-steach. Tha Fatin a 'toirt seachad eisimpleir airson a leithid de chùis Obair, a chuireas dàil le bhith a’ giullachd a h-uile tachartas cuir a-steach gu sioncronach. Gu gnàthach, thig GNOME le manaidsear uinneig cuideachd Mutter, a chruthaicheas sreath a bharrachd de buffering, a bheir buaidh air ping agus a chuireas ris co-dhiù 8 milliseconds de latency.

Sealladh farsaing air emulators terminal

Astar scrollaidh

Is e an ath dheuchainn deuchainn traidiseanta “astar” no “leud-bann”, a bhios a’ tomhas cho luath sa dh’ fhaodas an inneal-crìochnachaidh duilleag a sgrùdadh fhad ‘s a tha e a’ taisbeanadh tòrr teacsa air an sgrion. Tha meacanaig an deuchainn eadar-dhealaichte; b’ e an deuchainn tùsail dìreach an aon sreang teacsa a ghineadh a’ cleachdadh an àithne seq. Am measg nan deuchainnean eile tha deuchainn Thomas E. Dickey (neach-gleidhidh xterm), a bhios a-rithist a-rithist tha am faidhle terminfo.src air a luchdachadh sìos. Ann an lèirmheas eile air coileanadh terminal Den Luu a’ cleachdadh sreath de bytes air thuaiream le còd base32, a thèid a-mach chun cheann-uidhe a’ cleachdadh cat. Tha Luu den bheachd gu bheil an leithid de dheuchainn mar “slat-tomhais cho neo-fheumail’ s as urrainn dhut smaoineachadh" agus tha e a ’moladh a bhith a’ cleachdadh freagairt deireannach mar phrìomh mheatrach na àite. Tha Dickey cuideachd ag ràdh gu bheil an deuchainn aige meallta. Ach, tha an dà ùghdar ag aideachadh gum faod leud-bann uinneag crìochnachaidh a bhith na chùis. Lorg Luu a-mach gun robh Emacs Eshell a’ reothadh nuair a bha e a’ taisbeanadh fhaidhlichean mòra, agus rinn Dickey an inneal-crìochnachaidh as fheàrr gus faighinn cuidhteas leisg lèirsinneach xtrerm. Mar sin tha beagan airidheachd ann don deuchainn seo, ach leis gu bheil am pròiseas tairgse gu math eadar-dhealaichte bho cheann-uidhe gu ceann-uidhe, faodar a chleachdadh cuideachd mar phàirt deuchainn gus paramadairean eile a dhearbhadh.

Sealladh farsaing air emulators terminal

An seo chì sinn an rxvt agus st a’ tarraing air thoiseach air a’ cho-fharpais, agus an uairsin Alacritty a tha fada nas ùire, a tha air a dhealbhadh le fòcas air coileanadh. An ath rud tha Xfce (teaghlach VTE) agus Konsole, a tha faisg air dà uair cho luath. Tha xterm mu dheireadh, a tha còig tursan nas slaodaiche na rxvt. Rè an deuchainn, bha xterm cuideachd a’ reubadh mòran, a’ fàgail teacsa a’ dol seachad duilich fhaicinn ged a b’ e an aon loidhne a bh’ ann. Bha Konsole luath, ach bha e duilich aig amannan: bhiodh an taisbeanadh a’ reothadh bho àm gu àm, a’ sealltainn teacsa pàirteach no gun a bhith ga shealltainn idir. Bha cinn-uidhe eile a’ taisbeanadh teudan gu soilleir, nam measg st, Alacritty, agus rxvt.

Tha Dickey a’ mìneachadh gu bheil na h-eadar-dhealachaidhean dèanadais mar thoradh air dealbhadh bufairean scrollaidh ann an diofar chrìochan. Gu sònraichte, tha e a’ casaid rxvt agus cinn-uidhe eile “gun a bhith a’ leantainn nan riaghailtean coitcheann”:

“Eu-coltach ri xterm, cha do dh’ fheuch rxvt ris a h-uile ùrachadh a thaisbeanadh. Ma thuiteas e air dheireadh, diùlt e cuid de dh’ ùrachaidhean airson a dhol suas. Bha buaidh nas motha aig seo air astar scrollaidh a rèir coltais na air eagrachadh cuimhne a-staigh. B’ e aon eas-bhuannachd gun robh beòthalachd ASCII rudeigin neo-chinnteach."

Gus an duilgheadas xterm seo fhaicinn a cheartachadh, tha Dickey a’ moladh an goireas a chleachdadh luathScroll, a’ leigeil le xterm cuid de dh’ ùrachaidhean sgrion a chuir air falbh gus cumail suas ris an t-sruth. Tha na deuchainnean agam a’ dearbhadh gu bheil fastScroll a’ leasachadh coileanadh agus a’ toirt xterm co-ionann ri rxvt. Is e rud caran garbh a tha seo, ge-tà, mar a tha Dickey fhèin a’ mìneachadh: “uaireannan tha e coltach gu bheil xterm - mar konsole - a’ stad fhad ‘s a tha e a’ feitheamh ri seata ùr de dh’ ùrachaidhean sgrion às deidh cuid a bhith air an toirt air falbh. ” San dòigh seo, tha e coltach gu bheil cinn-uidhe eile air an co-rèiteachadh as fheàrr a lorg eadar astar agus ionracas taisbeanaidh.

Caitheamh stòrais

Ge bith a bheil e ciallach beachdachadh air astar scrollaidh mar mheatrach dèanadais, leigidh an deuchainn seo leinn an luchd air na cinn-uidhe a shamhlachadh, a leigeas leinn an uair sin paramadairean eile leithid cuimhne no cleachdadh diosc a thomhas. Chaidh na meatrach fhaighinn le bhith a’ ruith an deuchainn ainmichte seq fo sgrùdadh pròiseas Python. Chruinnich e dàta meatair faighrusage() airson ru_maxrss, suim ru_oublock и ru_in bacadh agus timer sìmplidh.

Sealladh farsaing air emulators terminal

Anns an deuchainn seo, bidh an ST a ’gabhail àite an toiseach leis a’ chaitheamh cuimhne cuibheasach as ìsle de 8 MB, rud nach eil na iongnadh leis gur e sìmplidheachd am prìomh bheachd air an dealbhadh. bidh mlterm, xterm agus rxvt ag ithe beagan a bharrachd - timcheall air 12 MB. Is e toradh sònraichte eile Alacritty, a dh’ fheumas 30 MB a ruith. An uairsin tha cinn-uidhe an teaghlaich VTE le figearan bho 40 gu 60 MB, a tha gu math tòrr. Faodar an caitheamh seo a mhìneachadh leis gu bheil na cinn-uidhe sin a’ cleachdadh leabharlannan aig ìre nas àirde, mar eisimpleir, GTK. Tha Konsole a’ tighinn a-steach mu dheireadh le whopping 65MB de chaitheamh cuimhne rè dheuchainnean, ged a dh’ fhaodar seo a dhearbhadh leis an raon fharsaing de fheartan aige.

An coimeas ri toraidhean roimhe a fhuaireadh o chionn deich bliadhna, thòisich a h-uile prògram air barrachd cuimhne ithe. B’ àbhaist do Xterm 4 MB a dhìth, ach a-nis feumaidh e 15 MB dìreach aig toiseach tòiseachaidh. Tha àrdachadh coltach ris ann an caitheamh airson rxvt, a tha a-nis a’ feumachdainn 16 MB a-mach às a’ bhogsa. Bheir Xfce Terminal suas 34 MB, a tha trì tursan nas motha na bha e roimhe, ach chan fheum Terminal GNOME ach 20 MB. Gu dearbh, chaidh a h-uile deuchainn roimhe a dhèanamh air ailtireachd 32-bit. Aig LCA 2012 Rusty Russell dh ’innis, gu bheil mòran adhbharan nas seòlta ann a dh’ fhaodadh an àrdachadh ann an caitheamh cuimhne a mhìneachadh. A dh’ aindeoin sin, tha sinn a-nis beò ann an àm far a bheil gigabytes de chuimhne againn, agus mar sin nì sinn dòigh air choireigin.

Ach, chan urrainn dhomh cuideachadh ach a bhith a’ faireachdainn gur e sgudal ghoireasan a th’ ann a bhith a’ riarachadh barrachd cuimhne gu rudeigin cho bunaiteach ris a’ cheann-uidhe. Bu chòir gum biodh na prògraman sin mar an fheadhainn as lugha den fheadhainn as lugha, bu chòir dhaibh a bhith comasach air ruith air “bogsa” sam bith, eadhon bogsa bhròg, ma thig sinn a-riamh chun na h-ìre far am feum iad a bhith uidheamaichte le siostaman Linux (agus tha fios agad gum bi e mar sin. ). Ach leis na h-àireamhan sin, bidh cleachdadh cuimhne gu bhith na chùis san àm ri teachd ann an àrainneachd sam bith a bhios a’ ruith grunn chrìochan ach a-mhàin cuid de na comasan as aotrom agus as cuingealaichte. Gus dìoladh airson seo, tha modh Daemon aig GNOME Terminal, Konsole, urxvt, Terminator agus Xfce Terminal a leigeas leat smachd a chumail air iomadh ceann-uidhe tro aon phròiseas, a’ cuingealachadh an caitheamh cuimhne.

Sealladh farsaing air emulators terminal

Rè na deuchainnean agam, thàinig mi gu toradh eile ris nach robh dùil a thaobh sgrìobhadh leughaidh diosc: bha dùil agam nach fhaiceadh dad idir an seo, ach thionndaidh e a-mach gu bheil cuid de chrìochan a’ sgrìobhadh an dàta as toirtiche gu diosc. Mar sin, tha leabharlann VTE gu dearbh a’ cumail bufair scrollaidh air diosc (am feart seo chaidh mothachadh air ais ann an 2010, agus tha seo fhathast a’ tachairt). Ach aocoltach ri buileachadh nas sine, a-nis co-dhiù tha an dàta seo air a chrioptachadh le bhith a’ cleachdadh AES256 GCM (bho tionndadh 0.39.2). Ach tha ceist reusanta ag èirigh: dè a tha cho sònraichte mun leabharlann VTE gu bheil feum air dòigh-obrach neo-àbhaisteach airson buileachadh...

co-dhùnadh

Anns a’ chiad phàirt den artaigil, lorg sinn gu bheil seata math de fheartan aig cinn-uidhe stèidhichte air VTE, ach a-nis tha sinn a’ faicinn gu bheil seo a’ tighinn le cuid de chosgaisean coileanaidh. A-nis chan eil cuimhne na dhuilgheadas oir faodar smachd a chumail air a h-uile inneal VTE tro phròiseas Daemon, a tha a’ cuingealachadh am miann. Ach, dh’ fhaodadh gum bi feum aig siostaman nas sine aig a bheil crìochan fiosaigeach air an ìre de RAM agus bufairean kernel air dreachan nas tràithe de chrìochan, leis gu bheil iad ag ithe mòran nas lugha de ghoireasan. Ged a rinn cinn-uidhe VTE gu math ann an deuchainnean throughput (scrollaidh), tha an ùine taisbeanaidh aca os cionn na stairsnich a chaidh a shuidheachadh ann an Leabhar-iùil Cleachdaiche GNOME. Is dòcha gum bu chòir do luchd-leasachaidh VTE seo a thoirt fa-near. Ma bheir sinn an aire gu bheil e do-sheachanta eadhon dha luchd-cleachdaidh ùr Linux a thig tarsainn air inneal-crìochnachaidh, faodaidh iad a dhèanamh nas fhasa a chleachdadh. Airson geeks eòlach, dh’ fhaodadh atharrachadh bhon cheann-uidhe àbhaisteach eadhon nas lugha de chuideam sùla agus an comas leòn is tinneasan co-cheangailte ri obair a sheachnadh mar thoradh air seiseanan obrach fada. Gu mì-fhortanach, is e dìreach an t-seann xterm agus mlterm a bheir sinn chun stairsnich ping draoidheachd de 10 milliseconds, rud nach eil iomchaidh dha mòran.

Sheall tomhasan comharran cuideachd, mar thoradh air leasachadh àrainneachdan grafaigeach Linux, gum feumadh luchd-leasachaidh grunn cho-rèiteachaidhean a dhèanamh. Is dòcha gum bi cuid de luchd-cleachdaidh airson sùil a thoirt air manaidsearan uinneig cunbhalach leis gu bheil iad a’ toirt seachad lùghdachadh mòr air ping. Gu mì-fhortanach, cha robh e comasach latency a thomhas airson Wayland: chaidh am prògram Typometer a chleachd mi a chruthachadh airson na tha Wayland air a dhealbhadh gus casg a chuir air: a’ spionadh air uinneagan eile. Tha mi an dòchas gun dèan co-sgrìobhadh Wayland nas fheàrr na X.org, agus tha mi an dòchas cuideachd gum faigh cuideigin san àm ri teachd dòigh air latency san àrainneachd seo a thomhas.

Source: www.habr.com

Cuir beachd ann