Overview sa mga terminal emulator

Pipila ka mga pulong gikan sa among translation bureau: kasagaran ang tanan naningkamot sa paghubad sa pinakabag-o nga mga materyales ug publikasyon, ug kami dili eksepsiyon. Apan ang mga terminal dili usa ka butang nga gi-update kausa sa usa ka semana. Busa, gihubad namo alang kanimo ang usa ka artikulo ni Antoine Beaupré, nga gipatik sa tingpamulak sa 2018: bisan pa sa igo nga "edad" niini sa modernong mga sumbanan, sa among opinyon, ang materyal wala gayud mawala ang kalabutan niini. Dugang pa, kini sa sinugdan usa ka serye sa duha ka mga artikulo, apan nakahukom kami sa paghiusa kanila ngadto sa usa ka dako nga post.

Overview sa mga terminal emulator

Ang mga terminal adunay usa ka espesyal nga lugar sa kasaysayan sa kompyuter, apan sa bag-ohay nga mga dekada napugos sila nga mabuhi kauban ang linya sa mando samtang ang mga graphical nga interface nahimong ubiquitous. Mga emulator sa terminal gipulihan sa ilang kaugalingon hardware mga igsoon, nga, sa baylo, usa ka pagbag-o sa mga sistema base sa mga punched card ug toggle switch. Ang mga moderno nga pag-apod-apod adunay lainlaing mga terminal emulator sa tanan nga mga porma ug kolor. Ug samtang daghan ang kontento sa standard nga terminal nga gihatag sa ilang palibot sa trabahoan, ang uban mapasigarbuhon nga naggamit sa hingpit nga exotic nga software sa pagpadagan sa ilang paborito nga shell o text editor. Apan, ingon sa atong makita gikan niini nga artikulo, dili tanan nga mga terminal gibuhat sa sama nga larawan: sila lahi kaayo sa pag-andar, gidak-on ug performance.

Ang ubang mga terminal adunay mga katingad-an nga mga lungag sa seguridad, ug ang kadaghanan adunay usa ka hingpit nga lahi nga hugpong sa mga gimbuhaton, gikan sa suporta alang sa usa ka tab nga interface hangtod sa scripting. Bisan pa kami mitan-aw sa terminal emulators sa layo nga nangagi, kini nga artikulo usa ka update sa miaging materyal nga makatabang sa mga magbabasa sa pagtino kung unsang terminal ang gamiton sa 2018. Ang una nga katunga sa artikulo nagtandi sa mga bahin, ug ang ikaduha nga katunga nagtimbang-timbang sa pasundayag.

Ania ang mga terminal nga akong gisusi:

Overview sa mga terminal emulator

Mahimong dili kini ang pinakabag-o nga mga bersyon, tungod kay limitado ako sa mga lig-on nga pagtukod sa panahon sa pagsulat, nga akong nahimo sa Debian 9 o Fedora 27. Ang bugtong eksepsiyon mao ang Alacritty. Kini usa ka kaliwat sa GPU-accelerated nga mga terminal ug gisulat sa usa ka talagsaon ug bag-ong pinulongan alang niini nga buluhaton - Rust. Wala nako giapil ang mga terminal sa web gikan sa akong pagrepaso (lakip ang sa Electron), tungod kay ang pasiuna nga mga pagsulay nagpakita sa ilang hilabihan ka dili maayo nga performance.

Suporta sa Unicode

Gisugdan nako ang akong mga pagsulay gamit ang suporta sa Unicode. Ang unang pagsulay sa mga terminal mao ang pagpakita sa Unicode string gikan sa Mga artikulo sa Wikipedia: “é, Δ, И, ק, م, ๗, あ, 叶, 葉 ug 말.” Kining yano nga pagsulay nagpakita kon ang terminal makaandar ba sa husto sa tibuok kalibotan. Ang xterm terminal wala magpakita sa Arabic nga karakter Mem sa default configuration:

Overview sa mga terminal emulator

Sa kasagaran, ang xterm naggamit sa klasiko nga "fixed" nga font, nga, sumala sa mao gihapon Vicki, adunay "substantial Unicode coverage sukad 1997". Adunay usa ka butang nga nahitabo sa kini nga font nga hinungdan nga ang karakter makita ingon usa ka blangko nga bayanan ug kini lamang kung ang font sa teksto nadugangan sa 20+ puntos nga ang karakter sa katapusan magsugod sa pagpakita sa husto. Bisan pa, kini nga "pag-ayo" nagguba sa pagpakita sa ubang mga karakter sa Unicode:

Overview sa mga terminal emulator

Kini nga mga screenshot gikuha sa Fedora 27, tungod kay naghatag kini og mas maayo nga mga resulta kay sa Debian 9, diin ang pipila ka mga daan nga bersyon sa mga terminal (ilabi na ang mlterm) dili makadumala sa mga font sa hustong paagi. Sa swerte kini naayo sa ulahi nga mga bersyon.

Karon matikdi kung giunsa ang linya gipakita sa xterm. Kini turns nga ang simbolo Mem ug ang mosunod nga Semitic qoph tan-awa ang mga script sa estilo sa RTL (tuo ngadto sa wala), mao nga sa teknikal kini kinahanglan nga ipakita gikan sa tuo ngadto sa wala. Ang mga web browser sama sa Firefox 57 nagdumala sa linya sa ibabaw sa husto nga paagi. Ang mas simple nga bersyon sa RTL text mao ang pulong nga "Сара"sa Hebreohanon (שרה). Wiki panid sa bidirectional nga mga teksto nag-ingon ang mosunod:

"Daghang mga programa sa kompyuter ang dili makapakita sa bidirectional nga teksto sa husto. Pananglitan, ang Hebreohanong ngalan nga "Sarah" naglangkob sa mga karakter nga sin (ש) (nga makita sa tuo), unya resh (ר) ug sa kataposan siya (ה) (nga makita sa wala)."

Daghang mga terminal ang napakyas niini nga pagsulay: Alacritty, VTE-derived Gnome ug XFCE terminals, urxvt, st ug xterm display "Sara" sa reverse order, nga daw gisulat namo ang ngalan nga "Aras".

Overview sa mga terminal emulator

Ang laing problema sa mga bidirectional nga mga teksto mao nga sila kinahanglan nga ipahiangay sa bisan unsang paagi, labi na kung bahin sa pagsagol sa mga teksto sa RTL ug LTR. Ang mga script sa RTL kinahanglan nga modagan gikan sa tuo nga bahin sa terminal window, apan unsa ang mahitabo sa mga terminal nga default sa LTR English? Kadaghanan kanila walay bisan unsang espesyal nga mekanismo ug gipahiangay ang tanan nga teksto sa wala (lakip ang Konsole). Ang mga eksepsiyon mao ang pterm ug mlterm, nga nagsunod sa mga sumbanan ug nag-right-align sa maong mga linya.

Overview sa mga terminal emulator

Proteksyon sa pagsulod

Ang sunod nga kritikal nga bahin nga akong nahibal-an mao ang proteksyon sa anti-insertion. Bisan kung nahibal-an sa kadaghanan nga ang mga spelling sama sa:

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

mao ang code execution push commands, pipila ka mga tawo ang nahibal-an nga ang mga tinago nga mga sugo mahimong makalusot sa console kung magkopya ug mag-paste gikan sa usa ka web browser, bisan human sa maampingong pagsusi. Verification site Gianna Horna maayo nga nagpakita kung unsa ka dili makadaot ang pagtan-aw sa mando:

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

nahimong ingon nga kasamok kung i-paste gikan sa website ni Horn ngadto sa 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

Giunsa kini paglihok? Ang malisyoso nga code gilakip sa block , nga gibalhin gikan sa panglantaw sa user gamit ang CSS.

Bracketed paste mode tin-aw nga gidisenyo sa pag-neutralize sa maong mga pag-atake. Niini nga mode, gilakip sa mga terminal ang gipapilit nga teksto sa usa ka pares nga espesyal nga mga han-ay sa pag-ikyas aron isulti ang kabhang bahin sa gigikanan sa teksto. Gisultihan niini ang kabhang nga mahimo’g ibaliwala niini ang mga espesyal nga karakter nga mahimo’g naa sa gipapilit nga teksto. Ang tanan nga mga terminal balik sa halangdon nga xterm nagsuporta niini nga bahin, apan ang pag-paste sa Bracketed mode nagkinahanglan og suporta gikan sa shell o aplikasyon nga nagdagan sa terminal. Pananglitan, ang paggamit sa software GNU Readline (parehas nga Bash), kinahanglan usa ka file ~/.inputrc:

set enable-bracketed-paste on

