GC leak?
Vladimir G. Ivanovic
vgivanovic at comcast.net
Sun Feb 3 02:22:16 EST 2008
Jerry,
About this XEmacs redesign paper you are thinking of writing... ;-)
Seriously, it would be great if you put your (incomplete) thoughts on
virtual paper and emailed them to the list. So far the discussion has
been quite civil, so I don't expect that you'd get any arrows in your
back.
--- Vladimir
on 02/01/2008 03:31 PM Jerry James said the following:
> On Feb 1, 2008 3:56 PM, Stephen J. Turnbull <stephen at xemacs.org> wrote:
>> That's a good way to convince me to do the opposite. (Sorry, couldn't
>> resist taking a poke at Java. :-)
>>
>> Seriously, nor does Scheme AFAIK. In theory all Scheme objects are
>> eternal, but you can GC their memory images in a process if there are
>> no remaining references to them. You don't have to.
>
> It's the only sane model for a garbage collected system where you are
> not imposing a particular garbage collection algorithm. Think about
> defining a time when a finalizer MUST be run and the object garbage
> collected. It's too dependent on the design of the garbage collector.
> A generational GC, for example, will answer that question much
> differently from a mark-and-sweep GC.
>
>> True. However, in many cases we do have external resources needing
>> finalization (databases and network connections need closing, fds need
>> flushing, etc), and if we allow the finalizers to do that work and
>> guarantee that finalizers get run before a normal exit, there's that
>> much less work that application programmers need to do.
>
> Stop me if I'm wrong, but don't we already flush all streams on exit?
> As long as all data has been pushed into the OS layer, it doesn't
> matter if the OS or the application does the actual closing. In fact,
> I'll go so far as to claim that we don't need guaranteed finalizer
> runs at all, as long as we guarantee that all streams are flushed.
>
>> How do Java and RnRS treat such external objects that need finalization?
>
> Java doesn't. You can't use finalizers for guaranteed cleanup
> purposes. You use try { ... } finally { ... } blocks to do that. I
> don't know RnRS well enough to say.
>
>> Surely we can come up with a way to tag certain classes as having
>> "important" finalizers in that sense, and guarantee that they be run
>> even at exit. (Isn't there a class of LRECORD_WITHOUT_FINALIZER
>> already?) Or we could separate finalization into a two stage process,
>> the first stage finalizes external resources, and is always done. The
>> second stage finalizes resources that the OS would clean up for us at
>> shutdown, and can be omitted at shutdown. But such omission is an
>> optimization; it can wait if necessary.
>
> I don't think we need to do this.
>
>> People who are in a hurry for a given instance to start and stop can
>> run XEmacs as a server process and do all their editing via gnuclient.
>> (Really, XEmacs proper should have no UI; all UIs should be clients of
>> the editor. :-)
>
> Wow, deja vu all over again. I'll have to fork this off as a separate
> thread, or maybe even take it private if nobody else cares, but that
> parenthetical remark really resonates with me. I've had idle dreams
> for several years now of ways in which I'd like to transform the
> design of XEmacs. I've even sketched up primitive designs for some of
> them, but haven't had time to take them any farther. For example,
> I've considered a file block caching system to deal with large files,
> a layered "view" of data with well-defined transformers up and down so
> that it is easy, for example, to switch between a hex view (no hexl
> needed!), a character view, and a display view of an HTML file, and
> allow edits in any view to propagate to the others. Separating the
> data handling piece from the presentation piece(s) was something I
> considered as well. You could attach to a single instance from a TTY,
> a GNOME session, etc. without having to "blend" the displays like we
> do now. And then there's the extension language. There are so many
> to choose from, and ... well, Elisp just doesn't cut it anymore.
> Sorry, guys! In any case, there should be a clean separation of the
> extension language from the rest of the application. (X)Emacs C code
> is full of Elisp dependencies.
>
> I've never had time to pursue any of this before, but I find that I
> have actual free time now that I'm not an academic. I've been working
> on some other projects that have been waiting for love and attention
> [1] [2], but sometime next fall, I should be able to get serious about
> some of these ideas. If they sound threatening, start maneuvering now
> to head me off. :-) In any case, every single one of them will
> involve touching gigantic gobs of C and Lisp code, so none of them
> will be pulled off quickly.
>
> Footnotes:
> [1] http://jjames.fedorapeople.org/
> [2] Imagine a C code checker that (1) can parse and reason about
> unpreprocessed C code, (2) understands features introduced in C99, and
> (3) processes source files in a variety of character encodings. It's
> partially built. I'll need a few more months to build it up to where
> it's minimally usable, and still more time after that to implement all
> the features I envision. If you find yourself drooling over the
> thought of working on that code base, let me know and maybe I'll find
> somewhere to host it ... right after I decide on the license under
> which I want to distribute it. Choices, choices, ...
--
Vladimir G. Ivanovic
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: OpenPGP digital signature
Url : http://lists.xemacs.org/pipermail/xemacs-beta/attachments/20080202/ba6cd595/signature.pgp
More information about the XEmacs-Beta
mailing list