I used to do this with Emacs, too (VM, Gnus, w3m, and more besides all the programming tools), and some of my Emacs packages are in support of that: https://www.neilvandyke.org/emacs/
For a (mostly) single host process, without preemptive multitasking/threading, Emacs as an operating system works surprisingly well.
For a (mostly) single host process, without preemptive multitasking/threading, Emacs as an operating system works surprisingly well.