Isishwankathelo sezifanisi zetheminali

Amagama ambalwa asuka kwiziko lethu labaguquleli: ngokuqhelekileyo wonke umntu uzama ukuguqulela imathiriyeli yamva nje kunye nopapasho, kwaye nathi asinjalo. Kodwa iitheminali aziyonto ihlaziywa kanye ngeveki. Ngoko ke, sikuguqulele inqaku ngu-Antoine Beaupré, epapashwe entwasahlobo ka-2018: nangona "ubudala" bayo obukhulu ngokwemigangatho yanamhlanje, ngokombono wethu, izinto eziphathekayo azizange zilahlekelwe ukufaneleka kwayo. Ukongezelela, oku ekuqaleni kwakuluhlu lwamanqaku amabini, kodwa sagqiba ekubeni sidibanise kwisithuba esinye esikhulu.

Isishwankathelo sezifanisi zetheminali

Izikhululo zinendawo ekhethekileyo kwimbali yekhompyuter, kodwa kumashumi eminyaka akutshanje ziye zanyanzeleka ukuba ziphile ecaleni komgca womyalelo njengoko ujongano lwegraphical lusiba kwindawo yonke. Izifanisi zetheminali bathathe indawo yabo abazalwana behardware, leyo, yona, yayiluhlengahlengiso lweenkqubo ezisekelwe kumakhadi atyunjiweyo kunye nokutshintsha. Ukuhanjiswa kwale mihla kuza neentlobo ngeentlobo zee-emulator zetheminali zazo zonke iimilo kunye nemibala. Kwaye ngelixa abaninzi banelisekile yi-terminal esemgangathweni ebonelelwa yindawo yabo yokusebenza, abanye ngokuzingca basebenzisa isoftware engaqhelekanga ukuqhuba iqokobhe labo abalithandayo okanye umhleli wombhalo. Kodwa, njengoko siza kubona kweli nqaku, ayizizo zonke iitheminali ezenziwe ngomfanekiso ofanayo: zihluke kakhulu ekusebenzeni, ubungakanani kunye nokusebenza.

Ezinye iitheminali zinemingxuma yokhuseleko eyothusayo, kwaye uninzi luneseti yemisebenzi eyahluke ngokupheleleyo, ukusuka kwinkxaso yojongano olunesithuba ukuya kokushicilelweyo. Nangona thina jonga kwii-terminal emulators kwixesha elidlulileyo, eli nqaku luhlaziyo lwezinto zangaphambili eziza kunceda abafundi ukuba banqume ukuba yeyiphi i-terminal enokusetyenziswa ngo-2018. Isiqingatha sokuqala senqaku sithelekisa iimpawu, kwaye isiqingatha sesibini sivavanya ukusebenza.

Nazi iitheminali endizijongileyo:

Isishwankathelo sezifanisi zetheminali

Ezi zinokuthi zingabi ziinguqulelo zamva nje, ekubeni ndandikhawulelwe kwizakhiwo ezizinzile ngexesha lokubhala, endikwaziyo ukukhupha kwi-Debian 9 okanye i-Fedora 27. I-Alacritty kuphela. Yinzala yeetheminali ezikhawulezayo ze-GPU kwaye ibhalwe ngolwimi olungaqhelekanga nolutsha kulo msebenzi - iRust. Andizibandakanyi iitheminali zewebhu kuphononongo lwam (kubandakanywa nezo zivuliweyo Electron), kuba iimvavanyo zokuqala zibonise ukusebenza kwabo kakubi kakhulu.

Inkxaso ye-Unicode

Ndaqala iimvavanyo zam ngenkxaso ye-Unicode. Uvavanyo lokuqala lweetheminali yayikukubonisa umtya we-Unicode ukusuka Amanqaku eWikipedia: “é, Δ, И, ק, م, ๗, あ, 叶, 葉 kunye ne 말." Olu vavanyo lulula lubonisa ukuba i-terminal inokusebenza ngokuchanekileyo kwihlabathi liphela. Itheminali ye-xterm ayibonisi umbhalo wesiArabhu Imem kuqwalaselo olungagqibekanga:

Isishwankathelo sezifanisi zetheminali

Ngokungagqibekanga, i-xterm isebenzisa ifonti "elungisiweyo" yakudala, ethi, ngokutsho isengulo Vicky, ine "i-Unicode coverage enkulu ukususela ngo-1997". Kukho into eyenzekayo kule fonti ebangela ukuba umlinganiswa abonakale njengesakhelo esingenanto kwaye kuphela xa ifonti yokubhaliweyo yonyuswa ukuya kumanqaku angama-20+ apho umlinganiswa aqala ukubonisa ngokuchanekileyo. Nangona kunjalo, oku "kulungiswa" kwaphula umboniso wabanye oonobumba be-Unicode:

