Sorry if I sent twice, it is so easy to hit the wrong button on things.
On Wednesday, 29 February 2012 at 17:32:42 UTC, Andrei Alexandrescu wrote:
So the idea is to make an entire subset of D convertible to Javascript?
Yeah, and I'm pretty much there - I just built a little sort program with std.algorithm to it, which is pretty cool.
What use cases do you have in mind?
A number of things: 1) The obvious one is writing the client side portions of a web app in D, as well as the server side portions. This gives all kinds of benefits: well, just think how much better D is than all other languages for both little and big things. I really like having static checking of names and types. D syntax is amazing. (Javascript really isn't bad here; add a foreach macro and it isn't bad at all. But D is still better.) Sane libraries. You could use something like an include macro in Javascript, or those insane client side add script tag include functions, but here, you can just use D's superior import system. You get namespacing, stripping what you don't use; all the advantages D brings to the table for any app. Well, I'm sure I don't have to sell the D language to you! 2) Using the same language for client and server means you can reuse code. Library functions, field validation, building parts of the site. No duplication of effort for the two locations. (Now this is already kinda small, since calling D functions from Javascript isn't hard thanks to ajax - my web.d makes it stupid easy by automatically wrapping functions. But, that does require a trip to the server, so it isn't always suitable.) 3) You don't need to write javascript at all! Imagine you want to write an iPad app. Apple wants you do fork over all kinds of dough and play ball by their rules. I expect we'll see a D compiler that can output code for that platform soon, but there's another option that avoids all this right now: a web app (which you can make full screen on the home page btw). But, writing web apps means javascript. Gross. No more! Just write the whole thing as D, then convert it to Javascript and offer that to the ipad users. I've started doing things like porting std.file to use browser local storage, so you can pretend to use files and have it save there too. 4) This is an insane idea, but one that came to mind. I'm testing this by piping the generated JS into dmdscript. dmd runs insanely fast when compiling this code. Phobos is kinda slow to compile, but you don't have to use it here. Write D1 style code and dmd is blink of an eye. dmdscript is reasonably fast too. Suppose you're writing an app and you want a scripting extension. Embed dmdscript, boom you can use javascript. (I really want to revive a dmdscript D2 port to make this even easier, but it isn't hard right now either.) What if you want to script in D? If you're GPL... embed dmd front end too. Make D output JS, which is interpreted by D, calling D apis.... Pretty insane, but you could script your app in D without doing shared libraries or anything like that! Compared to cases 1-3 though, this is silly. Just a thought that came to mind. The web app use case is strong though. I think I'll actually use this thing.
