Hi all,
Before I go any futher: even if you are interested in this it's pretty
much useless in its current state. I hope to have it kind-of workable by
the end of the week, no promises though.
So. As part of my continued work on Serenity (
https://github.com/mrmonday/serenity ), a little pre-alpha web framework
I've been working on, I've begun work on a D to JavaScript source
translator.
Rather than poisoning the world with more C++, I wrote some basic
bindings to the dmd frontend in D, which means the whole thing can
almost be entirely written in D.
Current state:
* Can translate:
- basic flow control
- functions and their parameters
- strings and integral types
* Cannot translate:
- Loops
- Variables
- Classes
- Pretty much anything
* No way to inject javascript
* No support for javascript builtins
+ No validation for either of the above
* No checking for name conflicts with js keywords
* No windows support - there are some hacks to interface with more C++
than D allows out of the box, they're GCC specific, meaning linux/osx
/bsd only. Could work in mingw, with gdc, I haven't tried.
* No optimizer - this will eventually depend on having the closure
compiler installed
* One-to-one translation, not semantically equivalent to D
+ Making it semantically equivalent would slow resulting code
significantly
+ This will probably be resolved with a version() statement later on
+ This said, I will try and match as best I can without a slowdown
* Missing pre-defined version identifiers
* Some semantic error checking is done when creating object files
in dmd, this checking is not done
* A lot of it's rather hacky and needs cleaning up
* I have no idea how it's licensed, I'll need to discuss this with
Walter
* Outputs to stdout currently, doesn't handle multiple files
You can find the source code at:
https://github.com/mrmonday/dmd
In the js branch. Again, it's not worth looking at yet, unless you're
curious about the C++ bindings. Note that they don't bind the entirety
of the dmd frontend, just what I've needed so far and a bit more.
There was something else I was going to mention, I forget what though.
--
Robert
http://octarineparrot.com/