Isishwankathelo sezifanisi zetheminali

Ezi sikrini zithathwe kwi-Fedora 27, njengoko inike iziphumo ezingcono kune-Debian 9, apho ezinye iinguqulelo ezindala zee-terminals (ngokukodwa mlterm) azikwazanga ukuphatha iifonti ngokufanelekileyo. Ngethamsanqa oku kwalungiswa kwiinguqulelo zamva.

Ngoku qaphela ukuba umgca uboniswa njani kwi-xterm. Kuvela ukuba isimboli iMem kunye neSemitic elandelayo qoph bhekisa kwizikripthi zesimbo se-RTL (ekunene ukuya ekhohlo), ngoko ngokobuchwepheshe kufuneka ziboniswe ukusuka ekunene ukuya ekhohlo. Izikhangeli zewebhu ezifana neFirefox 57 ziphatha lo mgca ungentla ngokuchanekileyo. Uguqulelo olulula lokubhaliweyo kweRTL ligama "Сара"ngesiHebhere (שרה). Iphepha le-Wiki kwimibhalo ephindwe kabini ithi oku kulandelayo:

“Iinkqubo ezininzi zekhompyutha azikwazi ukubonisa umbhalo omacala omabini ngokuchanekileyo. Ngokomzekelo, igama lesiHebhere elithi "Sarah" liquka oonobumba isono (ש) (abavela ekunene), emva koko u-resh (ר) kwaye ekugqibeleni yena (ה) (omele avele ekhohlo)."

Iitheminali ezininzi ziyasilela kolu vavanyo: I-Alacritty, i-VTE-derived Gnome kunye ne-XFCE iitheminali, i-urxvt, i-st kunye ne-xterm display "Sara" ngolandelelwano olubuyela umva, ngokungathi sibhale igama elithi "Aras".

Isishwankathelo sezifanisi zetheminali

Enye ingxaki ngeetekisi ze-bidirectional kukuba kufuneka zilungelelaniswe ngandlela-thile, ngakumbi xa kuziwa ekuxubeni i-RTL kunye neetekisi ze-LTR. Izikripthi ze-RTL kufuneka zibaleke ukusuka kwicala lasekunene lefestile ye-terminal, kodwa kwenzeka ntoni kwiitheminali ezingagqibekanga kwi-LTR IsiNgesi? Uninzi lwazo alunandlela ikhethekileyo kwaye lungelelanisa konke okubhaliweyo ekhohlo (ibandakanya kwi Konsole). Izinto ezizishiyiweyo zi-pterm kunye ne-mlterm, ezihambelana nemigangatho kwaye zilungelelanise ekunene loo migca.

Isishwankathelo sezifanisi zetheminali

Ukukhuselwa kokufakwa

Inqaku elilandelayo elibalulekileyo endilichongileyo lukhuselo lokungeniswa. Nangona iyaziwa ngokubanzi ukuba ipela kanje:

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

yimiyalelo yokutyhala yokuphunyezwa kwekhowudi, bambalwa abantu abaziyo ukuba imiyalelo efihliweyo inokuchwechwela kwikhonsoli xa ukopa kwaye uncamathisela kwisikhangeli sewebhu, nasemva kokuhlolwa ngononophelo. Indawo yokuqinisekisa iGianna Horna ibonisa ngokuqaqambileyo indlela okhangeleka umsulwa ngayo umyalelo:

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

ijika ibe yinkathazo xa incamatheliswa kwiwebhusayithi kaHorn kwi-terminal:

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

Ingaba isebenza kanjani? Ikhowudi enobungozi ibandakanyiwe kwibhloko , ekhutshwa kumbono womsebenzisi kusetyenziswa iCSS.

Imo yokuncamathisela enezibiyeli yenzelwe ngokucacileyo ukuphelisa olo hlaselo. Kule ndlela, iitheminali zifakela okubhaliweyo okuncamathiselweyo kwiperi yolandelelwano olukhethekileyo lokubaleka ukuxelela iqokobhe ngemvelaphi yokubhaliweyo. Oku kuxelela iqokobhe ukuba lingahoya amagama akhethekileyo anokuqukunjelwa okubhaliweyo okuncamathiselweyo. Zonke iitheminali zibuyela kwi-xterm ebekekileyo zixhasa eli nqaku, kodwa ukuncamathelisa kwimo eBracketed kufuna inkxaso evela kwiqokobhe okanye isicelo esisebenza kwi-terminal. Umzekelo, usebenzisa isoftware Umgca wokufunda we-GNU (iBash efanayo), ifuna ifayile ~/.inputrc:

set enable-bracketed-paste on

