Shouldn't have happened: A vulnerability postmortem

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

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. ring

    An experiment.

    Note that the readme is outdated. With the upcoming 0.17 release, which is in the making for almost a year already, you can use link multiple versions of ring in one executable: https://github.com/briansmith/ring/issues/1268

    Similarly, while the policy is still that ring only supports the newest rust compiler version, due to the fact that there has been no update for months already, you can use it with older compiler versions.

    Last, the author used to yank old versions of its library, which caused tons of downstream pains (basically, if you are a library and are using ring, I recommend you have a Cargo.lock checked into git). This yanking has stopped since 3 years already, too.

    So a great deal of things has improved, although I'd say only the first bullet point is a permanent improvement, while the second two might be regressed upon. idk.

  2. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  3. sudo

    Utility to execute a command as another user (by sudo-project)

  4. tiny-rust-executable

    Using Rust to make a 137-byte static AMD64 Linux executable

  5. go-licenses

    A lightweight tool to report on the licenses used by a Go package and its dependencies. Highlight! Versioned external URL to licenses can be found at the same time.

    > I don't think the exact URL is the problem, it is the fact that it is so easy to include dependencies from external repository that is the problem. In Rust every non-trivial library pulls in 10s or even 100s of dependencies.

    But it's also quite a lot easier to audit those dependencies, even automatically (incidentally, GitHub provides dependency scanning for free for many languages).

    > Then there is the issue of licencing - how to verify that I am not using some library in violation of its licence and what happens if the licence changes down the road and I don't notice it because I am implicitly using 500 dependencies due to my 3 main libraries?

    This is also an automated task. For example, https://github.com/google/go-licenses

    > go-licenses analyzes the dependency tree of a Go package/binary. It can output a report on the libraries used and under what license they can be used. It can also collect all of the license documents, copyright notices and source code into a directory in order to comply with license terms on redistribution.

    > Rust and Go have solved memory safety compared to C and C++ but have introduced dependency hell of yet unknown proportions.

    I mean, it's been a decade and things seem to be going pretty well. Also, I don't think anyone who has actually used these languages seriously has ever characterized their dependency management as "dependency hell"; however, lots of people talk about the "dependency hell" of managing C and C++ dependencies.

    > Python and other dynamically typed languages are in a league of their own in that on top of the dependency hell they also do not provide compiler checks that would allow user to see the problem before the exact conditions occur at runtime.

    I won't argue with you there.

  6. trophy-case

    🏆 Collection of bugs uncovered by fuzzing Rust code

    You need to read the list more carefully.

    • The list is not for Rust itself, but every program every written in Rust. By itself it doesn't mean much, unless you compare prevalence of issues among Rust programs to prevalence of issues among C programs. For some context, see how memory unsafety is rare compared to assertions and uncaught exceptions: https://github.com/rust-fuzz/trophy-case

    • Many of the memory-unsafety issues are on the C FFI boundary, which is unsafe due to C lacking expressiveness about memory ownership of its APIs (i.e. it shows how dangerous is to program where you don't have the Rust borrow checker checking your code).

    • Many bugs about missing Send/Sync or evil trait implementations are about type-system loopholes that prevented compiler from catching code that was already buggy. C doesn't have these guarantees in the first place, so lack of them is not a CVE for C, but just how C is designed.

  7. JDK

    JDK main-line development https://openjdk.org/projects/jdk

  8. automaxprocs

    Automatically set GOMAXPROCS to match Linux container CPU quota.

    AFAIK, it hasn't changed, this exact situation with cgroups is still something I have to tell fellow developers about. Some of them have started using [automaxprocs] to automatically detect and set.

    [automaxprocs]: https://github.com/uber-go/automaxprocs

  9. rfcs

    RFCs for changes to Rust

    Preventing timing leaks requires unsafe code because the Rust compiler lacks support for constant-runtime code [0]. Adding that support is one step in making it "good enough to use for everything".

    What are several more of the "plenty of reasons to occasionally use unsafe code"? I can think of only one: interfacing with hardware or unsafe OSes that control access to the hardware.

    [0] https://github.com/rust-lang/rfcs/issues/2533

  10. CppCoreGuidelines

    The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++

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

  • Project Loom preview ships in JDK 19

    5 projects | news.ycombinator.com | 2 May 2022
  • Hey Rustaceans! Got an easy question? Ask here (43/2021)!

    14 projects | /r/rust | 25 Oct 2021
  • Building static Rust binaries for Linux

    6 projects | dev.to | 17 Oct 2021
  • The limits of Rust, or why you should probably not follow Amazon and Cloudflare

    1 project | news.ycombinator.com | 13 May 2026
  • RFC 9849. TLS Encrypted Client Hello

    1 project | news.ycombinator.com | 4 Mar 2026

Did you know that Assembly is
the 28th most popular programming language
based on number of references?