www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Re: D, so it happend...

Baas Wrote:

 In the past 10 motnhs, I completly rewrote the D Compiler in C#!
 
 Motivations:
 - LOVE THE D LANGUAGE!!
 - To be fully able to develop in a VS.NET like environment using D, with no
limmitations.
 
 Cons:
 - Requires Windows platforms (XP and above).
 - Requires P4+ CPU.
 - 2-4 times slower compiler (still need to be optimized).
 - No "_Identifier" allowed! (I hate that _ s##t!)
 - Removed "auto" types.
 - Removed some data types.
 - No documentation available :(
 
 Pros:
 - Faster overall application execution speed.
    - Tested against existing benchmarks.
 - Implemented full debug functionality. 
    - No more creapy asm stuff.
    - View/Modify ALL datatypes without any limitations or hassles.
 - Complete 128 bit ints/reals
    - Added Custom 256 bit ints/reals. (...who's gonna use it anyway?)
 - Dynamic keywords:
    - For example:
       - Can rename "else if" to ElseIf etc.
       - Can rename "{}" code block indicators to Begin/End etc.
    - Remain compatible with any older/newer "keyword set".
    - Can basically change keywords to adopt your style.
 - Includes "event handler" functionality
 - Includes dynamic binary modules (.ddbm)
    - Can automaticaly optimize itself on a target environment.
       - Can restructure its own code pattern (32/64/Multi-CPU)
       - Can physically relocate itself.
       - Can defrag itself in memory/disk.
    - Magnitudes faster then normal DLLs.
    - Can bind/execute across networks.
    - Can be initiated from a remote machine.
    - Includes full security features.
 - Includes pre-set configuration templates:
    - Custom Mode
    - Console Mode (exe)
    - Windows Mode (exe)
    - GL Mode (exe)
    - Library Mode (dll)
    - Dynamic Binary Module Mode (ddbm)
    - Windows Service Mode (exe)
    - Device Driver Mode (drv/sys)
 - Includes Code Convertion Utility (from C# to D).
    
 Tech info:
 - Parse the code into XML using Regular Expressions.
    - More code optimization is now possible.
 - Replaced the backend with HLA.
    - Code > HLA > OBJ > EXE/DLL
 - Removed GC, ...don't need it.
    - Variables allocate/deallocate themselfs.
    - Manual allocation/deallocation still possible.
 - Package/Module now require code block indicators
    - package somepackage.somewhere
      {
         module somemodule
         {
            ....
            module deep.beneath
            {
               ....
            }
            ....
         }
 
         module another.module
         {
            ....
         }
      }
    - More than one module per file is now possible.
 - Added inline HLA
    - Can now use asm{} or hla{}
 - Changed property syntax (similar to C#)
    - int something
      {
         get { return somevariable; }
         set { somevariable = value; }
      }
 - Renamed "mixin" to "macro"
 - Removed "imaginary" and "complex" types.
 - Changed/Added Types
    * ubyte > byte
    * byte > sbyte
    * char > compiler options determine which type to use (1/2/4 bytes)
    * short > short/int16
    * ushort > ushort/uint16
    * int > int/int32
    * uint > uint/uint32
    * long > long/int63
    * ulong > ulong/uint64
    * float > float/single/real32
    * double > double/real64
    + int128/decimal
    + uint128/udecimal
    + int256
    + uint256
    + real128
    + real256
    + string > compiler options determine which type to use (1/2 bytes)
    + date/time/datetime
 
 In Progress:
 - "native" .NET framework.
 
 Plan for the Future:
 - "VS.NET-like" IDE.
 - "true" Generic functionality.
 
 Sorry...
 NO CODE OR BINARIES INCLUDED WITH THIS MESSAGE! (yet)
 
 Baas
 

We could call it D#, but maybe I'm being charitable! If you were going to implement D in C#, why didn't you do that first, then come up with the alternative later?
Apr 06 2009