E puer Wierder vun eisem Iwwersetzungsbüro: normalerweis beméit jiddereen sech fir déi lescht Materialien a Publikatiounen ze iwwersetzen, a mir si keng Ausnahm. Awer Terminaler sinn net eppes wat eemol d'Woch aktualiséiert gëtt. Dofir hu mir Iech en Artikel vum Antoine Beaupré iwwersat, deen am Fréijoer 2018 publizéiert gouf: trotz sengem bedeitende "Alter" no modernen Normen, huet d'Material eiser Meenung no guer net seng Relevanz verluer. Ausserdeem war dëst ursprénglech eng Serie vun zwee Artikelen, awer mir hu beschloss se an ee grousse Post ze kombinéieren.
Terminals hunn eng speziell Plaz an der Computergeschicht, awer an de leschte Joerzéngte si se gezwongen niewent der Kommandozeil ze iwwerliewen wéi grafesch Interfaces ubiquitär ginn.
E puer Terminaler hunn direkt iwwerraschend Sécherheetslächer, plus déi meescht hunn e komplett anere Set vu Funktiounen, vun Ënnerstëtzung fir eng Tabs-Interface bis Skript. Obwuel mir
Hei sinn d'Terminaler déi ech iwwerpréift hunn:
Dëst sinn vläicht net déi lescht Versiounen, well ech war limitéiert op stabil Builds am Moment vum Schreiwen, déi ech konnt op Debian 9 oder Fedora 27 ausrollen. Déi eenzeg Ausnam ass Alacritty. Et ass en Nofolger vun GPU-beschleunegt Terminaler a gëtt an enger ongewéinlecher an neier Sprooch fir dës Aufgab geschriwwe - Rust. Ech hunn Webterminaler aus menger Iwwerpréiwung ausgeschloss (inklusiv déi op
Unicode Ënnerstëtzung
Ech hunn meng Tester mat Unicode Support ugefaang. Den éischten Test vun den Terminals war d'Unicode String ze weisen
Par défaut benotzt xterm déi klassesch "fix" Schrëft, déi laut
Dës Screenshots goufen a Fedora 27 geholl, well et besser Resultater ginn huet wéi Debian 9, wou e puer eeler Versioune vun Terminals (speziell mlterm) d'Schrëft net richteg handhaben konnten. Glécklecherweis gouf dëst a spéider Versioune fixéiert.
Notéiert elo wéi d'Linn an xterm ugewise gëtt. Et stellt sech eraus datt d'Symbol Mem an déi folgend Semitesch
"Vill Computerprogrammer kënnen net bidirektionalen Text korrekt weisen. Zum Beispill, den hebräeschen Numm "Sarah" besteet aus de Personnagen sin (ש) (déi riets erschéngt), dann resh (ר) a schliisslech hien (ה) (wat lénks soll erschéngen)."
Vill Terminaler feelen dësen Test: Alacritty, VTE-ofgeleet Gnome an XFCE Terminals, urxvt, st an xterm weisen "Sara" an ëmgedréint Uerdnung, wéi wa mir den Numm als "Aras" geschriwwen hätten.
En anere Problem mat bidirektionalen Texter ass, datt se iergendwéi ausgeriicht musse ginn, besonnesch wann et ëm d'Mëschung vun RTL an LTR Texter geet. RTL Skripte solle vun der rietser Säit vun der Terminalfenster lafen, awer wat soll fir Terminaler geschéien déi Standard op LTR Englesch sinn? Déi meescht vun hinnen hu keng speziell Mechanismen an alignéieren all Text no lénks (och a Konsole). D'Ausnahmen si pterm a mlterm, déi un d'Standarden halen a sou Linnen richteg ausriichten.
Aféierungsschutz
Déi nächst kritesch Feature déi ech identifizéiert hunn ass Anti-Insertion Schutz. Och wann et allgemeng bekannt ass datt Zauber wéi:
$ curl http://example.com/ | sh
sinn Code Ausféierung Push Kommandoen, wéineg Leit wëssen datt verstoppte Kommandoen an d'Konsole kënne schneide wann Dir aus engem Webbrowser kopéiert a paste, och no virsiichteg Inspektioun.
git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git
verwandelt sech zu sou enger Nuis wann se vun der Horn Websäit an den Terminal gepecht ginn:
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
Wéi funktionéiert et? Béiswëlleg Code ass am Block abegraff , déi mat CSS aus der Sicht vum Benotzer geréckelt gëtt.
set enable-bracketed-paste on
Leider weist dem Horn säin Test Site och wéi een dëse Schutz duerch d'Textformatéierung selwer ëmgoe kann a virzäiteg endlech de Bracketed Modus op et applizéiert. Dëst funktionnéiert well e puer Terminaler net korrekt Fluchsequenzen filteren ier se hir eege bäidroen. Zum Beispill, a menger konnt ech ni d'Konsole Tester erfollegräich fäerdeg maachen och mat der korrekter Konfiguratioun .inputrc Fichier. Dëst bedeit datt Dir Är Systemkonfiguratioun einfach beschiedegt kritt wéinst enger net ënnerstëtzter Applikatioun oder enger falsch konfiguréierter Shell. Dëst ass besonnesch geféierlech wann Dir op Remote Server aloggen, wou virsiichteg Konfiguratiounsaarbecht manner heefeg ass, besonnesch wann Dir vill sou Remote Maschinnen hutt.
Eng gutt Léisung fir dëse Problem ass de Paste Bestätegung Plugin fir den Terminal urxvt, déi einfach d'Erlaabnis freet fir all Text anzeginn, deen Neilinnen enthält. Ech hu keng méi sécher Optioun fir den Text Ugrëff vun Horn beschriwwen fonnt.
Tabs a Profiler
Eng populär Feature ass elo Ënnerstëtzung fir eng Tabs-Interface, déi mir als eng Terminalfenster definéieren déi e puer méi Terminals enthält. Dës Funktioun ënnerscheet sech fir verschidden Terminals, an obwuel traditionell xterm-Terminaler guer net Tabs ënnerstëtzen, méi modern Terminal-Inkarnatiounen wéi Xfce Terminal, GNOME Terminal a Konsole hunn dës Funktioun. Urxvt ënnerstëtzt och Tabs, awer nëmmen wann Dir e Plugin benotzt. Awer wat d'Tab-Ënnerstëtzung selwer ugeet, Terminator ass den onbestriddene Leader: et ënnerstëtzt net nëmmen Tabs, awer kann och Terminaler an all Uerdnung arrangéieren (kuckt Bild hei ënnen).
Eng aner Feature vum Terminator ass d'Fäegkeet dës Tabs zesummen ze "gruppéieren" an déiselwecht Tastekombinatiounen op verschidde Terminaler zur selwechter Zäit ze schécken, e rau Tool ubitt fir bulk Operatiounen op verschidde Server gläichzäiteg auszeféieren. Eng ähnlech Feature gëtt och a Konsole implementéiert. Fir dës Fonktioun an anere Terminals ze benotzen, musst Dir Drëtt Partei Software benotzen wéi z
Tabs funktionnéieren besonnesch gutt wann se mat Profiler gepaart sinn: zum Beispill, Dir kënnt eng Tab fir E-Mail hunn, eng aner fir Chat, a sou weider. Dëst gëtt gutt ënnerstëtzt vum Konsole Terminal an GNOME Terminal. Béid erlaben all Tab automatesch säin eegene Profil ze starten. Terminator ënnerstëtzt och Profiler, awer ech konnt kee Wee fannen fir automatesch verschidde Programmer ze starten wann Dir eng spezifesch Tab opmaacht. Aner Terminaler hunn guer net d'Konzept vum "Profil".
Ruffles
Dat lescht wat ech am éischten Deel vun dësem Artikel ofdecken ass d'Erscheinung vun den Terminals. Zum Beispill GNOME, Xfce an urxvt ënnerstëtzen Transparenz, awer hu viru kuerzem d'Ënnerstëtzung fir Hannergrondbiller erofgelooss, wat e puer Benotzer forcéiere fir op den Terminal ze wiesselen
E puer Terminaler analyséieren och Text fir URL Mustere fir Links klickbar ze maachen. Dëst gëllt fir all VTE-ofgeleet Terminaler, während urxvt e spezielle Plugin erfuerdert deen d'URLen op engem Klick transforméiere géif oder eng Tastatur Ofkiirzung benotzt. Aner Terminaler hunn ech Display URLen op aner Manéier getest.
Schlussendlech ass en neien Trend an den Terminals d'Optionalitéit vum Scrollbuffer. Zum Beispill, St huet keng Scrollbuffer; Et gëtt ugeholl datt de Benotzer en Terminalmultiplexer wéi tmux an
Alacritty feelt och backscrollbuffere, mä
Subtotals
Am zweeten Deel vum Material (am Original waren dat zwee verschidden Artikelen - ca. laan) mir wäerte Leeschtung, Erënnerung Benotzen an latency vergläichen. Awer mir kënne scho gesinn datt e puer vun de betreffend Terminaler sérieux Defiziter hunn. Zum Beispill, Benotzer déi reegelméisseg mat RTL Scripte schaffen, wëlle vläicht mlterm a pterm berücksichtegen, well se besser mat ähnlechen Aufgaben ëmgoen wéi anerer. Konsole huet och gutt gemaach. Benotzer déi net mat RTL Scripte schaffen, kënnen eppes anescht wielen.
Wat de Schutz géint béiswëlleg Code-Insertioun ugeet, steet urxvt aus wéinst senger spezieller Implementatioun vum Schutz géint dës Zort Attack, wat mir definitiv bequem schéngt. Fir déi, déi no e puer Klacken sichen, ass Konsole e Bléck wäert. Schlussendlech ass et derwäert ze bemierken datt VTE eng exzellent Basis fir Terminals ass, déi Faarfsupport, URL-Unerkennung, asw. Op den éischte Bléck kann den Default-Terminal, deen mat Ärem Liiblingsëmfeld kënnt, all Ufuerderunge entspriechen, awer loosst eis dës Fro oppen loossen bis mir d'Leeschtung verstinn.
Loosst eis d'Gespréich weiderféieren
Am Allgemengen kann d'Performance vun den Terminals u sech wéi e wäitgehend Problem schéngen, awer wéi et sech erausstellt, weisen e puer vun hinnen iwwerraschend héich Latenz fir Software vun esou engem fundamentalen Typ. Och nächst wäerte mir kucken wat traditionell "Geschwindegkeet" genannt gëtt (tatsächlech ass dëst d'Scrollgeschwindegkeet) an d'Erënnerungsverbrauch vum Terminal (mat der Viraussetzung datt dëst haut net sou kritesch ass wéi et viru Joerzéngte war).
Verzögerung
No enger grëndlecher Studie vun der terminaler Leeschtung sinn ech zur Conclusioun komm datt de wichtegste Parameter an dëser Hisiicht d'Latenz (Ping) ass. A sengem Artikel
Awer wat ass latency, a firwat ass et sou wichteg? A sengem Artikel huet de Fatin et definéiert als "d'Verzögerung tëscht engem Schlëssel drécken an dem entspriechende Bildschiermupdate" an zitéiert
De Fatin erkläert datt dëse Ping méi déif Konsequenzen huet wéi just Zefriddenheet: "Tippen gëtt méi lues, méi Feeler entstinn, an d'Aen- a Muskelspannung erhéicht." An anere Wierder, eng grouss Verzögerung kann zu Tippfehler an och manner Codequalitéit féieren, well et zu zousätzlech kognitiv Belaaschtung am Gehir féiert. Awer wat méi schlëmm ass datt de Ping "Aen- a Muskelbelaaschtung erhéicht", wat schéngt ze implizéieren
E puer vun dësen Effekter si scho laang bekannt, an d'Resultater
De Fatin huet seng Tester op Texteditoren gemaach; hien huet e portable Instrument erstallt genannt
Hei sinn d'Resultater vu menge Miessunge, souwéi e puer vun de Resultater vum Fatin, fir ze weisen datt mäi Experiment mat sengen Tester averstan ass:
Dat éischt wat mech opgefaang huet war déi besser Äntwertzäit vun eelere Programmer wéi xterm a mlterm. Mat der schlëmmster Registerlatenz (2,4 ms), hunn se besser gemaach wéi de schnellsten modernen Terminal (10,6 ms fir st). Kee modernen Terminal fällt ënner der 10 Millisekonne Schwell. Besonnesch den Alacritty feelt dem "schnellsten Terminal Emulator verfügbar" Fuerderung, obwuel seng Partituren zënter senger éischter Iwwerpréiwung am Joer 2017 verbessert goufen. Tatsächlech d'Auteuren vum Projet
Wéi och ëmmer, d'Ënnerscheeder kënnen net fir d'Ae bemierkbar sinn. Wéi de Fatin erkläert, "Dir musst d'Verzögerung net bewosst sinn fir datt et en Effekt op Iech huet." Fatin warnt och iwwer Standarddeviatioun: "All Stéierungen an der latency (jitter) kreéieren zousätzlech Stress wéinst hirer Onberechenbarkeet."
D'Grafik uewendriwwer gëtt op reng Debian 9 geholl (stretch) mat
Scroll Geschwindegkeet
Den nächsten Test ass en traditionellen "Geschwindegkeet" oder "Bandbreed" Test, dee moosst wéi séier den Terminal eng Säit scrolle kann, wärend grouss Quantitéiten un Text um Bildschierm affichéiert. D'Mechanik vum Test variéieren; den ursprénglechen Test war einfach déiselwecht Textstring ze generéieren mam seq Kommando. Aner Tester och Thomas E. Dickey (xterm Ënnerhalter) Test, déi ëmmer erëm
Hei gesi mir d'rxvt an st zéien virun der Konkurrenz, gefollegt vun der vill méi nei Alacritty, déi mat engem Fokus op Leeschtung entworf ass. Nächst sinn Xfce (VTE Famill) a Konsole, déi bal duebel sou séier sinn. Déi lescht ass xterm, wat fënnef Mol méi lues ass wéi rxvt. Wärend dem Test huet xterm och vill gerappt, sou datt den Text schwéier ze gesinn ass, och wann et déiselwecht Linn war. Konsole war séier, awer et war heiansdo komplizéiert: d'Display géif vun Zäit zu Zäit afréieren, deelweis Text ze weisen oder guer net ze weisen. Aner Terminaler weisen Strings kloer, dorënner st, Alacritty, an rxvt.
Dickey erkläert datt d'Performance Differenzen wéinst dem Design vu Scrollpuffer a verschiddene Terminaler sinn. Besonnesch beschëllegt hien rxvt an aner Terminaler "net déi allgemeng Regelen ze verfollegen":
"Am Géigesaz zu xterm huet rxvt net probéiert all Updates ze weisen. Wann et hannendrun fält, wäert et e puer Updates refuséieren fir opzehalen. Dëst hat e gréisseren Impakt op scheinbar Scrollgeschwindegkeet wéi op intern Erënnerungsorganisatioun. Een Nodeel war datt d'ASCII Animatioun e bëssen onpräzis war.
Fir dës erkannt xterm Schlässegkeet ze fixéieren, proposéiert den Dickey d'Ressource ze benotzen
Ressource Konsum
Egal ob et Sënn mécht Scrollgeschwindegkeet als Leeschtungsmetrik ze berécksiichtegen, dësen Test erlaabt eis d'Laascht op den Terminals ze simuléieren, wat et eis erlaabt aner Parameteren ze moossen wéi Erënnerung oder Diskverbrauch. D'Metrike goufen kritt andeems Dir de spezifizéierte Test leeft seq ënner Python Prozess Iwwerwachung. Hien huet Meterdaten gesammelt
An dësem Test hëlt de ST éischt Plaz mat dem niddregsten Duerchschnëttsspeicherverbrauch vun 8 MB, wat net iwwerraschend ass wann Dir bedenkt datt d'Haaptidee vum Design Einfachheet ass. mlterm, xterm an rxvt verbrauchen e bësse méi - ongeféier 12 MB. En anert bemierkenswäert Resultat ass Alacritty, wat 30 MB erfuerdert fir ze lafen. Da ginn et Terminaler vun der VTE Famill mat Zuelen vun 40 bis 60 MB, wat zimlech vill ass. Dëse Konsum kann duerch d'Tatsaach erkläert ginn datt dës Terminals méi héije Bibliothéiken benotzen, zum Beispill GTK. Konsole kënnt an der leschter mat engem ganz 65MB Erënnerung Konsum während Tester, obwuel dëst duerch seng ganz breet Palette vun Fonctiounen gerechtfäerdegt ginn.
Am Verglach mat fréiere Resultater, déi virun zéng Joer kritt goufen, hunn all Programmer ugefaang däitlech méi Erënnerung ze konsuméieren. Xterm benotzt 4 MB ze erfuerderen, awer elo erfuerdert et 15 MB just beim Start. Et gëtt eng ähnlech Erhéijung vum Konsum fir rxvt, déi elo 16 MB aus der Këscht erfuerdert. Xfce Terminal hëlt 34 MB op, wat dräimol méi grouss ass wéi virdrun, awer GNOME Terminal erfuerdert nëmmen 20 MB. Natierlech goufen all virdrun Tester op 32-Bit Architektur duerchgefouert. Am LCA 2012 Rusty Russell
Wéi och ëmmer, ech kann net hëllefe wéi d'Gefill datt méi Erënnerung un eppes esou fundamental wéi den Terminal ze verdeelen eng Verschwendung vu Ressourcen ass. Dës Programmer sollen déi klengst vun de Klengsten sinn, sollen op all "Këscht", och eng Schongkëscht lafen, wa mir jeemools op de Punkt kommen, wou se mat Linux Systemer ausgestatt sinn (an Dir wësst datt et esou wäert sinn ). Awer mat dësen Zuelen wäert d'Erënnerungsverbrauch an Zukunft en Thema ginn an all Ëmfeld mat verschiddene Terminaler ausser e puer vun de liichsten a limitéiertsten a Fäegkeeten. Fir dëst ze kompenséieren, hunn GNOME Terminal, Konsole, urxvt, Terminator an Xfce Terminal en Daemon Modus, deen Iech erlaabt verschidde Terminaler duerch een eenzege Prozess ze kontrolléieren, an hir Erënnerungsverbrauch limitéiert.
Wärend meng Tester sinn ech op en anert onerwaart Resultat betreffend Disk Read-Write komm: Ech hunn erwaart iwwerhaapt näischt hei ze gesinn, awer et huet sech erausgestallt datt e puer Terminals déi voluminéisst Daten op Disk schreiwen. Also, d'VTE Bibliothéik hält tatsächlech e Scrollbuffer op der Disk (dës Feature
Konklusioun
Am éischten Deel vum Artikel hu mir festgestallt datt VTE-baséiert Terminals e gudde Set vu Funktiounen hunn, awer elo gesi mir datt dëst mat e puer Leeschtungskäschte kënnt. Elo ass d'Erënnerung keen Thema well all VTE-Terminals kënnen duerch en Daemon-Prozess kontrolléiert ginn, wat hiren Appetit limitéiert. Wéi och ëmmer, eeler Systemer déi kierperlech Aschränkungen op d'Quantitéit vum RAM a Kernelbuffer hunn, kënnen nach ëmmer fréier Versioune vun Terminaler brauchen, well se wesentlech manner Ressourcen verbrauchen. Och wa VTE-Terminaler gutt an Duerchgang (Scrolling) Tester gemaach hunn, ass hir Displaylatenz iwwer d'Schwell, déi am GNOME User Guide festgeluecht ass. VTE Entwéckler sollten dëst wahrscheinlech berücksichtegen. Wa mir berücksichtegen datt och fir Ufänger Linux Benotzer, déi en Terminal begéinen, inévitabel ass, kënne se et méi userfrëndlech maachen. Fir erfuerene Geeks, Wiessel vum Standardterminal kann souguer manner Aenbelaaschtung bedeiten an d'Fäegkeet fir zukünfteg Aarbechtsverletzungen a Krankheeten ze vermeiden wéinst laanger Aarbechtssessiounen. Leider bréngen nëmmen déi al xterm an mlterm eis op de magesche Ping-Schwell vun 10 Millisekonnen, wat fir vill inakzeptabel ass.
Benchmark Miessunge weisen och datt duerch d'Entwécklung vu Linux grafeschen Ëmfeld d'Entwéckler eng Rei Kompromësser misse maachen. E puer Benotzer wëlle vläicht regelméisseg Fënstermanager kucken wéi se bedeitend Ping-Reduktioun ubidden. Leider war et net méiglech d'Latenz fir Wayland ze moossen: den Typometer Programm, deen ech benotzt hunn, gouf erstallt fir wat Wayland entwéckelt ass fir ze vermeiden: Spioun op aner Fënsteren. Ech hoffen datt Wayland Compositing besser funktionnéiert wéi X.org, an ech hoffen och datt an Zukunft een e Wee fënnt fir latency an dësem Ëmfeld ze moossen.
Source: will.com