From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "Alfred M. Szmidt" Newsgroups: gmane.emacs.devel Subject: Re: Shrinking the C core Date: Sun, 20 Aug 2023 16:15:25 -0400 Message-ID: References: <20230809094655.793FC18A4654@snark.thyrsus.com> <87zg2uqdmv.fsf@localhost> <87edk3gbh3.fsf@dataswamp.org> <87jztvnuyb.fsf@localhost> <875y5bdutt.fsf@dataswamp.org> <87y1i6e1uh.fsf@localhost> <874jkub40o.fsf@dataswamp.org> <87jztqdw2l.fsf@localhost> <87msym9i4r.fsf@dataswamp.org> <877cpp914t.fsf@localhost> <83fs4dwwdo.fsf@gnu.org> <874jkt90a5.fsf@localhost> <87y1i57jqi.fsf@localhost> <87pm3h7h8k.fsf@localhost> <87h6ot7cf3.fsf@localhost> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36430"; mail-complaints-to="usenet@ciao.gmane.io" Cc: eliz@gnu.org, incal@dataswamp.org, emacs-devel@gnu.org To: Ihor Radchenko Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Aug 20 22:16:30 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 1qXoqb-0009HC-RT for ged-emacs-devel@m.gmane-mx.org; Sun, 20 Aug 2023 22:16:29 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qXope-0005WG-KR; Sun, 20 Aug 2023 16:15:30 -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 1qXopc-0005Vz-6S for emacs-devel@gnu.org; Sun, 20 Aug 2023 16:15:28 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXopa-0002BL-HV; Sun, 20 Aug 2023 16:15:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=Date:References:Subject:In-Reply-To:To:From: mime-version; bh=Qs5dybeTCNvOCa2JkVS30LmUOU0NjIIH0f9K7LuDGOE=; b=Pg/Lc4avZAGE dv7a3+fgwwELneOULMJOgk7PpO+9H6FQ4aQN5aYTAAgSQcP6aXlz6OzFsS0Oj4zzmnY8EW8/dYena r+xYbnbdzZ3vnUF3N+BUq0PI57I0/BEDpxgyBKVjaImZIipvlsD0sz4WP41DvmDydReuRgKsewpko lxfyOqNJAJwUmAfElX1FphSKURxpiKN3OugTkUCDQjkqn09nc2jXgqnlif8rcnzY6dzx8BaI5cP1b T5dfIM5IIVhZ9LFS6QujVm/4YjRYyD0E/N+WBHVha5tyt0zYqBXuq1Wd8TpBUfGWvmYXHmuj1muzc Pu4OFN9nFc6iW1FlCWLdnw==; Original-Received: from ams by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from ) id 1qXopZ-0005X9-Mj; Sun, 20 Aug 2023 16:15:25 -0400 In-Reply-To: <87h6ot7cf3.fsf@localhost> (message from Ihor Radchenko on Sun, 20 Aug 2023 19:15:44 +0000) 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:308995 Archived-At: > Then, what does GCC do? AFAIK, GCC JIT takes the Elisp byte code, > transforms it into JIT pseudocode, and optimizes the actual code flow. > > What does GCC do _WHERE_? What backend? What language? You're > speaking in such broad terms that it makes it impossible to continue > this discussion. I don't know how the native compilation works, but > no matter what you feed to GCC it cannot do magic and any optimization > should be done on what the Emacs compiler does. Native compilation provides the necessary information about Elisp to GCC. Native compilation provides nothing of the sort. Otherwise, native compilation would be useless. Native compilation removes the indirection of going through the VM, that is a useful step. It also provides the JIT. SBCL does transformation of Lisp code, there is a huge difference there that clearly is being ignored here. > That is the type of information SBCL knows about, or allows the user > to specify. Emacs does not have that today, and that incures one set > of overhead. There are plenty more... AFAIK, users cannot specify type info manually, but types are tracked when transforming Elisp byte code into LIMP representation. You cannot track type information in a dynamically typed language without providing hints, something Emacs lisp does not do.