8 ms·
Cot: The Rust web framework for lazy developers
- JodieBenitez 2y agoI want a Rust web framework for perfectionists with deadlines. Or a Go web framework for perfectionists with deadlines. Basically a Django but with much lower CPU and RAM requirements and easier deployement. Is this the spirit of Cot ?
- milne-dev 2y agoOne thing I commonly see with projects like this targeting developers is they lack code examples on their homepage. Show me some code! I want to see right away what you’re doing differently than all the other libraries/frameworks.
- zamalek 2y agoOn the website: > Cot empowers you to build production-ready web apps in record time In github: > Cot is currently missing a lot of features and is not ready for anything even remotely close to production use.
- czbond 2y agoTo be fair, that was added on Jan 20. A whole lot could have changed in a month ;) https://github.com/cot-rs/cot/commit/19b1d897e0af20616a4afa49239878b73f7a850f https://github.com/cot-rs/cot/commit/19b1d897e0af20616a4afa4...
- xyst 2y agoToo late, it’s probably alteady used in prod at many F500 companies ;)
- the__alchemist 2y agoI am too lazy to deal with Async at this time.
- worik 2y agoI do not understand how async/await got introduced into a language with no garbage collector. The mountains Rust has to move, in invisible magical ways, to get the tokio runtime to work without a garbage collector is deeply disturbing (`pin` anyone?) I do not understand that if you are happy to have an invisible runtime run your programme why you do not want a garbage collector? But what gets me most is that asynchronous programming is not hard (harder than it should be in Rust due to the absence of non-blocking file handles....) and async/await makes the easy things a bit easier, whilst making some difficult things very very difficult. The trade offs are all wrong, it is very popular and widely used. Reminds me of Microsoft in 1997
- gwbas1c 2y ago> I do not understand that if you are happy to have an invisible runtime run your programme why you do not want a garbage collector? Because a garbage collector does not have an invisible runtime: The memory model is tightly coupled with the garbage collector. This is not zero-cost. All garbage collection comes with some cost; although for many kinds of programming it's so "worth it" that we don't need to consider alternatives. As someone who's spent most of my career using garbage collected languages; I both appreciate the advantages that come with the tradeoffs of garbage collection; and the tradeoffs that come with Rust. Rust has no runtime memory management overhead, and no complicated framework to ship. I still personally don't understand "why" async Rust is so hard. I struggled trying to use it, but at the time I was such a Rust novice that I "didn't know what I didn't know." Yes, async Rust would be easier if the language was garbage collected; but that defeats the point of Rust.
- gwbas1c 2y agoJust to follow up a bit: Rust excels at things like command-line utilities, or high-performance libraries (that don't require you to suck in a whole framework.) In these cases, the case for "async" isn't strong, because chances are there isn't enough concurrent IO to for async vs threaded to make a difference. If you're making a web application, chances are you're hosting it yourself. Thus, you don't have to "ship" your software and compel your users to load up whatever framework(s) you choose. IE, you can choose to use C# or Node.js, and decide that it's worth your time to spend more on hosting.
- shepmaster 2y agoDiscussed three days ago: - https://news.ycombinator.com/item?id=43089468 https://news.ycombinator.com/item?id=43089468
- ramon156 2y agoI'd describe this more as a batteries-included Axum, which is fine on it's own. Don't compare it with Django in this stage, because if I'm being honest, the examples aren't very snappy. I love the idea and I've toyed around with a Symfony/RoR framework in Rust, but other projects like loco.rs are already doing god's work, so I saw no reason to design another wheel.
- airstrike 2y agoThe README itself says it should feel familiar to Django, which it certainly does from a developer API perspective based on my cursory review of the guide I think Rails caters to a specific type of audience. Personally, I hate the idea of "scaffolding" my app. I'm fine just writing that plumbing code and seeing how all the pieces interact. And I never understand this "just accept the status quo" take. If we all did that, we'd still be nomads living in caves.
- iknowstuff 2y agoSo use axum and do whatever you want? Or better yet, hyper?
- airstrike 2y agoWhy can't people use the tool they want?
- iknowstuff 2y agoThat’s exactly the point I am making
- gwbas1c 2y ago> ORM integration I don't trust a web framework that's opinionated about how I use my database. It's very hard to get a web framework right, and it's very hard to get an ORM right. Getting both right is nearly impossible. In a situation like this, try to be the best web framework you can be, and then gravitate towards whatever ORM(s) becomes popular. Take a look at Express for Node.js. It's my favorite web framework because it can both do a lot, and it's very transparent. It's also not opinionated about things like the ORM. > web framework for lazy developers Rust is not a language for lazy developers. (Lazy developers won't fight with the borrow checker.) Instead, think more critically about why a Rust developer would need a web framework; and what they need out of it.
- WhyNotHugo 2y ago> Lazy developers won't fight with the borrow checker Once you get the hang of it, it's not a big effort any more. And the really lazy option is to just use an Arc.
- deleted 2y ago[deleted]
- pornel 2y agoRust already has several server frameworks that are relatively low-level network plumbing, and leave figuring out everything else to the user. If that's what you like, you can pick and choose from all the existing tools. The Rust's ecosystem is now missing its Rails or Django. This is an attempt to make something for those "lazy" devs who don't want to write their own cookie parsing middleware, and figure out how to get a database connection pool working with a request router.
- echelon 2y ago> Rust already has several server frameworks The incredible proliferation of Rust web frameworks should be an almost blinding beacon advertising how well-suited Rust is for web backend development. The biggest takeaway that anyone new to Rust or new to Rust-on-backend should have: Rust absolutely rocks for backend development. It's getting a tremendous amount of attention, people are trying a lot of things, and it's crystalizing as a major backend powerhouse. You can be just as performant in Rust as you can in Go, or frankly, Python, and the result is super typesafe, super ergonomic, and blindingly fast. Google recently published a paper that said as much. Rust already has several Python Flask equivalents (Actix/Axum), and it's waiting on its Rails/Django framework. For anyone scared of Rust or the borrow checker: due to the nature of HTTP services and request flow logic, you almost never bump into it when writing backend Rust. But if you ever need to write anything with multiple hand-rolled threads or worker pools, you can. Rust opens up a lot of interesting possibilities, such as rich in-memory databases. But you certainly don't have to use these powers either if you don't need them.
- pimeys 2y agoI really wish Rust projects would stop using the term "blazing speed". It is almost like a meme already. You can write slow code in Rust pretty easily, so speed is something extra. And I am a Rust developer... Seeing this term makes me cringe every time.
- iknowstuff 2y agoIt is an actual intentional meme, not “almost like” one.
- ost-ing 2y ago> And I am a Rust developer... Seeing this term makes me cringe every time. I write blazingly fast statically allocated Rust on my Arch Linux Thinkpad, btw.
- akkad33 2y agoIf not a joke can you explain what is statically allocated rust
- hyperbrainer 2y agoMaybe it's a joke about how painful it _can_ be, to use `static` or `static mut`?
- SahAssar 2y agoIt's blazingly fast and made with love.
- graypegg 2y agoDitto for "type safety". This always feels like reaching for onnnne more feature on these project hype sites. "I don't expose the public API as Any!" feels about on the level of "has documentation"... which they also pitch as a feature.
- RestartKernel 2y ago
- etchalon 2y agoI mean the name Reinhardt was RIGHT there.
- meltyness 2y agoThat's probably too obscure coming and going. Django users who would still consider an RIIR web framework, and those who are even aware of the guitar player.
- parhamn 2y agoI'm still surprised no one in the golang world has put together a Django type framework. While I like the bring-your-own unixy philosophy of this stuff in the go world; I still really loved django for quick decent applications.
- thijsvandien 2y agoMore like Rails (well, Laravel) than Django, and not by far as mature yet, but there’s Goravel.
- sgt 2y agoAnd that's why Django is still a perfect choice for your web app. You can always create additional services in Golang
- rob74 2y agoFrom the FAQ: > “Cot” is pronounced similarly to a Polish word “kot”, which means “cat”. Cats are known for their agility and flexibility, and also this is where the logo comes from. Also, if I might add, the author's last name (Maćkowski) seems to be related to the word used for "cat" in several Slavic languages (e.g. Croatian: https://hr.wikipedia.org/wiki/Doma%C4%87a_ma%C4%8Dka https://hr.wikipedia.org/wiki/Doma%C4%87a_ma%C4%8Dka), though apparently not in Polish...
- theptip 2y agoThis looks great. One of the glaring holes in the ecosystem is a good ORM like Django or ActiveRecord; Diesel is simply more barebones. This looks like it’s a candidate for capturing the ease of use that these offer.