From: Dmitry Gutov <dmitry@gutov.dev>
To: "João Távora" <joaotavora@gmail.com>
Cc: "Gerd Möllmann" <gerd.moellmann@gmail.com>,
"Eli Zaretskii" <eliz@gnu.org>,
michael_heerdegen@web.de, emacs-devel@gnu.org
Subject: Re: What's missing in ELisp that makes people want to use cl-lib?
Date: Tue, 14 Nov 2023 02:41:02 +0200 [thread overview]
Message-ID: <43f290b0-4119-597b-c89a-0fb4c7db1665@gutov.dev> (raw)
In-Reply-To: <54e115a2-fc36-3056-a030-0dbf32416ddb@gutov.dev>
[-- Attachment #1: Type: text/plain, Size: 4516 bytes --]
On 13/11/2023 04:43, Dmitry Gutov wrote:
>>> The case with longer lists and other data structures should be
>>> possible to improve, though. As long as the type dispatch only happens
>>> once per sequence, and not for each element.
>>
>> Maybe it's possible. But there are two things here: first, you need
>> non-destructive versions of things in seq.el, because consing is always
>> a killer. Second, the generic function interface means the typical
>> shortcuts I applied in cl-lib.el are difficult. Maybe even impossible
>> without breaking the current contract? I don't know the contract well
>> enough to tell. At any rate seems like non-trivial work, but I'm happy
>> if someone can give it a shot.
>
> I hope someone will. And agree about destructive versions.
Here's an experimental patch that makes seq-difference about as fast as
your new improved non-destructive cl-set-difference. And some notes.
First of all, the type dispatch _does_ happen more than once per
sequence in the current master. That doesn't seem to hurt much while the
method is not specialized (only has the default implementation), but has
impact as soon as the function gets additional method definitions.
Second, the seq-reduce implementations for the set functions don't seem
optimal. So, check out the attached with the below continued benchmark:
(defun joaot/handrolled-nset-difference (list1 list2)
(if (or (null list1) (null list2)) list1
(let ((res nil))
(while (consp list1)
(if (funcall #'member (car list1) list2)
(setf list1 (cdr list1))
(cl-shiftf list1 (cdr list1) res list1)))
res)))
(defun dmitry/set-difference-nocons (list1 list2)
(let (ref)
(while (member (car list1) list2)
(setq list1 (cdr list1)))
(setq ref list1)
(while ref
(if (member (cadr ref) list2)
(setcdr ref (cddr ref))
(setq ref (cdr ref))))
list1))
(setq cc (all-completions "" obarray))
(setq list2 (make-list 12 "shooveedoowaa"))
(when nil
;; (0.38175291299999997 0 0.0)
(benchmark-run 100 (setq cc (joaot/handrolled-nset-difference cc list2)))
;; (0.345876673 0 0.0)
(benchmark-run 100 (dmitry/set-difference-nocons cc list2))
;; (1.2209711170000002 38 0.7669010760000001)
(benchmark-run 100 (cl-set-difference cc list2 :test #'equal))
;; (2.10207541 67 1.410268502) NOT THE FASTEST
(benchmark-run 100 (seq-difference cc list2))
;; (1.3434452970000001 33 0.7025866390000006)
(benchmark-run 100 (seq-difference-2 cc list2))
;; (1.243865238 34 0.7060731869999994)
(benchmark-run 100 (seq-difference-3 cc list2))
)
seq-difference is the original implementation based on seq-reduce. It's
much faster here, though, because of the change to seq-contains-p which
teaches it to use 'member' when it can.
seq-difference-2 is an implementation that just switched to using
seq-filter.
And seq-difference-3 is the one that makes sure the type dispatch
happens only once (or twice), and not for every element in SEQUENCE1.
For that, I defined a new generic seq-contains-pred which returns a
function.
seq-difference-3 is the fastest among the last three and is about the
speed of the cl-lib's variant.
The plot twist is that when I tried to extract the sequence type check
into a separate method (see the commented out "cl-defmethod
seq-contains-p" line), the performance of seq-difference and
seq-difference-2 fell by an order of a magnitude (2s -> 9s). So it seems
like using the new seq-contains-pred is the one way that would keep
decent performance while supporting generic extensions.
The latter also means all current uses of seq-contains-p inside seq.el
should be rewritten using seq-contains-pred.
As for seq-some, 1.27x or 1.6x slower for the identity predicate doesn't
look as bad in comparison. Especially for an implementation this short
and generic. It incurs an extra funcall in Lisp through the use in
'seq-doseq', so that might be the cost. It should be easy to add a
specialization for lists while still keeping the code shorter than
cl-some, if one were so inclined. Would be cooler to find a more generic
bottleneck like in the case above, but so far, no luck.
And in other interesting functions, cl-remove-if-not is about 4x faster
than seq-filter in the best case (e.g. the list is not modified), but
about the same in the worst case (when the last link is removed). There
must be some shortcut there too which could be reproduced.
[-- Attachment #2: seq-difference.diff --]
[-- Type: text/x-patch, Size: 2979 bytes --]
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 346250c1d35..6869f498e43 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -440,12 +440,43 @@ seq-contains
(cl-defgeneric seq-contains-p (sequence elt &optional testfn)
"Return non-nil if SEQUENCE contains an element \"equal\" to ELT.
\"Equality\" is defined by the function TESTFN, which defaults to `equal'."
+ (cond
+ ((and (listp sequence) (or (null testfn) (eq testfn 'equal)))
+ (member elt sequence))
+ ((and (listp sequence) (eq testfn 'eq))
+ (memq elt sequence))
+ (t
(catch 'seq--break
- (seq-doseq (e sequence)
- (let ((r (funcall (or testfn #'equal) e elt)))
- (when r
- (throw 'seq--break r))))
- nil))
+ (seq-doseq (e sequence)
+ (let ((r (funcall (or testfn #'equal) e elt)))
+ (when r
+ (throw 'seq--break r))))
+ nil)))
+ )
+
+;; (cl-defmethod seq-contains-p ((sequence list) elt &optional testfn)
+;; (cond
+;; ((or (null testfn) (eq testfn 'equal))
+;; (member elt sequence))
+;; ((eq testfn 'eq)
+;; (memq elt sequence))
+;; (t
+;; (cl-call-next-method))))
+
+(cl-defgeneric seq-contains-pred (_sequence &optional testfn)
+ (cond
+ ((or (null testfn) (eq testfn 'equal))
+ #'member)
+ ((eq testfn 'eq)
+ #'memq)
+ (t
+ (lambda (elt sequence)
+ (catch 'seq--break
+ (seq-doseq (e sequence)
+ (let ((r (funcall testfn e elt)))
+ (when r
+ (throw 'seq--break r))))
+ nil)))))
(cl-defgeneric seq-set-equal-p (sequence1 sequence2 &optional testfn)
"Return non-nil if SEQUENCE1 and SEQUENCE2 contain the same elements.
@@ -488,9 +519,10 @@ seq-positions
(cl-defgeneric seq-uniq (sequence &optional testfn)
"Return a list of the elements of SEQUENCE with duplicates removed.
TESTFN is used to compare elements, and defaults to `equal'."
- (let ((result '()))
+ (let ((result '())
+ (pred (seq-contains-pred testfn)))
(seq-doseq (elt sequence)
- (unless (seq-contains-p result elt testfn)
+ (unless (funcall pred elt result)
(setq result (cons elt result))))
(nreverse result)))
@@ -574,6 +606,20 @@ seq-difference
(seq-reverse sequence1)
'()))
+(cl-defgeneric seq-difference-2 (sequence1 sequence2 &optional testfn)
+ "Return list of all the elements that appear in SEQUENCE1 but not in SEQUENCE2.
+\"Equality\" of elements is defined by the function TESTFN, which
+defaults to `equal'."
+ (seq-filter
+ (lambda (elt) (not (seq-contains-p sequence2 elt testfn)))
+ sequence1))
+
+(cl-defgeneric seq-difference-3 (sequence1 sequence2 &optional testfn)
+ (let ((pred (seq-contains-pred sequence2 testfn)))
+ (seq-filter
+ (lambda (elt) (not (funcall pred elt sequence2)))
+ sequence1)))
+
;;;###autoload
(cl-defgeneric seq-group-by (function sequence)
"Apply FUNCTION to each element of SEQUENCE.
next prev parent reply other threads:[~2023-11-14 0:41 UTC|newest]
Thread overview: 570+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-13 5:24 [External] : Re: Shrinking the C core Arthur Miller
2023-09-13 14:46 ` Drew Adams
2023-09-14 12:09 ` Arthur Miller
2023-09-15 16:17 ` Emanuel Berg
2023-09-15 20:04 ` Drew Adams
2023-09-15 20:21 ` Emanuel Berg
2023-09-16 20:55 ` Drew Adams
2023-09-17 10:08 ` Emanuel Berg
2023-09-17 14:34 ` Yuri Khan
2023-09-17 23:14 ` Emanuel Berg
2023-09-17 17:16 ` Drew Adams
2023-09-17 23:48 ` Emanuel Berg
2023-09-15 8:18 ` Emanuel Berg
2023-09-17 0:46 ` Richard Stallman
2023-09-17 4:55 ` Alfred M. Szmidt
2023-09-17 9:13 ` Emanuel Berg
2023-09-17 9:54 ` Alfred M. Szmidt
2023-09-17 17:38 ` Drew Adams
2023-09-18 19:38 ` Emanuel Berg
2023-09-19 10:19 ` Richard Stallman
2023-09-19 10:21 ` Richard Stallman
2023-09-19 11:21 ` Emanuel Berg
2023-09-19 12:39 ` Eli Zaretskii
2023-09-21 20:27 ` Richard Stallman
2023-09-17 5:41 ` Eli Zaretskii
2023-09-17 8:54 ` Emanuel Berg
2023-09-17 17:29 ` Drew Adams
2023-09-18 19:40 ` Emanuel Berg
2023-10-15 1:53 ` Richard Stallman
2023-10-15 2:46 ` Emanuel Berg
2023-10-15 5:57 ` Eli Zaretskii
2023-10-15 5:54 ` Eli Zaretskii
2023-10-17 4:51 ` Emanuel Berg
2023-10-19 1:28 ` Lisp files that load cl-lib in problematical ways Richard Stallman
2023-10-19 4:14 ` Emanuel Berg
2023-10-19 4:54 ` Eli Zaretskii
2023-10-19 5:18 ` Emanuel Berg
2023-10-19 7:56 ` Eli Zaretskii
2023-10-19 8:11 ` Emanuel Berg
2023-10-24 0:59 ` Richard Stallman
2023-10-19 7:34 ` Stephen Berman
2023-10-19 7:55 ` Eli Zaretskii
2023-10-19 8:32 ` Stephen Berman
2023-10-19 9:04 ` Andrea Corallo
2023-10-19 13:44 ` Andrea Corallo
2023-10-19 14:14 ` Eli Zaretskii
2023-10-19 16:11 ` Andrea Corallo
2023-10-25 22:02 ` Andrea Corallo
2023-10-25 22:31 ` Andrea Corallo
2023-10-26 5:18 ` Eli Zaretskii
2023-10-26 11:19 ` Andrea Corallo
2023-10-26 5:16 ` Eli Zaretskii
2023-11-07 10:51 ` Andrea Corallo
2023-11-08 18:01 ` Andrea Corallo
2023-11-09 11:41 ` Andrea Corallo
2023-11-09 15:37 ` Eli Zaretskii
2023-11-09 16:10 ` Andrea Corallo
2023-11-09 16:36 ` Eli Zaretskii
2023-11-09 18:34 ` Andrea Corallo
2023-11-09 19:48 ` Eli Zaretskii
2023-10-21 5:19 ` Richard Stallman
2023-10-21 5:19 ` Richard Stallman
2023-10-19 5:27 ` Alan Mackenzie
2023-10-19 7:47 ` Eli Zaretskii
2023-10-19 11:19 ` Emanuel Berg
2023-10-19 12:29 ` Eli Zaretskii
2023-10-20 3:02 ` Emanuel Berg
2023-10-20 6:10 ` Dr. Arne Babenhauserheide
2023-10-20 6:30 ` Emanuel Berg
2023-10-20 6:49 ` Eli Zaretskii
2023-10-21 10:18 ` Emanuel Berg
2023-10-21 15:17 ` Jens Schmidt
2023-10-21 15:21 ` Eli Zaretskii
2023-10-22 0:52 ` Björn Bidar
2023-10-22 1:20 ` Emanuel Berg
[not found] ` <87pm17iilu.fsf@>
2023-10-22 5:09 ` Eli Zaretskii
2023-10-23 11:07 ` Alan Mackenzie
2023-10-23 11:47 ` Eli Zaretskii
2023-10-23 12:26 ` Emanuel Berg
2023-10-23 12:18 ` Emanuel Berg
2023-10-23 12:51 ` Eli Zaretskii
2023-10-23 2:08 ` Richard Stallman
2023-10-23 2:31 ` Eli Zaretskii
2023-10-23 8:13 ` Stefan Kangas
2023-10-19 12:34 ` Alan Mackenzie
2023-10-19 12:55 ` Eli Zaretskii
2023-10-19 13:28 ` Alan Mackenzie
2023-10-19 14:09 ` Eli Zaretskii
2023-10-21 3:34 ` Michael Heerdegen
2023-10-21 5:21 ` Richard Stallman
2023-10-21 7:42 ` Eli Zaretskii
2023-10-21 17:53 ` Alan Mackenzie
2023-10-21 18:03 ` Gerd Möllmann
2023-10-21 20:13 ` [External] : " Drew Adams
2023-10-25 2:44 ` Richard Stallman
2023-10-21 19:00 ` Eli Zaretskii
2023-10-21 20:38 ` Alan Mackenzie
2023-10-22 3:40 ` Gerd Möllmann
2023-10-25 2:44 ` Richard Stallman
2023-10-25 12:15 ` Eli Zaretskii
2023-10-25 12:57 ` Emanuel Berg
2023-10-23 2:12 ` Richard Stallman
2023-10-21 12:05 ` Alan Mackenzie
2023-10-23 2:11 ` Richard Stallman
2023-10-23 12:54 ` Alan Mackenzie
2023-10-23 14:11 ` Eli Zaretskii
2023-10-25 2:46 ` Richard Stallman
2023-10-25 12:21 ` Eli Zaretskii
2023-10-26 2:27 ` Richard Stallman
2023-10-26 6:50 ` Eli Zaretskii
2023-10-26 10:16 ` Emanuel Berg
2023-10-23 14:06 ` Gregory Heytings
2023-10-23 14:34 ` Eli Zaretskii
2023-10-23 14:48 ` Gregory Heytings
2023-10-23 14:57 ` Eli Zaretskii
2023-10-23 22:11 ` Stefan Kangas
2023-10-24 2:31 ` Eli Zaretskii
2023-10-24 8:18 ` Po Lu
2023-10-24 8:35 ` Stefan Kangas
2023-10-24 9:04 ` Ihor Radchenko
2023-10-24 11:35 ` Eli Zaretskii
2023-10-24 12:41 ` Ihor Radchenko
2023-10-24 12:48 ` Eli Zaretskii
2023-10-24 13:01 ` Ihor Radchenko
2023-10-24 13:07 ` Eli Zaretskii
2023-10-24 13:33 ` Ihor Radchenko
2023-10-24 13:51 ` Eli Zaretskii
2023-10-24 14:31 ` Andrea Corallo
2023-10-24 15:00 ` Corwin Brust
2023-10-24 18:05 ` Andrea Corallo
2023-10-24 19:43 ` Ihor Radchenko
2023-10-25 18:19 ` Corwin Brust
2023-10-24 11:30 ` Eli Zaretskii
2023-10-24 15:44 ` Stefan Kangas
2023-10-24 8:10 ` Björn Bidar
[not found] ` <87cyx4jva9.fsf@>
2023-10-24 11:27 ` Eli Zaretskii
2023-10-24 12:43 ` Emanuel Berg
2023-10-24 12:54 ` Eli Zaretskii
2023-10-24 15:19 ` Emanuel Berg
2023-10-24 15:29 ` Björn Bidar
[not found] ` <87ttqghwcs.fsf@>
2023-10-24 15:54 ` Eli Zaretskii
2023-10-24 17:54 ` Emanuel Berg
2023-10-24 18:36 ` Eli Zaretskii
2023-10-27 2:12 ` Richard Stallman
2023-10-27 6:19 ` Eli Zaretskii
2023-10-23 15:07 ` Emanuel Berg
2023-10-19 17:47 ` Björn Bidar
2023-10-23 2:08 ` Richard Stallman
2023-10-23 11:18 ` Eli Zaretskii
2023-10-25 2:47 ` Richard Stallman
2023-10-25 3:11 ` Emanuel Berg
2023-10-25 7:57 ` Stefan Kangas
2023-10-25 8:07 ` Gerd Möllmann
2023-10-26 2:27 ` Richard Stallman
2023-10-26 6:55 ` Eli Zaretskii
2023-10-26 9:31 ` Adam Porter
2023-10-26 9:42 ` Eli Zaretskii
2023-10-26 10:03 ` Dmitry Gutov
2023-10-26 10:34 ` Alan Mackenzie
2023-10-26 11:32 ` Emanuel Berg
2023-10-26 19:47 ` Bob Rogers
2023-10-26 19:59 ` Emanuel Berg
2023-10-28 3:20 ` Richard Stallman
2023-10-28 15:39 ` What's missing in ELisp that makes people want to use cl-lib? Stefan Kangas
2023-10-28 16:18 ` Emanuel Berg
2023-10-28 18:52 ` Eli Zaretskii
2023-10-28 19:08 ` Emanuel Berg
2023-10-28 19:15 ` Eli Zaretskii
2023-10-28 19:36 ` Emanuel Berg
2023-10-28 19:10 ` Jim Porter
2023-10-28 19:14 ` Eli Zaretskii
2023-10-28 21:03 ` Jim Porter
2023-10-29 6:10 ` Eli Zaretskii
2023-10-30 2:09 ` Richard Stallman
2023-10-30 17:13 ` Jim Porter
2023-10-30 2:09 ` Richard Stallman
2023-10-31 2:31 ` Adam Porter
2023-10-31 3:27 ` Eli Zaretskii
2023-10-31 10:38 ` João Távora
2023-11-02 2:28 ` Richard Stallman
2023-11-02 2:42 ` Jim Porter
2023-11-02 8:55 ` Philip Kaludercic
2023-11-02 9:27 ` Eli Zaretskii
2023-11-02 21:26 ` Philip Kaludercic
2023-11-03 1:51 ` Bob Rogers
2023-11-03 2:21 ` Emanuel Berg
2023-11-03 19:51 ` Bob Rogers
2023-11-03 20:32 ` Emanuel Berg
2023-11-03 22:33 ` Bob Rogers
2023-11-03 22:46 ` Emanuel Berg
2023-11-04 9:34 ` Stephen Berman
2023-11-05 18:52 ` Emanuel Berg
2023-11-07 16:17 ` Richard Stallman
2023-11-08 14:19 ` Emanuel Berg
2023-11-08 15:00 ` Björn Bidar
[not found] ` <87r0l070jt.fsf@>
2023-11-08 17:18 ` Alan Mackenzie
2023-11-08 17:59 ` Emanuel Berg
2023-11-08 20:19 ` Dmitry Gutov
2023-11-08 21:10 ` João Távora
2023-11-08 23:17 ` Emanuel Berg
2023-11-09 10:05 ` Alan Mackenzie
2023-11-09 11:06 ` João Távora
2023-11-09 11:37 ` Eli Zaretskii
2023-11-09 12:34 ` João Távora
2023-11-09 13:38 ` João Távora
2023-11-09 15:05 ` Eli Zaretskii
2023-11-09 15:29 ` Emanuel Berg
2023-11-09 15:43 ` Eli Zaretskii
2023-11-11 13:10 ` Emanuel Berg
2023-11-11 13:57 ` Eli Zaretskii
2023-11-11 14:07 ` Emanuel Berg
2023-11-11 14:16 ` Eli Zaretskii
2023-11-11 14:54 ` Emanuel Berg
2023-11-11 16:05 ` Eli Zaretskii
2023-11-09 15:39 ` João Távora
2023-11-09 15:51 ` Eli Zaretskii
2023-11-09 16:23 ` João Távora
2023-11-09 13:45 ` Po Lu
2023-11-09 14:28 ` João Távora
2023-11-09 14:39 ` João Távora
2023-11-10 0:02 ` Po Lu
2023-11-10 2:23 ` João Távora
2023-11-10 2:42 ` Po Lu
2023-11-10 11:11 ` João Távora
2023-11-10 12:52 ` Po Lu
2023-11-10 13:08 ` João Távora
2023-11-10 13:39 ` Po Lu
2023-11-10 14:18 ` Manuel Giraud via Emacs development discussions.
2023-11-10 21:05 ` Dmitry Gutov
2023-11-11 1:11 ` Po Lu
2023-11-11 1:44 ` Dmitry Gutov
2023-11-11 1:58 ` Po Lu
2023-11-11 15:54 ` Emanuel Berg
2023-11-12 0:22 ` Po Lu
2023-11-11 6:01 ` Michael Heerdegen
2023-11-11 7:55 ` Eli Zaretskii
2023-11-11 13:09 ` João Távora
2023-11-11 13:17 ` Po Lu
2023-11-11 13:39 ` João Távora
2023-11-11 14:06 ` Po Lu
2023-11-11 14:43 ` João Távora
2023-11-11 13:53 ` Eli Zaretskii
2023-11-11 14:01 ` João Távora
2023-11-11 14:09 ` Eli Zaretskii
2023-11-11 14:22 ` João Távora
2023-11-11 14:25 ` Eli Zaretskii
2023-11-11 14:39 ` João Távora
2023-11-11 15:06 ` Emanuel Berg
2023-11-11 18:33 ` [External] : " Drew Adams
2023-11-11 18:49 ` Emanuel Berg
2023-11-11 14:53 ` Gerd Möllmann
2023-11-11 15:51 ` Eli Zaretskii
2023-11-11 18:07 ` Gerd Möllmann
2023-11-11 20:37 ` Eli Zaretskii
2023-11-11 20:53 ` Emanuel Berg
2023-11-12 6:49 ` Eli Zaretskii
2023-11-12 7:22 ` Gerd Möllmann
2023-11-12 11:28 ` Alan Mackenzie
2023-11-14 2:58 ` Richard Stallman
2023-11-12 6:59 ` Gerd Möllmann
2023-11-12 8:44 ` Eli Zaretskii
2023-11-13 6:28 ` Gerd Möllmann
2023-11-13 14:56 ` Eli Zaretskii
2023-11-13 16:38 ` Gerd Möllmann
2023-11-16 3:04 ` Richard Stallman
2023-11-11 21:49 ` Dmitry Gutov
2023-11-12 2:36 ` João Távora
2023-11-12 6:27 ` Eli Zaretskii
2023-11-12 10:21 ` João Távora
2023-11-12 11:22 ` Eli Zaretskii
2023-11-12 14:34 ` João Távora
2023-11-12 7:11 ` Gerd Möllmann
2023-11-12 22:09 ` Dmitry Gutov
2023-11-12 23:14 ` João Távora
2023-11-13 0:25 ` Dmitry Gutov
2023-11-13 1:03 ` João Távora
2023-11-13 2:43 ` Dmitry Gutov
2023-11-14 0:41 ` Dmitry Gutov [this message]
2023-11-14 2:27 ` João Távora
2023-11-14 2:44 ` Dmitry Gutov
2023-11-14 10:34 ` João Távora
2023-11-14 11:47 ` Dmitry Gutov
2023-11-14 12:14 ` João Távora
2023-11-14 12:20 ` Dmitry Gutov
2023-11-14 12:50 ` João Távora
2023-11-14 2:44 ` João Távora
2023-11-14 2:48 ` Dmitry Gutov
2023-11-14 15:45 ` Michael Heerdegen
2023-11-14 23:11 ` Dmitry Gutov
2023-11-14 23:52 ` João Távora
2023-11-15 0:46 ` Dmitry Gutov
2023-11-15 1:07 ` João Távora
2023-11-15 1:17 ` João Távora
2023-11-15 1:32 ` Dmitry Gutov
2023-11-15 1:28 ` Dmitry Gutov
2023-11-15 12:14 ` João Távora
2023-11-15 14:05 ` Dmitry Gutov
2023-11-15 15:02 ` João Távora
2023-11-15 15:29 ` João Távora
2023-11-15 19:12 ` Dmitry Gutov
2023-11-15 19:56 ` Gerd Möllmann
2023-11-15 23:25 ` Dmitry Gutov
2023-11-16 0:28 ` João Távora
2023-11-16 5:45 ` Gerd Möllmann
2023-11-16 14:30 ` João Távora
2023-11-16 16:02 ` Michael Heerdegen
2023-11-16 16:24 ` João Távora
2023-11-16 17:44 ` Gerd Möllmann
2023-11-16 20:06 ` João Távora
2023-11-16 20:12 ` Gerd Möllmann
2023-11-17 14:16 ` Gerd Möllmann
2023-11-16 20:09 ` Gerd Möllmann
2023-11-16 21:54 ` Dmitry Gutov
2023-11-17 2:44 ` Stefan Monnier
2023-11-17 2:47 ` Dmitry Gutov
2023-11-17 7:12 ` Eli Zaretskii
2023-11-17 6:08 ` Gerd Möllmann
2023-11-17 7:21 ` Eli Zaretskii
2023-11-17 16:14 ` Stefan Monnier
2023-11-18 5:58 ` Gerd Möllmann
2023-11-20 14:56 ` Augusto Stoffel
2023-11-17 14:45 ` Gerd Möllmann
2023-11-20 14:30 ` PCL [Re: " Madhu
2023-11-20 14:35 ` João Távora
2023-11-20 15:13 ` Gerd Möllmann
2023-11-17 2:09 ` Dmitry Gutov
2023-11-21 2:22 ` Dmitry Gutov
2023-11-16 13:23 ` Michael Heerdegen
2023-11-16 14:40 ` João Távora
2023-11-16 15:24 ` Michael Heerdegen
2023-11-16 15:29 ` João Távora
2023-11-16 13:43 ` Michael Heerdegen
2023-11-16 14:36 ` João Távora
2023-11-16 15:16 ` Michael Heerdegen
2023-11-16 15:24 ` João Távora
2023-11-16 16:42 ` Eli Zaretskii
2023-11-16 17:40 ` Michael Heerdegen
2023-11-16 21:58 ` João Távora
2023-11-17 6:56 ` Eli Zaretskii
2023-11-17 10:44 ` João Távora
2023-11-17 10:47 ` João Távora
2023-11-17 12:22 ` Eli Zaretskii
2023-11-17 13:14 ` João Távora
2023-11-17 15:01 ` Eli Zaretskii
2023-11-17 15:17 ` João Távora
2023-11-18 6:14 ` Gerd Möllmann
2023-11-17 14:49 ` Michael Heerdegen
2023-11-17 15:05 ` Eli Zaretskii
2023-11-18 3:03 ` Richard Stallman
2023-11-14 6:06 ` Gerd Möllmann
2023-11-13 8:35 ` Michael Heerdegen
2023-11-13 11:21 ` João Távora
2023-11-14 14:43 ` Michael Heerdegen
2023-11-15 5:59 ` Gerd Möllmann
2023-11-16 15:22 ` João Távora
2023-11-12 2:57 ` Richard Stallman
2023-11-12 6:45 ` Eli Zaretskii
2023-11-12 19:45 ` [External] : " Drew Adams
2023-11-14 2:58 ` Richard Stallman
2023-11-14 3:31 ` Sebastián Monía
2023-11-14 12:29 ` Eli Zaretskii
2023-11-15 18:28 ` Emanuel Berg
2023-11-16 1:33 ` T.V Raman
2023-11-14 5:05 ` [External] : " Drew Adams
2023-11-14 8:13 ` Tomas Hlavaty
2023-11-14 10:38 ` João Távora
2023-11-14 10:55 ` Po Lu
2023-11-14 11:47 ` João Távora
2023-11-14 14:04 ` Po Lu
2023-11-14 14:19 ` João Távora
2023-11-14 15:02 ` Po Lu
2023-11-14 15:35 ` João Távora
2023-11-15 0:13 ` Po Lu
2023-11-15 10:28 ` João Távora
2023-11-15 10:40 ` Eli Zaretskii
2023-11-15 10:56 ` João Távora
2023-11-15 12:36 ` Eli Zaretskii
2023-11-15 13:15 ` Po Lu
2023-11-15 13:28 ` João Távora
2023-11-15 13:34 ` Eli Zaretskii
2023-11-14 17:40 ` Tomas Hlavaty
2023-11-15 0:53 ` João Távora
2023-11-14 16:47 ` Tomas Hlavaty
2023-11-21 2:43 ` Richard Stallman
2024-01-03 4:11 ` Richard Stallman
2024-01-03 11:55 ` João Távora
2024-01-03 13:59 ` Eli Zaretskii
2024-01-03 12:44 ` Eli Zaretskii
2023-11-12 7:30 ` Michael Heerdegen
2023-11-12 19:48 ` [External] : " Drew Adams
2023-11-12 19:58 ` João Távora
2023-11-12 22:43 ` Drew Adams
2023-11-12 22:59 ` João Távora
2023-11-12 23:04 ` Drew Adams
2023-11-12 23:44 ` Emanuel Berg
2023-11-15 14:41 ` Augusto Stoffel
2023-11-15 14:51 ` João Távora
2023-11-15 21:21 ` Augusto Stoffel
2023-11-16 0:28 ` João Távora
2023-11-16 14:36 ` Augusto Stoffel
2023-11-16 14:57 ` João Távora
2023-11-16 15:42 ` Dmitry Gutov
2023-11-16 16:03 ` João Távora
2023-11-11 15:23 ` Emanuel Berg
2023-11-11 16:03 ` Eli Zaretskii
2023-11-11 16:41 ` Emanuel Berg
2023-11-11 16:45 ` Eli Zaretskii
2023-11-11 18:31 ` [External] : " Drew Adams
2023-11-11 18:30 ` Drew Adams
2023-11-11 13:37 ` Emanuel Berg
2023-11-11 13:50 ` Po Lu
2023-11-11 13:58 ` João Távora
2023-11-12 0:18 ` Po Lu
2023-11-11 13:20 ` Emanuel Berg
2023-11-11 18:32 ` [External] : " Drew Adams
2023-11-12 0:34 ` Po Lu
2023-11-12 2:00 ` Emanuel Berg
2023-11-12 6:56 ` Po Lu
2023-11-12 23:59 ` Emanuel Berg
2023-11-13 5:18 ` Po Lu
2023-11-13 6:09 ` Emanuel Berg
2023-11-09 15:23 ` Emanuel Berg
2023-11-10 0:31 ` Po Lu
2023-11-10 2:09 ` João Távora
2023-11-10 3:17 ` Po Lu
2023-11-10 10:54 ` João Távora
2023-11-10 13:14 ` Po Lu
2023-11-10 14:18 ` João Távora
2023-11-11 0:38 ` Po Lu
2023-11-11 12:10 ` João Távora
2023-11-11 13:03 ` Po Lu
2023-11-11 13:20 ` João Távora
2023-11-11 13:35 ` Po Lu
2023-11-11 18:13 ` Emanuel Berg
2023-11-12 0:25 ` Po Lu
2023-11-12 1:52 ` Emanuel Berg
2023-11-12 7:15 ` Po Lu
2023-11-12 23:55 ` Emanuel Berg
2023-11-13 5:16 ` Po Lu
2023-11-13 6:35 ` Emanuel Berg
2023-11-11 18:08 ` Emanuel Berg
2023-11-13 3:07 ` Richard Stallman
2023-11-10 21:22 ` Dmitry Gutov
2023-11-11 1:14 ` Po Lu
2023-12-05 10:45 ` Emanuel Berg
2023-11-10 21:17 ` Dmitry Gutov
2023-11-11 1:23 ` Po Lu
2023-11-11 6:11 ` tomas
2023-11-11 12:27 ` João Távora
2023-11-11 6:24 ` Michael Heerdegen
2023-11-11 20:42 ` Emanuel Berg
2023-11-12 7:42 ` Michael Heerdegen
2023-11-12 23:22 ` Emanuel Berg
2023-11-13 8:52 ` Michael Heerdegen
2023-11-13 11:31 ` João Távora
2023-11-15 23:26 ` Emanuel Berg
2023-11-11 12:16 ` João Távora
2023-11-11 12:52 ` Po Lu
2023-11-10 2:04 ` Po Lu
2023-11-10 8:20 ` Gerd Möllmann
2023-11-10 10:42 ` Po Lu
2023-11-10 11:36 ` João Távora
2023-11-10 12:12 ` Po Lu
2023-11-10 14:39 ` Gerd Möllmann
2023-11-11 0:12 ` Po Lu
2023-11-11 6:34 ` Gerd Möllmann
2023-11-11 7:49 ` Po Lu
2023-11-11 8:01 ` Eli Zaretskii
2023-11-15 14:50 ` Augusto Stoffel
2023-11-12 2:57 ` Richard Stallman
2023-11-10 14:35 ` Gerd Möllmann
2023-11-10 7:05 ` Gerd Möllmann
2023-11-10 13:16 ` Alan Mackenzie
2023-11-10 14:23 ` João Távora
2023-11-10 14:34 ` Manuel Giraud via Emacs development discussions.
2023-11-11 1:33 ` Po Lu
2023-11-09 3:17 ` Michael Heerdegen
2023-11-09 3:59 ` T.V Raman
2023-11-09 7:24 ` Gerd Möllmann
2023-11-09 10:34 ` Alan Mackenzie
2023-11-09 11:48 ` Dmitry Gutov
2023-11-09 12:40 ` João Távora
2023-11-09 13:36 ` Alan Mackenzie
2023-11-09 13:41 ` João Távora
2023-11-09 13:59 ` Emanuel Berg
2023-11-10 12:13 ` Alan Mackenzie
2023-11-10 12:53 ` João Távora
2023-11-10 13:17 ` Eli Zaretskii
2023-11-10 14:25 ` Alan Mackenzie
2023-11-10 14:35 ` João Távora
2023-11-10 15:11 ` Alan Mackenzie
2023-11-10 15:14 ` João Távora
2023-11-10 15:47 ` Alan Mackenzie
2023-11-10 16:10 ` João Távora
2023-11-10 20:24 ` Alan Mackenzie
2023-11-11 11:53 ` João Távora
2023-11-11 6:21 ` Michael Heerdegen
2023-11-11 13:20 ` Alan Mackenzie
2023-11-11 6:08 ` Michael Heerdegen
2023-11-11 12:50 ` João Távora
2023-11-13 3:07 ` Richard Stallman
2023-11-09 13:42 ` Dmitry Gutov
2023-11-09 13:07 ` Alan Mackenzie
2023-11-09 12:19 ` Gerd Möllmann
2023-11-09 14:49 ` Alan Mackenzie
2023-11-09 15:12 ` Emanuel Berg
2023-11-09 15:13 ` Emanuel Berg
2023-11-09 20:04 ` Bob Rogers
2023-11-11 3:13 ` Richard Stallman
2023-11-11 19:47 ` Bob Rogers
2023-11-13 3:07 ` Richard Stallman
2023-11-13 5:11 ` Bob Rogers
2023-11-15 3:21 ` Richard Stallman
2023-11-09 19:36 ` Gerd Möllmann
2023-11-03 2:22 ` Emanuel Berg
2023-11-03 7:07 ` Eli Zaretskii
2023-11-03 7:48 ` Philip Kaludercic
2023-11-03 7:59 ` Eli Zaretskii
2023-11-03 8:13 ` Philip Kaludercic
2023-11-12 2:57 ` Richard Stallman
2023-11-12 11:08 ` Petteri Hintsanen
2023-11-12 11:19 ` Eli Zaretskii
2023-11-12 23:48 ` Emanuel Berg
2023-12-21 4:20 ` Richard Stallman
2023-11-02 11:07 ` João Távora
2023-11-02 11:18 ` Emanuel Berg
2023-11-02 15:20 ` [External] : " Drew Adams
2023-11-02 15:31 ` João Távora
2023-11-02 18:28 ` Emanuel Berg
2023-11-07 16:18 ` Richard Stallman
2023-11-07 16:39 ` Drew Adams
2023-11-07 18:16 ` Bob Rogers
2023-11-09 2:35 ` Richard Stallman
2023-11-08 5:46 ` Gerd Möllmann
2023-11-01 1:51 ` Richard Stallman
2023-11-01 1:51 ` Richard Stallman
2023-10-29 16:31 ` Lisp files that load cl-lib in problematical ways João Távora
2023-10-29 17:16 ` [External] : " Drew Adams
2023-10-29 23:19 ` João Távora
2023-10-30 14:35 ` Emanuel Berg
2023-10-30 14:50 ` João Távora
2023-10-30 16:27 ` Emanuel Berg
2023-10-30 16:40 ` Emanuel Berg
2023-11-01 1:50 ` Richard Stallman
2023-11-01 11:16 ` Emanuel Berg
2023-11-01 12:32 ` Eli Zaretskii
2023-11-01 12:49 ` Emanuel Berg
2023-11-01 13:07 ` Eli Zaretskii
2023-11-01 13:17 ` Emanuel Berg
2023-11-01 14:09 ` Alan Mackenzie
2023-11-01 14:13 ` Eli Zaretskii
2023-11-01 1:48 ` Richard Stallman
2023-11-01 12:09 ` Eli Zaretskii
2023-10-25 12:23 ` Eli Zaretskii
2023-10-26 2:27 ` Richard Stallman
2023-10-26 6:49 ` Eli Zaretskii
2023-10-25 2:47 ` Richard Stallman
2023-10-20 7:48 ` [External] : Re: Shrinking the C core Arsen Arsenović
2023-10-20 10:08 ` Alfred M. Szmidt
2023-10-21 8:22 ` Emanuel Berg
-- strict thread matches above, loose matches on Subject: below --
2023-11-03 8:21 What's missing in ELisp that makes, people want to use cl-lib? Pedro Andres Aranda Gutierrez
2023-11-03 9:27 ` João Távora
2023-11-03 10:43 ` Pedro Andres Aranda Gutierrez
2023-11-03 13:37 ` Gerd Möllmann
2023-11-03 14:27 ` Eli Zaretskii
2023-11-03 15:08 ` Gerd Möllmann
2023-11-03 15:13 ` Eli Zaretskii
2023-11-03 15:30 ` Gerd Möllmann
2023-11-03 15:39 ` Eli Zaretskii
2023-11-03 15:49 ` 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=43f290b0-4119-597b-c89a-0fb4c7db1665@gutov.dev \
--to=dmitry@gutov.dev \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=gerd.moellmann@gmail.com \
--cc=joaotavora@gmail.com \
--cc=michael_heerdegen@web.de \
/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.