From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ihor Radchenko Newsgroups: gmane.emacs.devel Subject: Concurrency via isolated process/thread Date: Tue, 04 Jul 2023 16:58:49 +0000 Message-ID: <871qhnr4ty.fsf@localhost> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26997"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jul 04 18:59:47 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qGjNS-0006mP-Nr for ged-emacs-devel@m.gmane-mx.org; Tue, 04 Jul 2023 18:59:46 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qGjMi-0001o3-Sp; Tue, 04 Jul 2023 12:59:00 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qGjMh-0001n3-8Y for emacs-devel@gnu.org; Tue, 04 Jul 2023 12:58:59 -0400 Original-Received: from mout01.posteo.de ([185.67.36.65]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qGjMe-0006np-Sx for emacs-devel@gnu.org; Tue, 04 Jul 2023 12:58:59 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id F175C240029 for ; Tue, 4 Jul 2023 18:58:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1688489935; bh=0LIogp+k+iqHghGtWumFWUqsTbRh9HvAjXnBy3gbC+4=; h=From:To:Subject:Date:Message-ID:MIME-Version:From; b=k7oTx8hCnsySh53wIdI2Shxs9TbDR/7F87nsIuPfOQ2NDL/bGnTVJ/082z1e71RR7 rWYwnyVx14yv7dpW2lVRfIoi3KXJm6iAlAtGZBgqTcGZe7HCn4iLy1R/81UkILDxei yFvMMj6q4WPrkXzJxWZfLL7mBm+Qlmjnwazm25oqjZDKpbuB2gRDMsmyaPs/r7/acJ Z7TW8iWNkfMgcw40SS4Y8Tj1K2/LneWoo4cEwINv/wGSI4LklbU7LTgI/JOMW6oMO3 tYEXf+7S0M9fsVShVbwqIv86Vf0IPusBgWYRRvuLhzx1Ux4TZb24PUNrZ0NNqWvPHa 7Tfw3M071OoKw== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4QwTXG2swmz9rxQ for ; Tue, 4 Jul 2023 18:58:54 +0200 (CEST) Received-SPF: pass client-ip=185.67.36.65; envelope-from=yantar92@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:307432 Archived-At: [ Discussion moved from https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64423 ] > > I feel that I am repeating an already proposed idea, but what about > > concurrent isolated process that interacts with the main process? > > (This stuff should not be discussed on the bug tracker, but on > emacs-devel.) Ok. > If you mean what the async package does, then yes, this is a workable > idea. But it doesn't need to change anything in Emacs, and it has > some downsides, like the difficulties in sharing state with the other > process. I had something similar in mind, but slightly different. emacs-async package explicitly transfers pre-defined set of variables to the async Emacs process and cannot transfer non-printable variables (like markers or buffers). But may it be possible to 1. Limit the async process memory to a small lexical subset of symbols (within a function). 2. Every time the async process needs to read/write a symbol slot outside its lexical scope, query the main Emacs process. More concretely, is it possible to copy internal Elisp object representations between Emacs processes and arrange mutability to query the right Emacs process that "owns" the object? The inter-process communication does not have to be asynchronous, but may work similar to the existing thread implementation. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at