-
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.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
VisualFSharp
The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
-
tokio
A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
-
zig
General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Mostly absence of ecosystem critical features like GATs or TAIT (even as https://github.com/rust-lang/rust/pull/82898). Why are they ecosystem critical? Well, you could return `impl Trait` in your own traits, but that doesn't mean that every crate you use won't `Box` right away, meaning that you'll receive (small) allocations each time you want to use async in traits for example. And AFAIK, GATs are essential to streaming iterators (not as a separate crate, but rather as a drop-in feature to current iterator), and this feature would be awesome to have in Rust today. Nonetheless, it's awesome that we'll be able to use TAIT really soon (https://github.com/rust-lang/rust/issues/63063#issuecomment-796869380) and GATs have only one issue left until removal of `incomplete_features`!
Looks like this (maybe?) but it just got postponed: https://github.com/rust-lang/rfcs/pull/2593
For the common compilation, you should not have to wait. You should just have a background compiler telling you in a side window/terminal about the errors or failing tests. I use bacon for that purpose.
Have you tried using mold to speed up the linking phase?
Only thing I don't like so far is having tons of boilerplate to have my struct fields correctly typed between my actix rest facade and the underlying tonic grpc microservices (having copycat structs with same fields but some casted to ::uuid::Uuid instead of ::std::string::String, or some to::chrono::DateTime<::chrono::Utc> instead of ::std::option::Option<::prost_types::Timestamp>, and so on). That's not really Rust's fault at all, but I wish there was a better way (if ever there is that I'm unaware of, please point me out in the right direction).
Only thing I don't like so far is having tons of boilerplate to have my struct fields correctly typed between my actix rest facade and the underlying tonic grpc microservices (having copycat structs with same fields but some casted to ::uuid::Uuid instead of ::std::string::String, or some to::chrono::DateTime<::chrono::Utc> instead of ::std::option::Option<::prost_types::Timestamp>, and so on). That's not really Rust's fault at all, but I wish there was a better way (if ever there is that I'm unaware of, please point me out in the right direction).
And, while a spam links, here’s a link with more links: https://github.com/matklad/config/blob/master/links.adoc
I know this may be unnecessary, but you can try rune. From its book:
Because even std and big-name crates like smallvec have had memory bugs in the past. That's why people wave cargo-geiger and Miri over your code and distrust it unless you come prepared with thorough benchmarks to justify non-FFI unsafe use.
Because even std and big-name crates like smallvec have had memory bugs in the past. That's why people wave cargo-geiger and Miri over your code and distrust it unless you come prepared with thorough benchmarks to justify non-FFI unsafe use.
Fun little nit-pick that does not detract from your overall point: you can actually count graphemes with a regex and that's exactly what bstr does. :-)
Finally, soundness and UB muddying. There's no official documentation for whats actually unsound in Rust. ATM it's just whatever top-dog community members or "UB researchers" say is UB. The primary way I've personally learned about soundness in Rust was talking with the community, particularly on Discord for easier back & forth. Coming from this setting, things like the Nomicon aren't fleshed out, unnecessarily condescending, and don't actually explain why certain things are UB. Whereas academic papers like Stacked Borrows or related blogs which focus too much on its math end up with complex rulesets that are difficult to map to practical settings like concurrent algorithms or subtle scenarios not directly covered by the literature. Excluding online videos, it feels like the only two extremes are those that are available and have witnessed it to be detrimental for newer unsafe programmers trying to understand the rules.
(Coincidentally, Tokio is actually in an ironic situation given your statement - TL;DR Tokio avoiding heap allocations in its sync primitives by using intrusive linked lists makes it unsound & even with many looking at it and not being prioritized).
If you've found your optimum combination, deterring from it doesn't sound helpful. I've personally dipped from Rust after finding that its ecosystem/community often goes against the "Make costs explicit" mindset and noted in some points from the root comment. FWIW my new near-optimal combination is Zig
(Which is why, so far, I've stuck to writing async Rust stuff that I can then lock down tightly in a sandbox. For example, one project I've been meaning to finish v0.1 of is a cross between a learning project and a playground for potential contributions to miniserve (thus, actix-web based) which presents the specified folder as an image gallery, and it currently includes a launcher wrapper which goes above and beyond to configure Firejail to lock it down. No write permissions to anywhere but ~/.cache/thumbnails, a dynamically built Firejail profile that blacklists any unnecessary folder outside /home and, thus, not covered by --whitelist, uses --readonly on anything not hidden by whitelist/blacklist directives, future plans to customize the default system call whitelist, etc.)
Related posts
-
Rust: JSON Web Token -- some investigative studies on crate jwt-simple.
-
Considering moving from Rocket to Actix Web
-
What is the most popular and best-supported Rust web framework?
-
rustup が "error: linker `cc` not found" で失敗 - Alpine Linux 3.17 (Rust 1.66)
-
Fix rustup failed with "error: linker `cc` not found" on Alpine Linux 3.17 (Rust 1.66)