3 ms·
I understand that is's a very hard problem to solve, but there has to be something better than the Status Quo. A couple of months ago, I wanted to write a simp
by mswift42 12y ago
I understand that is's a very hard problem to solve, but there has to be something better than the Status Quo.
A couple of months ago, I wanted to write a simple Web App using Yesod. The only way to get a working installation of yesod and all the dependencies was by using the sandbox thing. This however meant, that after every code change, you had to wait ~10 secs for the project to rebuild. That doesn't sound like much, but it gets annoying very quickly.
- tome 12y agoPerhaps someone more knowledgeable will chime in, but I don't think there should be any increase in incremental build times just because you're using a sandbox.
- dllthomas 12y agoThat sounds correct.
- carterschonwald 12y agoYesod is infamous for being breakage prone. In fact the author now only supports users installing yesod via stackage rather than Hackage, because stackage forces globally coherent fixed versions for every package in stackage. (Basically that every package should be build able together). If you're doing application dev (rather than lib dev), stackage will help. Or use snap, I've never had build hell with snap. But if yesod works for you, awesome! :-)
- sseveran 12y agoYeah. I will probably never touch yesod again after what it put me through.
- tel 12y agoYesod is a very challenging project to build. I'm not a user of it so I can't speak from personal experience, but the common understanding seems to be that the particular constellation of Yesod packages together hover very close to unbuildable. They are also all together quite large and rely on a lot of compilation-time tricks (template haskell) which can increase build time. I think it's unfortunate that Yesod gets billed as the premiere web framework for Haskell because it does require some extra work to get compiled. In fact, the entire Stackage ("stable hackage") project, I believe, was originally developed in order to get some tooling which would allow Yesod to be consistently built. If you think you're going to be primarily using Yesod then I suggest you switch to Stackage [0]. Stackage prevents install issues by building the entire Stackage group together periodically to ensure that there are no build problems. The downside is that Stackage is partial and slow to track Hackage. You may want to try Happstack: http://happstack.com/page/view-page-slug/9/happstack-lite-tutorial http://happstack.com/page/view-page-slug/9/happstack-lite-tu... [0] http://www.haskell.org/haskellwiki/Stackage http://www.haskell.org/haskellwiki/Stackage
- dllthomas 12y ago"which can increase build time." Yeah, that's the biggest hit to my productivity, when working on a moderate sized Yesod project. Otherwise, the experience has been great.
- tel 12y agoIt should only be a significant problem when you edit modules with TH. I don't know how often that occurs within a Yesod project. I imagine you can accelerate builds by isolating the TH modules.
- dllthomas 12y agoWell, a good portion of meaningful additions touch at least one of config/routes and config/models, which means rebuilding a whole bunch. There probably is some way to better isolate things, but I'm not immediately sure what it looks like while still getting the DRY and static checks (which are certainly valuable!).
- sjy 12y agoThat's not a sandbox problem, that's the cost of developing in an AOT-compiled language. Sandboxes do require you to recompile Yesod and all its dependencies (> 10 minutes) every time you start a new project though, which is pretty annoying.
- MichaelGG 12y agoThe C# compiler is insanely fast, so it's not for all AOT-compiled languages, just ones that require the compiler to do a lot of work.
- dllthomas 12y agoI agree that it's not a sandbox problem, but it's not inherent to "an AOT-compiled language" - builds of my yesod projects take disproportionately long compared to my other development, almost all of which takes place in compiled languages.
- tome 12y ago[AOT = Ahead Of Time, for anyone, like me, who didn't already know]