Review: EuroRust 2024

✍️ Written on 2024-10-13 in 2414 words.
Part of cs software-development community programming-languages rustlang

Motivation

I took one week off to finish some rust programs and travelled to Vienna for EuroRust, a European conference for rust developers.

EuroRust 2024

EuroRust 2024 took place on three days[1] with 1 day of workshops and 2 days of talks. Attending a workshop on the pre-conference day cost 360€, which was too much for me. I got the conference ticket at the earliest possible day and this early-bird ticket cost 180€[2]. The event was organized by the company Mainmatter and additional events were organized outside the event venue as well (Karaoke, dinner for 4–6 people in 8 locations). The event closed with a closing party.

Workshop day

Because of the price, I did not sign up to workshops but came to Vienna at the workshop day. The workshops happened inside the building of wexelerate, the startup accelerator in Vienna. I went there because maybe I can sign in to the conference already to avoid the stress on Thursday morning before the first talk. This was not the case and just attending people were on site. Out of personal interest I studied the interior design in this building instead. Afterwards, I headed to my apartment again and updated some python program.

Four statements are shown in front of four background colors namely “it’s not done until it ships” and “global vision
Figure 1. A startup-stereotypical poster inside the Wexelerate building

Conference Day 1

The venue on the following days was in the east of Vienna, specifically “Wiener Werkshallen” (east of Gasometer). The venue is an industrial complex adjusted by mounting black fabric on the hall and ceiling for the conference. It took me 50 minutes to get there by public transport.

People walking along a pedestrian crossing and above their heads four flags titled EuroRust are visible in the background
Figure 2. Four recognizable flags helped finding the venue

I decided to show up sufficiently early. I was not stressed or anything because I did not have to present a talk myself[3] and thus it was easy to be on time. That was helpful because at 09:15 (after they opened doors at 09:00 before the first talk at 10:00) the queue was already sufficiently long. But they worked fast, welcomed people nicely, and I got my badge.

A paper in the size of a hand titled EuroRust and mentioning “Lukas Prokop” “OSS maintainer” “a chatty interaction level” and github handles @meisterluk and @tajpulo
Figure 3. My badge: It turned out that I should have mentioned my [deprecated] third github handle @prokls

They even had a cloakroom! In general, the conference was well-organized. They provided enough space, gender-neutral restrooms where even paper was replenished, paid FINN catering for providing food and drinks, the lecture hall had [in general] enough seats for the 550 attendees. Technically, there were also online attendees but it felt like actual participation was limited. The Q&A after the talk from time to time included questions “from the internet” and I found one post about difficulties how to use the online credentials to participate. But besides this, the participation was not recognizable. Just to mention: Few posts showed up on X/mastodon; so I really think the conference took place on-site.

A large hall with covered black walls is shown and people sit on the couch or stand at tables waiting for the next talk
Figure 4. The hall for onsite attendees to chat, snack, or relax
Many listeners sit on their seats and their heads are visible on the photograph from behind while the speaker is speaking in front using two large displays for slides
Figure 5. The main lecturing hall
On the right side the speaker Lukas is standing and presenting his topic whereas the left side shows the slide on a large display
Figure 6. Lukas Wirth spoke about syntax highlighting on the side track and its need to track source code Spans

Whereas most talks happened in the main lecturing hall, the smaller side hall was used occasionally. One rarely got a hold of a chair in the side hall, but that was fine for me, at least. It was pretty nice that they also opened up minor areas where people can get together to discuss individually for specific projects. In the hall for attendees few companies presented themselves, a robot soccer team presented their setup, and everything else was used for coffee/drink/snack delivery and as place to chat.

A speaker with opened arms is standing in front of the seated crowd and the slide above his head reads “Unleashing the Ferris within”
Figure 7. Victor Cuira explained how they migrate their codebases from C++/C# to rust at Microsoft

The quality of talks was as expected and pretty nice. In the morning, Jon delivered clarifications for the most confusing parts of rust using his experienced teaching skills. Predrag spoke about code testing in a structured way and it just happened that there was no news involved for me. I totally appreciate Predrag for his work on cargo-semver-checks and trustfall and he used these codebases as case studies for his testing efforts. Procedural macros is a topic I am not very familiar with. Naturally I learned a bit about it but I still avoid them because of its compilation-runtime implications. In the afternoon, I learned about WebAudio/WASM, the difficulties to provide good IDE support for macros, and memory allocators after lunch. And the topics after a snack break involved an academic approach to earlier correctness proofs of macros, integration of scripting languages to rust, and a talk about migration of codebases at Microsoft. Nice talks overall.

A slide is shown mentioning that DWrite is cross-platform and Rust port work began in 2020
Figure 8. Victor’s slide “DWrite is a full stack for text analysis, layout & rendering”

Due to my topic of interest, it was interesting to learn that since 2020, Microsoft is rewriting DirectWrite to rust. For outsiders: DirectWrite is Microsoft’s component to set type in graphical user interfaces. Victor openedly admitted that porting is not smooth, but takes continuous effort partially maintaining two codebases until the end of the transition. But he did not mention any specific feedback how it can be improved from the rust side.

