[00:00.000 --> 00:12.200] So there is more management overhead than to talk, so great. [00:12.200 --> 00:13.200] Okay. [00:13.200 --> 00:18.520] This is Davide Beteo with Running Airline and Elixir on microcontrollers with AtomVM. [00:18.520 --> 00:19.520] Give it up. [00:19.520 --> 00:20.520] Hello, everyone. [00:20.520 --> 00:29.480] So who I am, basically I work during my daytime on a start and a job that are really nice. [00:29.480 --> 00:32.520] Elixir project for IoT and whatever. [00:32.520 --> 00:42.400] And during my nighttime, I try to work a lot on AtomVM that allows you to run Elixir, [00:42.400 --> 00:48.040] Erlang, Gleam, whatever can run on the beam on a microcontroller. [00:48.040 --> 00:55.760] When I say microcontroller, I mean something really, I mean memory constrained, but not [00:55.760 --> 00:56.760] too much. [00:56.760 --> 01:01.120] I mean, still it has to be a 32-bit processor. [01:01.120 --> 01:07.080] It requires about 80 kilobytes of RAM, but we can do it. [01:07.080 --> 01:09.200] Pretty crazy, but we can do it. [01:09.200 --> 01:12.760] And so the software is mostly unmodified. [01:12.760 --> 01:20.160] I mean, we don't have to translate it to other formats or whatever. [01:20.160 --> 01:25.280] It can run beam files, so it's pretty standard. [01:25.280 --> 01:27.280] So how? [01:27.280 --> 01:36.960] So basically we did, well, I created it from scratch, and so the wall implementation has [01:36.960 --> 01:43.400] no code from the original beam implementation because we are focused on memory. [01:43.400 --> 01:51.080] So rather than focusing on performances where beam is very good at, we are focusing on making [01:51.080 --> 01:56.200] everything stay in just a few kilobytes of RAM. [01:56.200 --> 02:01.920] And the virtual machine is compatible with, I mean, all the recent OTP releases. [02:01.920 --> 02:09.720] We already have some experimental support for OTP26, so we are on par right now. [02:09.720 --> 02:16.560] And we have support for quite a big number of nymphs and biffs from Erlang. [02:16.560 --> 02:23.560] So we implemented them in all the daily basics, so you can run your project if you are not [02:23.560 --> 02:25.840] doing anything weird. [02:25.840 --> 02:28.320] And well, there it is. [02:28.320 --> 02:31.440] And also we did something more. [02:31.440 --> 02:38.080] For example, we weren't able to run a replica for Erlang or Elixir on a microcontroller. [02:38.080 --> 02:39.320] It's not really easy. [02:39.320 --> 02:44.160] So we did a simple list implementation for testing stuff. [02:44.160 --> 02:51.200] So if you want to test registers or EWC communication or SPI communication, you can poke with registers [02:51.200 --> 02:52.200] using Lisp. [02:52.200 --> 02:57.360] It's not as good as maybe Erlang or Elixir or whatever, but, I mean, you can experiment [02:57.360 --> 03:00.120] a lot. [03:00.120 --> 03:06.280] And everything can be packed into a single file that can be easily flashed. [03:06.280 --> 03:13.640] And we are mainly supporting right now ESP32 because we started a project with that powerful [03:13.640 --> 03:21.320] microcontroller, but we support, of course, Linux, macOS, and whatever, because, yeah, [03:21.320 --> 03:23.360] we need to test it. [03:23.360 --> 03:28.360] And we are working on improving and extending the support to other devices. [03:28.360 --> 03:33.600] I mean, as soon as I get a new development board, I try to run it. [03:33.600 --> 03:37.240] And sometimes I need help, of course. [03:37.240 --> 03:40.800] And it's pretty easy to port it, by the way. [03:40.800 --> 03:48.240] And when, it is already here, and it can be used for your simple or maybe a bit more complex [03:48.240 --> 03:49.240] projects. [03:49.240 --> 03:54.520] Again, you are running on a really constrained device, but you can do interesting stuff. [03:54.520 --> 04:00.200] And we are working towards the next release that it will feature a lot of cool stuff. [04:00.200 --> 04:07.360] We got finally SMP support, so we can take benefit of multi-core microcontrollers. [04:07.360 --> 04:15.000] And we got recently also really good code debugging features, so it's pretty nice. [04:15.000 --> 04:20.840] And yeah, this project has been possible thanks to the work of other contributors. [04:20.840 --> 04:24.800] And so thank you very much to everyone that has been working. [04:24.800 --> 04:30.240] And because, you know, open source projects are always kind of teamwork. [04:30.240 --> 04:36.480] And it's hard to do something like this just alone, so a lot of thanks to all the contributors. [04:36.480 --> 04:45.560] And thank you to all of you, of course. [04:45.560 --> 04:46.560] Thank you, Davide. [04:46.560 --> 04:50.200] Four minutes and 40 seconds, I think. [04:50.200 --> 05:06.800] Okay, thank you.