3 ms·
Rust is usable for web development if you consider vanilla Python Flask without extensions to be the pinnacle of all web frameworks. The abstraction level in no
by ampdepolymerase 6y ago
Rust is usable for web development if you consider vanilla Python Flask without extensions to be the pinnacle of all web frameworks. The abstraction level in non-nightly Rust frameworks is shockingly bad. Standard features like diffing and generating migrations that are found in mature ecosystems like Django/Laravel/ASP.NET/Prisma are non-existent in Diesel. There is no maintained, out-of-the-box authentication solution. The only framework that try to tackle some of these problems is Rocket and it has been perpetually in nightly despite stable Rust compatibility having been achieved last year. (Companies using Rust need to donate and sponsor more)
- sylvain_kerkour 6y agoHey, I updated to specify that I'm specifically talking about JSON APIs.
- ampdepolymerase 6y agoI agree,Rust development for microservices and JSON APIs is quite doable. Your new book looks quite exciting. Is there a preview somewhere?
- sylvain_kerkour 6y agoThank you! No preview is available today (I don't have enough bandwidth available) but it's on my todo list. Please feel free to subscribe to the newsletter where I will announce when it's available :) https://kerkour.com/subscribe https://kerkour.com/subscribe
- ampdepolymerase 6y agoSubscribed! Bloom is really cool, what's the current status on it?
- z0mbie42 6y agoThanks again! I'm working on it 2 days a week beside writing the book. The next major milestone is receiving emails in the inbox, but I think it will take 2-4 months to have it working.
- BiteCode_dev 6y agoEven then DRF and FastAPI offer an order of magnitude more features for free, and battle tested.
- agumonkey 6y agohow many years it took since flask to reach fastapi ?
- BiteCode_dev 6y agoDjango (2005) to DRF (2011) is a better take as the products a linked and packed with features, many versions in the making.
- ZeroCool2u 6y agoI've been looking at Rust API frameworks and the question I keep finding myself asking is, what is the FastAPI equivalent in Rust?
- steveklabnik 6y agoI don't know a ton about FastAPI, but it seems like it's based on OpenAPI. I posted below about Dropshot, which the company I work for wrote, is using and open sourced. https://crates.io/crates/dropshot https://crates.io/crates/dropshot It may or may not interest you!
- ZeroCool2u 6y agoYeah, this does look kind of similar, I'll take a look. Thank you! I'd say the most powerful part of FastAPI is that it integrates everything in a relatively opinionated way, that you would spend a lot of time setting up Flask plugins/extensions for to get an equivalent feature set. I'm not sure I'd say it's based on OpenAPI(?), but it does automatically generate OpenAPI based docs from your Python code. There's no intermediate step, the '.../docs' route just exists at runtime.
- lumost 6y agoAs of right now, I think rust is appealing to the teams who need all of its features at the same time. Java/Go will deliver similar perf for most web apps, and have more mature tooling, python will be better for ML, C++ for systems programming, JS/electron will be better for the frontend and java/scala for distributed processing. Rust has the innards to do all of these things at the same time with one shared code base (albeit somewhat poorly today). It's the only one of the above languages that hasn't made some decision which makes a use case impossible such as running on a VM, no function serialization, no direct hardware bindings etc.
- mamcx 6y agoWhat you say is totally true. I still love using Rust for web and bet my projects on it, but is certainly the fact you will need to reimplement certain things. In the other hand, having less features have help me in re-factor not just the code but how I do the whole thing, making more focused choices to be able to solve problems with less complexity. Eventually the design you get (partially because the lack of support for things on Rust) is much better overall. To make things more concrete: I use nearly 0 JS and no "single page apps", use tailwind and have reduced, a lot!, CSS designs issues, have more control in how mutate things, have less API surface, make better use of what PostgreSQL have, etc.
- Klonoar 6y agoRe: the out-of-the-box auth solution, I actually open sourced this based on another thread similar to this from a few weeks ago: https://github.com/secretkeysio/jelly-actix-web-starter https://github.com/secretkeysio/jelly-actix-web-starter I built it because I was _also_ frustrated with the same level of abstraction you mention. Granted, I do agree that that Django/etc are more feature-rich, and that's definitely not getting replaced overnight.
- subsection1h 6y agoMy team recently evaluated 37 database schema migration tools and we ended up choosing Dbmate, which is written in Go but can be used with any framework or language, including Rust. https://github.com/amacneil/dbmate https://github.com/amacneil/dbmate
- bromanko 6y agoWould love to see the comparison analysis. Are you planning to publish it?
- alexfromapex 6y agoIt is a relatively new language but I bet will have more maturity within 5 years and will be very popular by then