Ngelishwa, indawo yovavanyo ye-Horn ikwabonisa indlela yokudlula olu khuselo ngokufomatha iteksti ngokwayo kwaye kwangaphambi kwexesha ugqibe ekubeni usebenzise imowudi eBracketed kuyo. Oku kusebenza kuba ezinye iitheminali azihluzi ngokuchanekileyo ulandelelwano lokubaleka phambi kokuba zongeze ezazo. Umzekelo, kweyam andizange ndikwazi ukugqiba ngempumelelo iimvavanyo ze Konsole nangoqwalaselo oluchanekileyo .inputrc ifayile. Oku kuthetha ukuba ungafumana ngokulula uqwalaselo lwenkqubo yakho lonakaliswe ngenxa yesicelo esingaxhaswanga okanye iqokobhe eliqwalaselwe ngokungachanekanga. Oku kuyingozi ngakumbi xa ungena kwiiseva ezikude, apho umsebenzi woqwalaselo ngononophelo ungaxhaphakanga, ngakumbi ukuba unoomatshini abaninzi abakude.

Isisombululo esilungileyo kule ngxaki kukuncamathelisa iplagi yokuqinisekisa kwi-terminal urxvt, ecela ngokulula imvume yokufaka nawuphi na umbhalo oqulathe imigca emitsha. Andifumananga ukhetho olukhuselekileyo lohlaselo lokubhaliweyo oluchazwe nguHorn.

Iithebhu kunye neeprofayili

Into edumileyo ngoku yinkxaso yojongano olunethebhu, esiya kuyichaza njengefestile yesiphelo esinezinye iitheminali ezininzi. Lo msebenzi wahlukile kwiitheminali ezahlukeneyo, kwaye nangona iitheminali zexterm zemveli zingaxhasi iithebhu konke konke, i-terminal incarnations yangoku ngakumbi njengeXfce Terminal, GNOME Terminal kunye neKonsole zinalo msebenzi. I-Urxvt ikwaxhasa iithebhu, kodwa kuphela ukuba usebenzisa iplagi. Kodwa ngokwemiqathango yenkxaso yethebhu ngokwayo, i-Terminator yinkokeli engenakuphikiswa: ayixhasi kuphela iithebhu, kodwa inokucwangcisa iitheminali kuyo nayiphi na indlela (jonga umfanekiso ongezantsi).

Isishwankathelo sezifanisi zetheminali

Olunye uphawu lwe-Terminator kukukwazi "ukudibanisa" ezi thebhu kunye kunye nokuthumela izitshixo ezifanayo kwiitheminali ezininzi ngaxeshanye, ukubonelela ngesixhobo esikrwada sokwenza imisebenzi yobuninzi kwiiseva ezininzi ngaxeshanye. Uphawu olufanayo lukwaphunyeziwe kwi Konsole. Ukusebenzisa eli nqaku kwezinye iitheminali, kufuneka usebenzise isoftware yomntu wesithathu efana Iqela le-SSH, xlax okanye tmux.

Iithebhu zisebenza kakuhle ngakumbi xa zidityaniswe neeprofayili: umzekelo, unokuba nethebhu enye ye-imeyile, enye yencoko, njalo njalo. Oku kuxhaswa kakuhle yiKonsole Terminal kunye neGNOME Terminal. Zombini zivumela ithebhu nganye ukuba iqalise ngokuzenzekelayo iprofayile yayo. I-Terminator ikwaxhasa iiprofayili, kodwa andizange ndifumane indlela yokuqalisa ngokuzenzekelayo iinkqubo ezithile xa uvula ithebhu ethile. Ezinye iitheminali azinayo ingqikelelo ye "profayile" kwaphela.

IiRuffles

Into yokugqibela endiya kuyigubungela kwinxalenye yokuqala yeli nqaku kukubonakala kwee-terminals. Umzekelo, i-GNOME, i-Xfce kunye ne-urxvt yenkxaso yokubonisa elubala, kodwa isandula ukulahla inkxaso yemifanekiso yangasemva, inyanzela abanye abasebenzisi ukuba batshintshele kwi-terminal. Tilix. Ngokomntu, ndonwabile kwaye ilula Imithombo yolwazi, ecwangcisa isiseko semibala yangasemva ye urxvt. Nangona kunjalo, imixholo yemibala engekho mgangathweni nayo inokudala iingxaki. Umzekelo, Yenzelwe ayisebenzi kunye nezicelo phezulu и IPTraf, ekubeni sele besebenzisa eyabo imibala.

