this post was submitted on 21 Jun 2023
56 points (96.7% liked)

Rust

6030 readers
2 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

[email protected]

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
 

I work for a company mostly using Java, but I choose to rewrite a preformance critical part of the system in Rust. Before this rewrite I had only written some smaller thing in Rust, so i was familiar with the language, but not very experienced. When I did the re-write I expected the performance increase, I was also impressed by the concurrency and the safety around that. It is of course still possible to deadlock, but most other issues around concurrency just goes away. I found that rust really lives up to the credo "fearless concurrency". However, all of these things were expected.

One of the things I had a hard time adjusting to was all this Error handling that was required, and getting used to the ? operator, learning to use the thiserror crate. I initially thought that this was the weak point of Rust. After a while I learned to use it and realized that it was quite the opposite. When I learned how to do the error handling, I suddenly found that the result is that there are no surprise errors left in production.

The unexpected benefit I saw was that the logfiles have shrunk with a factor 100 from Java to Rust. In java there are so many things that might go wrong in so many ways, that you need to log the internal state all over the place to be able to understand why something blew up. In the rust version, I get a clean and handled error in my log stating exactly what went wrong. Being forced to handle errors, combined with great mechanisms to do it, is a under appreciated side of Rust.

What is your most surprising benefit of using Rust?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 16 points 1 year ago (2 children)

As a sysadmin I always assumed having a log file that contains at least one backtrace in the last 60s was somehow required for the JVM to work. Certainly seems that way when running e.g. Jenkins or other "off-the-shelf" Java software.

[–] snaggen 11 points 1 year ago (1 children)

Yes, Java lives by the credo "Backtrace or it didn't happen!"

[–] [email protected] 9 points 1 year ago (1 children)

The annoying part to me is usually that they often only print a backtrace but not the actually relevant information, e.g. if a file was not found at that point in the code it would usually be nice to know the filename or if some permission was denied, permission for who to do what (to which object(s)).

[–] snaggen 7 points 1 year ago

This is the reason you need to log the application state all of the time, to get context to the backtrace.

[–] [email protected] 3 points 1 year ago

As someone who's written a lot of Java software over the years... this makes me sad to read.