Ikasubo, gipakita usab sa site sa pagsulay sa Horn kung giunsa ang paglaktaw sa kini nga proteksyon pinaagi sa pag-format mismo sa teksto ug sa wala pa matapos ang pag-apply sa Bracketed mode niini. Naglihok kini tungod kay ang pipila nga mga terminal dili husto nga nagsala sa mga han-ay sa pag-ikyas sa wala pa idugang ang ilang kaugalingon. Pananglitan, sa akoa wala gyud nako makompleto ang mga pagsulay sa Konsole bisan sa husto nga pag-configure .inputrc file. Nagpasabot kini nga dali nimo madaot ang configuration sa imong sistema tungod sa dili suportadong aplikasyon o sayop nga pagka-configure nga kabhang. Kini labi ka delikado kung mag-log in sa hilit nga mga server, diin ang mabinantayon nga pag-configure nga trabaho dili kaayo komon, labi na kung daghan ka sa mga hilit nga makina.

Ang usa ka maayong solusyon sa kini nga problema mao ang pag-paste sa pagkumpirma nga plugin alang sa terminal urxvt, nga yanong mangayo og pagtugot sa pagsal-ot sa bisan unsang teksto nga adunay mga bag-ong linya. Wala koy nakit-an nga mas luwas nga kapilian alang sa text attack nga gihulagway ni Horn.

Mga tab ug profile

Usa ka popular nga bahin karon mao ang suporta alang sa usa ka tabbed interface, nga atong ipasabut ingon nga usa ka terminal window nga adunay daghang uban pang mga terminal. Kini nga function lahi alang sa lain-laing mga terminal, ug bisan pa ang tradisyonal nga xterm terminal dili mosuporta sa mga tab, mas modernong terminal inkarnasyon sama sa Xfce Terminal, GNOME Terminal ug Konsole adunay niini nga function. Gisuportahan usab sa Urxvt ang mga tab, apan kung mogamit ka usa ka plugin. Apan sa mga termino sa suporta sa tab mismo, ang Terminator mao ang dili malalis nga lider: dili lamang kini nagsuporta sa mga tab, apan mahimo usab nga maghan-ay sa mga terminal sa bisan unsang han-ay (tan-awa ang hulagway sa ubos).

Overview sa mga terminal emulator

Ang laing bahin sa Terminator mao ang abilidad sa "pag-grupo" niini nga mga tab nga magkauban ug ipadala ang parehas nga mga keystroke sa daghang mga terminal sa parehas nga oras, nga naghatag usa ka krudo nga himan alang sa paghimo sa daghang mga operasyon sa daghang mga server nga dungan. Ang susama nga bahin gipatuman usab sa Konsole. Aron magamit kini nga bahin sa ubang mga terminal, kinahanglan nimong gamiton ang software sa ikatulo nga partido sama sa Cluster nga SSH, xlax o tmux.

Ang mga tab maayo kaayo kung gipares sa mga profile: pananglitan, mahimo kang adunay usa ka tab alang sa email, lain alang sa chat, ug uban pa. Gisuportahan kini pag-ayo sa Konsole Terminal ug GNOME Terminal. Gitugotan sa duha ang matag tab nga awtomatiko nga maglansad sa kaugalingon nga profile. Gisuportahan usab sa Terminator ang mga profile, apan wala ako makit-an nga paagi aron awtomatiko nga ilunsad ang pipila nga mga programa kung magbukas ka usa ka piho nga tab. Ang ubang mga terminal wala'y konsepto sa "profile" sa tanan.

Mga Ruffles

Ang kataposang butang nga akong hisgotan sa unang bahin niining artikuloha mao ang dagway sa mga terminal. Pananglitan ang GNOME, Xfce ug urxvt nagsuporta sa transparency, apan bag-o lang naghulog sa suporta alang sa mga hulagway sa background, nga nagpugos sa pipila ka tiggamit sa pagbalhin ngadto sa terminal Tilix. Sa personal, nalipay ko niini ug kini yano Mga X Source, nga nagtakda sa base set sa mga kolor sa background alang sa urxvt. Bisan pa, ang dili standard nga mga tema sa kolor mahimo usab nga maghimo mga problema. Pananglitan, Solaryzed dili pagtrabaho uban sa mga aplikasyon htop и IPTraf, kay naggamit na sila sa ilang kaugalingong mga kolor.