Itheminali yoqobo yeVT100 yayingayixhasi imibala, yaye emitsha yayidla ngokuphelela kwimibala engama-256. Kubasebenzisi abakwizinga eliphezulu abalungisa iitheminali zabo, i-shell prompts okanye iibar zobume ngeendlela ezintsonkothileyo zinokuba ngumda ocaphukisayo. Gist iingoma apho iitheminali zinenkxaso "yeMbala oyiNyaniso". Iimvavanyo zam ziqinisekisa ukuba i-st, i-Alacritty kunye ne-VTE-based terminals zixhasa uMbala weNyaniso ngokugqibeleleyo. Ezinye iitheminali azihambi kakuhle kakhulu kulo mba kwaye, enyanisweni, azibonisi nemibala engama-256. Ngezantsi ungawubona umahluko phakathi kwenkxaso yoMbala oyiNyaniso kwiitheminali ze-GNOME, i-st kunye ne-xterm, eyenza umsebenzi omhle woku nge-palette yabo yemibala engama-256, kunye ne-urxvt, engaphumeleli kuvavanyo kuphela, kodwa ibonise abanye oonobumba abaqhwanyazayo endaweni yabo.

Isishwankathelo sezifanisi zetheminali

Ezinye iitheminali zikwahlalutya umbhalo kwiipateni ze-URL ukwenza amakhonkco acofeke. Oku kusebenza kuzo zonke iitheminali ezivela kwi-VTE, ngelixa i-urxvt ifuna iplagin ekhethekileyo eya kuguqula ii-URL ngokucofa okanye isebenzisa indlela emfutshane yebhodibhodi. Ezinye iitheminali ndivavanye ii-URL zokubonisa ngezinye iindlela.

Okokugqibela, intsingiselo entsha kwiitheminali lukhetho lwe-buffer yokuskrola. Umzekelo, i-st ayinayo isithinteli sokuskrola; kucingelwa ukuba umsebenzisi uzakusebenzisa i-terminal multiplexer njenge-tmux kunye Isikrini seGNU.

I-Alacritty nayo ayinazo ii-backscroll buffers, kodwa iya kongezwa kungekudala inkxaso yayo ngenxa "yengxelo ebanzi" kwesi sihloko esivela kubasebenzisi. Ngaphandle kwezi ziqalo ziphezulu, yonke i-terminal endiyivavanyile ukuba ndingayifumana ixhasa ukuskrola umva.

Iitotali ezingaphantsi

Kwinxalenye yesibini yemathiriyeli (ekuqaleni la yayingamanqaku amabini ahlukeneyo - malunga. indlela) siya kuthelekisa ukusebenza, ukusetyenziswa kwememori kunye ne-latency. Kodwa sele sibona ukuba ezinye zeetheminali ekuthethwa ngazo zineziphene ezinzulu. Umzekelo, abasebenzisi abasebenza rhoqo ngemibhalo ye-RTL banokufuna ukuqwalasela i-mlterm kunye ne-pterm, njengoko bengcono ekuphatheni imisebenzi efanayo kuneminye. UKonsole naye uqhube kakuhle. Abasebenzisi abangasebenziyo ngezikripthi ze-RTL banokukhetha enye into.

Ngokubhekiselele kukhuseleko ekufakweni kwekhowudi ekhohlakeleyo, i-urxvt ibalasele ngenxa yokuphunyezwa kwayo okukhethekileyo kokhuseleko kolu hlobo lohlaselo, olubonakala lufanelekile kum ngokuqinisekileyo. Kwabo bafuna iintsimbi kunye neempempe, iKonsole ifanelekile ukujonga. Ekugqibeleni, kuyafaneleka ukuba uqaphele ukuba i-VTE sisiseko esihle kakhulu se-terminals, esiqinisekisa inkxaso yombala, ukuqatshelwa kwe-URL, njalo njalo. Kuqala krwada, i-terminal engagqibekanga eza nendawo oyithandayo ingahlangabezana nazo zonke iimfuno, kodwa masiwushiye lo mbuzo uvuliwe side siqonde ukusebenza.

Masiqhubeke nencoko


Ngokubanzi, ukusebenza kwee-terminals ngokwayo kunokubonakala ngathi kuyingxaki, kodwa njengoko kuvela, ezinye zazo zibonisa ukubambezeleka okuphezulu okumangalisayo kwesoftware yohlobo olusisiseko. Kwakhona ngokulandelayo siza kujonga into ebizwa ngokuqhelekileyo ngokuthi "isantya" (enyanisweni, esi sisantya sokuskrola) kunye nokusetyenziswa kwememori ye-terminal (kunye ne-caveat yokuba oku akubalulekanga namhlanje njengoko kwakunjalo kumashumi eminyaka eyadlulayo).

Ukucothisa

