[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Not protecting Lisp objects from GC
From: |
Jeremy Bryant |
Subject: |
Re: Not protecting Lisp objects from GC |
Date: |
Wed, 29 Jan 2025 23:09:05 +0000 |
Gerd Möllmann <gerd.moellmann@gmail.com> writes:
> Jeremy Bryant <jb@jeremybryant.net> writes:
>
>
>> and care a lot about Emacs.
>
> To _very_ varying degrees over the decades, including two with zero
> interest. It's a long story :-).
I hear it's a long story. After first using Emacs in the 90's, I
discontinued for unfathomable reasons. I also therefore missed the
Emacs releases you did as maintainer. I was recently studying the
xdisp.c code, to which M-x vc-annotate tells me you made large
contributions around 1999-2001 at least. I find your code comments
helpful to learn about the code. Thanks for that.
Emacs itself is also a long story. It takes time to work on large
features.
>> I am a non-expert in GC.
>> As such would you have any guidance on how to
>> understand the benefits of the igc branch
>
> I recommend starting with admin/igc.org. I'm not a particularly good
> explaining things, but I'd hope it's helpful anyway.
>
>> and the 'easiest' entry points into the code for study purposes?
>
> MPS is a library, so one has to understand its API first; igc.org has
> links to the MPS documentation. The documentation includes a Guide that
> I would start with.
>
> Once you've done that, read the rest of igc.org, and then see how igc.c
> uses the API. I'd start here
>
> igc.c:
> 5235 void
> 5236 init_igc (void)
> 5237 {
> 5238 /* Returns previous handler. */
> 5239 (void) mps_lib_assert_fail_install (igc_assert_fail);
> 5240 global_igc = make_igc ();
> 5241 add_main_thread ();
> 5242 set_state (IGC_STATE_USABLE_PARKED);
> 5243 }
>
> This is called very early when Emacs starts. It sets up everything so
> that the GC is usable. Follow the call tree and look up MPS API
> functions being called in the MPS Reference.
>
> Then ask questions :-).
Thanks for the detailed description and guide. I will read up and try
to ask questions.
Furthermore this succinct summary and entry point may
help guide others now, on the road to this large feature.
- Re: Not protecting Lisp objects from GC, (continued)
- Re: Not protecting Lisp objects from GC, tomas, 2025/01/28
- Re: Not protecting Lisp objects from GC, Gerd Möllmann, 2025/01/28
- Re: Not protecting Lisp objects from GC, tomas, 2025/01/28
- Re: Not protecting Lisp objects from GC, tomas, 2025/01/28
- Re: Not protecting Lisp objects from GC, Eli Zaretskii, 2025/01/28
- Re: Not protecting Lisp objects from GC, tomas, 2025/01/28
- Re: Not protecting Lisp objects from GC, Jeremy Bryant, 2025/01/28
- Re: Not protecting Lisp objects from GC, Gerd Möllmann, 2025/01/28
- Re: Not protecting Lisp objects from GC,
Jeremy Bryant <=
- Re: Not protecting Lisp objects from GC, Gerd Möllmann, 2025/01/30
- Re: Not protecting Lisp objects from GC, Eli Zaretskii, 2025/01/30
- igc testing and bug reports -was- Re: Not protecting Lisp objects from GC, Jeremy Bryant, 2025/01/31
- Re: Not protecting Lisp objects from GC, Stefan Kangas, 2025/01/27
- Re: Not protecting Lisp objects from GC, Eli Zaretskii, 2025/01/27
- Re: Not protecting Lisp objects from GC, Pip Cet, 2025/01/27
- Re: Not protecting Lisp objects from GC, Eli Zaretskii, 2025/01/28
- Re: Not protecting Lisp objects from GC, Pip Cet, 2025/01/28
- Re: Not protecting Lisp objects from GC, Stefan Kangas, 2025/01/28
- Re: Not protecting Lisp objects from GC, Pip Cet, 2025/01/29