From: Hugo Thunnissen <devel@hugot.nl>
To: emacs-devel@gnu.org
Subject: Preferred approach to inclusion of data in ELPA package
Date: Thu, 17 Aug 2023 15:58:32 +0200 [thread overview]
Message-ID: <28956ffc-6cc0-1f39-a26b-1453b48d61b1@hugot.nl> (raw)
Hi all,
For my package phpinspect.el I am now looking into the creation of an
index of PHP's built in functions and classes. I'm considering different
ways of distributing this dataset, but I'm not entirely sure what would
be the preferred way. Finding out the signatures/properties of built in
functions and classes is straightforward: I can generate valid PHP stubs
for them which can then be parsed an indexed by my package just like any
other PHP code. What I'm not sure about is what the best way would be to
distribute this data. Options I'm considering are:
1. Distribute the stubs with the package and parse them each time **when
the package is loaded**.
2. Parse and index the stubs, then serialize the resulting index into a
gzipped lisp data file that is checked into version control, and is
loaded **when the package is loaded**. (BTW, should such a .eld file be
byte compiled for any reason?)
3. Parse and index the stubs, then serialize the resulting index
**during compile time**. Either by generating lisp code using a macro,
or by serializing the index into a .eld file. This guarantees the index
staying up to date with the contents of the stub files whenever the
package is compiled.
Some more info: I expect the initial dataset to be a file with about
2000 stub functions and 200something stub classes, but it will grow as
PHP grows and as phpinspect starts to cover more of PHP's features (for
example, constant variables may also be included at some point in the
near future, growing the index by a bit). I guesstimate that it would
take less than 300ms to parse a set of files like that on most modern
hardware, but I don't have the benchmarks to back that up yet.
I'm personally leaning towards option 3 and using a macro during compile
time, but I could be nudged either way. Which approach would be
preferable and why? Is there a common practice for things like this?
Thanks,
- Hugo
next reply other threads:[~2023-08-17 13:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-17 13:58 Hugo Thunnissen [this message]
2023-08-17 21:14 ` Preferred approach to inclusion of data in ELPA package Philip Kaludercic
2023-08-19 11:26 ` Hugo Thunnissen
2023-08-19 15:51 ` Philip Kaludercic
2023-08-20 19:24 ` Hugo Thunnissen
2023-08-20 20:42 ` Philip Kaludercic
2023-08-29 8:41 ` Hugo Thunnissen
2023-08-30 19:27 ` Philip Kaludercic
2023-08-20 13:30 ` sbaugh
2023-08-20 17:47 ` Hugo Thunnissen
2023-08-20 19:43 ` Hugo Thunnissen
2023-08-20 22:59 ` Dmitry Gutov
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=28956ffc-6cc0-1f39-a26b-1453b48d61b1@hugot.nl \
--to=devel@hugot.nl \
--cc=emacs-devel@gnu.org \
/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.