emacs/lisp/emacs-lisp
Stefan Monnier 533c659b6c Bindat: new macro-expansion based data layout language
Thorough redesign of the Bindat system, which makes it possible
to define new Bindat type forms, define recursive types, control
the values returned when unpacking, freely mix arbitrary computations
with type definitions, as well as support for arbitrary sized
integers.

This also reverts the recent addition of the `bindat-spec` macro and
the support for 64bit integers in the old Bindat language since that
is now considered obsolete anyway.

* doc/lispref/processes.texi (Bindat Types): Rename from `Bindat Spec`
and rewrite for the new sublanguage.
(Bindat Functions): Adjust to the new terminology.
(Bindat Computed Types): New node.

* lisp/emacs-lisp/bindat.el (bindat--type): New type.
(bindat--unpack-u64, bindat--unpack-u64r): Delete functions.
(bindat--unpack-item, bindat--pack-item, bindat--fixed-length-alist):
Revert addition of support for 64bit integers.
(bindat--unpack-group, bindat--length-group, bindat--pack-group):
Handle the new `bindat--type` values.
(bindat-spec): Revert addition of this macro.
(bindat--unpack-uint, bindat--unpack-uintr, bindat--pack-uint)
(bindat--pack-uintr): New functions.
(bindat-type, bindat-defmacro, bindat--pcase): New macros.
(bindat-type): New Edebug elem.
(bindat--type): New generic function.
(bindat--primitives): New constant.
(bindat--macroenv, bindat--op): New vars.
(bindat--make-docstring, bindat--fun, bindat--makefun, bindat--toplevel):
New functions.

