@bf55f1f1 "I would like to see more web frameworks that are synchronous by default and allow you to opt into async as needed."
I don't think that this is possible without maintaining two separate codebases/APIs like reqwest does. reqwest is just a client. But maintaining two APIs in parallel for a whole framework?
@bf55f1f1 One could create a new web framework that is synchronous which offers trivial parallelization (launch multiple instances). But how do you share state then without a database? A required database increases the complexity.
And what about performance? Such a framework would not have the same performance like Axum. Who would use it then?
@bf1b0fad@04022626 The standard library is anemic:
Maybe just check out the situation with cryptographic functionality like random number generators in the standard libraries of other languages. The standard library should only contain what will not change (because of backwards compatibility).
Often, cryptographic methods can't be proven to be safe, they are only safe until someone proves otherwise or computer power gets exponentially higher. This makes them change every couple of years.
@bf1b0fad@04022626 Async is hard:
We had such a discussion in the last days after the (technically inaccurate) post "Async Rust is a bad programming language". See community responses :)
Reducing Rust to IoT, Security and Webassembly is also very ignorant. Rust is a general purpose language that you can use as low level as you want.
Here is a technically better article, but this time against Go:
https://fasterthanli.me/articles/lies-we-tell-ourselves-to-keep-using-golang
@bf1b0fad@04022626 Rust is still beta:
Calling the whole language "beta" because one feature is missing is kind of ignorant?
There is a temporary solution for async traits in the ecosystem (the crate async_trait). The better, long term solution is being worked on! It is in the stabilization phase.
@bf1b0fad@04022626 The standard library is anemic:
Maybe just check out the situation with cryptographic functionality like random number generators in the standard libraries of other languages. The standard library should only contain what will not change (because of backwards compatibility).
Often, cryptographic methods can't be proven to be safe, they are only safe until someone proves otherwise or computer power gets exponentially higher. This makes them change every couple of years.
@bf1b0fad@04022626 Rust projects decay: Rust has backwards compatibility. If you want to upgrade your project after 3 years, then just do so? Your code will also compile with the latest Rust version. No one forces you to use the latest additional features of that version.
Also: It is just a design decision to release smaller updates more frequently vs bigger updates less frequently. I don't see how this would affect any one.
@bf1b0fad@04022626 Rust is still beta:
Calling the whole language "beta" because one feature is missing is kind of ignorant?
There is a temporary solution for async traits in the ecosystem (the crate async_trait). The better, long term solution is being worked on! It is in the stabilization phase.
@bf1b0fad@04022626 Pretty bad subjective article with huge bias towards Go.
Rust is overhyped: Sure, that's why it is in the Linux kernel. Even Microsoft is jumping into the "hype?" and rewriting in Rust. His favorite language is Go from Google? Even Google itself is a big accelerator of Rust. I did teach Rust using the Rust course of the Android team in Google…
@bf1b0fad@04022626 Rust projects decay: Rust has backwards compatibility. If you want to upgrade your project after 3 years, then just do so? Your code will also compile with the latest Rust version. No one forces you to use the latest additional features of that version.
Also: It is just a design decision to release smaller updates more frequently vs bigger updates less frequently. I don't see how this would affect any one.
@bf1b0fad@04022626 Pretty bad subjective article with huge bias towards Go.
Rust is overhyped: Sure, that's why it is in the Linux kernel. Even Microsoft is jumping into the "hype?" and rewriting in Rust. His favorite language is Go from Google? Even Google itself is a big accelerator of Rust. I did teach Rust using the Rust course of the Android team in Google…
@3c11e8f3 Nice!
Now that you have set up your environment, don't try to just start hacking! Start with the Rust book before coding:
https://doc.rust-lang.org/stable/book/
There are many concepts that are new in Rust and should be learned first. Finish the first theoretical chapters in the book and then start with Rustlings and maybe a pet projects.
https://github.com/rust-lang/rustlings
Have fun! I would love to answer any question on your learning journey :D
@4c9dfcc3 It is funny for me to call Rust a complex language after tagging Haskell and Scala.
My conclusion from my last blog post about teaching Rust in 5 days at my university is that Rust is not complicated if students with limited experience in Python can learn it in 5 days.
Complicated and complex are different adjectives, but I can expand my conclusion to "Rust not being complex" too. It is a language with new concepts that require people to first learn them before starting to hack.
@4c9dfcc3 But I think that we both agree that ADTs should be adopted by more languages. It is a concept that should be decoupled from specific languages.
@4c9dfcc3 It is funny for me to call Rust a complex language after tagging Haskell and Scala.
My conclusion from my last blog post about teaching Rust in 5 days at my university is that Rust is not complicated if students with limited experience in Python can learn it in 5 days.
Complicated and complex are different adjectives, but I can expand my conclusion to "Rust not being complex" too. It is a language with new concepts that require people to first learn them before starting to hack.
@4c9dfcc3 I would love to correct anyone in the Rust community who claims that Rust invented algebraic data types. I didn't see someone say that yet.
Of course, it is a feature. And people will say "Rust has X". They don't have to say "Rust has X where X was first invented by Y and implemented by Z1, Z2, …"
It is worth noting that Rust is not only targeted at systems programming. It is a general purpose language that you can get as low level with it as you want.
@663e5b60 Just in case you are interested: Helix is worth a try! Very good experience out of the box! Essential functionality like LSP is builtin and therefore very good integrated. No braking plugins like in Neovim (I come from Neovim myself)
@bf55f1f1 "I would like to see more web frameworks that are synchronous by default and allow you to opt into async as needed."
I don't think that this is possible without maintaining two separate codebases/APIs like reqwest does. reqwest is just a client. But maintaining two APIs in parallel for a whole framework?
@6b8b6177 I would personally recommend:
- Learn Rust using the official book
- Optional but recommended: Rustlings for small exercises
- Start a pet project after finishing some chapters of the book (but continue reading in parallel)
- Learn Axum
- Learn SQLx to use it with PostgreSQL
- Profit!
Everything else can be learned when required.
@cec7b4fa Returning the last expression is something that you want in closures (anonymous functions). This makes the syntax much more consistent.
Returning will never happen by accident because the return type must be specified. The compiler will tell you if something is returned that you don't want to return.
@cec7b4fa To be honest I don't like this behavior in Julia because you normally don't specify the return type in Julia. Therefore, it can happen that you return something by mistake.
If you want to return nothing, you have to literally add "return nothing" to the end of the body because semicolons are also not common in Julia.
But with Rust, there are no surprises ;)
@cec7b4fa Returning the last expression is something that you want in closures (anonymous functions). This makes the syntax much more consistent.
Returning will never happen by accident because the return type must be specified. The compiler will tell you if something is returned that you don't want to return.
@1cc11b6f@d705616b Yes, lsd has the --tree flag.
What I like about lsd more are the defaults (icons for example). But you can also customize it and even use a config file for it!
Just install it with cargo and compare :D
Now that the #Serde issue is resolved by removing the binary, I want to thank @6fbf5670 again, not only for reporting the issue, but also for all his efforts in the #Rust and #Fedora communities ❤
For others: Please don't call things like this "drama" again. This is pushing back against mistakes that would affect the whole community. I love how much the community cares and that such problems are not ignored 🥰
We are not here to only get things done, we are building a future ❤
#RustLang
@cec7b4fa I plan on giving this course online for free though :D
It is not clear to me when this will be possible, but not before November. Stay tuned :blobcatheart:
Until then, I would love to answer any questions on your learning journey :ablobcatheart:
@1cc11b6f I would be interested in contributing, but I can't promise that I get time to do so :/
Nextcloud is slow and resource heavy because of PHP. #RIIR
@ca90de4b@e92494dc I did consider Bulma before starting with Tailwind. Bulma did seam to me like Bootstrap and I didn't want something like it. Bootstrap is very limiting.
Tera is awesome! I use it for my static websites (since Zola uses it). But for my own binaries, I much prefer Askama for its compilation checks.
Notes by Mo :ferris: :tux: | export