Orihinal nga VT100 terminal wala nagsuporta sa mga kolor, ug ang mga bag-o kasagaran limitado sa usa ka 256-kolor nga paleta. Alang sa mga advanced nga tiggamit nga nag-istilo sa ilang mga terminal, ang mga pag-aghat sa shell o mga status bar sa komplikado nga mga paagi mahimo’g usa ka makalagot nga limitasyon. Gist mga track kung unsang mga terminal ang adunay suporta nga "Tinuod nga Kolor". Ang akong mga pagsulay nagpamatuod nga ang st, Alacritty ug VTE-based nga mga terminal nagsuporta sa Tinuod nga Kolor nga hingpit. Ang ubang mga terminal dili kaayo maayo niini nga bahin ug, sa pagkatinuod, wala gani magpakita sa 256 ka mga kolor. Sa ubos makita nimo ang kalainan tali sa suporta sa Tinuod nga Kolor sa mga terminal sa GNOME, st ug xterm, nga maayo nga trabaho niini sa ilang 256 color palette, ug urxvt, nga dili lamang mapakyas sa pagsulay, apan nagpakita pa sa pipila ka mga blinking nga mga karakter sa baylo kanila.

Overview sa mga terminal emulator

Ang ubang mga terminal nag-analisar usab sa teksto alang sa mga pattern sa URL aron mahimo nga ma-click ang mga link. Kini magamit sa tanang VTE-derived terminals, samtang ang urxvt nanginahanglan ug espesyal nga plugin nga magbag-o sa mga URL sa usa ka click o gamit ang keyboard shortcut. Ang ubang mga terminal nga akong gisulayan ang mga display URL sa ubang mga paagi.

Sa katapusan, usa ka bag-ong uso sa mga terminal mao ang opsyonalidad sa scroll buffer. Pananglitan, ang st walay scroll buffer; gituohan nga ang user mogamit ug terminal multiplexer sama sa tmux ug GNU Screen.

Ang Alacritty kulang usab sa mga buffer sa backscroll, apan idugang sa dili madugay ang suporta niini tungod sa "daghang feedback" niini nga hilisgutan gikan sa mga tiggamit. Gawas niining mga upstart, ang matag terminal nga akong nasulayan nga akong makit-an nagsuporta sa reverse scrolling.

Mga subtotal

Sa ikaduhang bahin sa materyal (sa orihinal kini mao ang duha ka lain-laing mga artikulo - gibanabana. lane) atong itandi ang performance, paggamit sa memorya ug latency. Apan makita na nato nga ang pipila sa mga terminal nga gikuwestiyon adunay grabeng kakulian. Pananglitan, ang mga tiggamit nga kanunay nga nagtrabaho sa mga script sa RTL mahimong gusto nga ikonsiderar ang mlterm ug pterm, tungod kay mas maayo sila sa pagdumala sa parehas nga mga buluhaton kaysa sa uban. Maayo sab ang performance sa Konsole. Ang mga tiggamit nga wala magtrabaho sa mga script sa RTL mahimong mopili og lain.

Sa mga termino sa pagpanalipod batok sa malisyosong pagsal-ot sa code, ang urxvt nagbarug tungod sa espesyal nga pagpatuman niini sa pagpanalipod batok niini nga matang sa pag-atake, nga morag sayon ​​​​alang kanako. Alang niadtong nangita og pipila ka mga kampana ug whistles, ang Konsole angay tan-awon. Sa katapusan, angay nga hinumdoman nga ang VTE usa ka maayo kaayo nga sukaranan alang sa mga terminal, nga naggarantiya sa suporta sa kolor, pag-ila sa URL, ug uban pa. Sa una nga pagtan-aw, ang default nga terminal nga kauban sa imong paborito nga palibot mahimong makatagbo sa tanan nga mga kinahanglanon, apan biyaan naton kini nga pangutana hangtod nga masabtan naton ang pasundayag.

Ipadayon nato ang panag-istoryahanay


Sa kinatibuk-an, ang paghimo sa mga terminal sa iyang kaugalingon ingon og usa ka halayo nga problema, apan ingon nga kini nahimo, ang uban niini nagpakita sa katingad-an nga taas nga latency alang sa software sa ingon nga sukaranan nga tipo. Sunod usab atong tan-awon kung unsa ang tradisyonal nga gitawag nga "speed" (sa tinuud, kini ang katulin sa pag-scroll) ug pagkonsumo sa memorya sa terminal (uban ang caveat nga dili kini kritikal karon sama sa mga dekada na ang milabay).

Paglangay

Pagkahuman sa usa ka bug-os nga pagtuon sa pasundayag sa terminal, nakahinapos ako nga ang labing hinungdanon nga parameter niini nga bahin mao ang latency (ping). Sa iyang artikulo "Kami nag-imprinta uban ang kalipay" Gitan-aw ni Pavel Fatin ang latency sa lain-laing mga text editor ug gipasabot nga ang mga terminal niining bahina mahimong mas hinay kay sa pinakapaspas nga mga text editor. Kini nga pahiwatig nga sa katapusan nagdala kanako sa pagpadagan sa akong kaugalingon nga mga pagsulay ug pagsulat niini nga artikulo.

