From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: How to add pseudo vector types Date: Sat, 17 Jul 2021 13:30:40 -0400 Message-ID: References: <83h7gw6pyj.fsf@gnu.org> <45EBF16A-C953-42C7-97D1-3A2BFEF7DD01@gmail.com> <83y2a764oy.fsf@gnu.org> <83v95b60fn.fsf@gnu.org> <00DD5BFE-D14E-449A-9319-E7B725DEBFB3@gmail.com> <83r1fz5xr9.fsf@gnu.org> <1AAB1BCC-362B-4249-B785-4E0530E15C60@gmail.com> <83czri67h0.fsf@gnu.org> <46BBFF88-76C3-4818-8805-5437409BEA93@gmail.com> <83wnpq46uk.fsf@gnu.org> <533BD53B-4E85-4E9E-B46A-346A5BBAD0F5@gmail.com> <258CB68D-1CC1-42C8-BDCD-2A8A8099B783@gmail.com> <1a776770-50b7-93cd-6591-c9a5b3a56eb8@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39979"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: =?windows-1252?Q?Cl=E9ment?= Pit-Claudel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Jul 17 19:31:45 2021 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 1m4oAD-000AFI-3g for ged-emacs-devel@m.gmane-mx.org; Sat, 17 Jul 2021 19:31:45 +0200 Original-Received: from localhost ([::1]:36336 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m4oAC-0007Rw-1F for ged-emacs-devel@m.gmane-mx.org; Sat, 17 Jul 2021 13:31:44 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54686) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m4o9N-0006lk-Pg for emacs-devel@gnu.org; Sat, 17 Jul 2021 13:30:53 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:30583) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m4o9K-0002s8-EF for emacs-devel@gnu.org; Sat, 17 Jul 2021 13:30:52 -0400 Original-Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 23AFE80773; Sat, 17 Jul 2021 13:30:47 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id BDAB6806F0; Sat, 17 Jul 2021 13:30:41 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1626543041; bh=ejdWcRyC/6jmh/gLjHC8avA5Eu4HyDvK6rnxXFI3h7g=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=lLFqWRyF6fmSa4LdT/s0qTtKv8mZlQrmibx33x4NQnXNdkp+6V0nABWbDRJaDgrQK HA6Gz2KH/vVHO4YhuD1HQOXA/jAeEa/G6c/YGrP0eVEwtmEY32AQl1De+2KGPdgIqQ DdwsMad3vIfxT1UfKRf9q90RKY/Wa4SCaX7IwDkhOavQZ3zylN3TTqpiKD+mVXKLiq 43b9wETSW3CwUw+/Zmgs88SWB/bDYIek4XnFMyd3K1eS8iGL8n4qBSebWM2eH3exUs aegaoxuSFclSvweppWE/1WOcsL90tN80mLMTbmPVskrLpP4xHaTZWTaxwF02wTBT+9 qq9OBLBEsxd9g== Original-Received: from alfajor (unknown [216.154.29.138]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 018A8120264; Sat, 17 Jul 2021 13:30:40 -0400 (EDT) In-Reply-To: <1a776770-50b7-93cd-6591-c9a5b3a56eb8@gmail.com> (=?windows-1252?Q?=22Cl=E9ment?= Pit-Claudel"'s message of "Fri, 16 Jul 2021 22:23:26 -0400") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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" Xref: news.gmane.io gmane.emacs.devel:271339 Archived-At: In your benchmark , you give numbers for: - initial full-text parse (a bit above 1MB/s) - cost of update-without-reparse but I think it would be nice to see the cost of the reparse after those updates (should be much faster than the initial parse). Cl=E9ment said: > I have no idea if it makes sense, but: does the initial parse need to be > synchronous, or could you instead run the parsing in one thread, and the > rest of Emacs in another? (I'm talking about concurrent execution, not > cooperative threading). If we copy the buffer's content to a freshly malloc area before passing that to TS, then there should be no problem running TS in a separate concurrent thread, indeed. Eli said: > Why do you update the entire parser list for every modification? > This comment: If having multiple parsers in a single buffer is a not-uncommon case, then indeed we'll need to do better, but if we assume this is an anomalous situation, then Yuan's code is optimal ;-) > Yes, I think we should only ask TS to parse what we need, not more. We'll need to experiment with that. Using an approach like `syntax-ppss` where we only parse up to some high-watermark might be a good approach, but it's also possible that it will work poorly: if TS assumes it works on the whole buffer, then it will see the truncated text as a syntax error and while it is supposed to handle syntax errors nicely it may still lead to suboptimal behavior when parts of perfectly valid code is misparsed because the parser was not allowed to see the closing braces that make it "perfectly valid". Stefan