Emva kokuphonononga ngokucokisekileyo ukusebenza kwe-terminal, ndafikelela kwisigqibo sokuba eyona parameter ibaluleke kakhulu kulo mba yi-latency (ping). Kwinqaku lakhe “Siprinta ngolonwabo” U-Pavel Fatin ujonge ukubambezeleka kwabahleli bombhalo abahlukeneyo kwaye wachaza ukuba iitheminali kulo mba zinokucotha kunabona bahleli bombhalo abakhawulezayo. Yayilo cebiso ekugqibeleni elandikhokelela ekubeni ndiqhube ezam iimvavanyo kwaye ndibhale eli nqaku.

Kodwa yintoni i-latency, kwaye kutheni ibaluleke kangaka? Kwinqaku lakhe, uFatin wayichaza “njengelibaziseka phakathi kokucofa isitshixo kunye nohlaziyo lwesikrini oluhambelanayo” kwaye icatshulwe. "IsiKhokelo kuNxibelelwano lwaBantu neKhompyutha", ethi: “Ukulibaziseka kweengxelo ezibonwayo kwiscreen sekhompyutha kunempembelelo ebalulekileyo kwindlela abachwethezi abaziphatha ngayo nakulwaneliseko.”

UFatin uchaza ukuba le ping inemiphumo enzulu kunolwaneliseko nje kuphela: “Ukuchwetheza kuye kucothe, kwenzeke iimpazamo ezininzi, yaye kunyuka ukukruquka kwamehlo nezihlunu.” Ngamanye amazwi, ukulibaziseka okukhulu kunokukhokelela kwiitypos kunye nomgangatho wekhowudi ephantsi, njengoko kukhokelela kumthwalo owongezelelweyo wokuqonda kwingqondo. Kodwa eyona nto imbi ngakumbi kukuba i-ping "yandisa ukuqina kwamehlo kunye nezihlunu," okubonakala ngathi kuthetha uphuhliso lokwenzakala emsebenzini kwixesha elizayo (Kubonakala ukuba, umbhali uthetha iingxaki ngemisipha yamehlo, umva, iingalo kwaye, ngokuqinisekileyo, umbono - malunga. indlela) ngenxa yoxinzelelo oluphindaphindiweyo.

Ezinye zezi ziphumo zaziwa ixesha elide, kunye neziphumo uphando, epapashwe emva kwe-1976 kwiphephancwadi i-Ergonomics, yathi ukulibaziseka kwe-100 millisecond "kuyonakalisa kakhulu isantya sokuchwetheza." Kutshanje, iSikhokelo soMsebenzisi we-GNOME saziswa ixesha lokuphendula elamkelekileyo kwi-10 milliseconds, kwaye ukuba uya phambili, ke Uphando lweMicrosoft ibonisa ukuba i-millisecond enye ilungile.

UFatin wenza iimvavanyo zakhe kubahleli besicatshulwa; wenza isixhobo esiphathwayo esibizwa ngokuba Itypometer, ebendisebenzisa ukuvavanya i-ping kwii-terminal emulators. Gcina ukhumbule ukuba uvavanyo luqhutywe kwimodi yokulinganisa: ngokwenene, kufuneka sithathele ingqalelo zombini igalelo (ikhibhodi, isilawuli se-USB, njl.) kunye nemveliso (ikhadi levidiyo yekhadi, i-monitor) latency. Ngokutsho kweFatin, kuqwalaselo oluqhelekileyo malunga ne-20 ms. Ukuba unezixhobo zokudlala, ungafezekisa eli nani nge-millisecond ezi-3 nje. Kuba sele sinezixhobo ezikhawulezayo, isicelo akufuneki songeze eyakhe i-latency. Injongo yeFatin kukuzisa umva wesicelo kwi-millisecond e-1, okanye ukuphumeza ukucofa ngaphandle ulibaziseko olunokulinganiswa, njani kwi I-IntelliJ IDEA 15.

Nazi iziphumo zemilinganiselo yam, kunye nezinye zeziphumo zikaFatin, ukubonisa ukuba umfuniselo wam uyavumelana novavanyo lwakhe:

Isishwankathelo sezifanisi zetheminali

Into yokuqala eyandibethayo yayilixesha elingcono lokuphendula leenkqubo ezindala ezifana ne-xterm kunye ne-mlterm. Ngeyona ndlela imbi yerejista latency (2,4 ms), baqhube bhetele kunetheminali yanamhlanje ekhawulezayo (10,6 ms for st). Akukho theminali yangoku iwela ngaphantsi kwe-10 millisecond threshold. Ngokukodwa, i-Alacritty iyasilela ukuhlangabezana nebango "elikhawulezayo le-terminal emulator ekhoyo", nangona amanqaku ayo ephucukile ukusukela oko kuphononongwa okokuqala ngo-2017. Ngokwenene, ababhali beprojekthi uyazi imeko kwaye basebenzela ukuphucula umboniso. Kufuneka kwakhona kuqatshelwe ukuba i-Vim isebenzisa i-GTK3 yi-odolo yobungakanani obucothayo kune-GTK2 iqabane layo. Ukusuka koku sinokugqiba ekubeni i-GTK3 idala i-latency eyongezelelweyo, kwaye oku kubonakala kuzo zonke ezinye iitheminali eziyisebenzisayo (i-Terminator, i-Xfce4 Terminal kunye ne-GNOME Terminal).

