Last update June 9, 2003

Language Specification /
Current Diff



Difference (previous author) (Change, Edit, normal page display)

Changed: 1c1,641
Describe the new page here.
From LanguageSpecification.

I'm sorry that I currently (after release 0.66, Jun 9 2003) can't provide an update to the PDF. For some people this raw diff output may be helpful to locate the differences in the documentation at least. -- HelmutLeitner

<pre>
=================== acknowledgements.html ====================
=================== alpha.html ====================
17c17
< <p><small>Last update Feb 20, 2003</small>
---
>
<small>Last update May 15, 2003</small>
22c22,47
< This is the D compiler for Win32.
---
> <ul>
> <li> D for <a href="#Win32">Win32</a>
> <li> D for <a href="#linux">x86 Linux</a>
> <li> <a href="#general">general</a>
> </ul>
>
> <h2>Files Common to Win32 and Linux</h2>
>
> <dl>
>
> <dt>\dmd\src\phobos\
> <dd>D runtime library source
>
> <dt>\dmd\src\dmd\
> <dd>D compiler front end source under dual (GPL and Artistic) license
>
> <dt>\dmd\html\d\
> <dd>Documentation
>
> <dt>\dmd\samples\d\
> <dd>Sample D programs
>
> </dl>
>
> <hr>
> <a name="Win32"><h1>Win32 D Compiler</h1></a>
40,51d64
< <dt>\dmd\src\phobos\
< <dd>D runtime library source
<
< <dt>\dmd\src\dmd\
< <dd>D compiler front end source under dual (GPL and Artistic) license
<
< <dt>\dmd\html\d\
< <dd>Documentation
<
< <dt>\dmd\samples\d\
< <dd>Sample D programs
<
228a242,453
>
> <hr>
> <a name="linux"><h1>Linux D Compiler</h1></a>
>
> <h2>Files</h2>
>
> <dl>
>
> <dt>/dmd/bin/dmd
> <dd>D compiler executable
>
> <dt>/dmd/bin/dumpobj
> <dd>Elf file dumper
>
> <dt>/dmd/bin/obj2asm
> <dd>Elf file disassembler
>
> <dt>/dmd/bin/dmd.conf
> <dd>Global compiler settings (copy to /etc/dmd.conf)
>
> <dt>/dmd/lib/libphobos.a
> <dd>D runtime library (copy to /usr/lib/libphobos.a)
>
> </dl>
>
> <h2>Requirements</h2>
>
> <ul>
> <li> 32 bit x86 Linux operating system
>
> <li>
> <a HREF=" ftp://ftp.digitalmars.com/dmd.zip" title="download D compiler">
> D compiler</a> for Linux
>
> <li> Gnu C compiler (gcc)
>
> </ul>
>
> <h2>Installation</h2>
>
> <ol>
>
> <li> Unzip the archive into your home directory.
> It will create
> a ~/dmd directory with all the files in it.
> All the tools are command line tools, which means
> they are run from a console window.
>
> <li> Edit the file ~/dmd/bin/dmd.conf to put the path in to
> where the phobos source files are.
>
> <li> Copy dmd.conf to /etc:
>
> <pre>
> cp dmd/bin/dmd.conf /etc
> </pre>
>
> <li> Give execute permission to the following files:
>
> <pre>
> chmod u+x dmd/bin/dmd dmd/bin/obj2asm dmd/bin/dumpobj
> </pre>
>
> <li> Put dmd/bin on your PATH,
> or copy the linux executables
> to /usr/local/bin
>
> <li> Copy the library to /usr/lib:
>
> <pre>
> cp dmd/lib/libphobos.a /usr/lib
> </pre>
>
> </ol>
>
> <h2>Compiler Arguments and Switches</h2>
>
> <dl><dl>
> <dt>dmd files... -switch...
> <p>
> <dt>files...
> <dd>
> <table border=1 cellpadding=4 cellspacing=0 summary="File Extensions">
> <tr>
> <th>Extension
> <th>File Type
> <tr>
> <td>none
> <td>D source files
> <tr>
> <td>.d
> <td>D source files
> <tr>
> <td>.o
> <td>Object files to link in
> <tr>
> <td>.a
> <td>Library files to link in
> <tr>
> </table>
> <dt>-c</dt>
> <dd>compile only, do not link
> <dt>-d</dt>
> <dd>allow deprecated features
> <dt>-debug</dt>
> <dd>compile in debug code
> <dt>-debug=level</dt>
> <dd>compile in debug code <= level
> <dt>-debug=ident</dt>
> <dd>compile in debug code identified by ident
> <dt>-g</dt>
> <dd>add symbolic debug info
> <dt>-gt</dt>
> <dd>add trace profiling hooks (not supported under linux)
> <dt>-inline
> <dd>inline expand functions
> <dt>-Ipath
> <dd>where to look for imports. path is a ; separated
> list of paths. Multiple -I's can be used, and the paths
> are searched in the same order.
> <dt>-Llinkerflag
> <dd>pass linkerflag to the linker, for example,
> -M
> <dt>-O</dt>
> <dd>optimize
> <dt>-oobjdir</dt>
> <dd>write object files to directory objdir instead
> of to the current directory
> <dt>-o filename</dt>
> <dd>name object file (-c) or executable
> file (no -c) filename
> <dt>-release</dt>
> <dd>compile release version
> <dt>-unittest</dt>
> <dd>compile in unittest code
> <dt>-v</dt>
> <dd>verbose
> <dt>-version=level</dt>
> <dd>compile in version code >= level
> <dt>-version=ident</dt>
> <dd>compile in version code identified by ident
> </dl></dl>
>
> <h2>Linking</h2>
>
> Linking is done directly by the dmd compiler after a successful
> compile. To prevent dmd from running the linker, use the
> -c switch.
> <p>
>
> The actual linking is done by running gcc.
> This ensures compatibility with modules compiled with gcc.
>
> <h2>Environment Variables</h2>
>
> The D compiler dmd uses the following environment variables:
>
> <dl>
>
> <dt>DFLAGS
> <dd>The value of DFLAGS is treated as if it were appended to the
> command line to dmd.
>
> </dl>
>
> <h2>dmd.conf Initialization File</h2>
>
> dmd will look for the initialization file dmd.conf
> in the directory /etc. If found, environment variable
> settings in the file will override any existing settings.
> This is handy to make dmd independent of programs with
> conflicting use of environment variables.
> <p>
>
> Environment variables follow the [Environment] section
> heading, in name=value pairs. Comments are lines that start with ;.
> For example:
> <pre>
> ; dmd.conf file for dmd
> ; Names enclosed by %% are searched for in the existing environemnt
> ; and inserted. The special name %@P% is replaced with the path
> ; to this file.
> [Environment]
> DFLAGS="-I%@P%\..\src\phobos"
> </pre>
>
> <h2>Differences from Win32 version</h2>
>
> <ul>
> <li> String literals are read-only. Attempting to write to them
> will cause a segment violation.
>
> <li> The configuration file is /etc/dmd.conf
> </ul>
>
> <h2>Linux Bugs</h2>
>
> <ul>
> <li> -g is not implemented, because I haven't figured out how to
> do it yet. gdb still works, though, at the global symbol level.
>
> <li> The code generator output has not been tuned yet, so it
> can be bloated.
>
> <li> Shared libraries cannot be generated.
>
> <li> The exception handling is not compatible with the way g++
> does it. I don't know if this is an issue or not.
> </ul>
>
> <hr>
> <a name="general"><h1>General</h1></a>
=================== arrays.html ====================
=================== attribute.html ====================
=================== changelog.html ====================
26a27,30
> <li> What's new for <a href="#new066">D 0.66</a>
> <li> What's new for <a href="#new065">D 0.65</a>
> <li> What's new for <a href="#new064">D 0.64</a>
> <li> What's new for <a href="#new063">D 0.63</a>
46c50
< D compiler</a> for Win32
---
> D compiler</a> for Win32 and x86 linux
47a52,110
> </ul>
>
> <hr><!-- ======================================================= -->
> <a name="new066"><h3>What's New for D 0.66</h3></a>
>
> <small>Jun 8, 2003</small>
>
> <ul>
> <li> Added <a href="phobos.html#uri">uri</a> module.
> <li> Added <a href="phobos.html#utf">utf</a> module.
> <li> Added constant folding for ?: operator.
> <li> Zero initialized structs no longer need to link to
> the module the struct was defined in.
> <li> Private imports now supported.
> <li> Class names common to multiple modules no longer collide,
> but this required a change to how class names are mangled.
> Hence, existing libraries will need to be recompiled.
> <li> templates of the form:
> <pre>
> template foo(T:T[])
> </pre>
> now correctly resolve T in foo(int[]) to int rather than int[].
> </ul>
>
> <hr><!-- ======================================================= -->
> <a name="new065"><h3>What's New for D 0.65</h3></a>
>
> <small>May 13, 2003</small>
>
> <h4>linux version</h4>
>
> <ul>
> <li> Another bad section name bug is hopefully fixed.
> </ul>
>
> <hr><!-- ======================================================= -->
> <a name="new064"><h3>What's New for D 0.64</h3></a>
>
> <small>May 12, 2003</small>
>
> <h4>linux version</h4>
>
> <ul>
> <li> dmd.conf now needs to be installed as
> /etc/dmd.conf.
> <li> phobos.a has been renamed as libphobos.a
> and been placed in the /usr/lib directory.
> <li> dmd will now do the link step automatically.
> <li> The bad section name bug is hopefully fixed.
> </ul>
>
> <hr><!-- ======================================================= -->
> <a name="new063"><h3>What's New for D 0.63</h3></a>
>
> <small>May 10, 2003</small>
>
> <ul>
> <li> Added linux version. Thanks to Burton Radons and
> Pat Nelson for the help.
=================== class.html ====================
=================== comparison.html ====================
21c21
<
<small>Last modified Mar 30, 2003.</small>
---
>
<small>Last modified May 30, 2003.</small>
112,119d111
< <td>Covariant return types
< <td align="center" bgcolor="#00FF00"><a href="function.html#covariant">Yes</a>
< <td align="center" bgcolor="red">No
< <td align="center" bgcolor="#00FF00">Yes
< <td align="center" bgcolor="red">No
< <td align="center" bgcolor="red">No
<
< <tr>
248c240
< <td>Modules
---
> <td><a href="#Modules">Modules</a>
440c432
< <td>Support all C types
---
> <td><a href="#Ctypes">Support all C types</a>
482,483c474,475
< <td align="center" bgcolor="#00FF00">Yes
< <td align="center" bgcolor="#00FF00">Yes
---
> <td align="center" bgcolor="red">No
> <td align="center" bgcolor="red">No
542a535,540
> <dt><a name="Modules">Modules</a>
> <dd> Many correctly argue that C++ doesn't really have modules.
> But C++ namespaces coupled with header files share many features
> with modules.
> <p>
>
562a561,564
> <p>
>
> <dt><a name="Ctypes">Support all C types</a>
> <dd>C99 adds many new types not supported by C++.
=================== cpptod.html ====================
=================== ctod.html ====================
=================== dbc.html ====================
=================== declaration.html ====================
=================== dlinks.html ====================
22c22
<
<small>Last update Apr 3, 2003</small>
---
>
<small>Last update May 4, 2003</small>
129a130,133
>
> <li> <a href=" http://www.geocities.com/jccalvarese/d/tutor">Simple D Tutorial</a>
>
> <li> <a href=" http://www.dprogramming.com/">Dprogramming.com</a>
158a163
> <img src="d001.jpg" border=1 alt="by Christopher Sauls">
=================== dstyle.html ====================
19c19
< <p><small>Last update Aug 16, 2002</small>
---
> <p><small>Last update May 25, 2002</small>
93c93,94
< <dd>Module names are all lower case.
---
> <dd>Module names are all lower case. This avoids problems dealing
> with case insensitive file systems.
=================== errors.html ====================
=================== expression.html ====================
=================== faq.html ====================
=================== float.html ====================
=================== function.html ====================
21c21
<
<small>Last update Feb 28, 2003</small>
---
>
<small>Last update May 30, 2003</small>
324a325,354
> Nested functions always have the D function linkage type.
> <p>
>
> Unlike module level declarations, declarations within function
> scope are processed in order. This means that two nested functions
> cannot mutually call each other:
>
> <pre>
> void test()
> {
> void foo() { bar(); } // error, bar not defined
> void bar() { foo(); } // ok
> }
> </pre>
>
> The solution is to use a delegate:
>
> <pre>
> void test()
> {
> void delegate() fp;
> void foo() { fp(); }
> void bar() { foo(); }
> fp = &bar;
> }
> </pre>
>
> Future directions: This restriction may be removed.
>
>
406a437,440
> <p>
>
> Future directions: Function pointerss and delegates may merge
> into a common syntax and be interchangable with each other.
=================== future.html ====================
=================== garbage.html ====================
=================== html.html ====================
=================== iasm.html ====================
=================== interface.html ====================
=================== intro.html ====================
17c17
<
<small>Last update Mar 13, 2003</small>
---
>
<small>Last update May 25, 2003</small>
60,66c60,68
< Download the <a href="alpha.html">current</a>
< version of the compiler for Win32 and try it out!
< Burton Radons has also prepared a
< <a href=" http://www.opend.org/dli/DLinux.html">linux port</a>.
<
< <p>
<
---
> Download the <a href="alpha.html">current version</a>
> of the compiler for Win32 and x86 Linux and try it out!
> Burton Radons has also prepared a
> <a href=" http://www.opend.org/dli/DLinux.html">linux version</a>.
> <p>
>
> Alternatively, this document also exists as a
> <a href=" http://www.prowiki.org/wiki4d/wiki.cgi?LanguageSpecification">pdf file</a>
> suitable for printing.
=================== lex.html ====================
=================== memory.html ====================
=================== model.html ====================
=================== module.html ====================
19c19
< <p><small>Last update Mar 19, 2002</small>
---
>
<small>Last update May 28, 2003</small>
141c141
< into another module, all its top level declarations are
---
> into another module, by default all its top level declarations are
189a190,198
>
> If the import is private, such as:
>
> <pre>
> module abc;
> private import def;
> </pre>
>
> then def is not searched when another module imports abc.
=================== operatoroverloading.html ====================
=================== overview.html ====================
=================== phobos.html ====================
21c21
< <p><small>Last update Feb 15, 2003</small>
---
>
<small>Last update May 24, 2003</small>
169a170,175
> <dt><a href="#uri">uri</a>
> <dd>Encode and decode Uniform Resource Identifiers (URIs).
>
> <dt><a href="#utf">utf</a>
> <dd>Encode and decode utf character encodings.
>
2237a2244,2356
>
> </dl></dl>
>
> <hr><!-- ===================================== -->
> <a name="uri"><h2>uri</h2></a>
>
> Encode and decode Uniform Resource Identifiers (URIs).
> URIs are used in internet transfer protocols.
> Valid URI characters consist of letters, digits, and
> the characters ;/?:@&=+$,-_.!~*'(). Escape sequences
> consist of '%' followed by two hex digits.
>
> <dl><dl>
> <dt> char[] decode(char[] encodedURI)
> <dd> Decodes the URI string encodedURI into a UTF-8 string
> and returns it. Escape sequences that resolve to valid URI
> characters are not replaced. Escape sequences that resolve
> to the '#' character are not replaced.
> <p>
>
> <dt> char[] decodeComponent(char[] encodedURIComponent)
> <dd> Decodes the URI string encodedURI into a UTF-8 string
> and returns it. All escape sequences are decoded.
> <p>
>
> <dt> char[] encode(char[] uri)
> <dd> Encodes the UTF-8 string uri into a URI and returns
> that URI. Any character not a valid URI character is escaped.
> The '#' character is not escaped.
> <p>
>
> <dt> char[] encodeComponent(char[] uriComponent)
> <dd> Encodes the UTF-8 string uri into a URI and returns
> that URI. Any character not a letter, digit, or one of
> -_.!~*'() is escaped.
>
> </dl></dl>
>
> <hr><!-- ===================================== -->
> <a name="utf"><h2>utf</h2></a>
>
> Encode and decode UTF-8, UTF-16 and UTF-32 strings.
> For more information on UTF-8, see
> <a href=" http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8"> http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8</a&gt;.
> <p>
>
> Note: For Win32 systems, the C wchar_t type
> is UTF-16 and corresponds to the D wchar type.
> For linux systems, the C wchar_t type
> is UTF-32 and corresponds to the D utf.dchar type.
> <p>
>
> UTF character support is restricted to (0 <= character <= 0x10FFFF).
>
> <dl><dl>
> <dt> class UtfError?
> <dd> Exception class that is thrown upon any errors.
> The members are:
> <dl>
> <dt>idx
> <dd>Set to the index of the start of the offending UTF sequence.
> </dl>
> <p>
>
> <dt> alias ... dchar
> <dd> An alias for a single UTF-32 character. This may
> become a D basic type in the future.
> <p>
>
> <dt> bit isValidDchar(dchar c)
> <dd> Test if c is a valid UTF-32 character.
> Returns true if it is, false if not.
> <p>
>
> <dt> dchar decode(char[] s, inout uint idx)
> <dt> dchar decode(wchar[] s, inout uint idx)
> <dt> dchar decode(dchar[] s, inout uint idx)
> <dd> Decodes and returns character starting at s[idx].
> idx is advanced past the decoded character.
> If the character is not well formed, a UriError?
> is thrown and idx remains unchanged.
> <p>
>
> <dt> void encode(inout char[] s, dchar c)
> <dt> void encode(inout wchar[] s, dchar c)
> <dt> void encode(inout dchar[] s, dchar c)
> <dd> Encodes character c and appends it to array s.
> <p>
>
> <dt> void validate(char[] s)
> <dt> void validate(wchar[] s)
> <dt> void validate(dchar[] s)
> <dd> Checks to see if string is well formed or not.
> Throws a UtfError? if it is not.
> Use to check all untrusted input for correctness.
> <p>
>
> <dt> char[] toUTF8(char[] s)
> <dt> char[] toUTF8(wchar[] s)
> <dt> char[] toUTF8(dchar[] s)
> <dd> Encodes string s into UTF-8 and returns the encoded string.
> <p>
>
> <dt> wchar[] toUTF16(char[] s)
> <dt> wchar[] toUTF16(wchar[] s)
> <dt> wchar[] toUTF16(dchar[] s)
> <dd> Encodes string s into UTF-16 and returns the encoded string.
> <p>
>
> <dt> dchar[] toUTF32(char[] s)
> <dt> dchar[] toUTF32(wchar[] s)
> <dt> dchar[] toUTF32(dchar[] s)
> <dd> Encodes string s into UTF-32 and returns the encoded string.
=================== portability.html ====================
=================== pretod.html ====================
=================== property.html ====================
=================== statement.html ====================
=================== struct.html ====================
=================== template.html ====================
=================== toc.html ====================
=================== type.html ====================
=================== version.html ====================
=================== wc.html ====================
=================== windows.html ====================

