As someone that have worked in software for 30 years, and deplying complicated software, shared libraries is a misstake. You think you get the benefit of size and easy security upgrades, but due to deployment hell you end up using docker and now your deployment actually added a whole OS in size and you need to do security upgrades for this OS instead of just your application. I use rust for some software now, and I build it with musl, and is struck by how small things get in relation to the regular deployment, and it feels like magic that I no longer get glibc incompatibility issues.
Ok, I then have some business proposals…
Mindblowing features are basically, by definition, a result of bad language design. They blow your mind, since they are totally unexpected behaviours. They may still be cool, but they are unexpected and hence unintuitive.
A language that are full of these is Perl. And one simple one is that you can take the string “AAAAA” and use addition on that, like “AAAAA”++ and you will get the result “AAAAB”. Cool you may think, but is it really? Addition is normally used to increase the value of a number, that is a completely different operation than modifying a String. The string “AAAAA” cannot be said to be greater or less than “AAAAB”, besides the very special case when we order it. But in general the name “John” is not considered to be higher/lower than “Mark”, they are just different. So, even if it is cool to manipulate strings by using addition/subtraction, it is still bad language design and very unintuitive. Also, since perl is so loosely typed, it may also cause very unexpected bugs.
Which is kind of surprising, since it basically just is a bunch of “I’m cannot understand why … is needed”, “I cannot learn…” and “I think that is ugly”. And since the OP is coming from TypeScript, and how the OPs understanding of programming, it is clear it is a junior web developer trying rust and failing. Nothing to see here… well, the OP clearly have some kind of grandios ego, thinking that the OPs inability to learn something, must be because it is bad (I mean, there is clearly no other possiblities)… but not even that is worth responding to. And don’t read this wrong, there is plenty to complain about with Rust, however, nothing of that is in OP which is basically just as insightful as a baby crying.
Ok, so we use different search engine so you didn’t find this particular hit. But, do you really claim that learning material is an issue here. And about my attitude, yes, I was a bit cranky. In general, you can ask any stupid question, heck I ask stupid questions all the time and they will be answered kindly. The rust community knows that lifetimes and stuff like that is complicated.
However, I’m quite fed up with the attitude that it is someone elses obligation to spoon feed you with knowledge that exists right under the nose… and that is a very common attitude amongst the “For rust to succeed…” evangelists.
There are lots of guides, tutorials and documentation. The responsibility is no longer on someone else, it is up to the individuals to actually read any of them. And to be honest, if you are unable to use them to learn rust, maybe your c++ skills isn’t that impressive either.
https://bpbonline.com/products/rust-for-c-programmers?variant=42560853639368 is one if found using a tool called search engine…
I wanted to use the debug fmt functions, to allow for pretty debug also.
For Boomers, cars was the latest tech that everyone was fiddling with. This caused even the boomer that wasn’t very interested , to know quite a lot. For later generations, car became more of a means of transportation, and the knowledge of cars was only for specialists. For gen X, computers were the high tech thing, everyone was fiddling with. Most gen x can setup a printer if they have to. For later generations, computers are just tools, and the knowledge is only for specialists.
fs::exists() was a nice little improvement that I didn’t know about until I read this announcement.
Producing products that the users wants, and that solves tje users real problems. And not trying to make products as addictive as possible, to harvest as much user data as possible to sell.
It is making the tracking protection part of containers obsolete, this is basically that functionality but built in and default. The containers still let you have multiple cookie jars for the same site, so they are still useful if you have multiple accounts on a site.
Container tabs are still useful, as they let you use multiple Cookie jars for the same site. So, it is very easy to have multiple accounts on s site.
https://doc.rust-lang.org/book/ this is a great starting point. Then when you got the basics, and fiddled around a bit, then you can start looking for more specialized books (like Rust Atomics and Locks https://marabos.nl/atomics/ )
Comment about image
Well… it is true that it doen’t have all these crates like Url included in the rust standard library, and hence it is not official. On the other hand Url was created by Mozilla to be used in Firefox, hence it is a quite competent crate that is very well maintained. And my guess is that the http crate may have the same kind of origins… but I’m not entirely sure about that.
And even Java that includes quite a lot, still didn’t get a good Http library until very recent, until then you had to rely on some obscure library created by the unknown organization Apache… so…
As a developer you always have to think about what libraries you use, and if you trust them… that goes for pretty much any language.
Well, Perl is great for small scripts that works on large texts, that you process with regex. I still use Perl from time to time, for that kind of scripts. Also commandline, instead of awk/sed…
I used to use IntelliJ Rust as my primary rust IDE, but when they switched to Rust Rover I stopped using it. Not sure why actually, possibly since I used Java with IntelliJ it was already my go to IDE, so using it for Rust was natural. I also guess, that I had nvim with rust-analyzer working, so that was available at my finger tips already. So, I might have switched over anyway… who knows.
Anyway, it is good to see more options available, and I hope it is getting so good that it is worth the money.
One breaking change, that they doesn’t list as breaking (I guess since I assume the old was always broken) is: Dynamic registration of LSP capabilities. An implication of this change is that checking a client’s server_capabilities is no longer a sufficient indicator to see if a server supports a feature. Instead use client.supports_method(<method>). It considers both the dynamic capabilities and static server_capabilities.
So if you had code like
if client.server_capabilities.inlayHintProvider then
...
end
you now should use
if client.supports_method("inlayHintProvider") then
...
end
So, not really a breaking change I guess, but something you should change any way.
You are confusing Google and Internet… they are very different things.
That requires a complete picture and all possible use cases from the start. Initially when a language is new and hardly used there are much to benefit from flexibility and trying new concepts. Then as the language matures, a more formal process is needed to ensure stability. There is a reason these discussions comes now, since rust is in a very stable phase.