Nangona kunjalo, iyantlukwano isenokungabonakali emehlweni. Njengoko uFatin ecacisa, “akuyomfuneko ukuba uqaphele ukulibaziseka ukuze kube nomphumo kuwe.” UFatin ukwalumkisa ngokutenxa okuqhelekileyo: “nakuphi na ukuphazamiseka kwi-latency (jitter) kubangela uxinezeleko olongezelelekileyo ngenxa yokungaqikeleli.”

Isishwankathelo sezifanisi zetheminali

Igrafu engentla ithathwe kwi-Debian 9 ecocekileyo (yolula) nge i3 umphathi wefestile. Le ndawo ivelisa iziphumo ezilungileyo kwiimvavanyo ze-latency. Njengoko kuvela, i-GNOME yenza i-ping eyongezelelweyo ye-20 ms kuyo yonke imilinganiselo. Inkcazo enokwenzeka yoku kubukho beenkqubo ezinokulungiswa kweziganeko zegalelo. IFatin inika umzekelo kwimeko enjalo Umsebenzi, eyongeza ulibaziseko ngokuqhubekekisa zonke igalelo leziganeko ngaxeshanye. Ngokungagqibekanga, i-GNOME iza nomphathi wefestile Mutter, eyenza umaleko owongezelelweyo we-buffering, ochaphazela i-ping kwaye yongeza ubuncinane i-8 milliseconds ye-latency.

Isishwankathelo sezifanisi zetheminali

Skrola isantya

Uvavanyo olulandelayo luvavanyo lwendabuko "isantya" okanye "i-bandwidth", elinganisa ukuba i-terminal inokukhawuleza kangakanani ukuskrola iphepha ngelixa ibonisa inani elikhulu lombhalo kwisikrini. Ubuchwephesha bovavanyo bayahluka; uvavanyo lwentsusa yayikukuvelisa umtya wokubhaliweyo ofanayo usebenzisa i seq umyalelo. Olunye uvavanyo lubandakanya uvavanyo lukaThomas E. Dickey (xterm umlondolozi), oluphindaphindayo ifayile ye terminfo.src iyakhutshelwa. Kolunye uphononongo lokusebenza kwetheminali Den Luu isebenzisa ibase32 ekhowudiweyo yoluhlu lweebhayithi ezingafunekiyo, eziphuma kwitheminali kusetyenziswa ikati. U-Luu ulujonga uvavanyo olulolo hlobo “njengelingeyonto yokulinganisa njengoko ubani enokucinga” kwaye ucebisa ukuba kusetyenziswe impendulo yesiphelo njengemetric ephambili endaweni yoko. UDickey ukwabiza uvavanyo lwakhe ngokuba lulahlekisa. Nangona kunjalo, bobabini ababhali bayavuma ukuba i-terminal window bandwidth inokuba ngumcimbi. U-Luu ubhaqe i-Emacs Eshell ingumkhenkce xa ibonisa iifayile ezinkulu, kwaye u-Dickey walungisa i-terminal ukuze asuse ubuvila obubonakalayo be-xtrerm. Ke kusekho ukufaneleka kolu vavanyo, kodwa kuba inkqubo yonikezelo yahluke kakhulu kwi-terminal ukuya kwi-terminal, isenokusetyenziswa njengecandelo lovavanyo ukuvavanya ezinye iiparamitha.

Isishwankathelo sezifanisi zetheminali

Apha sibona i-rxvt kunye ne-st pull phambi kokhuphiswano, ilandelwa yi-Alacritty entsha kakhulu, eyilwe ngokugxila ekusebenzeni. Okulandelayo yi-Xfce (usapho lwe-VTE) kunye ne-Konsole, eziphantse zibe kabini ngokukhawuleza. Eyokugqibela yi-xterm, ecotha ngokuphindwe kahlanu kune-rxvt. Ngexesha lovavanyo, i-xterm nayo yakhubeka kakhulu, yenza ukuba umbhalo ogqithisiweyo kube nzima ukuwubona nokuba wawungumgca ofanayo. I-Konsole yayikhawuleza, kodwa yayinenkohliso ngamanye amaxesha: isiboniso sasiza kuba ngumkhenkce ngamaxesha athile, sibonise okubhaliweyo okungaphelelanga okanye singabonisi kwaphela. Ezinye iitheminali zibonise imitya ngokucacileyo, ukuquka st, Alacritty, kunye rxvt.

