CI/CD / Development

This Week in Programming: When to Choose F# Over Rust

7 Nov 2020 6:00am, by

What’s better than watching the polls, whether we’re talking presidential elections or programming language popularity? Well, debating why we choose one programming language over another, of course!

This week, that discussion comes from Paul Biggar, founder and CEO of Dark Lang, a programming language (with built-in infrastructure) that promises “deployless” deployments and a time from code to production of fewer than 50 milliseconds.

Originally, Dark was written in Python before moving to OCaml, but now Biggar says they are leaving OCaml behind for a number of reasons, including a lack of tooling, libraries, and a difficult learning curve. In looking for a replacement, says Biggar, he had long expected that the rewrite would happen in Rust, as it does have “excellent tooling, great libraries, a delightful community, etc.” but after a month working with Rust, it was clear it wasn’t meant to be. At that time, he offered a direct comparison of OCaml and Rust, noting that “all programming languages suck, especially whichever one is your favorite,” and those seem like sage words for any such discussion herein.

That said, Biggar decided that Dark’s new backend will be in F# for somewhat of a simple reason: F# is “OCaml backed by the world’s largest and most experienced creators of programming languages. And in the areas that OCaml is great, F# is also great! Sum types, static typing, eager execution, pipelines, immutable values, all of this is really great.” Beyond the ease of transition between OCaml and F#, however, there were some Rust-specific reasons for why Dark didn’t choose Rust, a blog post that he also said could be simply titled “you’ll never believe just how much a Garbage Collector does for you!”

So, after briefly addressing why it was also a no-go for Clojure, Haskell, and Scala, Biggar tackles why the increasingly trendy Rust didn’t end up as the language of choice, as he had once expected. Put simply, “it came down to a few major things: missing a GCP library, and the low-level nature of the language.” Along with that, he notes that the pattern matching isn’t particularly great, there are too many ways to do things, the language isn’t immutable, and that “having to do memory management sucks.”

In the end, he boils the decision down to one that might apply to many considering Rust: “I think most of us don’t need Rust. I think Rust is a wonderful community, ecosystem, and tooling, wrapping a language that nicely solves a problem very few of us have. It’s just so nice over there, until you actually write code. […] By having a GC, we don’t have to do any of the stuff that causes all these problems in Rust. Maybe that costs performance, but I need the ability to quickly write code a lot more than I need the extra performance.”

This Week in Programming

  • Python Surpasses Java in TIOBE: This month’s TIOBE Index, a ranking of programming languages according to search engine results, has come out with the attention-grabbing headline that “Python is unstoppable and surpasses Java.” According to the write-up, this is the first time that Java and C aren’t the two top languages — although C holds number one this month, Python has replaced Java for the number two spot. As for why, they offer that Python’s new popularity on the list “has to do with general demand” and not simply the boom in data science. “Programming skills are needed everywhere nowadays and there is a lack of good software developers,” TIOBE CEO Paul Jansen writes. “As a consequence, we need something simple that can be handled by non-software engineers, something easy to learn with fast edit cycles and smooth deployment. Python meets all these needs.”

  • Travis CI Restructures Pricing Model: Earlier this week, we saw the long-awaited changes to Docker Hub go into effect, and at the same time, Travis CI has said they are introducing a new pricing model that it says will offer faster build times and greater flexibility, while also noting that the change will “not affect most Travis CI users who run their builds on public and private repositories using Linux and Windows OS.” The list of who will and will not be affected by the changes is detailed, so make sure to click through, but suffice to say that the changes came about because “abusers have been tying up our build queues and causing performance reductions for everyone.” As a result, they say that they “are implementing some changes for our public build repositories” that should make things fairer for their users.
  • Amazon Web Services Ends .NET SDK Support: AWS has announced the end of support for the AWS SDK for .NET version 1, which will take place on April 1st, 2021, ending updates and releases, including critical bugs or security updates, at that time. While the code will still be available, they recommend migrating to the latest major version — AWS SDK for .NET version 3 (v3), which does include some breaking changes if you’re migrating directly from v1. For more details, check out the migration guide.

Amazon Web Services is a sponsor of The New Stack.

Feature image by Steve Buissinne via Pixabay.

A newsletter digest of the week’s most important stories & analyses.