* test/lisp/emacs-lisp/bindat-tests.el: Use `bindat-type`.
(ip): New Bindat type.
(header-bindat-spec, data-bindat-spec, packet-bindat-spec): Adjust to
new `bindat-type` macro.
(bindat-test-unpack): Simplify now that the order of fields is preserved.
(bindat-test--int-websocket-type, bindat-test--LEB128): New consts.
(bindat-test--pack-val, bindat-test--sint, bindat-test--recursive):
New tests.
2021-03-05 19:56:31 -05:00
..
advice.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
autoload.el Extend the syntax of `interactive' to list applicable modes 2021-02-14 13:21:24 +01:00
avl-tree.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
backquote.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
backtrace.el (backtrace-goto-source-functions): Make it a normal abnormal hook 2021-02-13 10:41:45 -05:00
benchmark.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
bindat.el Bindat: new macro-expansion based data layout language 2021-03-05 19:56:31 -05:00
byte-opt.el Don't ignore lexically-bound variables in a defvar (bug#46912) 2021-03-05 09:14:59 +00:00
byte-run.el * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings 2021-02-26 20:24:52 -05:00
bytecomp.el Compile closures that modify their bound vars correctly (Bug#46834) 2021-03-02 07:14:13 +00:00
cconv.el Make lambda-lifting work again 2021-03-05 21:41:58 +01:00
chart.el Fix typos 2021-02-18 16:50:55 +01:00
check-declare.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
checkdoc.el Make checkdoc work with qualified methods 2021-03-04 08:34:58 -03:00
cl-extra.el Fix misuses of byte-compile-macro-environment 2021-03-01 12:18:49 -05:00
cl-generic.el Improve the documentation of :extra in cl-defmethod 2021-03-05 14:27:08 +01:00
cl-indent.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
cl-lib.el * lisp/emacs-lisp/macroexp.el (macroexp-file-name): New function. 2021-02-24 13:52:45 -05:00
cl-macs.el Fix pcase dontcare pattern in cl--sm-macroexpand 2021-03-04 00:57:28 +00:00
cl-preloaded.el Fix copyright years by hand 2021-01-01 00:33:28 -08:00
cl-print.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
cl-seq.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
copyright.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
crm.el Use lexical-binding in all of lisp/emacs-lisp 2021-01-28 14:42:21 -05:00
cursor-sensor.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
debug.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
derived.el Introduce an :interactive keyword for `defined-derived-mode' 2021-02-14 12:58:20 +01:00
disass.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
easy-mmode.el Add a new variable `global-minor-modes' 2021-02-15 13:08:21 +01:00
easymenu.el Make easymenu downcase the menu symbol for greater backwards compat 2021-03-01 22:12:43 +01:00
edebug.el Remove redundant requires of easymenu 2021-02-26 15:52:26 +01:00
eieio-base.el * lisp/emacs-lisp/eieio-base.el: Silence warnings in last change 2021-01-11 16:44:39 -05:00
eieio-compat.el * lisp/emacs-lisp/edebug.el (edebug--handle-&-spec-op <&name>): New method 2021-02-13 16:21:53 -05:00
eieio-core.el * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings 2021-02-26 20:24:52 -05:00
eieio-custom.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
eieio-datadebug.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
eieio-opt.el Use lexical-binding in all of lisp/emacs-lisp 2021-01-28 14:42:21 -05:00
eieio-speedbar.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
eieio.el * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings 2021-02-26 20:24:52 -05:00
eldoc.el Fix typos 2021-02-18 16:50:55 +01:00
elint.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
elp.el Fix qualifiers order for loadhist-unload-element in elp.el 2021-03-05 14:18:32 +01:00
ert-x.el * lisp/emacs-lisp/macroexp.el (macroexp-file-name): New function. 2021-02-24 13:52:45 -05:00
ert.el Fix misuses of byte-compile-macro-environment 2021-03-01 12:18:49 -05:00
ewoc.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
faceup.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
find-func.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
float-sup.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
generator.el Avoid a compilation warning in iter-do 2021-02-06 11:31:18 +01:00
generic.el Prefer defvar-local in emacs-lisp/*.el 2021-01-31 14:55:53 +01:00
gv.el * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings 2021-02-26 20:24:52 -05:00
helper.el Use lexical-binding in all of lisp/emacs-lisp 2021-01-28 14:42:21 -05:00
hierarchy.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
inline.el * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings 2021-02-26 20:24:52 -05:00
let-alist.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
lisp-mnt.el Preserve leading whitespace in `lm-commentary'. 2021-02-09 09:10:45 +01:00
lisp-mode.el Actually fill the correct paragraph in `lisp-fill-paragraph' 2021-03-05 14:01:00 +01:00
lisp.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
macroexp.el * lisp/emacs-lisp/macroexp.el: Rewrite the code warning about '(lambda ...) 2021-02-27 20:23:15 -05:00
map-ynp.el New variable 'use-short-answers' to use 'y-or-n-p' instead of 'yes-or-no-p' 2021-02-25 20:45:40 +02:00
map.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
memory-report.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
nadvice.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
package-x.el * lisp/gnus/gnus-art.el: Fix misuse of standard-value. 2021-02-02 14:39:28 -05:00
package.el Add a command in package mode for opening home pages directly 2021-03-04 21:39:49 +01:00
pcase.el * lisp/emacs-lisp/pcase.el (pcase-defmacro): Fix pcase-tests-macro 2021-03-03 18:40:03 -05:00
pp.el Move all usages of values' to values--store-value' 2021-02-09 09:04:47 +01:00
radix-tree.el * lisp/emacs-lisp/pcase.el (pcase-defmacro): Fix pcase-tests-macro 2021-03-03 18:40:03 -05:00
re-builder.el ; Fix previous easy-menu-define conversion 2021-02-21 10:49:07 +01:00
regexp-opt.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
regi.el Use lexical-binding in all of lisp/emacs-lisp 2021-01-28 14:42:21 -05:00
ring.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
rmc.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
rx.el Fix pcase 'rx' pattern match-data bug 2021-02-28 13:06:24 +01:00
seq.el Small fixes 2021-02-23 21:05:30 +02:00
shadow.el Use lexical-binding in all of lisp/emacs-lisp 2021-01-28 14:42:21 -05:00
shortdoc.el Use named faces in shortdoc 2021-02-24 17:18:26 +01:00
smie.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
subr-x.el * lisp/emacs-lisp/subr-x.el (named-let): New macro 2021-01-20 14:13:15 -05:00
syntax.el Prefer defvar-local in emacs-lisp/*.el 2021-01-31 14:55:53 +01:00
tabulated-list.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
tcover-ses.el ; Minor license statement fixes 2021-02-08 09:10:57 +01:00
testcover.el Fix previous change in testcover.el 2021-02-06 15:04:52 +01:00
text-property-search.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
thunk.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
timer-list.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
timer.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
tq.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00
trace.el * lisp/emacs-lisp/trace.el (trace-values): Work outside of traced function 2021-03-02 09:13:57 -05:00
unsafep.el Use lexical-binding in all of lisp/emacs-lisp 2021-01-28 14:42:21 -05:00
warnings.el Update copyright year to 2021 2021-01-01 01:13:56 -08:00