UDickey ucacisa ukuba iyantlukwano yokusebenza kungenxa yoyilo lwezixhobo zokuskrola kwiitheminali ezahlukeneyo. Ngokukodwa, utyhola i-rxvt kunye nezinye iitheminali "ngokungalandeli imigaqo jikelele":

“Ngokungafaniyo ne-xterm, i-rxvt ayizange izame ukubonisa lonke uhlaziyo. Ukuba iyawa ngasemva, iya kwala uhlaziyo oluthile ukubamba. Oku kube nefuthe elikhulu kwisantya esicacileyo sokuskrola kunombutho wememori yangaphakathi. Enye into eyayisibuyisela emuva yayikukuba oopopayi be-ASCII belingachanekanga.

Ukulungisa oku kuqondwa kobuvila be-xterm, uDickey ucebisa ukusebenzisa uvimba fastScroll, ivumela i-xterm ukulahla uhlaziyo lwesikrini ukuze uhambisane nokuhamba. Iimvavanyo zam ziqinisekisa ukuba i-fastScroll iphucula ukusebenza kwaye izisa i-xterm ngokuhambelana ne-rxvt. Oku, nangona kunjalo, yinto enzima kakhulu, njengoko uDickey ngokwakhe echaza: "ngamanye amaxesha xterm - njenge-konsole - ibonakala iphelile njengoko ilindele isethi entsha yohlaziyo lwesikrini emva kokuba ezinye zisusiwe." Kule vein, kubonakala ngathi ezinye iitheminali zifumene eyona nto ingcono phakathi kwesantya kunye nokubonisa imfezeko.

Ukusetyenziswa kobutyebi

Kungakhathaliseki ukuba kunengqiqo ukuqwalasela isantya sokuskrola njengemethrikhi yokusebenza, olu vavanyo luvumela ukuba silinganise umthwalo kwii-terminals, ezisivumela ukuba silinganise ezinye iiparitha ezifana nememori okanye ukusetyenziswa kwediski. Iimetriki zifunyenwe ngokuqhuba uvavanyo oluchaziweyo seq phantsi koqwalaselo lwenkqubo yePython. Uqokelele idatha yemitha getrusage() kuba ru_maxrss, isixa ru_aublock и ru_inblock kunye nesibali-xesha esilula.

Isishwankathelo sezifanisi zetheminali

Kolu vavanyo, i-ST ithatha indawo yokuqala ngeyona ndlela isezantsi yokusetyenziswa kwememori ye-8 MB, ayimangalisi into yokuba imbono ephambili yoyilo ilula. mlterm, xterm kunye ne-rxvt zidla kancinci - malunga ne-12 MB. Esinye isiphumo esiphawulekayo yi-Alacritty, efuna i-30 MB ukuqhuba. Emva koko kukho iitheminali zosapho lwe-VTE ezinamanani ukusuka kwi-40 ukuya kwi-60 MB, into eninzi kakhulu. Oku kusetyenziswa kunokuchazwa yinyaniso yokuba ezi terminals zisebenzisa amathala eencwadi akumgangatho ophezulu, umzekelo, i-GTK. I-Konsole ingena ekugqibeleni nge-65MB yokusetyenziswa kwememori ngexesha lovavanyo, nangona oku kunokulungiswa ngoluhlu lwayo olubanzi kakhulu lweempawu.

Xa kuthelekiswa neziphumo zangaphambili ezifunyenwe kwiminyaka elishumi eyadlulayo, zonke iinkqubo zaqala ukusebenzisa inkumbulo engakumbi. I-Xterm ibikade ifuna u-4 MB, kodwa ngoku ifuna i-15 MB nje ekuqaleni. Kukho ukonyuka okufanayo kokusetyenziswa kwe-rxvt, ngoku efuna i-16 MB ngaphandle kwebhokisi. I-Xfce Terminal ithatha i-34 MB, inkulu ngokuphindwe kathathu kunangaphambili, kodwa i-GNOME Terminal ifuna kuphela i-20 MB. Ngokuqinisekileyo, zonke iimvavanyo zangaphambili zenziwa kwi-32-bit ye-architecture. Kwi-LCA 2012 Rusty Russell uxelelwe, ukuba kukho izizathu ezininzi ezifihlakeleyo ezinokuchaza ukwanda kokusetyenziswa kwememori. Sele siyithethile loo nto, ngoku siphila kwixesha apho sineegigabhayithi zenkumbulo, ngoko ke siya kulawula ngandlel’ ithile.

