From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: GNU is looking for Google Summer of Code Projects Date: Thu, 19 Mar 2020 13:35:08 -0400 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="82022"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: emacs-devel To: Rocky Bernstein Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Mar 19 18:36:55 2020 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 1jEz6F-000LFL-9L for ged-emacs-devel@m.gmane-mx.org; Thu, 19 Mar 2020 18:36:55 +0100 Original-Received: from localhost ([::1]:41096 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jEz6E-0008MY-A9 for ged-emacs-devel@m.gmane-mx.org; Thu, 19 Mar 2020 13:36:54 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35098) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jEz4d-0006Nh-6z for emacs-devel@gnu.org; Thu, 19 Mar 2020 13:35:16 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jEz4b-0008Uq-ES for emacs-devel@gnu.org; Thu, 19 Mar 2020 13:35:14 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:14198) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jEz4b-0008UQ-7c; Thu, 19 Mar 2020 13:35:13 -0400 Original-Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 62CC744F62B; Thu, 19 Mar 2020 13:35:12 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 4F32C44F5C2; Thu, 19 Mar 2020 13:35:10 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1584639310; bh=GsIVv2aN9bwOiqetZ9lJ5jGnDRYTQrkZQQqWpTwLy6Q=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=bvp0TpKcEh8WUGNT0QH126mP/NB6bsb3HGUCPyOMp2AM6l/+4jNwVdxuW2Acoiti3 WlKBtgLTQyZNsLP/Douo7FCT2Wfom3LGteo40zOGQD+i+azZs4/udqRaMiRVHByDGl ScZi59KO7Mu6bKzg0YU5KaPsaZ0K09os70xcwbToPWdNkdht+y3lAwHPDKU64k+uBs MgixGhliHFFFlqdWJS9e5+WO/OC2leRynOgnHIL5HqPooOIr7o2pwFwkzdM75bt61m eqNydMi5/vZEkM7xCwW7xOvA5KD22rOy9m4NmX6WHs+2SPUH2AkOHW8kL/Hj7z7jvc 2L3+nYZ1T4o/Q== Original-Received: from alfajor (unknown [104.247.241.114]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1C78012053C; Thu, 19 Mar 2020 13:35:10 -0400 (EDT) In-Reply-To: (Rocky Bernstein's message of "Thu, 19 Mar 2020 11:10:31 -0400") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 132.204.25.50 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:245583 Archived-At: > My own favorite ones regarding GNU Emacs have to do with beefing up the > Emacs Lisp runtime and bytecode system. In particular giving proper > callback information from bytecode (bytecode offset, mapping information > from bytecode to line numbers). The bytecode decompiler I started, while it > works on simple examples, I think I could get going in a much more solid > and reliable way. It should be easy (much smaller than a summer project) to change the C code so that a bytecode offset can be extracted from the backtrace. The harder and more interesting part is how to propagate source information (line numbers and/or lexical variable names and location) to byte-code. There are many parts to this, so it's definitely possible to get some summer project(s) out of it. E.g. one such project is to change the reader so it outputs "fat cons cells" (i.e. cons-cells with line-num info), then arrange for that info to survive `macroexpand-all` and `cconv.el`. That could already be used to give more precise line numbers in bytecompiler warnings. Another is to devise a way to annotate bytecode objects with a map from byte-offsets to information about the lexical vars in-scope at that point and their location (i.e. position in the stack or in the closure). And then teach Emacs's debugger to use that info. > But enough about me. What is most in need of help in GNU Emacs that a > summer student might reasonably make progress on? I'm sure there are lots of desires. One I'd suggest is to introduce an "object description" that can be used both by the GC and pdump code (and maybe also by `equal` and `print--preprocess`?), so that when changing the representation of objects or introducing new types we don't have to make corresponding changes in so many different places. XEmacs had such a thing, so there's previous experience on which we can build. It could also be a step towards replacing our GC with one that's incremental such the one in XEmacs (or even better: concurrent, unlike that of XEmacs). Stefan