[pre-alpha] D to JavaScript source translator
    Robert Clipsham 
    robert at octarineparrot.com
       
    Wed Jun 29 13:57:06 PDT 2011
    
    
  
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/
    
    
More information about the Digitalmars-d-announce
mailing list