Microsoft test renderingengine voor Windows Terminal

Microsoft heeft Windows Terminal Preview 1.13 vrijgegeven. In deze versie is een renderingengine voor tekst te activeren die bij sommige scenario's betere prestaties moet bieden. Ook is er een instelling voor automatische beheerdersprofielen toegevoegd.

De renderingengine is bij Windows Terminal 1.13 in te schakelen door de profielinstelling experimental.useAtlasEngine op true te zetten. Gebruikers ervaren waarschijnlijk standaard geen snelheidsverbeteringen, geeft Microsoft toe, maar in sommige gevallen. Het bedrijf geeft als voorbeeld het gebruik van tekst met een grote hoeveelheid kleuren.

Microsoft kreeg vorig jaar kritiek op de renderingpijplijn van Windows Terminal. De prestaties bij het weergeven van veel kleuren bij tekst konden tot 40 procent lager uitvallen. De nieuwe Atlas-engine moet de weergave in die gevallen op de verversingssnelheid van het scherm houden, ongeacht de resolutie.

Aan de preview van Windows Terminal is verder de instelling elevate toegevoegd. Een profiel waarbij deze instelling geactiveerd is, opent Terminal-vensters automatisch met beheerdersrechten ingeschakeld. Verder is de gebruikersinterface van de instellingen in lijn gebracht met de stijl van Windows 11.

Tegelijk met het verschijnen van de previewversie 1.13 is de stabiele versie bijgewerkt naar Windows Terminal 1.12. Daarmee krijgt die versie onder andere profilematching, herstelopties voor vensters en transparante weergave.

Windows Terminal is een commandline-applicatie voor Windows met ondersteuning voor tabs en thema's en toegang tot cmd, PowerShell en Windows Subsystem for Linux.

Door Olaf van Miltenburg

Nieuwscoördinator

04-02-2022 • 15:23

41 Linkedin

Reacties (41)

41
40
30
3
1
7
Wijzig sortering
Deze wijziging komt nadat Casey Muratory (bekend van Handmade Hero) hier een standpunt over heeft gemaakt in een GitHub issue. Hij is daar misschien iets te veel met gestrekte been is in gegaan, maar hij heeft naar mijn mening wel een punt dat performance/efficienty ver te zoeken is in moderne software (vanwege slechte opleiding van programmeurs en verkeerde prioriteiten bij de ontwikkeling van software).

Om een punt te maken heeft hij zelf een terminal emulator (RefTerm) geschreven; dezelfde concepten zijn nu zelf door Microsoft geimplementeerd. Hij legt uit hoe het werkt in zijn YouTube videos: https://www.youtube.com/watch?v=pgoetgxecw8&list=PLEMXAbCVnmY6zCgpCFlgggRkrp0tpWfrn
Ik ben benieuwd. Ik vraag het me de andere kant op af: hoe maak je code in vredesnaam zo langzaam dan. Performance tweaks waar ik mee te maken heb zitten hem toch meestal op heel hoog niveau, niet op het niveau van individuele code elementen.

Ja ok als je een miljoen elements in een platte array of list stopt en daar non-stop zoekacties op loslaat in plaats van een hashtable of een vorm van een search tree te gebruiken... dan doe je het erom. Maar ik kan me toch niet voorstellen dat we het daarover hebben?

Toch!?
In dit geval is het probleem dat ze voor elk frame, voor elk character op het scherm, DirectWrite aanroepen om van een glyph (vector graphics) een pixels op het scherm te maken. DirectWrite is niet snel en dat creërt een bottleneck.

Er zijn twee verbeteringen die Casey voorstelt:
  • Sla de resultaten van DirectWrite (bitmaps van individuele glyphs) op in een cache zodat je veel minder vaak DirectWrite hoeft aan te roepen
  • Plaats de bitmaps van de individuele glyphs op het scherm op de GPU