</pre>

From LanguageSpecification.

I'm sorry that I currently (after release 0.66, Jun 9 2003) can't provide an update to the PDF. For some people this raw diff output may be helpful to locate the differences in the documentation at least. -- HelmutLeitner

===================  acknowledgements.html  ====================
===================  alpha.html  ====================
17c17
< <p><small><i>Last update Feb 20, 2003</i></small>
---
> <br><small><i>Last update May 15, 2003</i></small>
22c22,47
< 	This is the D compiler for Win32.
---
> 	<ul>
> 	<li> D for <a href="#Win32">Win32</a>
> 	<li> D for <a href="#linux">x86 Linux</a>
> 	<li> <a href="#general">general</a>
> 	</ul>
> 
> <h2>Files Common to Win32 and Linux</h2>
> 
> 	<dl>
> 
> 	<dt><tt>\dmd\src\phobos\</tt>
> 	<dd>D runtime library source
> 
> 	<dt><tt>\dmd\src\dmd\</tt>
> 	<dd>D compiler front end source under dual (GPL and Artistic) license
> 
> 	<dt><tt>\dmd\html\d\</tt>
> 	<dd>Documentation
> 
> 	<dt><tt>\dmd\samples\d\</tt>
> 	<dd>Sample D programs
> 
> 	</dl>
> 
> <hr>
> <a name="Win32"><h1>Win32 D Compiler</h1></a>
40,51d64
< 	<dt><tt>\dmd\src\phobos\</tt>
< 	<dd>D runtime library source
< 
< 	<dt><tt>\dmd\src\dmd\</tt>
< 	<dd>D compiler front end source under dual (GPL and Artistic) license
< 
< 	<dt><tt>\dmd\html\d\</tt>
< 	<dd>Documentation
< 
< 	<dt><tt>\dmd\samples\d\</tt>
< 	<dd>Sample D programs
< 
228a242,453
> 
> <hr>
> <a name="linux"><h1>Linux D Compiler</h1></a>
> 
> <h2>Files</h2>
> 
> 	<dl>
> 
> 	<dt><tt>/dmd/bin/dmd</tt>
> 	<dd>D compiler executable
> 
> 	<dt><tt>/dmd/bin/dumpobj</tt>
> 	<dd>Elf file dumper
> 
> 	<dt><tt>/dmd/bin/obj2asm</tt>
> 	<dd>Elf file disassembler
> 
> 	<dt><tt>/dmd/bin/dmd.conf</tt>
> 	<dd>Global compiler settings (copy to <tt>/etc/dmd.conf</tt>)
> 
> 	<dt><tt>/dmd/lib/libphobos.a</tt>
> 	<dd>D runtime library (copy to <tt>/usr/lib/libphobos.a</tt>)
> 
> 	</dl>
> 
> <h2>Requirements</h2>
> 
> 	<ul>
> 	<li> 32 bit x86 Linux operating system
> 
> 	<li>
> 	 <a HREF="ftp://ftp.digitalmars.com/dmd.zip" title="download D compiler">
> 	 D compiler</a> for Linux
> 
> 	<li> Gnu C compiler (gcc)
> 
> 	</ul>
> 
> <h2>Installation</h2>
> 
> 	<ol>
> 
> 	<li> Unzip the archive into your home directory.
> 	It will create
> 	a <tt>~/dmd</tt> directory with all the files in it.
> 	All the tools are command line tools, which means
> 	they are run from a console window.
> 
> 	<li> Edit the file <tt>~/dmd/bin/dmd.conf</tt> to put the path in to
> 	where the phobos source files are.
> 
> 	<li> Copy <tt>dmd.conf</tt> to <tt>/etc</tt>:
> 
> 	<如re>
> 	cp dmd/bin/dmd.conf /etc
> 	</如re>
> 
> 	<li> Give execute permission to the following files:
> 
> 	<如re>
> 	chmod u+x dmd/bin/dmd dmd/bin/obj2asm dmd/bin/dumpobj
> 	</如re>
> 
> 	<li> Put <tt>dmd/bin</tt> on your <b>PATH</b>,
> 	or copy the linux executables
> 	to <tt>/usr/local/bin</tt>
> 
> 	<li> Copy the library to <tt>/usr/lib</tt>:
> 
> 	<如re>
> 	cp dmd/lib/libphobos.a /usr/lib
> 	</如re>
> 
> 	</ol>
> 
> <h2>Compiler Arguments and Switches</h2>
> 
> 	<dl><dl>
> 	  <dt><b>dmd</b> <i>files</i>... -<i>switch</i>...
> 	  <p>
> 	  <dt><i>files</i>...
> 		<dd>
> 		<table border=1 cellpadding=4 cellspacing=0 summary="File Extensions">
> 		<tr>
> 		<th>Extension
> 		<th>File Type
> 		<tr>
> 		<td><i>none</i>
> 		<td>D source files
> 		<tr>
> 		<td><b>.d</b>
> 		<td>D source files
> 		<tr>
> 		<td><b>.o</b>
> 		<td>Object files to link in
> 		<tr>
> 		<td><b>.a</b>
> 		<td>Library files to link in
> 		<tr>
> 		</table>
> 	  <dt><b>-c</b></dt>
> 		<dd>compile only, do not link
> 	  <dt><b>-d</b></dt>
> 		<dd>allow deprecated features
> 	  <dt><b>-debug</b></dt>
> 		<dd>compile in debug code
> 	  <dt><b>-debug=</b><i>level</i></dt>
> 		<dd>compile in debug code <= <i>level</i>
> 	  <dt><b>-debug=</b><i>ident</i></dt>
> 		<dd>compile in debug code identified by <i>ident</i>
> 	  <dt><b>-g</b></dt>
> 		<dd>add symbolic debug info
> 	  <dt><b>-gt</b></dt>
> 		<dd>add trace profiling hooks (not supported under linux)
> 	  <dt><b>-inline</b>
> 		<dd>inline expand functions
> 	  <dt><b>-I</b><i>path</i>
> 		<dd>where to look for imports. <i>path</i> is a ; separated
> 		list of paths. Multiple <b>-I</b>'s can be used, and the paths
> 		are searched in the same order.
> 	  <dt><b>-L</b><i>linkerflag</i>
> 		<dd>pass <i>linkerflag</i> to the linker, for example,
> 		<tt>-M</tt>
> 	  <dt><b>-O</b></dt>
> 		<dd>optimize
> 	  <dt><b>-o</b><i>objdir</i></dt>
> 		<dd>write object files to directory <i>objdir</i> instead
> 		of to the current directory
> 	  <dt><b>-o</b> <i>filename</i></dt>
> 		<dd>name object file (<b>-c</b>) or executable
> 		file (no <b>-c</b>) <i>filename</i>
> 	  <dt><b>-release</b></dt>
> 		<dd>compile release version
> 	  <dt><b>-unittest</b></dt>
> 		<dd>compile in unittest code
> 	  <dt><b>-v</b></dt>
> 		<dd>verbose
> 	  <dt><b>-version=</b><i>level</i></dt>
> 		<dd>compile in version code >= <i>level</i>
> 	  <dt><b>-version=</b><i>ident</i></dt>
> 		<dd>compile in version code identified by <i>ident</i>
> 	</dl></dl>
> 
> <h2>Linking</h2>
> 
> 	Linking is done directly by the <b>dmd</b> compiler after a successful
> 	compile. To prevent <b>dmd</b> from running the linker, use the
> 	<b>-c</b> switch.
> 	<p>
> 
> 	The actual linking is done by running <b>gcc</b>.
> 	This ensures compatibility with modules compiled with <b>gcc</b>.
> 
> <h2>Environment Variables</h2>
> 
> 	The D compiler dmd uses the following environment variables:
> 
> 	<dl>
> 
> 	<dt><b>DFLAGS</b>
> 	<dd>The value of <b>DFLAGS</b> is treated as if it were appended to the
> 	command line to <b>dmd</b>.
> 
> 	</dl>
> 
> <h2>dmd.conf Initialization File</h2>
> 
> 	<b>dmd</b> will look for the initialization file <b>dmd.conf</b>
> 	in the directory <tt>/etc</tt>. If found, environment variable
> 	settings in the file will override any existing settings.
> 	This is handy to make <b>dmd</b> independent of programs with
> 	conflicting use of environment variables.
> 	<p>
> 
> 	Environment variables follow the <tt>[Environment]</tt> section
> 	heading, in name=value pairs. Comments are lines that start with ;.
> 	For example:
> 	<如re>
> 	; dmd.conf file for dmd
> 	; Names enclosed by %% are searched for in the existing environemnt
> 	; and inserted. The special name %@P% is replaced with the path
> 	; to this file.
> 	[Environment]
> 	DFLAGS="-I%@P%\..\src\phobos"
> 	</如re>
> 
> <h2>Differences from Win32 version</h2>
> 
> 	<ul>
> 	<li> String literals are read-only. Attempting to write to them
> 	will cause a segment violation.
> 
> 	<li> The configuration file is <tt>/etc/dmd.conf</tt>
> 	</ul>
> 
> <h2>Linux Bugs</h2>
> 
> 	<ul>
> 	<li> <b>-g</b> is not implemented, because I haven't figured out how to
> 	do it yet. <b>gdb</b> still works, though, at the global symbol level.
> 
> 	<li> The code generator output has not been tuned yet, so it
> 	can be bloated.
> 
> 	<li> Shared libraries cannot be generated.
> 
> 	<li> The exception handling is not compatible with the way <b>g++</b>
> 	does it. I don't know if this is an issue or not.
> 	</ul>
> 
> <hr>
> <a name="general"><h1>General</h1></a>
===================  arrays.html  ====================
===================  attribute.html  ====================
===================  changelog.html  ====================
26a27,30
> 	<li> What's new for <a href="#new066">D 0.66</a>
> 	<li> What's new for <a href="#new065">D 0.65</a>
> 	<li> What's new for <a href="#new064">D 0.64</a>
> 	<li> What's new for <a href="#new063">D 0.63</a>
46c50
< 	 D compiler</a> for Win32
---
> 	 D compiler</a> for Win32 and x86 linux
47a52,110
> </ul>
> 
> <hr><!-- ======================================================= -->
> <a name="new066"><h3>What's New for D 0.66</h3></a>
> 
> <small><i>Jun 8, 2003</i></small>
> 
> <ul>
> 	<li> Added <a href="phobos.html#uri">uri</a> module.
> 	<li> Added <a href="phobos.html#utf">utf</a> module.
> 	<li> Added constant folding for ?: operator.
> 	<li> Zero initialized structs no longer need to link to
> 	the module the struct was defined in.
> 	<li> Private imports now supported.
> 	<li> Class names common to multiple modules no longer collide,
> 	but this required a change to how class names are mangled.
> 	Hence, existing libraries will need to be recompiled.
> 	<li> templates of the form:
> 	<如re>
> 	template foo(T:T[])
> 	</如re>
> 	now correctly resolve T in foo(int[]) to int rather than int[].
> </ul>
> 
> <hr><!-- ======================================================= -->
> <a name="new065"><h3>What's New for D 0.65</h3></a>
> 
> <small><i>May 13, 2003</i></small>
> 
> <h4>linux version</h4>
> 
> <ul>
> 	<li> Another bad section name bug is hopefully fixed.
> </ul>
> 
> <hr><!-- ======================================================= -->
> <a name="new064"><h3>What's New for D 0.64</h3></a>
> 
> <small><i>May 12, 2003</i></small>
> 
> <h4>linux version</h4>
> 
> <ul>
> 	<li> <tt>dmd.conf</tt> now needs to be installed as
> 	<tt>/etc/dmd.conf</tt>.
> 	<li> <tt>phobos.a</tt> has been renamed as <tt>libphobos.a</tt>
> 	and been placed in the <tt>/usr/lib</tt> directory.
> 	<li> <b>dmd</b> will now do the link step automatically.
> 	<li> The bad section name bug is hopefully fixed.
> </ul>
> 
> <hr><!-- ======================================================= -->
> <a name="new063"><h3>What's New for D 0.63</h3></a>
> 
> <small><i>May 10, 2003</i></small>
> 
> <ul>
> 	<li> Added linux version. Thanks to Burton Radons and
> 	Pat Nelson for the help.
===================  class.html  ====================
===================  comparison.html  ====================
21c21
< <br><small><i>Last modified Mar 30, 2003.</i></small>
---
> <br><small><i>Last modified May 30, 2003.</i></small>
112,119d111
< 	<td>Covariant return types
< 	<td align="center" bgcolor="#00FF00"><a href="function.html#covariant">Yes</a>
< 	<td align="center" bgcolor="red">No
< 	<td align="center" bgcolor="#00FF00">Yes
< 	<td align="center" bgcolor="red">No
< 	<td align="center" bgcolor="red">No
< 
< 	<tr>
248c240
< 	<td>Modules
---
> 	<td><a href="#Modules">Modules</a>
440c432
< 	<td>Support all C types
---
> 	<td><a href="#Ctypes">Support all C types</a>
482,483c474,475
< 	<td align="center" bgcolor="#00FF00">Yes
< 	<td align="center" bgcolor="#00FF00">Yes
---
> 	<td align="center" bgcolor="red">No
> 	<td align="center" bgcolor="red">No
542a535,540
> 	<dt><a name="Modules">Modules</a>
> 	<dd> Many correctly argue that C++ doesn't really have modules.
> 	But C++ namespaces coupled with header files share many features
> 	with modules.
> 	<p>
> 
562a561,564
> 	<p>
> 
> 	<dt><a name="Ctypes">Support all C types</a>
> 	<dd>C99 adds many new types not supported by C++.
===================  cpptod.html  ====================
===================  ctod.html  ====================
===================  dbc.html  ====================
===================  declaration.html  ====================
===================  dlinks.html  ====================
22c22
< <br><small><i>Last update Apr 3, 2003</i></small>
---
> <br><small><i>Last update May 4, 2003</i></small>
129a130,133
> 
> 	<li> <a href="http://www.geocities.com/jccalvarese/d/tutor">Simple D Tutorial</a>
> 
> 	<li> <a href="http://www.dprogramming.com/">Dprogramming.com</a>
158a163
> 	<img src="d001.jpg" border=1 alt="by Christopher Sauls">
===================  dstyle.html  ====================
19c19
< <p><small><i>Last update Aug 16, 2002</i></small>
---
> <p><small><i>Last update May 25, 2002</i></small>
93c93,94
< 	<dd>Module names are all lower case.
---
> 	<dd>Module names are all lower case. This avoids problems dealing
> 	with case insensitive file systems.
===================  errors.html  ====================
===================  expression.html  ====================
===================  faq.html  ====================
===================  float.html  ====================
===================  function.html  ====================
21c21
< <br><small><i>Last update Feb 28, 2003</i></small>
---
> <br><small><i>Last update May 30, 2003</i></small>
324a325,354
> 	Nested functions always have the D function linkage type.
> 	<p>
> 
> 	Unlike module level declarations, declarations within function
> 	scope are processed in order. This means that two nested functions
> 	cannot mutually call each other:
> 
> 	<如re>
> 	void test()
> 	{
> 	    void foo() { bar(); }	// error, bar not defined
> 	    void bar() { foo(); }	// ok
> 	}
> 	</如re>
> 
> 	The solution is to use a delegate:
> 
> 	<如re>
> 	void test()
> 	{
> 	    void delegate() fp;
> 	    void foo() { fp(); }
> 	    void bar() { foo(); }
> 	    fp = &bar;
> 	}
> 	</如re>
> 
> 	<b>Future directions:</b> This restriction may be removed.
> 
> 
406a437,440
> 	<p>
> 
> 	<b>Future directions:</b> Function pointerss and delegates may merge
> 	into a common syntax and be interchangable with each other.
===================  future.html  ====================
===================  garbage.html  ====================
===================  html.html  ====================
===================  iasm.html  ====================
===================  interface.html  ====================
===================  intro.html  ====================
17c17
< <br><small><i>Last update Mar 13, 2003</i></small>
---
> <br><small><i>Last update May 25, 2003</i></small>
60,66c60,68
< Download the <a href="alpha.html">current</a>
< version of the compiler for Win32 and try it out!
< Burton Radons has also prepared a
< <a href="http://www.opend.org/dli/DLinux.html">linux port</a>.
< 
< <p>
< 
---
> 	Download the <a href="alpha.html">current version</a>
> 	of the compiler for Win32 and x86 Linux and try it out!
> 	Burton Radons has also prepared a
> 	<a href="http://www.opend.org/dli/DLinux.html">linux version</a>.
> 	<p>
> 
> 	Alternatively, this document also exists as a
> 	<a href="http://www.prowiki.org/wiki4d/wiki.cgi?LanguageSpecification">pdf file</a>
> 	suitable for printing.
===================  lex.html  ====================
===================  memory.html  ====================
===================  model.html  ====================
===================  module.html  ====================
19c19
< <p><small><i>Last update Mar 19, 2002</i></small>
---
> <br><small><i>Last update May 28, 2003</i></small>
141c141
< 	into another module, all its top level declarations are
---
> 	into another module, by default all its top level declarations are
189a190,198
> 
> 	If the import is private, such as:
> 
> 	<如re>
> 	module <i>abc</i>;
> 	private import <i>def</i>;
> 	</如re>
> 
> 	then <i>def</i> is not searched when another module imports <i>abc</i>.
===================  operatoroverloading.html  ====================
===================  overview.html  ====================
===================  phobos.html  ====================
21c21
< <p><small><i>Last update Feb 15, 2003</i></small>
---
> <br><small><i>Last update May 24, 2003</i></small>
169a170,175
> 	<dt><a href="#uri"><b>uri</b></a>
> 	<dd>Encode and decode Uniform Resource Identifiers (URIs).
> 
> 	<dt><a href="#utf"><b>utf</b></a>
> 	<dd>Encode and decode utf character encodings.
> 
2237a2244,2356
> 
> </dl></dl>
> 
> <hr><!-- ===================================== -->
> <a name="uri"><h2>uri</h2></a>
> 
> 	Encode and decode Uniform Resource Identifiers (URIs).
> 	URIs are used in internet transfer protocols.
> 	Valid URI characters consist of letters, digits, and
> 	the characters ;/?:@&=+$,-_.!~*'(). Escape sequences
> 	consist of '%' followed by two hex digits.
> 
> <dl><dl>
> 	<dt> char[] <b>decode</b>(char[] encodedURI)
> 	<dd> Decodes the URI string <i>encodedURI</i> into a UTF-8 string
> 	and returns it. Escape sequences that resolve to valid URI
> 	characters are not replaced. Escape sequences that resolve
> 	to the '#' character are not replaced.
> 	<p>
> 
> 	<dt> char[] <b>decodeComponent</b>(char[] encodedURIComponent)
> 	<dd> Decodes the URI string <i>encodedURI</i> into a UTF-8 string
> 	and returns it. All escape sequences are decoded.
> 	<p>
> 
> 	<dt> char[] <b>encode</b>(char[] uri)
> 	<dd> Encodes the UTF-8 string <i>uri</i> into a URI and returns
> 	that URI. Any character not a valid URI character is escaped.
> 	The '#' character is not escaped.
> 	<p>
> 
> 	<dt> char[] <b>encodeComponent</b>(char[] uriComponent)
> 	<dd> Encodes the UTF-8 string <i>uri</i> into a URI and returns
> 	that URI. Any character not a letter, digit, or one of
> 	-_.!~*'() is escaped.
> 
> </dl></dl>
> 
> <hr><!-- ===================================== -->
> <a name="utf"><h2>utf</h2></a>
> 
> 	Encode and decode UTF-8, UTF-16 and UTF-32 strings.
> 	For more information on UTF-8, see
> 	<a href="http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8">http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8</a>.
> 	<p>
> 
> 	<b>Note:</b> For Win32 systems, the C <b>wchar_t</b> type
> 	is UTF-16 and corresponds to the D <b>wchar</b> type.
> 	For linux systems, the C <b>wchar_t</b> type
> 	is UTF-32 and corresponds to the D <b>utf.dchar</b> type.
> 	<p>
> 
> 	UTF character support is restricted to (0 <= character <= 0x10FFFF).
> 
> <dl><dl>
> 	<dt> class <b>UtfError</b>
> 	<dd> Exception class that is thrown upon any errors.
> 	The members are:
> 	<dl>
> 	<dt><b>idx</b>
> 	<dd>Set to the index of the start of the offending UTF sequence.
> 	</dl>
> 	<p>
> 
> 	<dt> alias ... <b>dchar</b>
> 	<dd> An alias for a single UTF-32 character. This may
> 	become a D basic type in the future.
> 	<p>
> 
> 	<dt> bit <b>isValidDchar</b>(dchar c)
> 	<dd> Test if <i>c</i> is a valid UTF-32 character.
> 	Returns <b>true</b> if it is, <b>false</b> if not.
> 	<p>
> 
> 	<dt> dchar <b>decode</b>(char[] s, inout uint idx)
> 	<dt> dchar <b>decode</b>(wchar[] s, inout uint idx)
> 	<dt> dchar <b>decode</b>(dchar[] s, inout uint idx)
> 	<dd> Decodes and returns character starting at <i>s[idx]</i>.
> 	<i>idx</i> is advanced past the decoded character.
> 	If the character is not well formed, a <b>UriError</b>
> 	is thrown and <i>idx</i> remains unchanged.
> 	<p>
> 
> 	<dt> void <b>encode</b>(inout char[] s, dchar c)
> 	<dt> void <b>encode</b>(inout wchar[] s, dchar c)
> 	<dt> void <b>encode</b>(inout dchar[] s, dchar c)
> 	<dd> Encodes character <i>c</i> and appends it to array <i>s</i>.
> 	<p>
> 
> 	<dt> void <b>validate</b>(char[] s)
> 	<dt> void <b>validate</b>(wchar[] s)
> 	<dt> void <b>validate</b>(dchar[] s)
> 	<dd> Checks to see if string is well formed or not.
> 	Throws a <b>UtfError</b> if it is not.
> 	Use to check all untrusted input for correctness.
> 	<p>
> 
> 	<dt> char[] <b>toUTF8</b>(char[] s)
> 	<dt> char[] <b>toUTF8</b>(wchar[] s)
> 	<dt> char[] <b>toUTF8</b>(dchar[] s)
> 	<dd> Encodes string <i>s</i> into UTF-8 and returns the encoded string.
> 	<p>
> 
> 	<dt> wchar[] <b>toUTF16</b>(char[] s)
> 	<dt> wchar[] <b>toUTF16</b>(wchar[] s)
> 	<dt> wchar[] <b>toUTF16</b>(dchar[] s)
> 	<dd> Encodes string <i>s</i> into UTF-16 and returns the encoded string.
> 	<p>
> 
> 	<dt> dchar[] <b>toUTF32</b>(char[] s)
> 	<dt> dchar[] <b>toUTF32</b>(wchar[] s)
> 	<dt> dchar[] <b>toUTF32</b>(dchar[] s)
> 	<dd> Encodes string <i>s</i> into UTF-32 and returns the encoded string.
===================  portability.html  ====================
===================  pretod.html  ====================
===================  property.html  ====================
===================  statement.html  ====================
===================  struct.html  ====================
===================  template.html  ====================
===================  toc.html  ====================
===================  type.html  ====================
===================  version.html  ====================
===================  wc.html  ====================
===================  windows.html  ====================


FrontPage | News | TestPage | MessageBoard | Search | Contributors | Folders | Index | Help | Preferences | Edit

Edit text of this page (date of last change: June 9, 2003 16:02 (diff))