I've been following Nim for a while now (including back when it was called Nimrod), but the big reason I've never dug much more into it is because it repeats the Billion Dollar Mistake[1] of allowing values (yes, not all values, but important ones) to be nil without explicitly using Option types.<p>It's disappointing that Nim has not (perhaps cannot, for backwards compatibility) learned the same lesson here that most other modern languages have, and used explicit nilability embedded in the type system.<p>And to preempt the argument that "you can't, for performance reasons!", you could do the same thing as Rust does and explicitly opt-in to having your code break if something is nil, via a call like `.unwrap()` which the compiler may optimize away.<p>[1] <a href="https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare/" rel="nofollow">https://www.infoq.com/presentations/Null-References-The-Bill...</a>
NIM really is a full stack language and ecosystem. It has a first class compiler to JavaScript (though, I admit, I don't know how tuneable it is, so I think it just compiles down to ES5, it'd be nice to do a differential build where it would compile down to ES5 and/or ES2015/ES2016 at the users discretion)<p>Only thing it needs now is a compile to CSS solution and you would never have to leave the language. Its a very thurough language in that regard.<p>It also needs a strong GUI framework for desktop and mobile apps, as well, but still, its very fully featured! My hunch in this area is that you could just compile to Electron/NativeScript/React Native as a relatively 'quick' solution to these problems.<p>I'm excited to see where this language goes. I'm pretty tempted to use it in production to replace Python for some things and may find it more expansive due to its flexibility of compile targets.<p>My only gripe (and its relatively small) is I don't like its compiler directive syntax using the `{.directive.}` style, its a little ugly and noisy to me, I'd prefer something like rust's `#[]` (I think this is actually how you use a Rust macro, but its a nice syntax regardless)<p>Not enough to stop me from thinking the language has some real upside and potential, though.
It's really nice to see that the Nim ecosystem is gaining more and more traction. A good web framework is indeed quite an important step towards making a language/ecosystem more appealing to a more general audience.<p>I've yet to encounter a small enough project with low risk where I could get away with trying something completely new, but I'm looking forward to trying Nim in the (hopefully very near) future.<p>One negative thing that stood out to me was that commit messages are sometimes really bad, like "break" or "let me try". I'm not trying to bash the author, but I feel it's somewhat unprofessional.
I guess all roads <i>do</i> lead to Prolog.<p>Why risk the naming confusion? Doing a search for "prologue language" yields millions of Prolog results on both DDG and Google.
I have played around with it a bit and I just love the way the routes and middlewares are defined in this.
I think the latest and greatest v0.4 will be released shortly, so anyone who is interested, do keep an eye out.<p>Nim always was a bit lacking in webdev but with Prologue and Basolato, the web is suddenly looking much more interesting.
Not the most relevant point, but those commit messages don't inspire confidence :/<p>E: I do like it, though. Don't want to bash on the project for no reason, just would prefer it if the maintainer tried to have better commit messages!
“Prologue is a powerful and extensible web framework written in Nim language.“<p>Powerful to me would be “able to create systems & applications in half the time compared to...” :)
Ohhh, written in Prolog at the National Institute for Mental Health <a href="https://en.wikipedia.org/wiki/Mrs._Frisby_and_the_Rats_of_NIMH" rel="nofollow">https://en.wikipedia.org/wiki/Mrs._Frisby_and_the_Rats_of_NI...</a>
It seems nothing groundbreaking. A router, some middleware and websockets.<p>Also, nim is a mess. Very poorly designed language. I tried it a couple of years ago and was repelled by its syntax and attempts to solve every single problem for you.