summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--38-emacs-development-update--john-wiegley.vtt
blob: 43c398573f57f05bc6d432e584168d0f52dae900 (plain) (blame)
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
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
WEBVTT

00:00:00.080 --> 00:00:03.040
Hello EmacsConf! This is John Wiegley, I'm

00:00:03.040 --> 00:00:04.960
one of the co-maintainers of Emacs along

00:00:04.960 --> 00:00:06.319
with Eli Zaretskii

00:00:06.319 --> 00:00:09.280
and Lars Ingebrigtsen, and I wanted to

00:00:09.280 --> 00:00:09.840
give you

00:00:09.840 --> 00:00:12.639
a technical update on what has been

00:00:12.639 --> 00:00:14.960
happening

00:00:14.960 --> 00:00:17.573
with the Emacs in the last year.

00:00:17.573 --> 00:00:20.640
So, specifically we have a few notes that

00:00:20.640 --> 00:00:21.600
I've gotten from

00:00:21.600 --> 00:00:24.480
a call with Eli, he's been in charge of

00:00:24.480 --> 00:00:25.840
directing most of the

00:00:25.840 --> 00:00:28.000
technical contributions on the mailing

00:00:28.000 --> 00:00:30.160
list and monitoring all the patches.

00:00:30.160 --> 00:00:33.200
So, I'm more here just as a messenger.

00:00:33.200 --> 00:00:35.840
He says that we have good progress and

00:00:35.840 --> 00:00:37.120
support for Cairo,

00:00:37.120 --> 00:00:39.040
this is going to be enabled by default

00:00:39.040 --> 00:00:40.320
in Emacs 28,

00:00:40.320 --> 00:00:42.480
and Cairo plus HarfBuzz is going to be

00:00:42.480 --> 00:00:44.800
the preferred rendering combination.

00:00:44.800 --> 00:00:46.879
So, Cairo support is not new, but in the

00:00:46.879 --> 00:00:48.719
past there were a lot of bugs in the

00:00:48.719 --> 00:00:51.440
code, and so it was made experimental.

00:00:51.440 --> 00:00:52.960
Most of those bugs have been fixed

00:00:52.960 --> 00:00:54.960
recently, and now it becomes the default

00:00:54.960 --> 00:00:56.320
in the next major version,

00:00:56.320 --> 00:00:58.320
which will enable several good features

00:00:58.320 --> 00:01:00.320
such as color emojis, if you're looking

00:01:00.320 --> 00:01:01.680
forward to those.

00:01:01.680 --> 00:01:04.720
Xft, as a result is deprecated. There are

00:01:04.720 --> 00:01:06.560
bugs not getting fixed in that code, it

00:01:06.560 --> 00:01:07.760
doesn't appear to be very well

00:01:07.760 --> 00:01:08.720
maintained.

00:01:08.720 --> 00:01:10.960
It was the most advanced font backend

00:01:10.960 --> 00:01:13.760
in Emacs before Cairo became dependable.

00:01:13.760 --> 00:01:15.920
So, now that we have a more a better

00:01:15.920 --> 00:01:17.840
maintained and available solution in

00:01:17.840 --> 00:01:19.360
Cairo, we're going to go from that,

00:01:19.360 --> 00:01:21.839
go from Xft to that.

00:01:21.839 --> 00:01:23.840
Native compilation in Lisp

00:01:23.840 --> 00:01:26.400
will also be landing soon. It's currently

00:01:26.400 --> 00:01:28.080
on a branch, but there are several people

00:01:28.080 --> 00:01:28.799
using it,

00:01:28.799 --> 00:01:31.040
they say, they're very impressed. It does

00:01:31.040 --> 00:01:32.479
require live GCC

00:01:32.479 --> 00:01:35.600
JIT to be installed for it to work, and

00:01:35.600 --> 00:01:37.439
this means you have to have GCC 10

00:01:37.439 --> 00:01:38.960
installed.

00:01:38.960 --> 00:01:41.040
Execution of Emacs Lisp with native

00:01:41.040 --> 00:01:42.240
compilation on

00:01:42.240 --> 00:01:45.280
is about 2.5 times faster than the

00:01:45.280 --> 00:01:46.159
bytecode

00:01:46.159 --> 00:01:48.399
interpreter, we don't yet have any

00:01:48.399 --> 00:01:49.439
measurements on

00:01:49.439 --> 00:01:51.600
memory or how it affects resources

00:01:51.600 --> 00:01:52.960
besides CPU, so,

00:01:52.960 --> 00:01:54.720
we do look forward to having more

00:01:54.720 --> 00:01:56.399
numbers and analysis to see what the

00:01:56.399 --> 00:01:58.320
real impact of that is going to be,

00:01:58.320 --> 00:02:01.360
also, it may vary in compute advantage

00:02:01.360 --> 00:02:02.799
based on the type of workload that

00:02:02.799 --> 00:02:04.320
you're performing.

00:02:04.320 --> 00:02:06.240
A downside to the native compilation at

00:02:06.240 --> 00:02:08.080
the moment is that, it takes a long

00:02:08.080 --> 00:02:10.720
time to compile even when you're doing a

00:02:10.720 --> 00:02:12.720
16 core build of Emacs,

00:02:12.720 --> 00:02:14.959
it can still take 15 minutes to compile

00:02:14.959 --> 00:02:15.760
Emacs

00:02:15.760 --> 00:02:17.840
and all of its Lisp code

00:02:17.840 --> 00:02:19.520
with this enabled.

00:02:19.520 --> 00:02:21.840
Also, this is going to have to happen on

00:02:21.840 --> 00:02:23.120
every user's machine

00:02:23.120 --> 00:02:25.360
because we cannot distribute the native