Als je de letter e elke keer opnieuw uitrekent hoe die er uit moet zien dan wordt het traag. Maar als je echt scalable wil werken, waarbij de ene e 0.47 subpixel verschoven kan zijn ten opzichte van de e in de regel erboven. Dan moet je opnieuw uitrekenen hoe hij er uit moet zien met al de sub-aliasing.
Aan de preview van Windows Terminal is verder de instelling elevate toegevoegd. Een profiel waarbij deze instelling geactiveerd is, opent Terminal-vensters automatisch met beheerdersrechten ingeschakeld.
Fantastisch, dat dit er vanaf het begin niet in zat ergerde me altijd in het gebruik. Fijn dat Windows Terminal onderhand de oude console schermpjes kan vervangen.
Ein-de-lijk! Dit miste ik echt heel erg. Het was voor zover ik weet niet eens mogelijk een elevated window te krijgen in Terminal, héél irritant.
Als je Windows terminal hebt gepint op je startbalk inderdaad niet, maar vanuit het startmenu kan het gewoon:
Even geprobeerd in mijn eigen startmenu
crtl-shift click op terminal icon in je taskbar. (of welk ander programma dan ook die je elevated wilt starten)
Behalve Windows Explorer. Die krijg ik niet elevated gedraaid. Technisch kun je opgeven of een executable mag eleveren. Dat is dus uit te zetten
Komt denk doordat explorer al draait, hij opent enkel een nieuw window van zichzelf zegmaar.
Kun je instellen dat het een apart proces moet zijn, maar idd je zou zomaar gelijk kunnen hebben.
Ik gebruik terminal profiles waarbij ik het exe pad heb geprefixed met gsudo (https://github.com/gerardog/gsudo)
Een nadeel hiervan is dat unelevated windows keystrokes kunnen sturen naar je gsudo window, en daarmee effectief elevated rechten krijgen. Dat is ook de reden dat elevated profielen in een nieuw window openen, om ze te beschermen tegen malafide input.
Waarom zou je ooit een terminal default met admin rechten willen openen ? Klinkt echt als een heel slecht idee. Ik neem aan dat Windows iets heeft dat equivalent is aan 'sudo' ? Iets met admin/root rechten uitvoeren moet altijd een heel bewuste handeling zijn.

[Reactie gewijzigd door Aaargh! op 4 februari 2022 15:57]

Je krijgt altijd een 'toast' van UAC als je iets dergelijks wil doen. Oftewel heel bewust op approve klikken, of credentials invoeren als de gebruiker waaronder je werkt geen adminstrator is zoals dat hoort.
Niet als je die rechten al aan de terminal hebt gegeven
Wat bedoel je?
Je elevate onder windows een proces. Als je een terminal elevate draait alles vanuit die terminal over die user/permissies. Dat is overigens hetzelfde als onder de meeste andere OS-en. Voor Unix kan je b.v. sudo -i doen.
Onder UNIX is het meestal wat bewuster door sudo aan een bepaald commando mee te geven. Als je een terminal start als admin dan hebben alle commandos die je uitvoert admin rechten. Beetje hetzelfde als inloggen als root.
Je weet wel dat sudo gevaarlijk is, als er een keylogger op die machine zit is direct het admin password bekend. Beter met root en ssh keys erop komen en alleen de dingen doen die je moet doen. Voor rest normaal account gebruiken ook met ssh keys…
Met sudo typ je niet het admin wachtwoord, maar herhaal je het wachtwoord van je eigen normale user.
Trouwens je kan in de sudo'ers file ook zetten dat het direct zonder wachtwoord ingeven kan.

Met su moet je het rootwachtwoord ingeven. En dan werkt enkel als de root user ook effectief enabled voor inloggen is. Bij sommige distro's is dat niet zo.

Correct me if i'm wroing.

[Reactie gewijzigd door GoBieN-Be op 4 februari 2022 20:52]

Hmmmmm zou best kunnen trouwens, maar dat betekend dat je met sudo en een keylogger het account hebt wat net zo goed root is, alleen steeds met sudo er voor. Qua beveiliging is dat natuurlijk ook niet denderend…. Maakt alleen de kans van een oepsje iets kleiner…
Als je een systeem niet gebruikt moet je er niet een ander permissie model op projecteren. Windows heeft UAC voor dat soort permissies. Je zit doorgaans geen uren lang op een shell in windows dus het feit dat je een shell opent met admin rechten is altijd bewust.
"sudo" Is zelf juist een beveiligingsprobleem. Op single user werkplekken in het nutteloos; op multiuserwerkplekken zit het vol conceptuele gaten. Dat zoveel zogenaame Unix specialisten nog steeds geloven dat sudo "veilig maakt" is misschien wel de grootste grap van de IT wereld.
Je kunt eventueel ook gsudo (https://github.com/gerardog/gsudo) gebruiken om enkele commando's uit te voeren als admin, zonder het openen van een aparte terminal venster in elevated mode.

Bijvoorbeeld:
sudo notepad.exe

[Reactie gewijzigd door Falcon93 op 4 februari 2022 16:30]

ben geen windows gebruiker meer, toen veelvuldig gebruik maakte van terminal e.d. vond ik dit wel de ideale tool; https://mremoteng.org/
Windows Terminal is iets anders dan Remote Desktop (of remote desktop services, vroeger bekend als terminal services).
Windows Terminal is een cli tool, waarin je kunt kiezen tussen:
- Windows Powershell
- Command prompt
- Azure cloud shell

Dit in tegenstelling tot het vroegere terminal services (of RDS zoals het nu heet), waarin je met een RDP client verbind naar een server om daar een desktop sessie te starten.
En niet te vergeten, je kan zelf shells toevoegen.

Zelf heb ik:
  • Windows Powershell
  • Powershell Core
  • Command Prompt
  • Verschillende versies Python
  • R
  • Azure Cloud Shell
  • Verschillende WSL terminals
  • PSQL
Ik heb er ook toegang tot servers via SSH aan toegevoegd. Super handig. Lijstje openen en op de server klikken. Bam, connected.
Ik heb net voor de lol BeanShell toegevoegd, een java interpreter shell. :)
Okay, code kan te allen tijde geoptimaliseerd worden en 1000x sneller worden. Helemaal mee eens. Maar wat is de casus precies dat men dit zou willen bij een terminal? Ik ga er niet 1000x sneller van typen.
Grotendeels als je cat file doet of zoals in zijn voorbeeld splat file. Zodat die in de terminal geprint wordt.
Volgens mij is het voor youtube film-maker meer een aanklacht tegen het gebrekkige kennis en kunde van de huidige generatie programmeurs in het algemeen en demonstreert dat met windows terminal. Met wat slimmer denkwerk en doorgronden van het probleem is 1000x effectievere code te maken, zonder al te veel moeite. En tevens een aanklacht tegen al die non-argumenten dat in-effectieve code niet anders zou kunnen.
Het valt mij ook op dat ondanks dat we tegenwoordig 100x snellere hardware hebben dan 15 jaar terug, er netto niks mee opschieten omdat de huidige software zo slecht en lomp is. Bijna elke update is wel groter en langzamer, zonder al te veel toe te voegen.
Stel je voor als de code van je phone 1000x effectiever is, dan kan de kloksnelheid ook flink omlaag voor dezelfde gebruikers ervaring, maar gaat ie opeens 10 dagen mee met de zelfde accu om maar wat te noemen.
helemaal mee eens hoor.. dat is een trend die ik ook zie.
een beetje applicatie (in wat voor vorm dan ook: website, app, etc) hangt aan elkaar met vele afhankelijkheden, die klakkeloos bij elk project al toegevoegd worden. Simpel voorbeeld: de hele Jquery-lib wordt bijgevoegd om enkel makkelijk selectors te maken, wat ook prima met vanilla js kan.
the performance of the terminal drops by a factor of around 40
Volgens de gelinkte git github issue gaat het over tot 40 maal tragere prestaties, niet procent. Omgerekend is dat volgens mijn wiskunde een prestatieverlies van 97,5 procent.

[Reactie gewijzigd door rdcL.be op 4 februari 2022 16:57]

git issue
En als we dan toch aan het verbeteren zijn: het is een GitHub-issue, git kent geen 'issues'.
Gebruik Windows Terminal al een tijd naar volle tevredenheid. Mijn PS, git-bash, azure cloud shell zitten er allemaal netjes in. Maar dit ga ik niet perse activeren. Heb nog nooit geen last gehad van hetgene ze aanhalen. .
Een mooie video over performance van de terminal, of eigenlijk het gebrek aan performance en hoe snel het eigenlijk kan zijn: https://www.youtube.com/watch?v=hxM8QmyZXtg
Using {
System.NerdMode

NerdMode Sayko = new NerdMode;
}
Windows terminal bevriest nog steeds af en toel als je Control shift of Control shift p gebruikt om te plakken vanuit windows naar een WSL omgeving of Powershell. Enige dat dan nog kan is afschieten met de taskmanager

Gebeurt vaker met NeoVIM maar ook wel in andere situaties. Superirritant als je nog niet gesaved had.
Zie:
https://github.com/microsoft/terminal/issues/11945

Dat videootje over de snelheid ga ik eens goed bekijken.
Bij een side by side niet wetenschappelijke test van Alacritty naast Windows Terminal won Windows terminal. Althans een jaar geleden.
Aan de preview van Windows Terminal is verder de instelling elevate toegevoegd. Een profiel waarbij deze instelling geactiveerd is, opent Terminal-vensters automatisch met beheerdersrechten ingeschakeld.
Hoezo kopt de titel over een stomme nieuwe render engine, een marginale verbetering, terwijl dit een veel meer gevraagde feature is? De console is geen game (I know, Tweakers is steeds meer gamer-gericht), een render engine boeit niet zoveel.

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee