Subject: bug#59692: closed (Re: bug#59692: 29.0.60; Reduce installation size by disabling byte-compilation for some lisp files that won't benefit)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 13 Dec 2022 01:05:06 +0000

Your bug report

#59692: 29.0.60; Reduce installation size by disabling byte-compilation for some lisp files that won't benefit

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
59692: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59692
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#59692: 29.0.60; Reduce installation size by disabling byte-compilation for some lisp files that won't benefit
From: Stefan Kangas <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: [email-masked], daanturo <[email-masked]>
Date: Mon, 12 Dec 2022 17:04:20 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Eli Zaretskii <[email-masked]> writes:

> FWIW, I consider this to be a waste of our resources and a long-term
> maintenance burden that I cannot justify, even if I accept your conclusions
> (and I'm not at all convinced that they are completely correct, especially
> since you didn't show any measurements of code speed with and without
> byte-compilation).  50 MiB of disk space is too small to justify keeping
> track of all the files, making decisions which will and will not be
> compiled, etc.  Disk space is cheap these days.
>
> So I don't think we should do this.

I agree, so I'm closing this as wontfix.

Subject: 29.0.60; Reduce installation size by disabling byte-compilation for some lisp files that won't benefit
From: daanturo <[email-masked]>
To: [email-masked]
Date: Wed, 30 Nov 2022 03:07:47 +0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Recently, after each rebuild, I noticed that Emacs' total installation
size has become bigger overtime. That's understandably unavoidable but
there's room for improvement. By analyzing disk usage I discovered
that:

"lisp/leim/"'s compiled elisp files are taking the most significant disk
storage.

By inspecting some of those, I don't think we are able to gain any
practical benefit by compiling them, they don't contain (~)any
function/macro definitions at all.

So I try to disable byte-compilation (by either dir-local vars or
file-local vars) in:

- lisp/leim/ : I disable for the whole directory

And some more .el(s) that I don't find so essential to compile:

- lisp/play/ : not so serious or critical to workflows

- lisp/cedet/{ede,semantic,srecode}/ : we now have LSP/eglot!
- lisp/cedet/{ede.el,semantic.el} : same as above, also a big file by
itself

(I wished pulse.el, mode-local.el, data-debug.el were moved out of this
lisp/cedet/, then putting a single .dir-local.el there would be the
simplest)

- lisp/obsolete/ : already obsolete anyway, but some packages may still
depend on them so no-native-compile only

Then build Emacs again.

The final size of my Emacs installation, compared to before applying
those no-compile local variables:
298.79 MiB -> 253.09 MiB
That's 45.7 MiB disk saved. About 15.3% of total shaved!

Please consider at least "lisp/leim/"'s gigantic files such as
"ZIRANMA.el", "ARRAY30.el", "ja-dic.el" ,etc. as I find those the most
disk-expensive when compiled, yet questionable benefit and waste of time
spending to build.

In GNU Emacs 29.0.60 (build 2, x86_64-pc-linux-gnu, GTK+ Version
3.24.35, cairo version 1.17.6) of 2022-11-30 built on dan-laptop
Repository revision: ec7908204e3d1d415a17813a1fac1a8de334d3b1
Repository branch: makepkg
System Description: Arch Linux

Configured using:
'configure --sysconfdir=/etc --prefix=/usr --libexecdir=/usr/lib
--localstatedir=/var
'--program-transform-name='\''s/\(ctags\)/\1.emacs/'\''' --with-json
--with-libsystemd --with-mailutils --with-modules
--with-native-compilation --with-pgtk --without-xaw3d --with-sound=alsa
--with-tree-sitter --with-xinput2 --with-xwidgets
--with-native-compilation=aot --without-compress-install
'CFLAGS=-march=native -O2 -pipe -fno-plt -fexceptions
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
-fstack-clash-protection -fcf-protection'
LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM XWIDGETS GTK3 ZLIB

-- 
Daanturo.
From e39138e254a727cbe724760b65bafd551cadcc39 Mon Sep 17 00:00:00 2001
From: Daanturo <[email-masked]>
Date: Tue, 29 Nov 2022 23:40:19 +0700
Subject: [PATCH] No compile for some lisp directories and files

* lisp/leim/
* lisp/cedet/{ede.el,semantic.el}: produce large compilation output
* lisp/cedet/semantic/
* lisp/cedet/ede/
* lisp/cedet/srecode/
* lisp/play/
* lisp/obsolete/ : only no-native-compile
---
 lisp/cedet/ede.el                  | 4 ++++
 lisp/cedet/ede/.dir-locals.el      | 4 ++++
 lisp/cedet/semantic.el             | 4 ++++
 lisp/cedet/semantic/.dir-locals.el | 4 ++++
 lisp/cedet/srecode/.dir-locals.el  | 4 ++++
 lisp/leim/.dir-locals.el           | 4 ++++
 lisp/obsolete/.dir-locals.el       | 4 ++++
 lisp/play/.dir-locals.el           | 4 ++++
 8 files changed, 32 insertions(+)
 create mode 100644 lisp/cedet/ede/.dir-locals.el
 create mode 100644 lisp/cedet/semantic/.dir-locals.el
 create mode 100644 lisp/cedet/srecode/.dir-locals.el
 create mode 100644 lisp/leim/.dir-locals.el
 create mode 100644 lisp/obsolete/.dir-locals.el
 create mode 100644 lisp/play/.dir-locals.el

diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 1118235757..4fd8be23a9 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -1539,3 +1539,7 @@ project-root
   (ede-speedbar-file-setup))
 
 ;;; ede.el ends here
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/lisp/cedet/ede/.dir-locals.el b/lisp/cedet/ede/.dir-locals.el
new file mode 100644
index 0000000000..de432a4540
--- /dev/null
+++ b/lisp/cedet/ede/.dir-locals.el
@@ -0,0 +1,4 @@
+;;; Directory Local Variables            -*- no-byte-compile: t -*-
+;;; For more information see (info "(emacs) Directory Variables")
+
+((nil . ((no-byte-compile . t))))
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index adb4705620..e1f78ccf55 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -1134,3 +1134,7 @@ semantic-mode
 ;; (require 'semantic/load)
 
 ;;; semantic.el ends here
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/lisp/cedet/semantic/.dir-locals.el b/lisp/cedet/semantic/.dir-locals.el
new file mode 100644
index 0000000000..de432a4540
--- /dev/null
+++ b/lisp/cedet/semantic/.dir-locals.el
@@ -0,0 +1,4 @@
+;;; Directory Local Variables            -*- no-byte-compile: t -*-
+;;; For more information see (info "(emacs) Directory Variables")
+
+((nil . ((no-byte-compile . t))))
diff --git a/lisp/cedet/srecode/.dir-locals.el b/lisp/cedet/srecode/.dir-locals.el
new file mode 100644
index 0000000000..de432a4540
--- /dev/null
+++ b/lisp/cedet/srecode/.dir-locals.el
@@ -0,0 +1,4 @@
+;;; Directory Local Variables            -*- no-byte-compile: t -*-
+;;; For more information see (info "(emacs) Directory Variables")
+
+((nil . ((no-byte-compile . t))))
diff --git a/lisp/leim/.dir-locals.el b/lisp/leim/.dir-locals.el
new file mode 100644
index 0000000000..de432a4540
--- /dev/null
+++ b/lisp/leim/.dir-locals.el
@@ -0,0 +1,4 @@
+;;; Directory Local Variables            -*- no-byte-compile: t -*-
+;;; For more information see (info "(emacs) Directory Variables")
+
+((nil . ((no-byte-compile . t))))
diff --git a/lisp/obsolete/.dir-locals.el b/lisp/obsolete/.dir-locals.el
new file mode 100644
index 0000000000..bb7ef23866
--- /dev/null
+++ b/lisp/obsolete/.dir-locals.el
@@ -0,0 +1,4 @@
+;;; Directory Local Variables            -*- no-byte-compile: t -*-
+;;; For more information see (info "(emacs) Directory Variables")
+
+((nil . ((no-native-compile . t))))
diff --git a/lisp/play/.dir-locals.el b/lisp/play/.dir-locals.el
new file mode 100644
index 0000000000..de432a4540
--- /dev/null
+++ b/lisp/play/.dir-locals.el
@@ -0,0 +1,4 @@
+;;; Directory Local Variables            -*- no-byte-compile: t -*-
+;;; For more information see (info "(emacs) Directory Variables")
+
+((nil . ((no-byte-compile . t))))
-- 
2.38.1