Apan unsa ang latency, ug nganong importante kaayo kini? Sa iyang artikulo, gihubit kini ni Fatin nga "ang paglangan tali sa pagpindot sa usa ka yawe ug ang katugbang nga pag-update sa screen" ug gikutlo. "Giya sa Human-Computer Interaction", nga nag-ingon: “Ang pagkalangan sa biswal nga feedback sa display sa kompiyuter dunay hinungdanong epekto sa panggawi ug katagbawan sa typist.”

Gipatin-aw ni Fatin nga kini nga ping adunay mas lawom nga mga sangputanan kaysa sa katagbawan lamang: "ang pag-type mahimong mas hinay, daghang mga sayup ang mahitabo, ug ang tensiyon sa mata ug kaunoran nagdugang." Sa laing pagkasulti, ang usa ka dako nga paglangan mahimong mosangpot sa mga typo ug usab ubos nga kalidad sa code, tungod kay kini mosangpot sa dugang nga cognitive load sa utok. Apan ang labi ka daotan mao nga ang ping "nagpataas sa kakapoy sa mata ug kaunuran," nga ingon gipasabut pag-uswag sa mga kadaot sa trabaho sa umaabot (Dayag, ang tagsulat nagpasabot sa mga problema sa mga kaunoran sa mga mata, likod, bukton ug, siyempre, panan-awon - gibanabana. lane) tungod sa balikbalik nga stress.

Ang pipila niini nga mga epekto nahibal-an na sa dugay nga panahon, ug ang mga resulta research, nga gipatik balik niadtong 1976 diha sa magasing Ergonomics, nag-ingon nga ang paglangan sa 100 ka milliseconds "makadaot sa katulin sa pag-type." Bag-ohay lang, gipaila ang Giya sa Gumagamit sa GNOME madawat nga oras sa pagtubag sa 10 milliseconds, ug kung mopadayon ka, nan Microsoft Research nagpakita nga ang 1 millisecond maayo.

Gipahigayon ni Fatin ang iyang mga pagsulay sa mga text editor; naghimo siya og madaladala nga instrumento nga gitawag Typometer, nga akong gigamit sa pagsulay sa ping sa terminal emulators. Hinumdomi nga ang pagsulay gihimo sa simulation mode: sa pagkatinuod, kinahanglan natong tagdon ang input (keyboard, USB controller, ug uban pa) ug output (video card buffer, monitor) latency. Sumala sa Fatin, sa kasagaran nga mga pag-configure kini mga 20 ms. Kung ikaw adunay kagamitan sa pagdula, mahimo nimong makab-ot kini nga numero sa 3 milliseconds lang. Tungod kay aduna na kitay ingon ka paspas nga hardware, ang aplikasyon dili kinahanglan nga magdugang sa kaugalingon nga latency. Ang katuyoan ni Fatin mao ang pagdala sa latency sa aplikasyon sa 1 millisecond, o bisan sa pagkab-ot sa pag-dial nga wala masukod nga paglangan, giunsa sa IntelliJ IDEA 15.

Ania ang mga resulta sa akong mga pagsukod, ingon man ang pipila sa mga resulta ni Fatin, aron ipakita nga ang akong eksperimento miuyon sa iyang mga pagsulay:

Overview sa mga terminal emulator

Ang una nga butang nga nakapahadlok kanako mao ang mas maayo nga oras sa pagtubag sa mga tigulang nga programa sama sa xterm ug mlterm. Uban sa pinakagrabe nga register latency (2,4 ms), mas maayo ang ilang performance kaysa sa pinakapaspas nga modernong terminal (10,6 ms para sa st). Walay modernong terminal nga ubos sa 10 millisecond threshold. Sa partikular, ang Alacritty napakyas sa pagtagbo sa "labing paspas nga terminal emulator nga magamit" nga pag-angkon, bisan kung ang mga marka niini milambo sukad sa una nga pagsusi niini sa 2017. Sa pagkatinuod, ang mga tagsulat sa proyekto nahibalo sa sitwasyon ug nagtrabaho aron mapaayo ang display. Kinahanglan usab nga matikdan nga ang Vim nga naggamit sa GTK3 usa ka han-ay sa kadako nga mas hinay kaysa sa GTK2 nga katugbang niini. Gikan niini makahinapos kita nga ang GTK3 nagmugna og dugang nga latency, ug kini makita sa tanang ubang mga terminal nga naggamit niini (Terminator, Xfce4 Terminal ug GNOME Terminal).

