WEBVTT 00:00:00.080 --> 00:00:03.040 hello EmacsConf this is john wigley 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 ellie zoretsky 00:00:06.319 --> 00:00:09.280 and lars ingebrigston 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:18.400 with the Emacs in the last year so 00:00:18.400 --> 00:00:20.640 specifically uh 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 ellie 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 and emax 28 00:00:40.320 --> 00:00:42.480 and cairo plus half buzz 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 so 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 and 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 mac end 00:01:10.960 --> 00:01:13.760 and emax 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:23.200 go from xft to that native compilation 00:01:23.200 --> 00:01:23.840 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 in 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:28.319 to the compo 00:02:28.319 --> 00:02:29.760 to the processor that you might be 00:02:29.760 --> 00:02:31.440 running on so 00:02:31.440 --> 00:02:33.920 the emax 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 um 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 so 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.040 approach and the ways that we use it and 00:03:17.040 --> 00:03:17.440 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:39.840 inside of an x term with xt 00:03:39.840 --> 00:03:42.879 mouse 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 uh 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 x terms and um 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.720 which has not been true until now Emacs 00:04:12.720 --> 00:04:14.680 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 Emacs comp 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 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 sequel 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:52.720 emoji specific font setups so that is 00:04:52.720 --> 00:04:54.639 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.479 so have fun with the rest of you max 00:05:04.479 --> 00:05:06.479 conf and I hope to see you there 00:05:06.479 --> 00:05:09.199 bye