-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathchanges.texi
412 lines (333 loc) · 13.4 KB
/
changes.texi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
@node Instruction Changes Between Emacs Releases
@chapter Instruction Changes Between Emacs Releases
The infomation in this chapter may not be as precise or granular as it
could be. I invite those who want more detail to look at
@uref{https://github.com/larsbrinkhoff/emacs-history, Lars Brinkhoff's
Emacs History} project.
Feel free suggest changes, as github pull requests, to make this chapter more detailed.
@menu
* Emacs 18:: After 16 and Starting in 18.31
* Emacs 19:: After 18.59 and Starting in 19.34
* Emacs 20:: After 19.34 and Starting in 20.1
* Emacs 21:: After 20.1 and Starting in 21.1
* Emacs 22:: After 21.4 and Starting in 22.1
* Emacs 23:: After 22.3 and Starting in 23.1
* Emacs 24:: After 23.4 and Starting in 24.1
* Emacs 25:: After 24.5 and Starting in 25.1
* Emacs 26:: After 25.3 and Starting in 26.1
* Emacs 27:: After 26.1 and Starting in 27.1
@end menu
@node Emacs 18
@section After 16 and Starting in 18.31
The following instructions were renamed:
@itemize
@item @code{dot} becomes @code{mark} (97). @xref{mark}.
@item @code{dot-min} becomes @code{point-min} (100). @xref{point-min}.
@item @code{dot-max} becomes @code{point-max} (101). @xref{point-max}.
@end itemize
The following instructions became obsolete:
@itemize
@item @code{mark} (97). @xref{mark}.
@item @code{scan-buffer} (107). @xref{scan-buffer}.
@item @code{set-mark} (115). @xref{set-mark}.
@end itemize
@unnumberedsubsec Version 18 Release History
@itemize
@item Emacs 18.31 was released Nov 23, 1986
@item Emacs 18.32 was released Dec 6, 1986
@item Emacs 18.33 was released Dec 12, 1986
@item Emacs 18.35 was released Jan 5, 1987
@item Emacs 18.36 was released Jan 21, 1987
@item Emacs 18.37 was released Feb 11, 1987
@item Emacs 18.38 was released Mar 3, 1987
@item Emacs 18.39 was released May 14, 1987
@item Emacs 18.40 was released Mar 18, 1987
@item Emacs 18.41 was released Mar 22, 1987
@item Emacs 18.44 was released Apr 15, 1987
@item Emacs 18.46 was released Jun 8, 1987
@item Emacs 18.47 was released Jun 15, 1987
@item Emacs 18.48 was released Aug 30, 1987
@item Emacs 18.49 was released Sep 17, 1987
@item Emacs 18.50 was released Feb 13, 1988
@item Emacs 18.51 was released May 6, 1988
@item Emacs 18.52 was released Aug 31, 1988
@item Emacs 18.59 was released Oct 30, 1988
@end itemize
@page
@node Emacs 19
@section After 18.59 and Starting 19.34
Jamie Zawinski and Hallvard Breien Furuseth made major changes and additions to the bytecode
interpreter.
From Hallvard:
@quotation
Originally I just generalized some stuff, made bytecomp output byte-code
at file level, added code to skip compiling very small code snippets when
introducing the byte-code call would be a pessimization (looks like this
has been partly reverted now that there are #[function objects]), and
I made some other simple optimizations.
Bytecomp compiled directly to bytecode. Jamie Zawinski invented the
intermediate stage lapcode which made more thorough optimization
possible (byte-opt), and we got together about optimizing more.
@end quotation
The following instructions were added:
@itemize
@item @code{mult} (97). @xref{mult}.
@item @code{forward-char} (117). @xref{forward-char}.
@item @code{forward-word} (118). @xref{forward-word}.
@item @code{skip-chars-forward} (119). @xref{skip-chars-forward}.
@item @code{skip-chars-backward} (120). @xref{skip-chars-backward}.
@item @code{forward-line} (121). @xref{forward-line}.
@item @code{char-syntax} (122). @xref{char-syntax}.
@item @code{buffer-substring} (123). @xref{buffer-substring}.
@item @code{delete-region} (124). @xref{delete-region}.
@item @code{narrow-to-region} (125). @xref{narrow-to-region}.
@item @code{widen} (126). @xref{widen}.
@item @code{end-of-line} (127). @xref{end-of-line}.
@item @code{unbind-all} (146). @xref{unbind-all}.
@item @code{set-marker} (147). @xref{set-marker}.
@item @code{match-beginning} (148). @xref{match-beginning}.
@item @code{match-end} (149). @xref{match-end}.
@item @code{upcase} (150). @xref{upcase}.
@item @code{downcase} (151). @xref{downcase}.
@item @code{stringeqlsign} (152). @xref{stringeqlsign}.
@item @code{stringlss} (153). @xref{stringlss}.
@item @code{equal} (154). @xref{equal}.
@item @code{nthcdr} (155). @xref{nthcdr}.
@item @code{elt} (156). @xref{elt}.
@item @code{member} (157). @xref{member}.
@item @code{assq} (158). @xref{assq}.
@item @code{nreverse} (159). @xref{nreverse}.
@item @code{setcar} (160). @xref{setcar}.
@item @code{setcdr} (161). @xref{setcdr}.
@item @code{car-safe} (162). @xref{car-safe}.
@item @code{cdr-safe} (163. @xref{cdr-safe}.
@item @code{nconc} (164). @xref{nconc}.
@item @code{quo} (165). @xref{quo}.
@item @code{rem} (166). @xref{rem}.
@item @code{numberp} (167). @xref{numberp}.
@item @code{integerp} (162). @xref{integerp}.
@item @code{Rgoto} (170). @xref{Rgoto}.
@item @code{Rgotoifnil} (171). @xref{Rgotoifnil}.
@item @code{Rgotoifnonnil} (172). @xref{Rgotoifnonnil}.
@item @code{Rgotoifnilelsepop} (173). @xref{Rgotoifnilelsepop}.
@item @code{Rgotoifnonnilelsepop} (174). @xref{Rgotoifnonnilelsepop}.
@item @code{listN} (175). @xref{listN}.
@item @code{concatN} (176). @xref{concatN}.
@item @code{insertN} (177). @xref{insertN}.
@end itemize
Instruction @code{unbind-all} was added to support tail-recursion
removal. However this was never subsequently implemented; so this
intruction was never generated.
Starting in this version, unless C prepocessor variable
@code{BYTE_CODE_SAFE} (off by default) is defined, the obsolete
instructions listed in 18.59 are not implemented.
The following obsolete instructions throw an error when
@code{BYTE_CODE_SAFE} is defined:
@itemize
@item @code{mark} (97)
@item @code{scan-buffer} (107)
@item @code{set-mark} (115)
@end itemize
Bytecode meta-comments look like this:
@verbatim
;;; compiled by rms@psilocin.gnu.ai.mit.edu on Mon Jun 10 17:37:37 1996
;;; from file /home/fsf/rms/e19/lisp/bytecomp.el
;;; emacs version 19.31.2.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.
@end verbatim
@unnumberedsubsec Version 19 Release History
@itemize
@item Emacs 19.7 was released May 22 1993
@item Emacs 19.8 was released May 25 1993
@item Emacs 19.9 was released May 27 1993
@item Emacs 19.10 was released May 30 1993
@item Emacs 19.11 was released Jun 1, 1993
@item Emacs 19.12 was released Jun 1, 1993
@item Emacs 19.13 was released Jun 8, 1993
@item Emacs 19.14 was released Jun 17, 1993
@item Emacs 19.15 was released Jun 19, 1993
@item Emacs 19.16 was released Jul 6, 1993
@item Emacs 19.17 was released Jul 7, 1993
@item Emacs 19.18 was released Aug 8, 1993
@item Emacs 19.19 was released Aug 14, 1993
@item Emacs 19.20 was released Nov 11, 1993
@item Emacs 19.21 was released Nov 16, 1993
@item Emacs 19.22 was released Nov 27, 1993
@item Emacs 19.23 was released May 17, 1994
@item Emacs 19.24 was released May 23, 1994
@item Emacs 19.25 was released May 30, 1994
@item Emacs 19.26 was released Sep 7, 1994
@item Emacs 19.27 was released Sep 11, 1994
@item Emacs 19.29 was released Jun 19, 1995
@item Emacs 19.30 was released Nov 24, 1995
@item Emacs 19.31 was released May 25, 1996
@item Emacs 19.31 was released May 25, 1996
@item Emacs 19.32 was released Aug 7, 1996
@item Emacs 19.33 was released Sept 11, 1996
@end itemize
The Emacs Lisp tarball for 19.2 is Aug, 1992. (The tarball date for
19.2 is much later; and even after the date on the 20.1 tarball.)
@node Emacs 20
@section After 19.34 and Starting in 20.1
@code{save-current-buffer} (97). @xref{save-current-buffer} and
@code{save-current-buffer-1} (114) do the same thing, but the former
is deprecated. The latter opcode replaces @code{read-char} which was
not generated since v19.
I am not sure why the change; changing this
opcode number however put it next to other buffer-related opcodes.
Bytecode meta-comments look like this:
@verbatim
;;; Compiled by rms@psilocin.gnu.ai.mit.edu on Sun Aug 31 13:07:37 1997
;;; from file /home/fsf/rms/e19/lisp/emacs-lisp/bytecomp.el
;;; in Emacs version 20.0.97.1
;;; with bytecomp version 2.33
;;; with all optimizations.
;;; This file uses opcodes which do not exist in Emacs 18.
@end verbatim
@unnumberedsubsec Version 20 Release History
@itemize
@item Emacs 20.1 was released Sep 15, 1997
@item Emacs 20.2 was released Sep 19, 1997
@item Emacs 20.3 was released Aug 19, 1998
@item Emacs 20.4 was released Jul 14, 1999
@end itemize
@page
@node Emacs 21
@section After 20.1 and Starting in 21.1
There were no instruction changes. However there were major
changes in the bytecode interpreter.
An instruction with opcode 0 causes an abort.
Bytecode meta-comments look like this:
@verbatim
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:36:26 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/emacs-lisp/bytecomp.el
;;; in Emacs version 21.3
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.
@end verbatim
@unnumberedsubsec Version 21 Release History
@itemize
@item Emacs 21.1 was released Oct 20, 2001
@item Emacs 21.2 was released Mar 16, 2002
@item Emacs 21.3 was released Mar 18, 2003
@item Emacs 21.4 was released Feb 6, 2005
@end itemize
@node Emacs 22
@section After 21.4 and Starting in 22.1
There were no instruction changes.
The bytecode meta-comment no longer includess the bytecomp version used.
Bytecode meta-comments look like this:
@verbatim
;;; Compiled by cyd@localhost on Sat Jun 2 00:54:30 2007
;;; from file /home/cyd/emacs/lisp/emacs-lisp/bytecomp.el
;;; in Emacs version 22.1
;;; with all optimizations.
;;; This file uses dynamic docstrings, first added in Emacs 19.29.
@end verbatim
@unnumberedsubsec Version 22 Release History
@itemize
@item Emacs 22.1 was released Jun 02, 2007
@item The Emacs 22.2 tarball is dated Mar 26 2008
@item The Emacs 22.3 tarball is dated Sep 05 2008
@end itemize
@node Emacs 23
@section After 22.3 and Starting in 23.1
There were no instruction changes.
Bytecode meta-comments look like this:
@verbatim
;;; Compiled by cyd@furry on Wed Jul 29 11:15:02 2009
;;; from file /home/cyd/emacs/lisp/emacs-lisp/bytecomp.el
;;; in Emacs version 23.1
;;; with all optimizations.
;;; This file uses dynamic docstrings, first added in Emacs 19.29.
@end verbatim
@unnumberedsubsec Version 23 Release History
@itemize
@item Emacs 23.1 was released Jul 29, 2009
@item Emacs 23.2 was released May 7, 2010
@item Emacs 23.3 was released Mar 7, 2011
@item The Emacs 23.4 tarball is dated Jan 28, 2012
@end itemize
@node Emacs 24
@section After 23.4 and Starting in 24.1
An error is thrown for unknown bytecodes rather than aborting.
The following instructions were added:
@itemize
@item @code{stack-set} (178). @xref{stack-set}.
@item @code{stack-set2}, (179). @xref{stack-set2}.
@item @code{discardN}, (180). @xref{discardN}.
@end itemize
Unless C preprocessor variable @code{BYTE_CODE_SAFE} (off by default) is
defined, obsolete instructions below and from earlier versions are not implemented.
@itemize
@item @code{temp-output-buffer-setup} (144). @xref{temp-output-buffer-setup}.
@item @code{temp-output-buffer-show} (145). @xref{temp-output-buffer-show}.
@item @code{save-window-excursion} (139). @xref{save-window-excursion}.
@end itemize
Instruction @code{unbind-all}, which never was generated, was marked obsolete
in this version.
The bytecode meta-comment no longer who user/hostname compiled and at what time.
A message indicating whether utf-8 non-ASCII characters is used is included.
The following instructions were added in 24.4:
@itemize
@item @code{pophandler} (48). @xref{pophandler}.
@item @code{pushconditioncase} (49). @xref{pushconditioncase}.
@item @code{pushcatch} (50). @xref{pushcatch}.
@end itemize
Bytecode meta-comments look like this:
@verbatim
;;; from file /misc/emacs/bzr/emacs24-merge/lisp/emacs-lisp/bytecomp.el
;;; in Emacs version 24.3
;;; with all optimizations.
;;; This file uses dynamic docstrings, first added in Emacs 19.29.
;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.
@end verbatim
@unnumberedsubsec Version 24 Release History
@itemize
@item The Emacs 24.1 tarball is dated Jun 10, 2012
@item The Emacs 24.2 tarball is dated Aug 27, 2012
@item Emacs 24.3 was released Mar 11, 2013
@item Emacs 24.4 was released Oct 20, 2014
@item Emacs 24.5 was released Apr 10, 2015
@end itemize
@node Emacs 25
@section After 24.5 and Starting in 25.1
Instruction 0 becomes an error rather than aborting emacs.
A number of changes were made to @code{bytecode.c}.
The bytecode meta-comment no longer includes the source-code path.
Bytecode meta-comments look like this:
@verbatim
;;; Compiled
;;; in Emacs version 25.2
;;; with all optimizations.
;;; This file uses dynamic docstrings, first added in Emacs 19.29.
;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.
@end verbatim
@unnumberedsubsec Version 25 Release History
@itemize
@item Emacs 25.1 was released Sep 16, 2016
@item The Emacs 25.2 tarball is dated Apr 21, 2017
@item Emacs 25.3 was released Sep 11, 2017
@end itemize
@node Emacs 26
@section After 25.3 and Starting in 26.1
@itemize
@item Emacs 26.1 tarball is dated May 28, 2018
@item Emacs 26.2 tarball is dated Apr 12, 2019
@item Emacs 26.3 tarball is dated Aug 28, 2019
@end itemize
The following instruction was added:
@itemize
@item @code{switch} (183) See commit 88549ec38e9bb30e338a9985d0de4e6263b40fb7.
@end itemize
@node Emacs 27
@section After 26.3 and Starting in 27.1
@unnumberedsubsec Version 27 Release History
@itemize
@item Emacs 27.1 tarball is dated Aug 10, 2020
@end itemize
No changes yet.