The Rust compiler has gotten faster again

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • pyc

    A Python to C compiler

  • jsc

    A JavaScript compiler written in TypeScript targeting C++/V8 (by eatonphil)

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • rust

    Empowering everyone to build reliable and efficient software.

  • That improvement is already included in the newest nightly, so it is already included in the linked benchmark. It will ship to stable in the 1.57.0 release:

    https://github.com/rust-lang/rust/pull/88243

    Rustc supports running with LLVM versions other than 13.0, which some distros enable, but the official builds of rustc all use LLVM 13.0.

    This updated the shipped LLVM to 13.0: https://github.com/rust-lang/rust/pull/89456

  • githut

    Github Language Statistics

  • The hvasilev's comment got flagged and I could not reply to it anymore, so I'll reply here (sorry) and copy-paste the hvasilev's comment verbatim below, for the sake of commenting on it's claims:

    ---

    Reality is not on the side of this language. 11 year old, has a very low adoption with virtually no jobs associated. (https://www.tiobe.com/tiobe-index/)

    On the other hand if you search for "Rust" in the latest "Who wants to be hired?" thread, you will see it is quite popular with unemployed people.

    The reality is that the language has a lot of friction, the ergonomics are bad, the syntax is heavy and some poor decision making has been made there for a systems-level programming language.

    There are a lot of ideological traps in this industry and many people that fall for them. Why people are interested in ideologies and cults is beyond me.

    [ A screenshot: https://imgur.com/a/tgAETjh ]

    ---

    Now my comments on the issues mentioned in the hvasilev's comment.

    > Reality is not on the side of this language. 11 year old, has a very low adoption with virtually no jobs associated. (https://www.tiobe.com/tiobe-index/)

    Tiobe index is shit. The most flattering thing I've read about it states that it (poorly) depicts quantity of educational materials available online for particular programming language. Unfortunate naming of programming languages after letters of alphabet, symbols (++, #) and real-life stuff (like islands) doesn't help this rating either.

    That said, Rust isn't that popular and isn't growing much according to other better language ratings:

    1. https://tjpalmer.github.io/languish/

    Github-based rating created by the author of Context Free YouTube channel. For 2021Q3, Rust is on 18th place with Mean Score of 0.82% (up 0.01% from 2021Q2).

    2. https://madnight.github.io/githut/#/pull_requests/2021/3

    Github-based rating. For 2021Q3, Rust has 0.64% of Pull Requests, 0.30% of Pushes, 1.29% of Stars and 0.65% of Issues. Growth dynamic is quite flat.

    3. https://redmonk.com/sogrady/2021/08/05/language-rankings-6-2...

    Latest RedMonk language rating, dated June 2021. Rust is on 19th place with 0 growth.

    **

    About jobs comparison.

    Indeed.com for California.

    Rust: 527 jobs (with some unrelated stuff mixed in)

    https://www.indeed.com/jobs?q=rust%20developer&l=California

    JavaScript: 16,792 jobs (31.8x)

    https://www.indeed.com/q-Javascript-l-California-jobs.html

    Java: 12,418 jobs (23.5x)

    https://www.indeed.com/q-Java-Developer-l-California-jobs.ht...

    C++: 4,172 jobs (7.8x)

    https://www.indeed.com/q-C++-Developer-l-California-jobs.htm...

    Indeed.com for New York.

    Rust: 85 jobs

    https://www.indeed.com/jobs?q=rust%20developer&l=New%20York%...

    Java: 4,815 jobs

    https://www.indeed.com/jobs?q=java%20developer&l=New%20York%...

    Javascript: 4,037 jobs

    https://www.indeed.com/jobs?q=javascript%20developer&l=New%2...

    C++: 1,126 jobs

    https://www.indeed.com/jobs?q=C%2B%2B%20Developer&l=New%20Yo...

    glassdoor.com without location set.

    Rust: 492 jobs

    https://www.glassdoor.com/Job/rust-developer-jobs-SRCH_KO0,1...

    Java: 45005 jobs (91x)

    https://www.glassdoor.com/Job/java-jobs-SRCH_KO0,4.htm

    Javasript: 30952 jobs (62.9x)

    https://www.glassdoor.com/Job/java-script-developer-jobs-SRC...

    C (with unrelated stuff): 9594 jobs (19.5x)

    https://www.glassdoor.com/Job/c-developer-jobs-SRCH_KO0,11.h...

    Go(lang): 1406 jobs (2.85x)

    https://www.glassdoor.com/Job/golang-developer-jobs-SRCH_KO0...

    Judge for yourself if a few hundred jobs in places like CA and NY count as "virtually no jobs".

    For comparison, in Ukraine (population 35-41 millions) there is 6 Rust jobs:

    https://jobs.dou.ua/vacancies/?search=Rust

    ... 190 C++ jobs:

    https://jobs.dou.ua/vacancies/?search=C%2B%2B

    ... and 676 Java jobs:

    https://jobs.dou.ua/vacancies/?search=Java

    ... listed on the largest Ukrainian programming site.

    **

    > The reality is that the language has a lot of friction, the ergonomics are bad, the syntax is heavy and some poor decision making has been made there for a systems-level programming language.

    Well, this is matter of taste, largely. But I have a few issues with Rust syntax too (IMHO):

    1. F*king single quotes. Eww, really?! IIRC, a tilde (~) character was used for lifetimes until some Europeans (?) complained that their keyboards have no tilde. I wonder, how they programmed in C++ all that time? For years, if I met online a piece of code that was highlighted as a comments mishmash I knew exactly in what language it was. Ugly as f*k.

    2. Closures using pipes (|). With no arguments they look like OR operator (||). Distracting.

    3. Using angle brackets for generics.

    4. Double colons (::) as "path qualifier" produce too much visual noise. Java likes long pathes too and uses dot (.) as separator just fine.

    5. What with this arrows (->) before return types? Seems unnecessary. Couldn't return types be purely positional as in Go?

    I don't use Rust so it's mostly "glimpses from the outside".

    Speaking of friction. This reminded me of a video by Jonathan Blow (creator of Braid and The Witness games and Jai programming language). The video is worth watching whole but piece about friction in gamedev starts approximately at 49:23.

    "Rant: Entity systems and the Rust borrow checker ... or something."

  • Nim

    Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).

  • https://en.wikipedia.org/wiki/Tiny_C_Compiler probably compiles as fast or faster than the Pascal you remember.

    You can even use it as a backend for the Nim (https://nim-lang.org/ ) compiler for subsecond builds of a modern language with various choices for automatic memory management.

  • ctl

    The C Template Library

  • While I agree the common pattern is to use void*/dynamic dispatch, this is not necessary. E.g., https://github.com/glouw/ctl/ or https://github.com/c-blake/bst show a couple ways to have generic code statically specialized in regular old C.

  • bst

    Well Factored, Non-Recursive, General & Generic BSTs in ANSI C (by c-blake)

  • While I agree the common pattern is to use void*/dynamic dispatch, this is not necessary. E.g., https://github.com/glouw/ctl/ or https://github.com/c-blake/bst show a couple ways to have generic code statically specialized in regular old C.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • ixy-languages

    A high-speed network driver written in C, Rust, C++, Go, C#, Java, OCaml, Haskell, Swift, Javascript, and Python

  • They are, specially when ARC marketing from Apple gets validated.

    https://github.com/ixy-languages/ixy-languages

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts