D, so it happend...

Baas hacker at webmail.co.za
Mon Apr 6 07:29:26 PDT 2009


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




More information about the Digitalmars-d mailing list