00:02:25.360 --> 00:02:27.520
compilation products, they are specific

00:02:27.520 --> 00:02:29.760
to the processor that you might be

00:02:29.760 --> 00:02:30.806
running on.

00:02:30.806 --> 00:02:33.920
So, the Emacs distribution will remain much

00:02:33.920 --> 00:02:35.680
as it is now, but if you want to have the

00:02:35.680 --> 00:02:37.760
benefits of natively compiled

00:02:37.760 --> 00:02:39.599
core Lisp files, you're going to have to

00:02:39.599 --> 00:02:41.519
spend that time and have GCC 10

00:02:41.519 --> 00:02:42.400
available

00:02:42.400 --> 00:02:45.840
to get that compilation support.

00:02:45.840 --> 00:02:48.959
The GTK only build is being prepared

00:02:48.959 --> 00:02:52.160
for merging. What this does is, it

00:02:52.160 --> 00:02:52.959
throws away

00:02:52.959 --> 00:02:55.120
most of the other tool kits that Emacs

00:02:55.120 --> 00:02:56.000
was using

00:02:56.000 --> 00:02:59.280
and relies only on GTK, making Emacs

00:02:59.280 --> 00:03:01.760
much more of a GTK application than it

00:03:01.760 --> 00:03:03.920
has been.

00:03:03.920 --> 00:03:06.480
The main issue here is that we were

00:03:06.480 --> 00:03:08.480
abusing GTK in some ways that weren't

00:03:08.480 --> 00:03:09.360
really meant,

00:03:09.360 --> 00:03:10.879
and now we're going to be more of a

00:03:10.879 --> 00:03:12.879
first club…, GTK will be more of a first

00:03:12.879 --> 00:03:14.080
class citizen in the

00:03:14.080 --> 00:03:17.440
approach and the ways that we use it, and

00:03:17.440 --> 00:03:19.280
be using it in the ways that the GTK

00:03:19.280 --> 00:03:21.200
developers intended.

00:03:21.200 --> 00:03:23.360
There is going to be much more support

00:03:23.360 --> 00:03:24.640
for xt-mouse.

00:03:24.640 --> 00:03:27.280
So, xt-mouse allows you to use your mouse

00:03:27.280 --> 00:03:29.120
inside of a terminal window,

00:03:29.120 --> 00:03:30.799
which you could do before, but there were

00:03:30.799 --> 00:03:33.120
certain aspects such as menus

00:03:33.120 --> 00:03:36.159
that weren't supported. So, instead of

00:03:36.159 --> 00:03:38.239
having kind of partial support for mouse

00:03:38.239 --> 00:03:40.473
inside of an XTerm, with xt-mouse,

00:03:40.473 --> 00:03:42.879
you get full support. This is going

00:03:42.879 --> 00:03:44.959
to allow

00:03:44.959 --> 00:03:46.720
changes in the way that things can be

00:03:46.720 --> 00:03:48.159
bound, the ways that

00:03:48.159 --> 00:03:51.200
key bindings can…, the mouse events can

00:03:51.200 --> 00:03:53.200
be mapped to key bindings while in

00:03:53.200 --> 00:03:56.879
XTerms, and yeah, little by little

00:03:56.879 --> 00:03:58.480
this support is being extended even

00:03:58.480 --> 00:03:59.040
further,

00:03:59.040 --> 00:04:01.599
so we look forward to seeing that

00:04:01.599 --> 00:04:04.080
develop in the near term.

00:04:04.080 --> 00:04:06.239
Once this is merged by the way, also then

00:04:06.239 --> 00:04:08.080
Emacs will have mouse support in every

00:04:08.080 --> 00:04:09.840
one of its available configurations,

00:04:09.840 --> 00:04:12.173
which has not been true until now.

00:04:12.173 --> 00:04:14.680
Emacs 27 will be soon releasing

00:04:14.680 --> 00:04:17.519
27.2, and the pretest for that should

00:04:17.519 --> 00:04:19.919
begin sometime soon after EmacsConf is

00:04:19.919 --> 00:04:20.880
done.

00:04:20.880 --> 00:04:23.360
And finally Emacs 28 is going to get

00:04:23.360 --> 00:04:24.800
better emoji support,

00:04:24.800 --> 00:04:26.479
right now emojis are registered

00:04:26.479 --> 00:04:29.120
internally within Emacs as symbols

00:04:29.120 --> 00:04:31.759
which works in some ways but does not

00:04:31.759 --> 00:04:33.759
support some of the special features

00:04:33.759 --> 00:04:37.360
of emojis such as different

00:04:37.360 --> 00:04:40.000
skin tones for the hand emoji or face

00:04:40.000 --> 00:04:41.120
emojis.

00:04:41.120 --> 00:04:43.280
In Emacs 28, emojis are going to have

00:04:43.280 --> 00:04:45.199
their own support within the

00:04:45.199 --> 00:04:47.199
C code, and then this is going to allow

00:04:47.199 --> 00:04:49.360
those types of variations and other

00:04:49.360 --> 00:04:51.439
emoji specific font setups.

00:04:51.439 --> 00:04:54.639
So, that is everything for Emacs

00:04:54.639 --> 00:04:56.720
in the future, I don't have a timeline

00:04:56.720 --> 00:04:59.120
for you on when 28 will be available,

00:04:59.120 --> 00:05:01.520
but 27 is going to keep improving until

00:05:01.520 --> 00:05:02.720
we're ready to get there.

00:05:02.720 --> 00:05:04.906
So, have fun with the rest of EmacsConf,

00:05:04.906 --> 00:05:06.479
and I hope to see you there,

00:05:06.479 --> 00:05:09.199
Bye.