Nangona kunjalo, andinakuzibamba kodwa ndivakalelwa kukuba ukwaba imemori engakumbi kwinto esisiseko njenge-terminal yinkcitho yemithombo. Ezi nkqubo kufuneka zibe zezona zincinci kwezincinci, kufuneka zikwazi ukusebenza nakweyiphi na "ibhokisi", nokuba yibhokisi yezihlangu, ukuba sithe safika kwindawo apho kufuneka baxhotyiswe ngeenkqubo zeLinux (kwaye uyazi ukuba kuya kuba njalo. ). Kodwa ngala manani, ukusetyenziswa kwememori kuya kuba ngumba kwixesha elizayo kuyo nayiphi na imeko eqhuba iitheminali ezininzi ngaphandle kwezona zikhaphukhaphu kwaye zininzi zilinganiselwe kubuchule. Ukubuyekeza oku, iGNOME Terminal, Konsole, urxvt, Terminator kunye neXfce Terminal zinendlela yeDaemon ekuvumela ukuba ulawule iitheminali ezininzi ngenkqubo enye, ukuthintela ukusetyenziswa kwememori yazo.

Isishwankathelo sezifanisi zetheminali

Ngexesha lovavanyo lwam, ndifike kwesinye isiphumo esingalindelekanga malunga nediski yokufunda-bhala: bendilindele ukubona kwanto apha, kodwa kuye kwavela ukuba ezinye iitheminali zibhala eyona datha inamandla kwidiski. Ke, ithala leencwadi le-VTE ngokwenene ligcina isithinteli sokuskrola kwidiski (eli nqaku yaqatshelwa ngo-2010, kwaye oku kusenzeka). Kodwa ngokungafaniyo nokuphunyezwa okudala, ngoku le datha ifihliwe kusetyenziswa i-AES256 GCM (ukusuka kuguqulelo 0.39.2). Kodwa umbuzo ofanelekileyo uvela: yintoni ekhethekileyo malunga nethala leencwadi le-VTE elifuna indlela enjalo engekho kumgangatho wokuphunyezwa...

isiphelo

Kwinxalenye yokuqala yenqaku, sifumene ukuba ii-terminals ezisekelwe kwi-VTE zineseti efanelekileyo yeempawu, kodwa ngoku siyabona ukuba oku kuza kunye neendleko ezithile zokusebenza. Ngoku inkumbulo ayingomba kuba zonke iitheminali ze-VTE zinokulawulwa ngenkqubo ye-Daemon, enciphisa umdla wabo wokutya. Nangona kunjalo, iisistim ezindala ezinokunciphisa umzimba kwisixa se-RAM kunye ne-kernel buffers zisenokufuna iinguqulelo zangaphambili zee-terminals, kuba zisebenzisa izixhobo ezimbalwa kakhulu. Nangona iitheminali ze-VTE ziqhube kakuhle kuvavanyo lwe-throughput (scrolling), ukubonisa ukubambezeleka kwazo kungaphezulu komqobo obekwe kwiSikhokelo soMsebenzisi we-GNOME. Abaphuhlisi be-VTE ngokuqinisekileyo kufuneka bakuthathele ingqalelo oku. Ukuba sithathela ingqalelo ukuba nakubasebenzisi beLinux abasaqalayo ukudibana ne-terminal ayinakuphepheka, bangayenza ukuba isebenziseke ngakumbi. Kwiigeek ezinamava, ukutshintshela kwi-terminal engagqibekanga kusenokuthetha ukutsalana kwamehlo okuncinci kunye nokukwazi ukuphepha ukonzakala kunye nezigulo ezinxulumene nomsebenzi kwixesha elizayo ngenxa yeeseshini ezinde zomsebenzi. Ngelishwa, kuphela i-xterm yakudala kunye ne-mlterm ezisizisa kumda womlingo we-ping we-10 milliseconds, engamkelekanga kwabaninzi.

Imilinganiselo yeBenchmark ikwabonise ukuba ngenxa yophuhliso lweemeko zemizobo yeLinux, abaphuhlisi kuye kwafuneka benze izinto ezininzi eziya kuvumelana. Abanye abasebenzisi banokufuna ukujonga abaphathi befestile rhoqo njengoko bebonelela ngokuncipha okukhulu kweping. Ngelishwa, kwakungenakwenzeka ukulinganisa i-latency ye-Wayland: inkqubo yeTypometer endiyisebenzisileyo yenzelwe oko i-Wayland yenzelwe ukukhusela: ukuhlola kwezinye iifestile. Ndiyathemba ukuba i-Wayland compositing iqhuba ngcono kune-X.org, kwaye ndiyathemba ukuba kwixesha elizayo umntu uya kufumana indlela yokulinganisa ukubambezeleka kule meko.

umthombo: www.habr.com

Yongeza izimvo