Kèk mo nan biwo tradiksyon nou an: anjeneral tout moun fè efò pou tradui dènye materyèl ak piblikasyon yo, epi nou pa gen okenn eksepsyon. Men, tèminal yo pa yon bagay ki mete ajou yon fwa pa semèn. Se poutèt sa, nou te tradui pou ou yon atik Antoine Beaupré, ki te pibliye nan sezon prentan 2018: malgre konsiderab "laj" li yo pa estanda modèn, nan opinyon nou, materyèl la pa te pèdi enpòtans li ditou. Anplis de sa, sa a te orijinèlman yon seri de atik, men nou te deside konbine yo nan yon sèl gwo pòs.
Tèminal yo gen yon plas espesyal nan istwa òdinatè, men nan dènye deseni yo te fòse yo siviv ansanm ak liy lòd la kòm entèfas grafik vin omniprésente.
Gen kèk tèminal ki gen twou sekirite kareman etone, plis pifò gen yon seri fonksyon konplètman diferan, ki soti nan sipò pou yon koòdone onglet nan scripting. Malgre ke nou
Men tèminal mwen revize yo:
Sa yo ka pa dènye vèsyon yo, paske mwen te limite nan bati ki estab nan moman an ekri, ke mwen te kapab woule sou Debian 9 oswa Fedora 27. Sèl eksepsyon nan se Alacritty. Li se yon desandan tèminal GPU akselere epi li ekri nan yon lang etranj ak nouvo pou travay sa a - Rust. Mwen eskli tèminal entènèt nan revizyon mwen an (ki gen ladan sa yo sou
Unicode sipò
Mwen te kòmanse tès mwen yo ak sipò Unicode. Premye tès la nan tèminal yo te montre fisèl Unicode soti nan
Pa default, xterm itilize klasik "fiks" font la, ki, dapre
Ekran sa yo te pran nan Fedora 27, paske li te bay pi bon rezilta pase Debian 9, kote kèk vèsyon ki pi ansyen nan tèminal (espesyalman mlterm) pa t 'kapab jere polis byen. Chans sa a te fiks nan vèsyon pita.
Koulye a, remake ki jan liy lan parèt nan xterm. Li sanble ke senbòl la Mem ak semitik sa yo
"Anpil pwogram òdinatè pa ka montre tèks bidireksyon kòrèkteman. Pou egzanp, non an ebre "Sarah" konsiste de karaktè yo sin (ש) (ki parèt sou bò dwat la), Lè sa a, resh (ר) epi finalman li (ה) (ki ta dwe parèt sou bò gòch la)."
Anpil tèminal echwe tès sa a: Alacritty, terminaux Gnome ki sòti nan VTE ak XFCE, urxvt, st ak xterm montre "Sara" nan lòd ranvèse, kòm si nou te ekri non an kòm "Aras".
Yon lòt pwoblèm ak tèks bidireksyon se ke yo bezwen yo dwe aliyen yon jan kanmenm, espesyalman lè li rive melanje tèks RTL ak LTR. Scripts RTL yo ta dwe kouri soti nan bò dwat la nan fenèt tèminal la, men ki sa ki ta dwe rive pou tèminal ki default nan LTR angle? Pifò nan yo pa gen okenn mekanis espesyal ak aliman tout tèks sou bò gòch la (ki gen ladan nan Konsole). Eksepsyon yo se pterm ak mlterm, ki konfòme yo ak estanda yo ak aliman dwat liy sa yo.
Pwoteksyon ensèsyon
Pwochen karakteristik kritik mwen te idantifye se pwoteksyon anti-ensèsyon. Malgre ke li se lajman konnen ke òneman tankou:
$ curl http://example.com/ | sh
se kòd ekzekisyon pouse kòmandman, kèk moun konnen ke kòmandman kache ka fofile nan konsole a lè kopye ak kole soti nan yon navigatè entènèt, menm apre enspeksyon atansyon.
git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git
vire nan tankou yon nwuizans lè kole soti nan sit entènèt Horn nan tèminal la:
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
Ki jan li fonksyone? Kòd move enkli nan blòk la , ki deplase soti nan vi itilizatè a lè l sèvi avèk CSS.
set enable-bracketed-paste on
Malerezman, sit tès Horn la montre tou ki jan yo kontoune pwoteksyon sa a atravè fòma tèks la tèt li epi prematireman fini aplike mòd Bracketed nan li. Sa a travay paske kèk tèminal pa kòrèkteman filtre sekans chape anvan yo ajoute pwòp yo. Pa egzanp, nan mwen mwen pa t janm kapab konplete avèk siksè tès Konsole yo menm ak konfigirasyon kòrèk la .antre dosye. Sa vle di ke ou ka fasilman jwenn konfigirasyon sistèm ou a pèvèti akòz yon aplikasyon ki pa sipòte oswa yon kokiy ki mal configuré. Sa a se espesyalman danjere lè w konekte nan serveurs aleka, kote travay konfigirasyon atansyon se mwens komen, espesyalman si ou gen anpil machin aleka sa yo.
Yon bon solisyon a pwoblèm sa a se Plugin konfimasyon keratin pou tèminal la urxvt, ki tou senpleman mande pèmisyon pou mete nenpòt tèks ki gen nouvo liy. Mwen pa jwenn yon opsyon ki pi an sekirite pou atak tèks Horn dekri a.
Onglet ak pwofil
Yon karakteristik popilè kounye a se sipò pou yon koòdone ongle, ke nou pral defini kòm yon fenèt tèminal ki gen plizyè lòt tèminal. Fonksyon sa a diferan pou tèminal diferan, e byenke tèminal xterm tradisyonèl yo pa sipòte onglet ditou, enkarnasyon tèminal ki pi modèn tankou Xfce Terminal, GNOME Terminal ak Konsole gen fonksyon sa a. Urxvt sipòte tou onglè, men sèlman si ou itilize yon plugin. Men, an tèm de sipò tab tèt li, Terminator se lidè enkonteste: li pa sèlman sipòte onglè, men li ka tou fè aranjman pou tèminal nan nenpòt lòd (gade imaj anba a).
Yon lòt karakteristik nan Terminator se kapasite nan "groupe" onglet sa yo ansanm epi voye menm frap yo nan tèminal miltip an menm tan an, bay yon zouti brit pou fè operasyon esansyèl sou plizyè serveurs ansanm. Yon karakteristik menm jan an tou aplike nan Konsole. Pou itilize karakteristik sa a nan lòt tèminal, ou dwe itilize lojisyèl twazyèm pati tankou
Onglet yo travay espesyalman byen lè yo asosye ak pwofil: pou egzanp, ou ka gen yon tab pou imèl, yon lòt pou chat, ak sou sa. Konsole Tèminal ak Tèminal GNOME sipòte sa a byen. Tou de pèmèt chak tab otomatikman lanse pwòp pwofil li. Terminator sipòte tou pwofil, men mwen pa t 'kapab jwenn yon fason yo otomatikman lanse sèten pwogram lè ou louvri yon tab espesifik. Lòt tèminal pa gen okenn konsèp nan "pwofil" nan tout.
Volan
Dènye bagay mwen pral kouvri nan premye pati atik sa a se aparans tèminal yo. Pa egzanp, GNOME, Xfce ak urxvt sipòte transparans, men dènyèman te abandone sipò pou imaj background, fòse kèk itilizatè yo chanje nan tèminal la.
Gen kèk tèminal tou analize tèks pou modèl URL yo fè lyen klike sou. Sa a aplike a tout tèminal ki sòti nan VTE, pandan y ap urxvt mande pou yon plugin espesyal ki ta transfòme URL sou yon klike oswa lè l sèvi avèk yon chemen kout klavye. Lòt tèminal mwen te teste adrès URL yo nan lòt fason.
Finalman, yon nouvo tandans nan tèminal se opsyonèl nan tanpon woulo liv la. Pou egzanp, st pa gen okenn tanpon woulo liv; li sipoze ke itilizatè a pral sèvi ak yon multiplexeur tèminal tankou tmux ak
Alacritty tou manke backscroll tanpon, men
Sou-total
Nan dezyèm pati a nan materyèl la (nan orijinal la sa yo te de atik diferan - approx. liy) nou pral konpare pèfòmans, itilizasyon memwa ak latansi. Men, nou deja wè ke kèk nan tèminal yo nan kesyon yo gen enpèfeksyon grav. Pou egzanp, itilizatè ki travay regilyèman ak scripts RTL yo ka vle konsidere mlterm ak pterm, paske yo pi bon nan manyen travay menm jan an pase lòt moun. Konsole tou fè byen. Itilizatè ki pa travay ak scripts RTL yo ka chwazi yon lòt bagay.
An tèm de pwoteksyon kont ensèsyon kòd move, urxvt kanpe deyò paske nan aplikasyon espesyal li nan pwoteksyon kont sa a kalite atak, ki sanble definitivman pratik pou mwen. Pou moun kap chèche kèk klòch ak sifle, Konsole vo yon gade. Finalman, li vo anyen ke VTE se yon baz ekselan pou tèminal, ki garanti sipò koulè, rekonesans URL, ak sou sa. Nan premye gade, tèminal default ki vini ak anviwònman pi renmen ou a ka satisfè tout kondisyon yo, men ann kite kesyon sa a louvri jiskaske nou konprann pèfòmans lan.
Ann kontinye konvèsasyon an
An jeneral, pèfòmans tèminal yo nan tèt li ka sanble tankou yon pwoblèm lwen-chache, men kòm li vire soti, kèk nan yo montre latansi etonan segondè pou lojisyèl nan yon kalite fondamantal konsa. Epitou pwochen nou pral gade nan sa ki tradisyonèlman rele "vitès" (an reyalite, sa a se vitès la defile) ak konsomasyon memwa nan tèminal la (ak opozisyon an ke sa a se pa osi kritik jodi a jan li te ye dè dekad de sa).
Reta
Apre yon etid apwofondi sou pèfòmans tèminal, mwen te rive nan konklizyon ke paramèt ki pi enpòtan nan sans sa a se latansi a (ping). Nan atik li a
Men, ki sa ki latansi, e poukisa li tèlman enpòtan? Nan atik li a, Fatin te defini li kòm "reta ant peze yon kle ak aktyalizasyon ekran ki koresponn lan" epi li te site
Fatin eksplike ke ping sa a gen pi gwo konsekans pase jis satisfaksyon: "tape vin pi dousman, plis erè rive, epi tansyon nan je ak nan misk ogmante." Nan lòt mo, yon gwo reta ka mennen nan typos epi tou pi ba bon jan kalite kòd, kòm li mennen nan plis chaj mantal sou sèvo a. Men, sa ki pi mal se ke ping "ogmante je ak souch nan misk," ki sanble vle di.
Gen kèk nan efè sa yo te konnen pou yon tan long, ak rezilta yo
Fatin te fè tès li sou editè tèks; li te kreye yon enstriman pòtab ki rele
Men rezilta mezi mwen yo, ansanm ak kèk rezilta Fatin yo, pou montre eksperyans mwen an dakò ak tès li yo:
Premye bagay ki te frape m 'te pi bon tan repons nan pwogram ki pi gran tankou xterm ak mlterm. Avèk latansi enskri ki pi mal la (2,4 ms), yo te fè pi bon pase tèminal ki pi rapid modèn (10,6 ms pou st). Pa gen tèminal modèn ki tonbe anba papòt 10 milisgond la. An patikilye, Alacritty echwe pou satisfè reklamasyon "pi rapid emulateur tèminal ki disponib", byenke nòt li yo te amelyore depi premye revizyon li an 2017. Vreman vre, otè yo nan pwojè a
Sepandan, diferans yo ka pa aparan nan je a. Jan Fatin eksplike, "ou pa bezwen konnen reta a pou li gen yon efè sou ou." Fatin tou avèti sou devyasyon estanda: "nenpòt latwoublay nan latansi (jitter) kreye plis estrès akòz enprevizib yo."
Se graf ki pi wo a pran sou Debian 9 pi (detire) ak
Scroll vitès
Pwochen tès la se yon tès tradisyonèl "vitès" oswa "bandwidth", ki mezire konbyen vit tèminal la ka woule yon paj pandan y ap montre gwo kantite tèks sou ekran an. Mekanik tès la varye; tès orijinal la te senpleman jenere menm fisèl tèks la lè l sèvi avèk lòd seq la. Lòt tès yo enkli tès Thomas E. Dickey a (xterm keeper), ki te repete
Isit la nou wè rxvt a ak st rale devan konpetisyon an, ki te swiv pa Alacritty a pi nouvo, ki fèt ak yon konsantre sou pèfòmans. Apre yo se Xfce (fanmi VTE) ak Konsole, ki prèske de fwa pi vit. Dènye se xterm, ki se senk fwa pi dousman pase rxvt. Pandan tès la, xterm tou rid anpil, sa ki fè pase tèks difisil pou wè menm si se te menm liy lan. Konsole te rapid, men li te difisil pafwa: ekspozisyon an ta friz de tan zan tan, montre tèks pasyèl oswa pa montre li ditou. Lòt tèminal yo montre kòd klèman, tankou st, Alacritty, ak rxvt.
Dickey eksplike ke diferans ki genyen nan pèfòmans yo se akòz desen an nan tanpon woulo liv nan tèminal diferan. An patikilye, li akize rxvt ak lòt tèminal yo "pa swiv règ jeneral yo":
“Kontrèman ak xterm, rxvt pa t eseye montre tout mizajou. Si li tonbe dèyè, li pral refize kèk mizajou ratrape. Sa a te gen yon pi gwo enpak sou vitès defile aparan pase sou òganizasyon memwa entèn yo. Yon dezavantaj te ke animasyon ASCII la te yon ti jan enpresif."
Pou ranje sa a paresseux xterm konnen, Dickey sijere itilize resous la
Konsomasyon resous
Kèlkeswa si li fè sans pou konsidere vitès defile kòm yon metrik pèfòmans, tès sa a pèmèt nou simulation chaj la sou tèminal yo, ki an vire pèmèt nou mezire lòt paramèt tankou memwa oswa itilizasyon disk. Paramèt yo te jwenn nan kouri tès la espesifye sek anba siveyans pwosesis Python. Li te kolekte done mèt
Nan tès sa a, ST a pran premye plas ak pi ba konsomasyon memwa mwayèn nan 8 MB, sa ki pa etone konsidere ke lide prensipal la nan konsepsyon an se senplisite. mlterm, xterm ak rxvt konsome yon ti kras plis - apeprè 12 MB. Yon lòt rezilta remakab se Alacritty, ki mande 30 MB pou kouri. Lè sa a, gen tèminal nan fanmi an VTE ak figi soti nan 40 a 60 MB, ki se byen anpil. Konsomasyon sa a ka eksplike pa lefèt ke tèminal sa yo sèvi ak bibliyotèk pi wo nivo, pou egzanp, GTK. Konsole vini nan dènye ak yon kolosal 65MB nan konsomasyon memwa pandan tès yo, byenke sa a ka jistifye pa seri trè laj li yo nan karakteristik.
Konpare ak rezilta anvan yo te jwenn dis ane de sa, tout pwogram yo te kòmanse konsome notables plis memwa. Xterm te itilize 4 MB, men kounye a li mande pou 15 MB jis nan demaraj. Gen yon ogmantasyon menm jan an nan konsomasyon pou rxvt, ki kounye a mande pou 16 MB soti nan bwat la. Tèminal Xfce pran 34 MB, ki se twa fwa pi gwo pase anvan, men Tèminal GNOME mande sèlman 20 MB. Natirèlman, tout tès anvan yo te fèt sou achitekti 32-bit. Nan LCA 2012 Rusty Russell
Sepandan, mwen pa ka ede men santi ke allocation plis memwa nan yon bagay ki fondamantal tankou tèminal la se yon fatra nan resous. Pwogram sa yo ta dwe pi piti nan pi piti a, yo ta dwe kapab kouri sou nenpòt "bwat", menm yon bwat soulye, si nou janm rive nan pwen kote yo bezwen ekipe ak sistèm Linux (epi ou konnen ke li pral konsa. ). Men, ak nimewo sa yo, itilizasyon memwa ap vin yon pwoblèm nan tan kap vini an nan nenpòt anviwònman k ap kouri plizyè tèminal lòt pase kèk nan kapasite ki pi lejè ak ki pi limite. Pou konpanse pou sa, GNOME Terminal, Konsole, urxvt, Terminator ak Xfce Terminal gen yon mòd Daemon ki pèmèt ou kontwole plizyè tèminal atravè yon sèl pwosesis, limite konsomasyon memwa yo.
Pandan tès mwen yo, mwen te rive jwenn yon lòt rezilta inatandi konsènan disk lekti-ekri: mwen te espere pa wè anyen ditou isit la, men li te tounen soti ke kèk tèminal ekri done ki pi volumineuz sou disk. Se konsa, bibliyotèk VTE aktyèlman kenbe yon tanpon woulo liv sou disk (karakteristik sa a
Konklizyon
Nan premye pati nan atik la, nou te jwenn ke tèminal ki baze sou VTE gen yon seri bon nan karakteristik, men kounye a nou wè ke sa a vini ak kèk pri pèfòmans. Koulye a, memwa se pa yon pwoblèm paske tout tèminal VTE yo ka kontwole atravè yon pwosesis Daemon, ki limite apeti yo. Sepandan, pi gran sistèm ki gen limit fizik sou kantite RAM ak nwayo tanpon ka toujou bezwen vèsyon pi bonè nan tèminal, paske yo konsome anpil mwens resous. Malgre ke tèminal VTE yo te fè byen nan tès debi (defile), latansi ekspozisyon yo pi wo pase papòt ki tabli nan Gid Itilizatè GNOME la. Devlopè VTE ta dwe pwobableman pran sa a an kont. Si nou pran an kont ke menm pou itilizatè Linux inisyasyon rankontre yon tèminal se inevitab, yo ka fè li pi fasil itilizatè. Pou geeks ki gen eksperyans, chanje soti nan tèminal la default ka menm vle di mwens souch nan je ak kapasite nan evite blesi ak maladi nan lavni ki gen rapò ak travay akòz sesyon travay long. Malerezman, se sèlman ansyen xterm ak mlterm ki mennen nou nan papòt ping majik 10 milisgond, ki pa akseptab pou anpil moun.
Mezi referans yo te montre tou ke akòz devlopman nan anviwònman grafik Linux, devlopè yo te oblije fè yon kantite konpwomi. Gen kèk itilizatè ki ka vle gade manadjè fenèt regilye yo menm jan yo bay rediksyon ping enpòtan. Malerezman, li pa t posib pou mezire latansi pou Wayland: pwogram Typometer mwen te itilize a te kreye pou sa Wayland fèt pou anpeche: espyonaj sou lòt fenèt yo. Mwen espere ke Wayland compositing fè pi bon pase X.org, epi mwen espere tou ke nan lavni an yon moun pral jwenn yon fason yo mezire latansi nan anviwònman sa a.
Sous: www.habr.com