0:00:00.080,0:00:04.960 hello EmacsConf this is john wigley I'm 0:00:03.040,0:00:06.319 one of the co-maintainers of Emacs along 0:00:04.960,0:00:09.280 with ellie zoretsky 0:00:06.319,0:00:09.840 and lars ingebrigston and I wanted to 0:00:09.280,0:00:12.639 give you 0:00:09.840,0:00:14.960 a technical update on what has been 0:00:12.639,0:00:18.400 happening 0:00:14.960,0:00:20.640 with the Emacs in the last year so 0:00:18.400,0:00:21.600 specifically uh we have a few notes that 0:00:20.640,0:00:24.480 I've gotten from 0:00:21.600,0:00:25.840 a call with ellie he's been in charge of 0:00:24.480,0:00:28.000 directing most of the 0:00:25.840,0:00:30.160 technical contributions on the mailing 0:00:28.000,0:00:33.200 list and monitoring all the patches 0:00:30.160,0:00:35.840 so I'm more here just as a messenger 0:00:33.200,0:00:37.120 he says that we have good progress and 0:00:35.840,0:00:39.040 support for cairo 0:00:37.120,0:00:40.320 this is going to be enabled by default 0:00:39.040,0:00:42.480 and emax 28 0:00:40.320,0:00:44.800 and cairo plus half buzz is going to be 0:00:42.480,0:00:46.879 the preferred rendering combination 0:00:44.800,0:00:48.719 so cairo support is not new but in the 0:00:46.879,0:00:51.440 past there were a lot of bugs in the 0:00:48.719,0:00:52.960 code and so it was made experimental 0:00:51.440,0:00:54.960 so most of those bugs have been fixed 0:00:52.960,0:00:56.320 recently and now it becomes the default 0:00:54.960,0:00:58.320 and the next major version 0:00:56.320,0:01:00.320 which will enable several good features 0:00:58.320,0:01:01.680 such as color emojis if you're looking 0:01:00.320,0:01:04.720 forward to those 0:01:01.680,0:01:06.560 xft as a result is deprecated there are 0:01:04.720,0:01:07.760 bugs not getting fixed in that code it 0:01:06.560,0:01:08.720 doesn't appear to be very well 0:01:07.760,0:01:10.960 maintained 0:01:08.720,0:01:13.760 it was the most advanced font mac end 0:01:10.960,0:01:15.920 and emax before cairo became dependable 0:01:13.760,0:01:17.840 so now that we have a more a better 0:01:15.920,0:01:19.360 maintained and available solution in 0:01:17.840,0:01:23.200 cairo we're going to go from that 0:01:19.360,0:01:23.840 go from xft to that native compilation 0:01:23.200,0:01:26.400 in lisp 0:01:23.840,0:01:28.080 will also be landing soon it's currently 0:01:26.400,0:01:28.799 on a branch but there are several people 0:01:28.080,0:01:31.040 using it 0:01:28.799,0:01:32.479 they say they're very impressed it does 0:01:31.040,0:01:35.600 require live gcc 0:01:32.479,0:01:37.439 jit to be installed for it to work and 0:01:35.600,0:01:38.960 this means you have to have gcc 10 0:01:37.439,0:01:41.040 installed 0:01:38.960,0:01:42.240 execution of Emacs lisp with native 0:01:41.040,0:01:45.280 compilation on 0:01:42.240,0:01:46.159 is about 2.5 times faster than the 0:01:45.280,0:01:48.399 bytecode 0:01:46.159,0:01:49.439 interpreter we don't yet have any 0:01:48.399,0:01:51.600 measurements on 0:01:49.439,0:01:52.960 memory or how it affects resources 0:01:51.600,0:01:54.720 besides cpu so 0:01:52.960,0:01:56.399 we do look forward to having more 0:01:54.720,0:01:58.320 numbers and analysis to see what the 0:01:56.399,0:02:01.360 real impact of that is going to be 0:01:58.320,0:02:02.799 also it may vary in compute advantage 0:02:01.360,0:02:04.320 based on the type of workload that 0:02:02.799,0:02:06.240 you're performing 0:02:04.320,0:02:08.080 a downside to the native compilation at 0:02:06.240,0:02:10.720 the moment is that it takes a long 0:02:08.080,0:02:12.720 time to compile even when you're doing a 0:02:10.720,0:02:14.959 16 core build of Emacs 0:02:12.720,0:02:15.760 it can still take 15 minutes to compile 0:02:14.959,0:02:17.840 Emacs 0:02:15.760,0:02:19.520 and all of its in all of its lisp code 0:02:17.840,0:02:21.840 with this enabled 0:02:19.520,0:02:23.120 also this is going to have to happen on 0:02:21.840,0:02:25.360 every user's machine 0:02:23.120,0:02:27.520 because we cannot distribute the native 0:02:25.360,0:02:28.319 compilation products they are specific 0:02:27.520,0:02:29.760 to the compo 0:02:28.319,0:02:31.440 to the processor that you might be 0:02:29.760,0:02:33.920 running on so 0:02:31.440,0:02:35.680 the emax distribution will remain much 0:02:33.920,0:02:37.760 as it is now but if you want to have the 0:02:35.680,0:02:39.599 benefits of natively compiled 0:02:37.760,0:02:41.519 core lisp files you're going to have to 0:02:39.599,0:02:42.400 spend that time and have gcc 10 0:02:41.519,0:02:45.840 available 0:02:42.400,0:02:48.959 to get that compilation support um 0:02:45.840,0:02:52.160 the gtk only build is being prepared 0:02:48.959,0:02:52.959 for merging so what this does is it 0:02:52.160,0:02:55.120 throws away 0:02:52.959,0:02:56.000 most of the other tool kits that Emacs 0:02:55.120,0:02:59.280 was using 0:02:56.000,0:03:01.760 and relies only on gtk making Emacs 0:02:59.280,0:03:03.920 much more of a gtk application than it 0:03:01.760,0:03:06.480 has been 0:03:03.920,0:03:08.480 the main issue here is that we were 0:03:06.480,0:03:09.360 abusing gtk in some ways that weren't 0:03:08.480,0:03:10.879 really meant 0:03:09.360,0:03:12.879 and now we're going to be more of a 0:03:10.879,0:03:14.080 first club gtk will be more of a first 0:03:12.879,0:03:17.040 class citizen in the 0:03:14.080,0:03:17.440 approach and the ways that we use it and 0:03:17.040,0:03:19.280 and 0:03:17.440,0:03:21.200 be using it in the ways that the gtk 0:03:19.280,0:03:23.360 developers intended 0:03:21.200,0:03:24.640 there is going to be much more support 0:03:23.360,0:03:27.280 for xt mouse 0:03:24.640,0:03:29.120 so xt mouse allows you to use your mouse 0:03:27.280,0:03:30.799 inside of a terminal window 0:03:29.120,0:03:33.120 which you could do before but there were 0:03:30.799,0:03:36.159 certain aspects such as menus 0:03:33.120,0:03:38.239 that weren't supported so instead of 0:03:36.159,0:03:39.840 having kind of partial support for mouse 0:03:38.239,0:03:42.879 inside of an x term with xt 0:03:39.840,0:03:44.959 mouse you get full support this is going 0:03:42.879,0:03:46.720 to allow 0:03:44.959,0:03:48.159 changes in the way that things can be 0:03:46.720,0:03:51.200 bound the ways that 0:03:48.159,0:03:53.200 uh key bindings can the mouse events can 0:03:51.200,0:03:56.879 be mapped to key bindings while in 0:03:53.200,0:03:58.480 x terms and um yeah little by little 0:03:56.879,0:03:59.040 this support is being extended even 0:03:58.480,0:04:01.599 further 0:03:59.040,0:04:04.080 so we look forward to seeing that 0:04:01.599,0:04:06.239 develop in the near term 0:04:04.080,0:04:08.080 once this is merged by the way also then 0:04:06.239,0:04:09.840 Emacs will have mouse support in every 0:04:08.080,0:04:12.720 one of its available configurations 0:04:09.840,0:04:14.680 which has not been true until now Emacs 0:04:12.720,0:04:17.519 27 will be soon releasing 0:04:14.680,0:04:19.919 27.2 and the pretest for that should 0:04:17.519,0:04:20.880 begin sometime soon after Emacs comp is 0:04:19.919,0:04:23.360 done 0:04:20.880,0:04:24.800 and finally Emacs 28 is going to get 0:04:23.360,0:04:26.479 better emoji support 0:04:24.800,0:04:29.120 right now emojis are registered 0:04:26.479,0:04:31.759 internally within Emacs as symbols 0:04:29.120,0:04:33.759 which works in some ways but does not 0:04:31.759,0:04:37.360 support some of the special features 0:04:33.759,0:04:40.000 of of emojis such as different 0:04:37.360,0:04:41.120 skin tones for the hand emoji or face 0:04:40.000,0:04:43.280 emojis 0:04:41.120,0:04:45.199 in Emacs 28 emojis are going to have 0:04:43.280,0:04:47.199 their own support within the sequel 0:04:45.199,0:04:49.360 c code and then this is going to allow 0:04:47.199,0:04:52.720 those types of variations and other 0:04:49.360,0:04:54.639 emoji specific font setups so that is 0:04:52.720,0:04:56.720 everything for Emacs 0:04:54.639,0:04:59.120 in the future I don't have a timeline 0:04:56.720,0:05:01.520 for you on when 28 will be available 0:04:59.120,0:05:02.720 but 27 is going to keep improving until 0:05:01.520,0:05:04.479 we're ready to get there 0:05:02.720,0:05:06.479 so have fun with the rest of you max 0:05:04.479,0:05:09.199 conf and I hope to see you there 0:05:06.479,0:05:09.199 bye