Microsoft Discovers The Command Line

Lawrence D'Oliveiro <[email protected]>
Newsgroups gmane.org.user-groups.linux.waikato
Organization Geek Central
Message-ID <[email protected]>
A review
<https://www.theregister.co.uk/2019/06/25/microsofts_new_terminal_put_through_paces/>
of Microsoft’s revamped Windows Terminal app. Features like session
tabs and customizable profiles should be familiar to users of Linux
terminal apps. The biggest downside seems to be that this is a UWP app,
which means it only works with specific versions of Window 10.

Actually, Windows had a sort-of-remotable/virtualizable-command-line
support before. The difference is, all the *nix-type systems
implement this using “PTY” (“pseudo-terminal”) devices, which one
process (like an SSH server or GUI terminal emulator) can open and
use to drive other processes on the other side, which act as
though they are connecting to a real terminal. All the fancy screen
stuff (e.g. direct addressing, coloured text) is done by sending
in-band “escape sequences”, which real terminals (which are all museum
pieces now) used to respond to, and which the terminal emulators
nowadays faithfully mimic.

However, Microsoft didn’t like the whole escape-sequence idea; instead,
it implemented a whole API it called “ConHost”, where the application
had to make special calls to affect the display in special ways. This
sounds more advanced than the crude-sounding escape-sequence idea from
the 1970s, yet it turns out that the Microsoft approach makes it
awkward to implement those same SSH servers and GUI terminal emulators
that we take for granted in the Linux world. So now the company is
back-pedalling away from that, and towards good old PTYs and escape
sequences, in its new “ConPTY” architecture.

There is still one issue I don’t think they’ve addressed yet, though
<https://forums.theregister.co.uk/forum/all/2019/06/25/microsofts_new_terminal_put_through_paces/#c_3811206>:

    ... a working select() would be nice. MS's function cannot wait
    across a set of fd's of different types (such as a serial port and
    a network socket). In the end I gave up and used the cygwin
    platform, which has a working select(), which was enough to do the
    job of talking to a telehone exchange via RS232 and fielding
    network requests at the same time. The unix philosophy that at the
    end of the day, everything is a file, pays huge dividends. Using
    cygwin also gave me a nice simple tcgetattr()/tcsetattr() which
    allowed serial port setup in a tiny amount of code, compared to the
    sheer lovecraftian horror that is the windows API for such things.

I still find it remarkable that the Cygwin folks were able to implement
a function on top of Windows that Microsoft itself seems unable to
figure out.
_______________________________________________
wlug mailing list | [email protected]
Unsubscribe: https://list.waikato.ac.nz/mailman/listinfo/wlug
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.