Sawetara tembung saka biro terjemahan kita: biasane saben wong ngupayakake nerjemahake materi lan publikasi paling anyar, lan kita ora terkecuali. Nanging terminal ora soko sing dianyari sapisan minggu. Mulane, kita wis nerjemahake kanggo sampeyan artikel dening Antoine Beaupré, diterbitake ing musim semi 2018: senadyan "umur" sing cukup akeh miturut standar modern, miturut pendapat kita, materi kasebut ora ilang relevansi. Kajaba iku, iki asline minangka seri saka rong artikel, nanging kita mutusake kanggo gabungke dadi siji kiriman gedhe.
Terminal duwe panggonan khusus ing sajarah komputer, nanging ing dekade anyar iki wis dipeksa kanggo urip bebarengan karo baris printah amarga antarmuka grafis dadi nang endi wae.
Sawetara terminal duwe bolongan keamanan downright ngageti, plus paling duwe pesawat temen beda saka fungsi, saka support kanggo antarmuka tab kanggo skrip. Senajan kita
Mangkene terminal sing dakdeleng:
Iki bisa uga dudu versi paling anyar, amarga aku diwatesi kanggo mbangun stabil nalika nulis, sing bisa diluncurake ing Debian 9 utawa Fedora 27. Istiméwa mung Alacritty. Iku turunan saka terminal GPU-cepet lan ditulis ing basa mboten umum lan anyar kanggo tugas iki - Rust. Aku ora kalebu terminal web saka review (kalebu ing
Dhukungan Unicode
Aku miwiti tes karo dhukungan Unicode. Tes pisanan saka terminal yaiku kanggo nampilake string Unicode saka
Kanthi gawan, xterm nggunakake font klasik "tetep", sing, miturut
Gambar kasebut dijupuk ing Fedora 27, amarga menehi asil sing luwih apik tinimbang Debian 9, ing ngendi sawetara versi terminal lawas (khusus mlterm) ora bisa nangani font kanthi bener. Untunge iki wis didandani ing versi sabanjure.
Saiki sok dong mirsani carane baris ditampilake ing xterm. Pranyata metu sing simbol Mem lan Semit ing ngisor iki
"Akeh program komputer ora bisa nampilake teks bidirectional kanthi bener. Contone, jeneng Ibrani "Sarah" kasusun saka karakter dosa (ש) (sing katon ing sisih tengen), banjur resh (ר) lan pungkasane dheweke (ה) (sing kudu katon ing sisih kiwa).
Akeh terminal gagal test iki: Alacritty, VTE-asalé Gnome lan XFCE terminal, urxvt, st lan xterm tampilan "Sara" ing urutan mbalikke, minangka yen kita wis ditulis jeneng minangka "Aras".
Masalah liyane karo teks bidirectional yaiku kudu didadekake siji, utamane nalika nyampur teks RTL lan LTR. Tulisan RTL kudu mbukak saka sisih tengen jendhela terminal, nanging apa sing kudu kedadeyan kanggo terminal sing standar kanggo LTR Inggris? Umume ora duwe mekanisme khusus lan nyelarasake kabeh teks ing sisih kiwa (kalebu ing Konsole). Pangecualian yaiku pterm lan mlterm, sing netepi standar lan nyelarasake garis kasebut.
Proteksi sisipan
Fitur kritis sabanjure sing dakkenal yaiku proteksi anti-penyisipan. Sanajan umume dikenal manawa mantra kaya:
$ curl http://example.com/ | sh
minangka printah push eksekusi kode, sawetara wong ngerti yen printah sing didhelikake bisa nyelinep menyang console nalika nyalin lan nempel saka browser web, sanajan sawise mriksa kanthi ati-ati.
git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git
dadi gangguan nalika disisipake saka situs web Horn menyang 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
Cara kerjane? Kode jahat kalebu ing blok kasebut , sing dipindhah metu saka tampilan pangguna nggunakake CSS.
set enable-bracketed-paste on
Sayange, situs tes Horn uga nuduhake carane ngliwati proteksi iki liwat format teks dhewe lan kanthi prematur bakal nggunakake mode Bracketed. Iki bisa ditindakake amarga sawetara terminal ora nyaring urutan uwal kanthi bener sadurunge nambahake dhewe. Contone, ing tambang, aku ora bisa ngrampungake tes Konsole sanajan kanthi konfigurasi sing bener .inputrc berkas. Iki tegese sampeyan bisa kanthi gampang nggawe konfigurasi sistem rusak amarga aplikasi sing ora didhukung utawa cangkang sing ora dikonfigurasi kanthi bener. Iki utamané mbebayani nalika mlebu menyang server remot, ngendi karya konfigurasi ati-ati kurang umum, utamané yen sampeyan duwe akeh mesin remot kuwi.
Solusi sing apik kanggo masalah iki yaiku plugin konfirmasi tempel kanggo terminal urxvt, sing mung njaluk ijin kanggo nglebokake teks sing ngemot baris anyar. Aku wis ora nemu pilihan luwih aman kanggo serangan teks diterangake dening Horn.
Tab lan profil
Fitur populer saiki yaiku dhukungan kanggo antarmuka tab, sing bakal ditetepake minangka jendela terminal sing ngemot sawetara terminal liyane. Fungsi iki beda kanggo terminal sing beda-beda, lan sanajan terminal xterm tradisional ora ndhukung tab, inkarnasi terminal sing luwih modern kayata Terminal Xfce, Terminal GNOME lan Konsole duwe fungsi iki. Urxvt uga ndhukung tab, nanging mung yen sampeyan nggunakake plugin. Nanging babagan dhukungan tab dhewe, Terminator minangka pimpinan sing ora bisa dibantah: ora mung ndhukung tab, nanging uga bisa ngatur terminal kanthi urutan apa wae (ndeleng gambar ing ngisor iki).
Fitur liyane Terminator yaiku kemampuan kanggo "nglompokake" tab kasebut bebarengan lan ngirim ketukan tombol sing padha menyang macem-macem terminal bebarengan, nyedhiyakake alat mentah kanggo nindakake operasi akeh ing sawetara server bebarengan. Fitur sing padha uga ditindakake ing Konsole. Kanggo nggunakake fitur iki ing terminal liyane, sampeyan kudu nggunakake piranti lunak pihak katelu kayata
Tab bisa dianggo kanthi apik nalika dipasangake karo profil: contone, sampeyan bisa duwe tab siji kanggo email, liyane kanggo chatting, lan liya-liyane. Iki uga didhukung dening Terminal Konsole lan Terminal GNOME. Loro-lorone ngidini saben tab mbukak profil dhewe kanthi otomatis. Terminator uga ndhukung profil, nanging aku ora bisa nemokake cara kanggo mbukak program tartamtu kanthi otomatis nalika mbukak tab tartamtu. Terminal liyane ora duwe konsep "profil" kabeh.
Ruffles
Babagan pungkasan sing bakal dakkandhakake ing bagean pisanan artikel iki yaiku tampilan terminal. Contone GNOME, Xfce lan urxvt ndhukung transparansi, nanging bubar ngeculake dhukungan kanggo gambar latar mburi, meksa sawetara pangguna ngalih menyang terminal.
Sawetara terminal uga nganalisa teks kanggo pola URL supaya link bisa diklik. Iki ditrapake kanggo kabeh terminal sing asale saka VTE, dene urxvt mbutuhake plugin khusus sing bakal ngowahi URL kanthi klik utawa nggunakake trabasan keyboard. Terminal liyane Aku wis nyoba URL tampilan kanthi cara liya.
Pungkasan, tren anyar ing terminal yaiku pilihan saka buffer gulung. Contone, st ora gulung buffer; dianggep pangguna bakal nggunakake multiplexer terminal kaya tmux lan
Alacritty uga kurang buffer backscroll, nanging
Subtotal
Ing bagean kapindho materi (ing asline iki ana rong artikel sing beda - kira-kira. jalur) kita bakal mbandhingake kinerja, panggunaan memori lan latensi. Nanging kita wis bisa ndeleng manawa sawetara terminal kasebut duwe kekurangan sing serius. Contone, pangguna sing ajeg nggarap skrip RTL bisa uga pengin nimbang mlterm lan pterm, amarga luwih apik nangani tugas sing padha tinimbang liyane. Konsole uga tampil apik. Pangguna sing ora bisa nganggo skrip RTL bisa milih liyane.
Ing syarat-syarat pangayoman marang sisipan kode angkoro, urxvt stands metu amarga sawijining implementasine khusus saka pangayoman marang jinis serangan, kang misale jek mesthi trep kanggo kula. Kanggo sing looking for sawetara lonceng lan whistles, Konsole worth dipikir. Pungkasan, perlu dicathet yen VTE minangka basis banget kanggo terminal, sing njamin dhukungan warna, pangenalan URL, lan liya-liyane. Sepisanan, terminal standar sing kasedhiya karo lingkungan favorit sampeyan bisa nyukupi kabeh syarat, nanging ayo mbukak pitakonan iki nganti ngerti kinerja.
Ayo nerusake obrolan
Umumé, kinerja terminal dhewe bisa uga katon kaya masalah sing adoh, nanging nyatane, sawetara sing nuduhake latensi sing luar biasa kanggo piranti lunak jinis dhasar kasebut. Uga sabanjuré kita bakal katon ing apa tradisional disebut "kacepetan" (nyatane, iki kacepetan gulung) lan konsumsi memori terminal (karo caveat sing iki ora kritis dina iki minangka dekade kepungkur).
Tundha
Sawise sinau lengkap babagan kinerja terminal, aku entuk kesimpulan yen parameter sing paling penting ing babagan iki yaiku latensi (ping). Ing artikelipun
Nanging apa latensi, lan kenapa penting banget? Ing artikelé, Fatin ditetepake minangka "tundha antarane mencet tombol lan nganyari layar sing cocog" lan dikutip.
Fatin nerangake yen ping iki nduweni akibat sing luwih jero tinimbang mung kepuasan: "ngetik dadi luwih alon, luwih akeh kesalahan, lan ketegangan mata lan otot mundhak." Ing tembung liyane, wektu tundha gedhe bisa nyebabake kesalahan ketik lan uga kualitas kode sing luwih murah, amarga ndadékaké beban kognitif tambahan ing otak. Nanging sing luwih elek yaiku ping "nambah ketegangan mata lan otot," sing tegese
Sawetara efek iki wis dikenal kanggo dangu, lan asil
Fatin nganakake tes ing editor teks; dheweke nggawe piranti portabel sing diarani
Mangkene asil pangukuranku, uga sawetara asile Fatin, kanggo nuduhake yen eksperimenku setuju karo tes:
Wangsulan: Bab ingkang pisanan sing disabetake kula wektu respon luwih saka program lawas kayata xterm lan mlterm. Kanthi latensi register paling awon (2,4 ms), padha nindakake luwih apik tinimbang terminal modern paling cepet (10,6 ms kanggo st). Ora ana terminal modern sing mudhun ing ambang 10 milidetik. Khususé, Alacritty gagal nemoni pratelan "emulator terminal paling cepet sing kasedhiya", sanajan skor kasebut saya apik wiwit ditinjau pisanan ing 2017. Pancen, penulis proyek kasebut
Nanging, bedane bisa uga ora katon ing mripat. Minangka Fatin nerangake, "sampeyan ora kudu weruh saka wektu tundha kanggo duwe efek ing sampeyan." Fatin uga ngelingake babagan standar deviasi: "apa wae gangguan ing latensi (jitter) nggawe stres tambahan amarga ora bisa diprediksi."
Grafik ing ndhuwur dijupuk ing Debian 9 murni (stretch) karo
Kacepetan gulung
Tes sabanjure yaiku tes "kacepetan" utawa "bandwidth" tradisional, sing ngukur sepira cepet terminal bisa nggulung kaca nalika nampilake akeh teks ing layar. Mekanika tes beda-beda; test asli mung generate senar teks padha nggunakake printah seq. Tes liyane kalebu tes Thomas E. Dickey (xterm maintainer), sing bola-bali
Kene kita waca rxvt lan st narik ahead saka kompetisi, ngiring dening luwih anyar Alacritty, kang dirancang karo fokus ing kinerja. Sabanjure Xfce (kulawarga VTE) lan Konsole, sing meh kaping pindho luwih cepet. Pungkasan yaiku xterm, sing kaping lima luwih alon tinimbang rxvt. Sajrone test, xterm uga rippled kathah, nggawe maringaken teks angel kanggo ndeleng sanajan iku baris padha. Konsole cepet, nanging kadhangkala angel: tampilan bakal beku saka wektu kanggo wektu, nuduhake teks parsial utawa ora nuduhake kabeh. Terminal liyane ditampilake strings cetha, kalebu st, Alacritty, lan rxvt.
Dickey nerangake yen beda kinerja amarga desain buffer gulung ing terminal beda. Utamane, dheweke nuduh rxvt lan terminal liyane "ora ngetutake aturan umum":
"Ora kaya xterm, rxvt ora nyoba nampilake kabeh nganyari. Yen tiba konco, bakal nolak sawetara nganyari kanggo nyekel munggah. Iki duwe pengaruh sing luwih gedhe ing kacepetan gulung sing katon tinimbang ing organisasi memori internal. Siji kekurangan yaiku animasi ASCII rada ora akurat."
Kanggo ndandani sluggishness xterm sing dirasakake iki, Dickey nyaranake nggunakake sumber kasebut
Konsumsi sumber daya
Ora preduli manawa nimbang kacepetan gulung minangka metrik kinerja, tes iki ngidini kita nyinkronake beban ing terminal, sing ngidini kita ngukur paramèter liyane kayata memori utawa panggunaan disk. Metrik dipikolehi kanthi nglakokake tes sing ditemtokake seq ing ngawasi proses Python. Dheweke ngumpulake data meter
Ing tes iki, ST njupuk Panggonan pisanan kanthi konsumsi memori rata-rata paling murah 8 MB, sing ora nggumunake yen ide utama desain kasebut yaiku kesederhanaan. mlterm, xterm lan rxvt ngonsumsi luwih sithik - udakara 12 MB. Hasil liyane sing penting yaiku Alacritty, sing mbutuhake 30 MB kanggo mbukak. Banjur ana terminal kulawarga VTE kanthi angka saka 40 nganti 60 MB, sing cukup akeh. Konsumsi iki bisa diterangake kanthi kasunyatan manawa terminal kasebut nggunakake perpustakaan tingkat dhuwur, contone, GTK. Konsole teka ing pungkasan kanthi konsumsi memori 65MB sing gedhe sajrone tes, sanajan iki bisa dibenerake kanthi fitur sing akeh banget.
Dibandhingake karo asil sadurunge sing dipikolehi sepuluh taun kepungkur, kabeh program wiwit nggunakake memori sing luwih akeh. Xterm biyen mbutuhake 4 MB, nanging saiki mbutuhake 15 MB mung nalika wiwitan. Ana tambah konsumsi sing padha kanggo rxvt, sing saiki mbutuhake 16 MB metu saka kothak. Terminal Xfce njupuk 34 MB, sing kaping telu luwih gedhe tinimbang sadurunge, nanging Terminal GNOME mung mbutuhake 20 MB. Mesthine, kabeh tes sadurunge ditindakake ing arsitektur 32-bit. Ing LCA 2012 Rusty Russell
Nanging, aku ora bisa bantuan nanging aran sing allocating liyane memori kanggo soko minangka dhasar minangka terminal punika sampah sumber. Program-program kasebut kudu paling cilik saka sing paling cilik, kudu bisa mlaku ing "kothak" apa wae, sanajan kothak sepatu, yen kita wis tekan titik sing kudu dilengkapi sistem Linux (lan sampeyan ngerti yen bakal dadi. ). Nanging kanthi nomer kasebut, panggunaan memori bakal dadi masalah ing mangsa ngarep ing lingkungan apa wae sing nganggo macem-macem terminal kajaba sawetara sing paling entheng lan paling winates ing kemampuan. Kanggo ngimbangi iki, Terminal GNOME, Konsole, urxvt, Terminator lan Xfce Terminal duwe mode Daemon sing ngidini sampeyan ngontrol sawetara terminal liwat proses siji, mbatesi konsumsi memori.
Sajrone tes, aku teka ing asil liyane sing ora dikarepke babagan disk maca-nulis: Aku ngarep-arep ora weruh apa-apa ing kene, nanging ternyata sawetara terminal nulis data sing paling akeh ing disk. Dadi, perpustakaan VTE bener-bener nyimpen gulung buffer ing disk (fitur iki
kesimpulan
Ing bagean pisanan saka artikel, kita ketemu sing terminal basis VTE duwe pesawat apik saka fitur, nanging saiki kita waca sing iki nerangake karo sawetara biaya kinerja. Saiki memori ora dadi masalah amarga kabeh terminal VTE bisa dikontrol liwat proses Daemon, sing mbatesi napsu. Nanging, sistem lawas sing duwe watesan fisik babagan jumlah RAM lan buffer kernel isih mbutuhake versi terminal sing luwih awal, amarga nggunakake sumber daya sing luwih sithik. Sanajan terminal VTE nindakake kanthi apik ing tes throughput (nggulung), latensi tampilane ngluwihi batesan sing disetel ing Pandhuan pangguna GNOME. Pangembang VTE mbokmenawa kudu nganggep iki. Yen kita nganggep manawa pangguna Linux anyar sing nemoni terminal ora bisa dihindari, mula bisa dadi luwih gampang pangguna. Kanggo geeks sing berpengalaman, ngalih saka terminal standar bisa uga tegese kurang ketegangan mata lan kemampuan kanggo ngindhari ciloko lan penyakit sing ana hubungane karo kerja amarga kerja sing dawa. Sayange, mung xterm lan mlterm lawas sing nggawa kita menyang ambang ping ajaib 10 milliseconds, sing ora bisa ditampa kanggo akeh.
Pangukuran benchmark uga nuduhake yen amarga pangembangan lingkungan grafis Linux, pangembang kudu nggawe sawetara kompromi. Sawetara pangguna bisa uga pengin ndeleng manajer jendhela biasa amarga menehi pengurangan ping sing signifikan. Sayange, iku ora bisa kanggo ngukur latensi kanggo Wayland: program Typometer aku digunakake digawe kanggo apa Wayland dirancang kanggo nyegah: spying windows liyane. Mugi sing Wayland compositing performs luwih saka X.org, lan aku uga ngarep-arep sing ing mangsa wong bakal nemokake cara kanggo ngukur latensi ing lingkungan iki.
Source: www.habr.com