Bisan pa, ang mga kalainan mahimong dili mamatikdan sa mata. Sama sa gipatin-aw ni Fatin, "dili nimo kinahanglan nga mahibal-an ang paglangan aron kini adunay epekto kanimo." Si Fatin nagpasidaan usab mahitungod sa standard deviation: "bisan unsang mga kasamok sa latency (jitter) makamugna og dugang nga kapit-os tungod sa ilang dili matag-an."

Overview sa mga terminal emulator

Ang graph sa ibabaw gikuha sa lunsay nga Debian 9 (stretch) nga adunay i3 window manager. Kini nga palibot naghimo sa labing kaayo nga mga resulta sa mga pagsulay sa latency. Ingon nga kini nahimo, ang GNOME nagmugna usa ka dugang nga ping nga 20 ms alang sa tanan nga mga pagsukod. Usa ka posible nga katin-awan alang niini mao ang presensya sa mga programa nga adunay dungan nga pagproseso sa mga panghitabo sa pag-input. Si Fatin naghatag ug pananglitan sa maong kaso Workrave, nga nagdugang usa ka paglangan pinaagi sa pagproseso sa tanan nga mga panghitabo sa pag-input nga dungan. Sa kasagaran, ang GNOME adunay usab usa ka window manager Mutter, nga nagmugna og dugang nga layer sa buffering, nga makaapekto sa ping ug makadugang sa labing menos 8 milliseconds sa latency.

Overview sa mga terminal emulator

Katulin sa pag-scroll

Ang sunod nga pagsulay usa ka tradisyonal nga "speed" o "bandwidth" nga pagsulay, nga nagsukod kung unsa kadali ang terminal maka-scroll sa usa ka panid samtang nagpakita sa daghang mga teksto sa screen. Ang mga mekaniko sa pagsulay lainlain; ang orihinal nga pagsulay mao ang paghimo lamang sa parehas nga string sa teksto gamit ang seq command. Ang ubang mga pagsulay naglakip sa Thomas E. Dickey's (xterm maintainer) nga pagsulay, nga balik-balik ang terminfo.src file gi-download. Sa laing pagrepaso sa performance sa terminal Den Luu naggamit sa base32 nga gi-encode nga string sa random bytes, nga mao ang output sa terminal gamit ang iring. Giisip ni Luu ang ingon nga pagsulay nga "ingon nga wala’y kapuslanan nga sukaranan sama sa mahunahuna sa usa" ug nagsugyot nga gamiton ang tubag sa terminal ingon usa ka panguna nga sukatan. Gitawag usab ni Dickey ang iyang pagsulay nga nagpahisalaag. Bisan pa, ang duha nga mga tagsulat miila nga ang terminal window bandwidth mahimong usa ka isyu. Nadiskobrehan ni Luu ang Emacs Eshell nga nagyelo sa dihang nagpakita sa dagkong mga file, ug gi-optimize ni Dickey ang terminal aron mawala ang kahinay sa biswal sa xtrerm. Busa aduna gihapoy merito sa kini nga pagsulay, apan tungod kay ang proseso sa paghubad lahi kaayo gikan sa terminal hangtod sa terminal, mahimo usab kini gamiton ingon usa ka sangkap sa pagsulay aron masulayan ang ubang mga parameter.

Overview sa mga terminal emulator

Dinhi atong makita ang rxvt ug st pull sa unahan sa kompetisyon, gisundan sa mas bag-o nga Alacritty, nga gidisenyo nga adunay pagtutok sa pasundayag. Sunod mao ang Xfce (pamilya sa VTE) ug Konsole, nga hapit doble nga paspas. Ang katapusan mao ang xterm, nga lima ka beses nga mas hinay kaysa rxvt. Atol sa pagsulay, ang xterm usab kusog kaayo, nga naghimo sa pagpasa sa teksto nga lisud makita bisan kung kini parehas nga linya. Ang Konsole paspas, apan kini lisud usahay: ang display mag-freeze matag karon ug unya, magpakita sa partial nga teksto o dili kini ipakita. Ang ubang mga terminal tin-aw nga nagpakita sa mga kuwerdas, lakip ang st, Alacritty, ug rxvt.

Gipasabut ni Dickey nga ang mga kalainan sa pasundayag tungod sa disenyo sa mga scroll buffer sa lainlaing mga terminal. Sa partikular, giakusahan niya ang rxvt ug uban pang mga terminal nga "dili pagsunod sa kinatibuk-ang mga lagda":