Conference Day 2

The second day started with a talk, I was looking forward to. This is partially because I got to know Amanda the day before and partially because I followed academic work like Stacked Borrows (or more broadly Ralf Jung’s work). Amanda is part of the Polonius team. Polonius is meant to be the next borrow checker. Structurally, the borrow checker is a component which runs to verify that nothing illegal is done with references/borrowing in your codebase. If everything is fine, the borrow checker let’s up compile the codebase. But if no correctness proof can be found, a compilation error is thrown. With borrow checker’s update on Non-lexical lifetimes, the compiler was able to prove many more programs and improved the situation since rust 2015 a lot. If no proof can be found now, they would use Polonius to check lifetimes as “set of loans” allowing even more programs to be considered valid. It seems like a theoretical foundation for self-referencial lifetimes would be created. This relates to the often-critized Pin type API complexity or the lack of a Move trait. One needs to recognize that rust does not give programs control over the movement of data (if data is moved, pointers to the data cannot be easily rewritten). Given a theoretical basis, one would have to adjust rust’s syntax to allow expression of self-referencial dependencies. After finishing the work, we can neatly express more data structures in safe rust. Proofs for Polonius currently happen with datafrog, but they plan to phase out this dependency. The original plan was to conclude the work in 2024, but they did not deliver yet and won’t deliver in 2024.

A slide is shown with two struct types in rust where one member contains a reference to another member within the same struct
Figure 9. Amanda’s slide on “Future extensions to Polonius” with one syntactic proposal to express self-referencial dependencies

The non-binary Rust talk did not meet my expectations, because the examples where too limited to understand the usecase, full of typos, and in my understanding just shows bad API design (local adjustments instead of providing an appropriate API for the overall usecase). Jonathan delivered (for me, not so interesting topic in) a well-structured and well-researched talk on writing an SD card driver. ratatui is a crazy-good library to create terminal user interfaces. My objection is generic: why are we trying to push capabilities into the terminal, which are much more advanced and given on other platforms (GUI, web)? The basic ingredients were (IMHO) never meant to be used that way. But I appreciate that we have one rust tool avoiding the necessity to use all other awkward libraries like ncurses outside our ecosystem. Any yes, I was amazed by the games and slides written in ratatui as well.

The photo is taken between two columns of sitting audience and the speaker presents a slide showing an old VT100 machine
Figure 10. Writing good terminal user interfaces with ratatui requires understanding the VT100 specification as basis

I want to conclude by mentioning the uv talk. Charlie Marsh presented uv in a wonderful talk mentioning their vision to unify python packaging in one tool similar to rust’s cargo (currently the field is fragmented with pip, pyenv, poetry, …). He focused on the difficulties like package dependency resolution which is usually implemented with a SAT solver to be sufficiently fast.

Charlie Marsh presenting uv with a slide shown above his head
Figure 11. A slide “A unified vision for python packaging”

A more critical look

I am very grateful for organizing the community event. The event was fine and the organizers put a lot of effort into it. In order to look at this conference with a more critical point of view, the following can be mentioned:

  • Helsing is a sponsor of the event. They also use rust in their products. One attendee expressed discomfort, because a company developing lethal tools sponsors the event. I understand the argument, but my personal boundary is at a different place.

  • One attendee let his dogs roam around freely. I wonder what the societal expectations are because some people have allergies. At Grazer Linuxtage, there is one cat living at the doorman’s place. There we had the same discussion. Because no-one complained and I neither have allergies related to cats/dogs, I never continued the discussion. I found it a bit disturbing that the long leash was left loose behind the dog traversing the event venue. But I did not care enough to talk to the owner. So nevermind!

  • Some people expressed concerns regarding Covid infections. Should we wear masks? Or not? The decision was left to the individual. This is aligned with the legal situation. I think it will stay this way among conferences and this was fine for me. I did not get sick and had a mask with me in case I feel uncomfortable. At night of the last conference day I privately met a person suffering from ME/CFS and she expressed her gratefulness for people actually thinking of people like her. My personal take on this: Don’t take it for granted that everyone is healthy. Please take precautions if you sense meaning to it. This helps society. Not only if we make a collective decision but also as an individual decision.

Conclusion

I did not talk about the social aspects here: meeting new people, talking about a company & person using my crate, and elevator-pitching my digital typesetting project. This happens on an private level and I don’t want to share details here. So I focused on the venue and talks.

The conference was a success and it was totally worth it. I stayed in Vienna for one more day before I got back to Graz to conclude my vacation. Thank you all for being excellent!

A slide shows “Thank you” with the organizer and speakers being on stage
Figure 12. “Thank you” slide at the closing event

1. Technically, on the fourth day there was a second city tour through Vienna for interested people, but compared to the other days it was a single external event. So I will not count it as another EuroRust day.
2. I think the regular price is twice the early-bird price.
3. I submitted two talks and one was similar to a presented one. But neither got accepted.