all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Gerd Möllmann" <gerd.moellmann@gmail.com>
To: Philip Kaludercic <philipk@posteo.net>
Cc: emacs-devel@gnu.org
Subject: Re: CL packages landed
Date: Sat, 22 Oct 2022 14:13:12 +0200	[thread overview]
Message-ID: <m28rl812g7.fsf@Mini.fritz.box> (raw)
In-Reply-To: <878rl8p1my.fsf@posteo.net> (Philip Kaludercic's message of "Sat,  22 Oct 2022 10:56:53 +0000")

Philip Kaludercic <philipk@posteo.net> writes:

> Gerd Möllmann <gerd.moellmann@gmail.com> writes:
>
>> I've pushed the branch "pkg" which implements CL packages for Emacs.
>>
>> Before Someone (tm) gets the idea of blowing up something like Internet
>> cables instead of pipelines, or we have blackouts here, or whatever, I
>> thought I'd better make this accessible.
>
> I am very glad to see this!  Could you comment on what larger influence
> with might have on Emacs Lisp as a language.

I can say something about what my goal is. If this ever lands in master
is a different story, I haven't heard something like that being said.
But packages are now there, and won't disappear :-).

So, my goal:

- Be backwards-compatible for users and developers.

- Provide the benefits of packages to developers, mainly.  Where users
  writing their own stuff would be developers as well, who use currently
  "my-" prefixes for own functions etc.
  
  Some of the benefits: The ability to export only a subset of
  functions/variables, while being able to use unobstrusive names.  It
  would no longer be neccessary to use prefixes like or "xyz-", or
  "xyz--".  You could define a package "xyz", and reference definitionsi
  with something like "xyz:..." or "xyz::..." (use only if you must
  access internals).  Or use no prefix at all by importing symbols or
  packages.

  Emacs itself could hide tons of internal definitions like that, and
  export only what is in the public interface.

  And so on, you get the idea.

And one could think of extensions, which are currently not in scope for
me, like hierarchical packages (think Java, x.y.z.collections) that
could be added on top, to structure the package namespace.  CMUCL and
Allegro CL have something like that.

> E.g. in bug#57907 there was a discussion how adding keyword support
> for cl-loop was not necessary for Emacs Lisp, but now that symbol
> packages might become a thing, would that have to change?

I remember that.  The implementation of cl-loop would have to be changed
to work like it does in Common Lisp, that is, it would accept something
like 'for' regardless of for's package.  That's not hard.

> How would the support look like from a backwards compatibility
> perspective?  I am assuming all old code would be loaded into the
> default packages, right?

Right, and that's already the case in feature/pkg, and it seems to work
well, except that Gnus doesn't start for me.  I couldn't figure that one
out yet.  Gnus is large, and tedious to debug if one doesn't know its
internals.

Other than that, what I use (Magit, Helm, Lsp, ...) seems to work just
fine, and meanwhile the existing tests also succeed.  That looks like
good news in the compatibility department so far.

Performance seems to be more or less the same, unsurprisingly, a full
build is a tad faster in pkg.  No difference noticeable interactively.



  reply	other threads:[~2022-10-22 12:13 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-21  4:47 CL packages landed Gerd Möllmann
2022-10-21  5:35 ` Po Lu
2022-10-21  6:42 ` Stefan Kangas
2022-10-21  6:48   ` Gerd Möllmann
2022-10-21  6:55     ` Po Lu
2022-10-21  6:58       ` Gerd Möllmann
2022-10-21  7:46     ` Eli Zaretskii
2022-10-21  8:01       ` Gerd Möllmann
2022-10-21 10:48         ` Eli Zaretskii
2022-10-21 10:49           ` Gerd Möllmann
2022-10-21 13:04             ` Stefan Monnier
2022-10-21 14:01               ` Gerd Möllmann
2022-10-22  9:40               ` Michael Albinus
2022-10-22 10:20                 ` Gerd Möllmann
2022-10-22 15:09                   ` Michael Albinus
2022-10-22 15:45                     ` Gerd Möllmann
2022-10-22 10:24                 ` Stefan Kangas
2022-10-22 15:06                   ` Michael Albinus
2022-10-21  6:50   ` Gerd Möllmann
2022-10-21  7:42 ` Andrea Corallo
2022-10-21  7:57   ` Gerd Möllmann
2022-10-21 15:06 ` [External] : " Drew Adams
2022-10-21 17:21   ` Gerd Möllmann
2022-10-21 20:13     ` Drew Adams
2022-10-22 10:56 ` Philip Kaludercic
2022-10-22 12:13   ` Gerd Möllmann [this message]
2022-10-23 19:14 ` Richard Stallman
2022-10-24  4:17   ` Gerd Möllmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m28rl812g7.fsf@Mini.fritz.box \
    --to=gerd.moellmann@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=philipk@posteo.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.