From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.devel Subject: Re: Make peg.el a built-in library? Date: Sun, 26 Sep 2021 08:06:00 -0700 Message-ID: <87r1db2x7r.fsf@ericabrahamsen.net> References: <875yvtbbn3.fsf@ericabrahamsen.net> <87bl5k87hq.fsf@alphapapa.net> <87fsuvpod4.fsf@ericabrahamsen.net> <874ka7wqko.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21297"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: emacs-devel@gnu.org Cancel-Lock: sha1:v73EOU93I/SDaiV268itWm4iIOk= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Sep 26 17:07:27 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 1mUVkU-0005NF-6L for ged-emacs-devel@m.gmane-mx.org; Sun, 26 Sep 2021 17:07:26 +0200 Original-Received: from localhost ([::1]:60766 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mUVkS-0004f2-Qp for ged-emacs-devel@m.gmane-mx.org; Sun, 26 Sep 2021 11:07:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35836) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mUVjT-0003x9-0g for emacs-devel@gnu.org; Sun, 26 Sep 2021 11:06:23 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:49950) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mUVjP-0000ye-Ko for emacs-devel@gnu.org; Sun, 26 Sep 2021 11:06:22 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mUVjM-0003tS-Jg for emacs-devel@gnu.org; Sun, 26 Sep 2021 17:06:16 +0200 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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:275514 Archived-At: Augusto Stoffel writes: > I think it would be really cool to have PEGs built into Emacs. Things > like json.el could be simplified by at least (log10 2) orders of > magnitude with PEGs. Whatever the use case of `rx' is, PEGs are > probably the "real" solution. > > But I suspect this would only take traction with a fast and robust C > implementation like Lua's LPEG (see below for a reason). I wonder if it would make sense to adopt this elisp library for now, see if people use it (or want to use it but complain about speed), and consider translating to C if they do? The elisp version has generic methods for `peg-normalize' (and `peg--macroexpand', though I guess that's private) which would allow library authors to write new peg expressions. We'd lose that with C, though I suppose speed vs extensibility is always the tradeoff with C vs Elisp. In a previous message I complained a little bit about the entry-points to PEG as it stands now -- they're all macros. Maybe if we were thinking in terms of a future C translation, we could narrow the API down a little and lock it down, and discourage authors from using anything that wouldn't be made available by the future version. Eric