"Dili sama sa xterm, ang rxvt wala mosulay sa pagpakita sa tanan nga mga update. Kung kini mahulog sa luyo, kini magdumili sa pipila ka mga update aron maabut. Kini adunay mas dako nga epekto sa dayag nga scrolling speed kay sa internal memory organization. Ang usa ka disbentaha mao nga ang ASCII animation medyo dili tukma."

Aron ayohon kining gitan-aw nga xterm sluggishness, gisugyot ni Dickey ang paggamit sa kapanguhaan paspasScroll, nga nagtugot sa xterm nga isalikway ang pipila ka mga pag-update sa screen aron makasunod sa dagan. Gikumpirma sa akong mga pagsulay nga ang fastScroll nagpauswag sa pasundayag ug nagdala sa xterm nga parehas sa rxvt. Kini, bisan pa, usa ka medyo bagis nga saklay, ingon nga si Dickey mismo nagpatin-aw: "usahay xterm - sama sa konsole - morag mohunong samtang kini naghulat alang sa usa ka bag-ong set sa mga update sa screen human ang pipila gikuha." Niini nga ugat, ingon og ang ubang mga terminal nakakaplag sa pinakamaayo nga pagkompromiso tali sa katulin ug pagpakita sa integridad.

Pagkonsumo sa kahinguhaan

Dili igsapayan kung makatarunganon nga ikonsiderar ang katulin sa pag-scroll ingon usa ka sukatan sa pasundayag, kini nga pagsulay nagtugot kanamo sa pag-simulate sa load sa mga terminal, nga sa baylo nagtugot kanamo sa pagsukod sa ubang mga parameter sama sa memorya o paggamit sa disk. Ang mga sukatan nakuha pinaagi sa pagpadagan sa espesipikong pagsulay seq ubos sa pagmonitor sa proseso sa Python. Gikolekta niya ang datos sa metro getrusage() alang sa ru_maxrss, kantidad ru_oublock и ru_inblock ug usa ka yano nga timer.

Overview sa mga terminal emulator

Sa kini nga pagsulay, ang ST nag-una nga adunay labing ubos nga average nga konsumo sa panumduman nga 8 MB, nga dili ikatingala nga gikonsiderar nga ang panguna nga ideya sa disenyo kay kayano. Ang mlterm, xterm ug rxvt nagkonsumo og gamay pa - mga 12 MB. Ang laing talagsaong resulta mao ang Alacritty, nga nagkinahanglan og 30 MB sa pagdagan. Pagkahuman adunay mga terminal sa pamilyang VTE nga adunay mga numero gikan sa 40 hangtod 60 MB, nga daghan kaayo. Kini nga konsumo mahimong ipasabut sa kamatuoran nga kini nga mga terminal naggamit sa mas taas nga lebel nga mga librarya, pananglitan, GTK. Ang Konsole moabut sa katapusan nga adunay usa ka dako nga 65MB nga konsumo sa panumduman sa panahon sa mga pagsulay, bisan kung kini mahimong makatarunganon pinaagi sa labi ka halapad nga mga bahin niini.

Kung itandi sa miaging mga resulta nga nakuha napulo ka tuig na ang milabay, ang tanan nga mga programa nagsugod sa pagkonsumo sa labi pa nga memorya. Ang Xterm kaniadto nanginahanglan og 4 MB, apan karon nanginahanglan kini og 15 MB sa pagsugod pa lang. Adunay susama nga pagtaas sa konsumo alang sa rxvt, nga karon nanginahanglan 16 MB gikan sa kahon. Ang Xfce Terminal adunay 34 MB, nga tulo ka pilo nga mas dako kaysa kaniadto, apan ang GNOME Terminal nagkinahanglan lamang ug 20 MB. Siyempre, ang tanan nga nangaging mga pagsulay gihimo sa 32-bit nga arkitektura. Sa LCA 2012 Rusty Russell giingnan, nga adunay daghan pang maliputon nga mga rason nga makapatin-aw sa pagtaas sa konsumo sa memorya. Sa ingon niana, kita karon nagpuyo sa usa ka panahon diin kita adunay gigabytes nga panumduman, mao nga kita modumala sa bisan unsang paagi.

