From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Ivan Yonchovski Newsgroups: gmane.emacs.bugs Subject: bug#38807: [Feature request]: Support lisp workers like web workers. Date: Thu, 26 Mar 2020 20:14:58 +0200 Message-ID: <87v9mrkmot.fsf@gmail.com> References: <83o8vpn8g1.fsf@gnu.org> <87mub9u0ld.fsf@gmx.de> <831rslmxih.fsf@gnu.org> <83lfqslafm.fsf@gnu.org> <83r20jjgg3.fsf@gnu.org> <83png1hyb8.fsf@gnu.org> <83imlrh9ze.fsf@gnu.org> <83d096dswz.fsf@gnu.org> <83lfnscvfi.fsf@gnu.org> <831rphbyuw.fsf@gnu.org> <837dz79nvh.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="80298"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.3.7; emacs 27.0.60 Cc: HaiJun Zhang , 38807@debbugs.gnu.org, michael.albinus@gmx.de To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Mar 26 19:16:19 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1jHX3A-000KhS-3K for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 26 Mar 2020 19:16:16 +0100 Original-Received: from localhost ([::1]:57420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jHX38-00089x-WE for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 26 Mar 2020 14:16:15 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48180) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jHX2x-00089o-Nj for bug-gnu-emacs@gnu.org; Thu, 26 Mar 2020 14:16:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jHX2w-0006lA-NT for bug-gnu-emacs@gnu.org; Thu, 26 Mar 2020 14:16:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:54194) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jHX2w-0006l5-K3 for bug-gnu-emacs@gnu.org; Thu, 26 Mar 2020 14:16:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jHX2w-0005HY-EP for bug-gnu-emacs@gnu.org; Thu, 26 Mar 2020 14:16:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ivan Yonchovski Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 26 Mar 2020 18:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38807 X-GNU-PR-Package: emacs Original-Received: via spool by 38807-submit@debbugs.gnu.org id=B38807.158524650820231 (code B ref 38807); Thu, 26 Mar 2020 18:16:02 +0000 Original-Received: (at 38807) by debbugs.gnu.org; 26 Mar 2020 18:15:08 +0000 Original-Received: from localhost ([127.0.0.1]:60167 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHX24-0005GF-LZ for submit@debbugs.gnu.org; Thu, 26 Mar 2020 14:15:08 -0400 Original-Received: from mail-lf1-f48.google.com ([209.85.167.48]:34639) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHX23-0005Ff-JE for 38807@debbugs.gnu.org; Thu, 26 Mar 2020 14:15:07 -0400 Original-Received: by mail-lf1-f48.google.com with SMTP id e7so5708818lfq.1 for <38807@debbugs.gnu.org>; Thu, 26 Mar 2020 11:15:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version; bh=QJujqNrmlirb1LBU19psDAH+w34jaaFt9gRFNPR6ti8=; b=gJ22pGAQV+y4awK2ezgL3vv2jHBosKyqKD/VFI0+U0kw73kkYUC6XhxyZuvYccAx2Q ms1jLTUnaHfuwR6z7oHXqCS5AjHBwbNeNOY+39OrkrgnYPZjT4tmex+Y6cCJWiy4YPsI jOU4HeIMjga7k+Bbg7O6T8Ijje5UVTzMTG9gu1I+FAPNJ+k66rPtsLRVptAeBgYElyDs 8brKt/szb2qBBB6PX253SQmdVH0AgBNa2DTFMbskk41uXCNNYF9SUvMsoouvxrzDpX04 LUa3v3oZy5YSNahxdZuTOBZLhkV/EcbAs4SNEiB9jwGWe6h/oqFXTennwMumPHyXmoCY hedQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version; bh=QJujqNrmlirb1LBU19psDAH+w34jaaFt9gRFNPR6ti8=; b=cOw4mLg5Y3QMBGhlsABCAvtrv31y5LYyGHXc1owZvuoGuaVGDEXtYYZAEiHHb2XbRx 2BkJT8GMkMkA5KMtHFaPQ82f+HRFnNMUc4w0hor2f5d+Dx5i8Ga/uxmdCKCdeaTCrDTx MhCTbzYcGfEKdHRZiihiHVXuIpNwTAX59pBzO6leL0bubkrlkS2OWOMYH8VuQFjHAlfi jUDorztwYhOQv4FfrQthmHVokjutt4RG09qEpHk9LF6GiD152h2tqgvdsrUFYwQd9s9V U1wgoAWo23l+suR+Hat3WQPRWwQddiwwGNG9IZpI2QFAdog7v72nBChhK/90tgeGhJ7K 4RSQ== X-Gm-Message-State: ANhLgQ3X1JiUOVrMz1grwEW7I7ev/DUZHDPhLdPNDqsIrw6Yky0MNtNm FZidqgNBIGj4+c6VmpuPHbrnV+YMBcU= X-Google-Smtp-Source: ADFU+vvG6rFy27MSErdE7d2jawYcqw4rFYsOuzsLANj7chdy3Dh2QW4SWNTCK82hgfo7gHnSv1p6uA== X-Received: by 2002:a05:6512:31d5:: with SMTP id j21mr6648079lfe.23.1585246501222; Thu, 26 Mar 2020 11:15:01 -0700 (PDT) Original-Received: from kyoncho-H87-D3H ([2a00:4802:28d:1200:3c39:d732:372b:ad0a]) by smtp.gmail.com with ESMTPSA id y20sm1862627ljd.35.2020.03.26.11.14.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Mar 2020 11:15:00 -0700 (PDT) In-reply-to: <837dz79nvh.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:177757 Archived-At: Eli Zaretskii writes: > Since the user waits for this job to finish anyway, why does it help > to run some of this processing in a separate thread? The user might not want to wait for the completion but he/she might want to continue to type while the parsing is taking place. The effect is that the typing feels slugish. IME with latest native json parsing this is no longer the case for lsp-mode. With my limited understanding of emacs internals I see 2 potential solutions to allow writing of "lisp workers". 1. Start second(or multiple) elisp interpreter in the emacs process which has thread local copy of all of the global data(buffers, data allocation, etc). It may or may not have a gui attached to it. In addition to that, introduce primitives for moving elisp datastructure from the background thread to the main UI thread and vice versa eventually by coping the original structure to avoid bugs. 2. Make the functions that create elisp datastructures threadsafe(or some sane subset) and expose them to the dynamic modules. Thanks, Ivan