From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Daniel Colascione Newsgroups: gmane.emacs.devel Subject: Re: New GC concept Date: Mon, 7 Jun 2021 11:03:26 -0700 Message-ID: References: <874ke9h97y.fsf@rfc20.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="9479"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 To: Matt Armstrong , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Jun 07 20:09:53 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 1lqJhB-0002GQ-5G for ged-emacs-devel@m.gmane-mx.org; Mon, 07 Jun 2021 20:09:53 +0200 Original-Received: from localhost ([::1]:58138 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lqJhA-0002yh-3A for ged-emacs-devel@m.gmane-mx.org; Mon, 07 Jun 2021 14:09:52 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44144) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lqJb9-0002li-63 for emacs-devel@gnu.org; Mon, 07 Jun 2021 14:03:39 -0400 Original-Received: from dancol.org ([2600:3c01:e000:3d8::1]:56890) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lqJb4-0003J5-1Q for emacs-devel@gnu.org; Mon, 07 Jun 2021 14:03:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=sAK8TlcrUfipGw69ibmW8KHiB2m8c4hPsXucMhSgqxQ=; b=R6EBUFySQJ8qW/xX1qJ3wwmb15 sIw5yC/4W5DPPEiKm5Fh9bDHWCpDxSK6ctIexzovjNcF/ojaCn0X3/dlED/S+dVkoPIjmCTWECaOQ fJBNUj+w02NECE8HQFJGhrfUStZFajrrsdlQI1xHi+fjxha02igUsHDhCW3Q/WRIaJFXnSJ8Mk1I4 Qp83tF5ImBMSnoJ9mqaiEE72jtxH8+1rJ0LbmSf8ywUzBHFwGPeWTpqCZ+NFlP8f2k/REA/MABcn/ zL0Zlcq6vv8FxV6e65zlFeLW9Fv0kQINoHJhzYJtaSTLWFWmh7UVMHVJPNwXUE0kNJCjXhPeK45uH vZG/SgCw==; Original-Received: from rrcs-173-196-147-115.west.biz.rr.com ([173.196.147.115]:50374 helo=[10.29.6.40]) by dancol.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1lqJaw-0002We-Mg; Mon, 07 Jun 2021 11:03:26 -0700 In-Reply-To: <874ke9h97y.fsf@rfc20.org> Content-Language: en-US Received-SPF: pass client-ip=2600:3c01:e000:3d8::1; envelope-from=dancol@dancol.org; helo=dancol.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, SPF_HELO_PASS=-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:270532 Archived-At: On 6/7/21 10:32 AM, Matt Armstrong wrote: > Daniel Colascione writes: > >> Emacs has had the same GC for a decent amount of time now (since the >> 1980s, really). I spent some time in 2020 rewriting it from scratch. I >> haven't had time to work on the new GC recently, but I figure I'd throw >> it out here to get some feedback on the general concept. >> >> Check out >> https://github.com/dcolascione/emacs-1/blob/newgc-wip/src/alloc.c, >> specifically the big doc comment on top > Hey Daniel, I am no GC expert but I'm liking this a lot. I love the > block comments in your alloc.c -- very clear and easy to understand. > You're in a uniquely good position to work on this. I hope you > continue! Thank you! > I'm curious about the answer to one of the unanswered questions in your > alloc.c FAQ: What about systems without virtual memory? Asked another > way: can we reasonably expect to entirely replace the current GC with > this new one? Are there platforms Emacs supports today that would be > left behind? We can definitely replace the existing GC with the new GC everywhere. I've designed the new GC to work on systems without virtual memory facilities. On these systems, we'll have to run the GC in non-concurrent, non-generational mode, but that's no regression from what we have today. We'll also probably want to use a smaller block size on these systems to reduce fragmentation overhead.