Bisan pa, dili nako malikayan nga mobati nga ang paggahin ug dugang nga memorya sa usa ka butang nga sukaranan sama sa terminal usa ka pag-usik sa mga kapanguhaan. Kini nga mga programa kinahanglan nga ang pinakagamay sa pinakagamay, kinahanglan nga makadagan sa bisan unsang "kahon", bisan sa usa ka kahon sa sapatos, kung kita moabut sa punto diin sila kinahanglan nga masangkapan sa mga sistema sa Linux (ug nahibal-an nimo nga kini mahitabo. . Apan sa kini nga mga numero, ang paggamit sa memorya mahimong usa ka isyu sa umaabot sa bisan unsang palibot nga nagpadagan sa daghang mga terminal gawas sa pipila nga labing gaan ug labing limitado sa mga kapabilidad. Aron mabayran kini, ang GNOME Terminal, Konsole, urxvt, Terminator ug Xfce Terminal adunay Daemon mode nga nagtugot kanimo sa pagkontrolar sa daghang mga terminal pinaagi sa usa ka proseso, nga naglimite sa ilang konsumo sa memorya.

Overview sa mga terminal emulator

Atol sa akong mga pagsulay, nakaabot ko sa lain nga wala damha nga resulta bahin sa disk read-write: Nagdahum ako nga wala'y bisan unsa nga makita dinhi, apan nahimo nga pipila ka mga terminal ang nagsulat sa pinakadaghang data sa disk. Mao nga, ang VTE library sa tinuud nagtipig usa ka scroll buffer sa disk (kini nga bahin Namatikdan kaniadtong 2010, ug kini nahitabo gihapon). Apan dili sama sa mga daan nga pagpatuman, karon labing menos kini nga datos gi-encrypt gamit ang AES256 GCM (gikan sa bersyon 0.39.2). Apan usa ka makatarunganon nga pangutana ang mitungha: unsa ang labi ka espesyal sa VTE library nga nanginahanglan usa ka dili standard nga pamaagi sa pagpatuman...

konklusyon

Sa una nga bahin sa artikulo, nahibal-an namon nga ang mga terminal nga nakabase sa VTE adunay maayo nga hugpong sa mga bahin, apan karon nakita namon nga kini adunay pipila nga mga gasto sa pasundayag. Karon ang memorya dili usa ka isyu tungod kay ang tanan nga mga terminal sa VTE makontrol pinaagi sa usa ka proseso sa Daemon, nga naglimite sa ilang gana. Bisan pa, ang mga daan nga sistema nga adunay pisikal nga mga limitasyon sa kantidad sa RAM ug mga buffer sa kernel mahimo pa nga magkinahanglan sa nauna nga mga bersyon sa mga terminal, tungod kay gamay ra ang ilang gigamit nga mga kapanguhaan. Bisan tuod ang mga terminal sa VTE maayo ang nahimo sa throughput (scrolling) nga mga pagsulay, ang ilang display latency labaw sa threshold nga gitakda sa GNOME User Guide. Ang mga nag-develop sa VTE kinahanglan tingali nga tagdon kini. Kung atong tagdon nga bisan alang sa mga bag-ong tiggamit sa Linux nga nakasugat sa usa ka terminal dili kalikayan, mahimo nila kini nga mas mahigalaon sa user. Alang sa mga eksperyensiyado nga mga geeks, ang pagbalhin gikan sa default nga terminal mahimo’g nagpasabut nga dili kaayo pilay sa mata ug ang abilidad sa paglikay sa umaabot nga mga kadaot ug mga sakit nga may kalabotan sa trabaho tungod sa taas nga mga sesyon sa trabaho. Ikasubo, ang daan nga xterm ug mlterm lamang ang nagdala kanato sa magic ping threshold nga 10 milliseconds, nga dili madawat sa kadaghanan.

Gipakita usab sa mga pagsukod sa benchmark nga tungod sa pag-uswag sa mga graphical nga palibot sa Linux, ang mga developer kinahanglan nga maghimo daghang mga pagkompromiso. Ang ubang mga tiggamit tingali gusto nga motan-aw sa regular nga mga manedyer sa bintana samtang naghatag sila og mahinungdanong pagkunhod sa ping. Ikasubo, dili mahimo ang pagsukod sa latency alang sa Wayland: ang Typometer nga programa nga akong gigamit gihimo alang sa kung unsa ang gidesinyo sa Wayland aron mapugngan: pagpaniid sa ubang mga bintana. Nanghinaut ko nga ang pag-composite sa Wayland mas maayo kay sa X.org, ug nanghinaut usab ako nga sa umaabot adunay makakita og paagi sa pagsukod sa latency niini nga palibot.

Source: www.habr.com

Idugang sa usa ka comment