Ok, But how to do this in Emacs version 25-27? Emacs doesn't support named pipe access, but may be we can use `make-network-process` to open a TCP socket. Like this? ``` (let ((proc (make-network-process :name "fake-proxy-process" :server t :host 'local :filter :noquery t ;; Detect port automatically :service t))) (setq proc) (module-function-initialize-notify (process-contact proc :service))) ``` But this maybe too strange for user to understand why a dynamic module require a TCP port access... At 2020-10-31 20:49:21, "Stefan Monnier" wrote: >> With Emacs 28, you can get a file descriptor to a pipe process and >> send arbitrary data there (from arbitrary threads). > >Cool, so that takes care of it. > >> You'd still need some small protocol (e.g. JSON) to encode/decode >> requests, but with that you can send arbitrary requests >> back asynchronously. > >I don't think you need a complex protocol: just stash somewhere (inside >the module data structures) the data you need for the async request, >then send a dummy byte to the pipe. On the Lisp side, just install >a process-filter which calls back the module to "run any pending async >requests". > > > Stefan >