Rust Is Portable

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

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

    Generate Bazel BUILD from Cargo dependencies!

  • pyroscope-rs

    Pyroscope Profiler for Rust. Profile your Rust applications.

  • I feel some of the OP points. I was working on a profiling agent lately, and one of the issues was running it on multiple platforms (just the four big ones linux/mac-x86/arm) on FFI (because it'll be run directly from python/ruby/etc...) and preferably having the thing just work without having to install or configure any dependencies.

    Like OP I hit two walls: libunwind, and linking. For libunwind, I ended up downloading/compiling manually; and for linking there is auditwheel[1]. Although it is a Python tool, I did actually end up using for Ruby (by creating a "fake python package", and then copying the linked dependencies).

    It was at that time that I learned about linking for dynamic libraries, patchelf and there is really no single/established tool to do this. I thought there should be something but most people seem to install the dependencies with any certain software. I also found, the hard way, that you still have to deal with gcc/c when working with Rust. It does isolate you from many stuff, but for many things there is no work around.

    There is a performance hit to this strategy, however, since shared dynamic libraries will be used by all the running programs that need them; whereas my solution will run its own instance. It made me wonder if wasm will come up with something similar without affecting portability.

    Finally, the project is open source and you can browse the code here: https://github.com/pyroscope-io/pyroscope-rs

    [1]: https://github.com/pypa/auditwheel

  • 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
  • code_templates

    Discontinued Collection of templates (mostly bazelized) for fast and easy start of projects.

  • Did you eventually get a ref to an example Bazel build for Rust in that thread? (Writing here because you'll probably not look at the other thread again.)

    I see the linked resources are to docs only.

    If it's any help, here's a bazelized Rust demo implementation:

    https://github.com/mihaigalos/code_templates/tree/master/rus...

  • rules_closure

    Closure rules for Bazel

  • Hi I created Actually Portable Executable. I also created Bazel's Closure Compiler tooling. https://github.com/bazelbuild/rules_closure

  • derasterize

    textmode supremacy

  • sixel-tmux

    sixel-tmux is a fork of tmux, with just one goal: having the most reliable support of graphics

  • dazel

    Run Google's bazel inside a docker container via a seamless proxy.

  • 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
  • bazel-buildfarm

    Bazel remote caching and execution service

  • Not sure what to say concerning buildfarm's remote execution.

    Reading an issue I've opened 1y ago [1], seems the backend requires the client to have a specific gcc version.

    That's a strong limitation imho.

    [1] https://github.com/bazelbuild/bazel-buildfarm/issues/545

  • cosmopolitan

    build-once run-anywhere c library

  • While I love this sort of portability and in particular how it just makes Rust even more useful to me.

    The library this is built on does have a bit of a weakness with respect to GUI software https://github.com/jart/cosmopolitan/issues/35 if this can be fixed this will be an amazing tool for building simple cross platform utilities and tools.

  • sccache

    Sccache is a ccache-like tool. It is used as a compiler wrapper and avoids compilation when possible. Sccache has the capability to utilize caching in remote storage environments, including various cloud storage options, or alternatively, in local storage.

  • There's also mozilla's sccache, which integrates with cargo (by wrapping rustc) to cache artifacts. A local cache is 2 lines of config in your .cargo/config.toml, and if you want to you can have shared caches in Redis or S3/Azure/GCP.

    Not nearly as flexible or powerful as Bazel, but also vastly simpler to setup if all you want is caching.

    https://github.com/mozilla/sccache

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