diff -uNr dmd-1.021/dmd/html/d/abi.html dmd-1.022/dmd/html/d/abi.html
--- dmd-1.021/dmd/html/d/abi.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/abi.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
diff -uNr dmd-1.021/dmd/html/d/acknowledgements.html dmd-1.022/dmd/html/d/acknowledgements.html
--- dmd-1.021/dmd/html/d/acknowledgements.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/acknowledgements.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/arrays.html dmd-1.022/dmd/html/d/arrays.html
--- dmd-1.021/dmd/html/d/arrays.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/arrays.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/ascii-table.html dmd-1.022/dmd/html/d/ascii-table.html
--- dmd-1.021/dmd/html/d/ascii-table.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/ascii-table.html 2007-10-05 00:38:24.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:14 2007
+
Last update Fri Oct 5 00:38:22 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/attribute.html dmd-1.022/dmd/html/d/attribute.html
--- dmd-1.021/dmd/html/d/attribute.html 2007-07-22 08:42:04.000000000 +0200
+++ dmd-1.022/dmd/html/d/attribute.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Sun Jul 22 09:42:04 2007
+
Last update Fri Oct 5 00:38:19 2007
@@ -125,7 +125,7 @@
Attributes
-
AttributeSpecifier:
+AttributeSpecifier:
Attribute :
Attribute DeclarationBlock
@@ -134,11 +134,7 @@
AlignAttribute
Pragma
deprecated
- private
- package
- protected
- public
- export
+ ProtectionAttribute
static
final
override
@@ -148,9 +144,9 @@
scope
DeclarationBlock
- DeclDef
+ DeclDef
{ }
- { DeclDefs }
+ { DeclDefs }
Attributes are a way to modify one or more declarations.
@@ -331,6 +327,14 @@
Protection Attribute
+ProtectionAttribute:
+ private
+ package
+ protected
+ public
+ export
+
+
Protection is an attribute that is one of
private, package, protected,
public or export.
diff -uNr dmd-1.021/dmd/html/d/builtin.html dmd-1.022/dmd/html/d/builtin.html
--- dmd-1.021/dmd/html/d/builtin.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/builtin.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -106,82 +106,93 @@
Core Language Features vs Library Implementation
- D offers several capabilities built in to the core language
+ D offers several capabilities built in to the core language
that are implemented as libraries in other languages such
as C++:
+
- - Dynamic Arrays
-
- Strings
-
- Associative Arrays
-
- Complex numbers
+
- Dynamic Arrays
+ - Strings
+ - Associative Arrays
+ - Complex numbers
- Some consider this as evidence of language bloat, rather than
+ Some consider this as evidence of language bloat, rather than
a useful feature.
So why not implement each of these as standardized library types?
-
+
+
+ Some general initial observations:
+
- Some general initial observations:
- - Each of them is heavily used. This means that even small
+
- Each of them is heavily used. This means that even small
improvements in usability are worth reaching for.
+
- - Being a core language feature means that the compiler can
+
- Being a core language feature means that the compiler can
issue better and more to the point error messages when a type
is used incorrectly.
Library implementations tend to give notoriously obtuse messages
based on the internal details of those implementations.
+
- - Library features cannot invent new syntax, new operators,
+
- Library features cannot invent new syntax, new operators,
or new tokens.
+
- - Library implementations tend to require a lot of compile
+
- Library implementations tend to require a lot of compile
time processing of the implementation, over and over for each compile,
that slows down compilation.
+
- - Library implementations are supposed to provide flexibility
+
- Library implementations are supposed to provide flexibility
to the end user. But if they are standardized, standardized to the
point of the compiler being allowed to recognized them as special
(the C++ Standard allows this), then they become just as inflexible
as builtin core features.
+
- - The ability to define new library types, while having greatly
+
- The ability to define new library types, while having greatly
advanced in the last few years, still leaves a lot to be desired
in smoothly integrating it into the existing language.
Rough edges, clumsy syntax, and odd corner cases abound.
+
- More specific comments:
+ More specific comments:
+
Dynamic Arrays
- C++ has builtin core arrays. It's just that they don't work very
+ C++ has builtin core arrays. It's just that they don't work very
well. Rather than fix them, several different array types were
created as part of the C++ Standard Template Library, each covering
a different deficiency in the builtin arrays. These
include:
+
- - basic_string
-
- vector
-
- valarray
-
- deque
-
- slice_array
-
- gslice_array
-
- mask_array
-
- indirect_array
+
- basic_string
+ - vector
+ - valarray
+ - deque
+ - slice_array
+ - gslice_array
+ - mask_array
+ - indirect_array
- Fixing the builtin array support means the need for each of these
+ Fixing the builtin array support means the need for each of these
variations just evaporates. There's one array type that covers
it all, only one thing to learn, and no problems getting one array
type to work with another array type.
-
+
- As usual, a builtin type lets us create syntactic sugar for it.
+ As usual, a builtin type lets us create syntactic sugar for it.
This starts with having an array literal, and follows with some
new operators specific to arrays. A library array implementation
has to make due with overloading existing operators.
@@ -190,77 +201,93 @@
~=, array slice operator a[i..j],
and the array vector operator
a[].
-
+
- The ~ and ~= concatenation operators resolve a problem that comes
+ The ~ and ~= concatenation operators resolve a problem that comes
up when only existing operators can be overloaded. Usually, + is
pressed into service as concatenation for library array
implementations. But that winds up precluding having + mean
array vector addition. Furthermore, concatenation has nothing in
common with addition, and using the same operator for both is
confusing.
+
+
+
Strings
- A detailed comparison with C++'s std::string.
+ A detailed comparison with C++'s std::string.
+
- C++ has, of course, builtin string support in the form of string
+ C++ has, of course, builtin string support in the form of string
literals and char arrays. It's just that they suffer from all
the weaknesses of C++ builtin arrays.
-
+
- But after all, what is a string if not an array of characters?
+ But after all, what is a string if not an array of characters?
If the builtin array problems are fixed, doesn't that resolve
the string problems as well? It does. It seems odd at first that
D doesn't have a string class, but since manipulating strings
is nothing more than manipulating arrays of characters, if arrays
work, there's nothing a class adds to it.
-
+
- Furthermore, the oddities resulting from builtin string literals
+ Furthermore, the oddities resulting from builtin string literals
not being of the same type as the library string class type go
away.
+
+
+
Associative Arrays
- The main benefit for this is, once again, syntactic sugar.
+ The main benefit for this is, once again, syntactic sugar.
An associative array keying off of a type T and storing an
int value is naturally written
as:
+
int[T] foo;
- rather than:
+ rather than:
+
import std.associativeArray;
...
std.associativeArray.AA!(T, int) foo;
- Builtin associative arrays also offer the possibility of having
+ Builtin associative arrays also offer the possibility of having
associative array literals, which are an often requested additional
feature.
+
+
+
Complex Numbers
- A detailed comparison with C++'s std::complex.
-
+
A detailed comparison with C++'s std::complex.
+
- The most compelling reason is compatibility with C's imaginary
+ The most compelling reason is compatibility with C's imaginary
and complex floating point types.
Next, is the ability to have imaginary floating point literals.
Isn't:
+
c = (6 + 2i - 1 + 3i) / 3i;
- far preferable than writing:
+ far preferable than writing:
+
c = (complex!(double)(6,2) + complex!(double)(-1,3)) / complex!(double)(0,3);
- ? It's no contest.
+ ? It's no contest.
+
+
diff -uNr dmd-1.021/dmd/html/d/changelog1.html dmd-1.022/dmd/html/d/changelog1.html
--- dmd-1.021/dmd/html/d/changelog1.html 2007-09-03 01:11:20.000000000 +0200
+++ dmd-1.022/dmd/html/d/changelog1.html 2007-10-05 00:38:24.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Mon Sep 3 01:11:18 2007
+
Last update Fri Oct 5 00:38:22 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
@@ -2660,7 +2662,13 @@
-
+
+
+
Jan 14, 2004
@@ -2689,7 +2697,13 @@
-
+
+
+
Jan 2, 2004
@@ -2771,7 +2785,13 @@
-
+
+
+
Nov 4, 2003
@@ -2787,7 +2807,13 @@
-
+
+
+
Oct 15, 2003
@@ -2816,7 +2842,13 @@
-
+
+
+
Sep 18, 2003
@@ -2840,7 +2872,13 @@
-
+
+
+
Sep 14, 2003
@@ -2871,7 +2909,13 @@
-
+
+
+
Sep 3, 2003
@@ -2888,7 +2932,13 @@
-
+
+
+
Aug 24, 2003
@@ -2909,7 +2959,13 @@
-
+
+
+
Aug 11, 2003
@@ -2947,7 +3003,13 @@
-
+
+
+
Jul 8, 2003
@@ -2970,7 +3032,13 @@
-
+
+
+
Jun 17, 2003
@@ -2979,7 +3047,13 @@
-
+
+
+
Jun 8, 2003
@@ -3001,7 +3075,13 @@
-
+
+
+
May 13, 2003
@@ -3038,7 +3118,13 @@
-
+
+
+
Mar 30, 2003
@@ -3195,7 +3281,13 @@
-
+
+
+
Nov 20, 2002
@@ -3362,7 +3454,7 @@
Aug 28, 2002
New/Changed Features
- - Implemented templates.Just some nuisance bugs fixed.
+ - Just some nuisance bugs fixed.
diff -uNr dmd-1.021/dmd/html/d/changelog2.html dmd-1.022/dmd/html/d/changelog2.html
--- dmd-1.021/dmd/html/d/changelog2.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/changelog2.html 2007-10-05 00:38:24.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:14 2007
+
Last update Fri Oct 5 00:38:23 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/changelog.html dmd-1.022/dmd/html/d/changelog.html
--- dmd-1.021/dmd/html/d/changelog.html 2007-09-05 11:42:22.000000000 +0200
+++ dmd-1.022/dmd/html/d/changelog.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Wed Sep 5 11:42:21 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
@@ -215,6 +217,8 @@
+ - What's new for D 1.022
+
- What's new for D 1.021
- What's new for D 1.020
@@ -260,8 +264,8 @@
- older versions
- even older versions
- - Download latest stable (1.016)
-
+
- Download latest stable (1.020)
+
D compiler for Win32 and x86 linux
- tech support
@@ -270,13 +274,52 @@
+
+
+
+Oct 1, 2007
+
+New/Changed Features
+
+
+
+Bugs Fixed
+
+ - Fix std.boxer boxing of Object's (unit test failure)
+ - Fix std.demangle to not show hidden parameters (this and delegate context pointers)
+ - Bugzilla 217: typeof not working properly in internal/object.d
+ - Bugzilla 218: Clean up old code for packed bit array support
+ - Bugzilla 223: Error message for unset constants doesn't specify error location
+ - Bugzilla 278: dmd.conf search path doesn't work
+ - Bugzilla 479: can't compare arrayliteral statically with string
+ - Bugzilla 549: A class derived from a deprecated class is not caught
+ - Bugzilla 550: Shifting by more bits than size of quantity is allowed
+ - Bugzilla 551: Modulo operator works with imaginary and complex operands
+ - Bugzilla 556: is (Type Identifier : TypeSpecialization) doesn't work as it should
+ - Bugzilla 668: Use of *.di files breaks the order of static module construction
+ - Bugzilla 1125: Segfault using tuple in asm code, when size not specified
+ - Bugzilla 1437: dmd crash: "Internal error: ..\ztc\cod4.c 357"
+ - Bugzilla 1474: regression: const struct with an initializer not recognized as a valid alias template param
+ - Bugzilla 1484: Forward reference of enum member crashes DMD
+ - Bugzilla 1488: Bad code generation when using tuple from asm
+ - Bugzilla 1510: ICE: Assertion failure: 'ad' on line 925 in file 'func.c'
+ - Bugzilla 1523: struct literals not work with typedef
+ - Bugzilla 1531: cannot access typedef'd class field
+ - Bugzilla 1537: Internal error: ..\ztc\cgcod.c 1521
+
+
+
+
-Aug 26, 2007
+Sep 5, 2007
New/Changed Features
diff -uNr dmd-1.021/dmd/html/d/class.html dmd-1.022/dmd/html/d/class.html
--- dmd-1.021/dmd/html/d/class.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/class.html 2007-10-05 00:38:22.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/code_coverage.html dmd-1.022/dmd/html/d/code_coverage.html
--- dmd-1.021/dmd/html/d/code_coverage.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/code_coverage.html 2007-10-05 00:38:22.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -71,6 +71,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/comparison.html dmd-1.022/dmd/html/d/comparison.html
--- dmd-1.021/dmd/html/d/comparison.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/comparison.html 2007-10-05 00:38:22.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
diff -uNr dmd-1.021/dmd/html/d/cppcomplex.html dmd-1.022/dmd/html/d/cppcomplex.html
--- dmd-1.021/dmd/html/d/cppcomplex.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/cppcomplex.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:18 2007
diff -uNr dmd-1.021/dmd/html/d/cppdbc.html dmd-1.022/dmd/html/d/cppdbc.html
--- dmd-1.021/dmd/html/d/cppdbc.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/cppdbc.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:19 2007
diff -uNr dmd-1.021/dmd/html/d/cppstrings.html dmd-1.022/dmd/html/d/cppstrings.html
--- dmd-1.021/dmd/html/d/cppstrings.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/cppstrings.html 2007-10-05 00:38:20.000000000 +0200
@@ -35,7 +35,7 @@
- Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:18 2007
diff -uNr dmd-1.021/dmd/html/d/cpptod.html dmd-1.022/dmd/html/d/cpptod.html
--- dmd-1.021/dmd/html/d/cpptod.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/cpptod.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:18 2007
diff -uNr dmd-1.021/dmd/html/d/ctod.html dmd-1.022/dmd/html/d/ctod.html
--- dmd-1.021/dmd/html/d/ctod.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/ctod.html 2007-10-05 00:38:20.000000000 +0200
@@ -35,7 +35,7 @@
- Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:18 2007
diff -uNr dmd-1.021/dmd/html/d/dbc.html dmd-1.022/dmd/html/d/dbc.html
--- dmd-1.021/dmd/html/d/dbc.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/dbc.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/dcompiler.html dmd-1.022/dmd/html/d/dcompiler.html
--- dmd-1.021/dmd/html/d/dcompiler.html 2007-09-05 11:42:24.000000000 +0200
+++ dmd-1.022/dmd/html/d/dcompiler.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Wed Sep 5 11:42:22 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
@@ -265,15 +267,8 @@
32 bit Windows (Win32) operating system, such as Windows XP
Download
-
+
dmd.zip (D compiler) for Win32
-
-
-
Download
diff -uNr dmd-1.021/dmd/html/d/ddoc.html dmd-1.022/dmd/html/d/ddoc.html
--- dmd-1.021/dmd/html/d/ddoc.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/ddoc.html 2007-10-05 00:38:22.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
diff -uNr dmd-1.021/dmd/html/d/declaration.html dmd-1.022/dmd/html/d/declaration.html
--- dmd-1.021/dmd/html/d/declaration.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/declaration.html 2007-10-05 00:38:20.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:19 2007
diff -uNr dmd-1.021/dmd/html/d/dll.html dmd-1.022/dmd/html/d/dll.html
--- dmd-1.021/dmd/html/d/dll.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/dll.html 2007-10-05 00:38:22.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -71,6 +71,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/dstyle.html dmd-1.022/dmd/html/d/dstyle.html
--- dmd-1.021/dmd/html/d/dstyle.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/dstyle.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/entity.html dmd-1.022/dmd/html/d/entity.html
--- dmd-1.021/dmd/html/d/entity.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/entity.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
diff -uNr dmd-1.021/dmd/html/d/enum.html dmd-1.022/dmd/html/d/enum.html
--- dmd-1.021/dmd/html/d/enum.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/enum.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/errors.html dmd-1.022/dmd/html/d/errors.html
--- dmd-1.021/dmd/html/d/errors.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/errors.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/exception-safe.html dmd-1.022/dmd/html/d/exception-safe.html
--- dmd-1.021/dmd/html/d/exception-safe.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/exception-safe.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/expression.html dmd-1.022/dmd/html/d/expression.html
--- dmd-1.021/dmd/html/d/expression.html 2007-09-02 12:19:22.000000000 +0200
+++ dmd-1.022/dmd/html/d/expression.html 2007-10-05 00:38:20.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Sun Sep 2 12:19:21 2007
+
Last update Fri Oct 5 00:38:19 2007
@@ -674,9 +674,7 @@
For floating point operands, the operations correspond to the
- IEEE 754 floating point equivalents. The modulus operator only
- works with reals, it is illegal to use it with imaginary or complex
- operands.
+ IEEE 754 floating point equivalents.
Mul expressions for floating point operands are not associative.
@@ -1503,14 +1501,15 @@
is ( Type Identifier : TypeSpecialization )
The condition is satisfied if Type is the same as
- or can be implicitly converted to TypeSpecialization.
+ TypeSpecialization, or if Type is a class and
+ TypeSpecialization is a base class or base interface
+ of it.
The Identifier is declared to be either an alias of the
TypeSpecialization or, if TypeSpecialization is
dependent on Identifier, the deduced type.
- TypeSpecialization is only allowed to be a Type.
-alias short bar;
+alias int bar;
alias long* abc;
void foo(bar x, abc a)
{
diff -uNr dmd-1.021/dmd/html/d/faq.html dmd-1.022/dmd/html/d/faq.html
--- dmd-1.021/dmd/html/d/faq.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/faq.html 2007-10-05 00:38:22.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -71,6 +71,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/float.html dmd-1.022/dmd/html/d/float.html
--- dmd-1.021/dmd/html/d/float.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/float.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/function.html dmd-1.022/dmd/html/d/function.html
--- dmd-1.021/dmd/html/d/function.html 2007-09-02 12:19:22.000000000 +0200
+++ dmd-1.022/dmd/html/d/function.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Sun Sep 2 12:19:21 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/future.html dmd-1.022/dmd/html/d/future.html
--- dmd-1.021/dmd/html/d/future.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/future.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/garbage.html dmd-1.022/dmd/html/d/garbage.html
--- dmd-1.021/dmd/html/d/garbage.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/garbage.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/glossary.html dmd-1.022/dmd/html/d/glossary.html
--- dmd-1.021/dmd/html/d/glossary.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/glossary.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/html.html dmd-1.022/dmd/html/d/html.html
--- dmd-1.021/dmd/html/d/html.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/html.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/htod.html dmd-1.022/dmd/html/d/htod.html
--- dmd-1.021/dmd/html/d/htod.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/htod.html 2007-10-05 00:38:24.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:14 2007
+
Last update Fri Oct 5 00:38:22 2007
@@ -71,6 +71,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/htomodule.html dmd-1.022/dmd/html/d/htomodule.html
--- dmd-1.021/dmd/html/d/htomodule.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/htomodule.html 2007-10-05 00:38:22.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -71,6 +71,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/iasm.html dmd-1.022/dmd/html/d/iasm.html
--- dmd-1.021/dmd/html/d/iasm.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/iasm.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/index.html dmd-1.022/dmd/html/d/index.html
--- dmd-1.021/dmd/html/d/index.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/index.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:19 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/interface.html dmd-1.022/dmd/html/d/interface.html
--- dmd-1.021/dmd/html/d/interface.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/interface.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/interfaceToC.html dmd-1.022/dmd/html/d/interfaceToC.html
--- dmd-1.021/dmd/html/d/interfaceToC.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/interfaceToC.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
diff -uNr dmd-1.021/dmd/html/d/lazy-evaluation.html dmd-1.022/dmd/html/d/lazy-evaluation.html
--- dmd-1.021/dmd/html/d/lazy-evaluation.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/lazy-evaluation.html 2007-10-05 00:38:24.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:14 2007
+
Last update Fri Oct 5 00:38:22 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/lex.html dmd-1.022/dmd/html/d/lex.html
--- dmd-1.021/dmd/html/d/lex.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/lex.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:19 2007
diff -uNr dmd-1.021/dmd/html/d/lisp-java-d.html dmd-1.022/dmd/html/d/lisp-java-d.html
--- dmd-1.021/dmd/html/d/lisp-java-d.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/lisp-java-d.html 2007-10-05 00:38:24.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Fri Jul 6 21:33:14 2007
+
Last update Fri Oct 5 00:38:23 2007
diff -uNr dmd-1.021/dmd/html/d/memory.html dmd-1.022/dmd/html/d/memory.html
--- dmd-1.021/dmd/html/d/memory.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/memory.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:20 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/mixin.html dmd-1.022/dmd/html/d/mixin.html
--- dmd-1.021/dmd/html/d/mixin.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/mixin.html 2007-10-05 00:38:22.000000000 +0200
@@ -36,7 +36,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
@@ -74,6 +74,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/module.html dmd-1.022/dmd/html/d/module.html
--- dmd-1.021/dmd/html/d/module.html 2007-09-05 11:42:22.000000000 +0200
+++ dmd-1.022/dmd/html/d/module.html 2007-10-05 00:38:20.000000000 +0200
@@ -33,7 +33,7 @@
- Last update Wed Sep 5 11:42:21 2007
+
Last update Fri Oct 5 00:38:19 2007
@@ -132,9 +132,9 @@
DeclDef
DeclDef DeclDefs
-DeclDef:
- AttributeSpecifier
- ImportDeclaration
+DeclDef:
+ AttributeSpecifier
+ ImportDeclaration
EnumDeclaration
ClassDeclaration
InterfaceDeclaration
@@ -146,8 +146,8 @@
UnitTest
StaticConstructor
StaticDestructor
- DebugSpecification
- VersionSpecification
+ DebugSpecification
+ VersionSpecification
MixinDeclaration
;
diff -uNr dmd-1.021/dmd/html/d/operatoroverloading.html dmd-1.022/dmd/html/d/operatoroverloading.html
--- dmd-1.021/dmd/html/d/operatoroverloading.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/operatoroverloading.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/overview.html dmd-1.022/dmd/html/d/overview.html
--- dmd-1.021/dmd/html/d/overview.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/overview.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:19 2007
@@ -72,6 +72,8 @@
Win32 DLLs in D
+ COM Programming
+
C .h to D Modules
FAQ
diff -uNr dmd-1.021/dmd/html/d/phobos/object.html dmd-1.022/dmd/html/d/phobos/object.html
--- dmd-1.021/dmd/html/d/phobos/object.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/object.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:31 2007
+
Last update Fri Oct 5 00:37:19 2007
@@ -133,7 +134,27 @@
This module is implicitly imported.
-
- alias bit;
+
- alias size_t;
+
+- An unsigned integral type large enough to span the memory space. Use for
+ array indices and pointer offsets for maximal portability to
+ architectures that have different memory address ranges. This is
+ analogous to C's size_t.
+
+
+
+
+- alias ptrdiff_t;
+
+- A signed integral type large enough to span the memory space. Use for
+ pointer differences and for size_t differences for maximal portability to
+ architectures that have different memory address ranges. This is
+ analogous to C's ptrdiff_t.
+
+
+
+
+- alias bit;
- Standard boolean type.
diff -uNr dmd-1.021/dmd/html/d/phobos/phobos.html dmd-1.022/dmd/html/d/phobos/phobos.html
--- dmd-1.021/dmd/html/d/phobos/phobos.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/phobos.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,19 +17,19 @@
-
+
+
D Programming Language 1.0
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_base64.html dmd-1.022/dmd/html/d/phobos/std_base64.html
--- dmd-1.021/dmd/html/d/phobos/std_base64.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_base64.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:31 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_bind.html dmd-1.022/dmd/html/d/phobos/std_bind.html
--- dmd-1.021/dmd/html/d/phobos/std_bind.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_bind.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_bitarray.html dmd-1.022/dmd/html/d/phobos/std_bitarray.html
--- dmd-1.021/dmd/html/d/phobos/std_bitarray.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_bitarray.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_boxer.html dmd-1.022/dmd/html/d/phobos/std_boxer.html
--- dmd-1.021/dmd/html/d/phobos/std_boxer.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_boxer.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_fenv.html dmd-1.022/dmd/html/d/phobos/std_c_fenv.html
--- dmd-1.021/dmd/html/d/phobos/std_c_fenv.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_fenv.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_locale.html dmd-1.022/dmd/html/d/phobos/std_c_locale.html
--- dmd-1.021/dmd/html/d/phobos/std_c_locale.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_locale.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_math.html dmd-1.022/dmd/html/d/phobos/std_c_math.html
--- dmd-1.021/dmd/html/d/phobos/std_c_math.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_math.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_compiler.html dmd-1.022/dmd/html/d/phobos/std_compiler.html
--- dmd-1.021/dmd/html/d/phobos/std_compiler.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_compiler.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -32,7 +33,7 @@
-
Last update Wed Sep 5 11:42:31 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_conv.html dmd-1.022/dmd/html/d/phobos/std_conv.html
--- dmd-1.021/dmd/html/d/phobos/std_conv.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_conv.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_cover.html dmd-1.022/dmd/html/d/phobos/std_cover.html
--- dmd-1.021/dmd/html/d/phobos/std_cover.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_cover.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_process.html dmd-1.022/dmd/html/d/phobos/std_c_process.html
--- dmd-1.021/dmd/html/d/phobos/std_c_process.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_process.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_cpuid.html dmd-1.022/dmd/html/d/phobos/std_cpuid.html
--- dmd-1.021/dmd/html/d/phobos/std_cpuid.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_cpuid.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_stdarg.html dmd-1.022/dmd/html/d/phobos/std_c_stdarg.html
--- dmd-1.021/dmd/html/d/phobos/std_c_stdarg.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_stdarg.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_stddef.html dmd-1.022/dmd/html/d/phobos/std_c_stddef.html
--- dmd-1.021/dmd/html/d/phobos/std_c_stddef.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_stddef.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_stdio.html dmd-1.022/dmd/html/d/phobos/std_c_stdio.html
--- dmd-1.021/dmd/html/d/phobos/std_c_stdio.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_stdio.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_stdlib.html dmd-1.022/dmd/html/d/phobos/std_c_stdlib.html
--- dmd-1.021/dmd/html/d/phobos/std_c_stdlib.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_stdlib.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_cstream.html dmd-1.022/dmd/html/d/phobos/std_cstream.html
--- dmd-1.021/dmd/html/d/phobos/std_cstream.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_cstream.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_string.html dmd-1.022/dmd/html/d/phobos/std_c_string.html
--- dmd-1.021/dmd/html/d/phobos/std_c_string.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_string.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_time.html dmd-1.022/dmd/html/d/phobos/std_c_time.html
--- dmd-1.021/dmd/html/d/phobos/std_c_time.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_time.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_ctype.html dmd-1.022/dmd/html/d/phobos/std_ctype.html
--- dmd-1.021/dmd/html/d/phobos/std_ctype.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_ctype.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_c_wcharh.html dmd-1.022/dmd/html/d/phobos/std_c_wcharh.html
--- dmd-1.021/dmd/html/d/phobos/std_c_wcharh.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_c_wcharh.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:35 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_date.html dmd-1.022/dmd/html/d/phobos/std_date.html
--- dmd-1.021/dmd/html/d/phobos/std_date.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_date.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_demangle.html dmd-1.022/dmd/html/d/phobos/std_demangle.html
--- dmd-1.021/dmd/html/d/phobos/std_demangle.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_demangle.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_file.html dmd-1.022/dmd/html/d/phobos/std_file.html
--- dmd-1.021/dmd/html/d/phobos/std_file.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_file.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_format.html dmd-1.022/dmd/html/d/phobos/std_format.html
--- dmd-1.021/dmd/html/d/phobos/std_format.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_format.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:31 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_gc.html dmd-1.022/dmd/html/d/phobos/std_gc.html
--- dmd-1.021/dmd/html/d/phobos/std_gc.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_gc.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_intrinsic.html dmd-1.022/dmd/html/d/phobos/std_intrinsic.html
--- dmd-1.021/dmd/html/d/phobos/std_intrinsic.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_intrinsic.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_math.html dmd-1.022/dmd/html/d/phobos/std_math.html
--- dmd-1.021/dmd/html/d/phobos/std_math.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_math.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:30 2007
+
Last update Fri Oct 5 00:37:18 2007
@@ -171,7 +172,7 @@
- const real PI;
-
- π
+
- $(PI)
@@ -213,7 +214,7 @@
- const real SQRT1_2;
-
- √½
+
- √½
@@ -251,8 +252,8 @@
Special Values
- x | cos(x) | invalid? |
- NAN | NAN | yes |
+ x | cos(x) | invalid? |
+ NAN | NAN | yes |
±∞ | NAN | yes |
@@ -268,10 +269,10 @@
Special Values
- x | sin(x) | invalid?
- |
NAN | NAN | yes
- |
±0.0 | ±0.0 | no
- |
±∞ | NAN | yes
+ |
x | sin(x) | invalid? |
+ NAN | NAN | yes |
+ ±0.0 | ±0.0 | no |
+ ±∞ | NAN | yes |
BUGS:
@@ -286,10 +287,10 @@
Special Values
- x | tan(x) | invalid?
- |
NAN | NAN | yes
- |
±0.0 | ±0.0 | no
- |
±∞ | NAN | yes
+ |
x | tan(x) | invalid? |
+ NAN | NAN | yes |
+ ±0.0 | ±0.0 | no |
+ ±∞ | NAN | yes |
@@ -302,10 +303,10 @@
Special Values
- x | acos(x) | invalid?
- |
>1.0 | NAN | yes
- |
<-1.0 | NAN | yes
- |
NAN | NAN | yes
+ |
x | acos(x) | invalid? |
+ >1.0 | NAN | yes |
+ <-1.0 | NAN | yes |
+ NAN | NAN | yes |
@@ -318,10 +319,10 @@
Special Values
- x | asin(x) | invalid?
- |
±0.0 | ±0.0 | no
- |
>1.0 | NAN | yes
- |
<-1.0 | NAN | yes
+ |
x | asin(x) | invalid? |
+ ±0.0 | ±0.0 | no |
+ >1.0 | NAN | yes |
+ <-1.0 | NAN | yes |
@@ -334,9 +335,9 @@
Special Values
- x | atan(x) | invalid?
- |
±0.0 | ±0.0 | no
- |
±∞ | NAN | yes
+ |
x | atan(x) | invalid? |
+ ±0.0 | ±0.0 | no |
+ ±∞ | NAN | yes |
@@ -349,20 +350,20 @@
Special Values
- y | x | atan(y, x)
- |
NAN | anything | NAN
- |
anything | NAN | NAN
- |
±0.0 | > 0.0 | ±0.0
- |
±0.0 | ±0.0 | ±0.0
- |
±0.0 | < 0.0 | ±π
- |
±0.0 | -0.0 | ±π
- |
> 0.0 | ±0.0 | π/2
- |
< 0.0 | ±0.0 | π/2
- |
> 0.0 | ∞ | ±0.0
- |
±∞ | anything | ±π/2
- |
> 0.0 | -∞ | ±π
- |
±∞ | ∞ | ±π/4
- |
±∞ | -∞ | ±3π/4
+ |
y | x | atan(y, x) |
+ NAN | anything | NAN |
+ anything | NAN | NAN |
+ ±0.0 | >0.0 | ±0.0 |
+ ±0.0 | ±0.0 | ±0.0 |
+ ±0.0 | <0.0 | ±π |
+ ±0.0 | -0.0 | ±π |
+ >0.0 | ±0.0 | π/2 |
+ <0.0 | ±0.0 | π/2 |
+ >0.0 | ∞ | ±0.0 |
+ ±∞ | anything | ±π/2 |
+ >0.0 | -∞ | ±π |
+ ±∞ | ∞ | ±π/4 |
+ ±∞ | -∞ | ±3π/4 |
@@ -374,8 +375,8 @@
Special Values
- x | cosh(x) | invalid?
- |
±∞ | ±0.0 | no
+ |
x | cosh(x) | invalid? |
+ ±∞ | ±0.0 | no |
@@ -387,9 +388,9 @@
Special Values
- x | sinh(x) | invalid?
- |
±0.0 | ±0.0 | no
- |
±∞ | ±∞ | no
+ |
x | sinh(x) | invalid? |
+ ±0.0 | ±0.0 | no |
+ ±∞ | ±∞ | no |
@@ -401,9 +402,9 @@
Special Values
- x | tanh(x) | invalid?
- |
±0.0 | ±0.0 | no
- |
±∞ | ±1.0 | no
+ |
x | tanh(x) | invalid? |
+ ±0.0 | ±0.0 | no |
+ ±∞ | ±1.0 | no |
@@ -440,9 +441,9 @@
Special Values
- x | asinh(x) |
- NAN | NAN |
- ±0 | ±0 |
+ x | asinh(x) |
+ NAN | NAN |
+ ±0 | ±0 |
±∞ | ±∞ |
@@ -499,10 +500,10 @@
Special Values
- x | sqrt(x) | invalid?
- |
-0.0 | -0.0 | no
- |
<0.0 | NAN | yes
- |
+∞ | +∞ | no
+ |
x | sqrt(x) | invalid? |
+ -0.0 | -0.0 | no |
+ <0.0 | NAN | yes |
+ +∞ | +∞ | no |
@@ -514,9 +515,9 @@
Special Values
- x | exp(x)
- |
+∞ | +∞
- |
-∞ | +0.0
+ |
x | exp(x) |
+ +∞ | +∞ |
+ -∞ | +0.0 |
@@ -528,9 +529,9 @@
Special Values
- x | exp2(x)
- |
+∞ | +∞
- |
-∞ | +0.0
+ |
x | exp2(x) |
+ +∞ | +∞ |
+ -∞ | +0.0 |
@@ -547,10 +548,10 @@
Special Values
- x | ex-1
- |
±0.0 | ±0.0
- |
+∞ | +∞
- |
-∞ | -1.0
+ |
x | ex-1 |
+ ±0.0 | ±0.0 |
+ +∞ | +∞ |
+ -∞ | -1.0 |
@@ -569,11 +570,11 @@
Special Values
- value | returns | exp
- |
±0.0 | ±0.0 | 0
- |
+∞ | +∞ | int.max
- |
-∞ | -∞ | int.min
- |
±NAN | ±NAN | int.min
+ |
value | returns | exp |
+ ±0.0 | ±0.0 | 0 |
+ +∞ | +∞ | int.max |
+ -∞ | -∞ | int.min |
+ ±NAN | ±NAN | int.min |
@@ -589,10 +590,10 @@
Special Values
- x | ilogb(x) | Range error?
- |
0 | FP_ILOGB0 | yes
- |
±∞ | int.max | no
- |
NAN | FP_ILOGBNAN | no
+ |
x | ilogb(x) | Range error? |
+ 0 | FP_ILOGB0 | yes |
+ ±∞ | int.max | no |
+ NAN | FP_ILOGBNAN | no |
@@ -614,10 +615,10 @@
Special Values
- x | log(x) | divide by 0? | invalid?
- |
±0.0 | -∞ | yes | no
- |
< 0.0 | NAN | no | yes
- |
+∞ | +∞ | no | no
+ |
x | log(x) | divide by 0? | invalid? |
+ ±0.0 | -∞ | yes | no |
+ <0.0 | NAN | no | yes |
+ +∞ | +∞ | no | no |
@@ -629,10 +630,10 @@
Special Values
- x | log10(x) | divide by 0? | invalid?
- |
±0.0 | -∞ | yes | no
- |
< 0.0 | NAN | no | yes
- |
+∞ | +∞ | no | no
+ |
x | log10(x) | divide by 0? | invalid? |
+ ±0.0 | -∞ | yes | no |
+ <0.0 | NAN | no | yes |
+ +∞ | +∞ | no | no |
@@ -648,11 +649,11 @@
Special Values
- x | log1p(x) | divide by 0? | invalid?
- |
±0.0 | ±0.0 | no | no
- |
-1.0 | -∞ | yes | no
- |
<-1.0 | NAN | no | yes
- |
+∞ | -∞ | no | no
+ |
x | log1p(x) | divide by 0? | invalid? |
+ ±0.0 | ±0.0 | no | no |
+ -1.0 | -∞ | yes | no |
+ <-1.0 | NAN | no | yes |
+ +∞ | -∞ | no | no |
@@ -665,10 +666,10 @@
Special Values
- x | log2(x) | divide by 0? | invalid?
- |
±0.0 | -∞ | yes | no
- |
< 0.0 | NAN | no | yes
- |
+∞ | +∞ | no | no
+ |
x | log2(x) | divide by 0? | invalid? |
+ ±0.0 | -∞ | yes | no |
+ <0.0 | NAN | no | yes |
+ +∞ | +∞ | no | no |
@@ -687,9 +688,9 @@
Special Values
- x | logb(x) | Divide by 0?
- |
±∞ | +∞ | no
- |
±0.0 | -∞ | yes
+ |
x | logb(x) | divide by 0? |
+ ±∞ | +∞ | no |
+ ±0.0 | -∞ | yes |
@@ -706,11 +707,11 @@
Special Values
- x | y | modf(x, y) | invalid?
- |
±0.0 | not 0.0 | ±0.0 | no
- |
±∞ | anything | NAN | yes
- |
anything | ±0.0 | NAN | yes
- |
!=±∞ | ±∞ | x | no
+ |
x | y | modf(x, y) | invalid? |
+ ±0.0 | no | t 0.0 ±0.0 | no |
+ ±∞ | anything | NAN | yes |
+ anything | ±0.0 | NAN | yes |
+ !=±∞ | ±∞ | x | no |
@@ -726,9 +727,9 @@
Special Values
- x | scalb(x)
- |
±∞ | ±∞
- |
±0.0 | ±0.0
+ |
x | scalb(x) |
+ ±∞ | ±∞ |
+ ±0.0 | ±0.0 |
@@ -740,10 +741,10 @@
Special Values
- x | cbrt(x) | invalid?
- |
±0.0 | ±0.0 | no
- |
NAN | NAN | yes
- |
±∞ | ±∞ | no
+ |
x | cbrt(x) | invalid? |
+ ±0.0 | ±0.0 | no |
+ NAN | NAN | yes |
+ ±∞ | ±∞ | no |
@@ -755,9 +756,9 @@
Special Values
- x | fabs(x)
- |
±0.0 | +0.0
- |
±∞ | +∞
+ |
x | fabs(x) |
+ ±0.0 | +0.0 |
+ ±∞ | +∞ |
@@ -779,10 +780,10 @@
Special Values
- x | y | hypot(x, y) | invalid?
- |
x | ±0.0 | |x| | no
- |
±∞ | y | +∞ | no
- |
±∞ | NAN | +∞ | no
+ |
x | y | hypot(x, y) | invalid? |
+ x | ±0.0 | |x| | no |
+ ±∞ | y | +∞ | no |
+ ±∞ | NAN | +∞ | no |
@@ -819,10 +820,10 @@
Special Values
- x | lgamma(x) | invalid?
- |
NAN | NAN | yes
- |
integer <= 0 | +∞ | yes
- |
±∞ | +∞ | no
+ |
x | lgamma(x) | invalid? |
+ NAN | NAN | yes |
+ integer <= 0 | +∞ | yes |
+ ±∞ | +∞ | no |
@@ -843,13 +844,13 @@
Special Values
- x | Γ(x) | invalid?
- |
NAN | NAN | yes
- |
±0.0 | ±∞ | yes
- |
integer > 0 | (x-1)! | no
- |
integer < 0 | NAN | yes
- |
+∞ | +∞ | no
- |
-∞ | NAN | yes
+ |
x | Γ(x) | invalid? |
+ NAN | NAN | yes |
+ ±0.0 | ±∞ | yes |
+ integer >0 | (x-1)! | no |
+ integer <0 | NAN | yes |
+ +∞ | +∞ | no |
+ -∞ | NAN | yes |
@@ -945,7 +946,7 @@
If |n - x / y| == 0.5, n is even.
If the result is zero, it has the same sign as x.
Otherwise, the sign of the result is the sign of x / y.
- Precision mode has no affect on the remainder functions.
+ Precision mode has no effect on the remainder functions.
remquo returns n in the parameter n.
@@ -953,11 +954,11 @@
Special Values
- x | y | remainder(x, y) | n | invalid?
- |
±0.0 | not 0.0 | ±0.0 | 0.0 | no
- |
±∞ | anything | NAN | ? | yes
- |
anything | ±0.0 | NAN | ? | yes
- |
!= ±∞ | ±∞ | x | ? | no
+ |
x | y | remainder(x, y) | n | invalid? |
+ ±0.0 | no | t 0.0 ±0.0 | 0.0 | no |
+ ±∞ | anything | NAN | ? | yes |
+ anything | ±0.0 | NAN | ? | yes |
+ != ±∞ | ±∞ | x | ? | no |
@@ -1045,9 +1046,10 @@
Returns:
- x, y | fdim(x, y)
- |
x > y | x - y
- |
x <= y | +0.0
+ Special Values
+ |
x, y | fdim(x, y) |
+ x > y | x - y |
+ x <= y | +0.0 |
@@ -1089,42 +1091,24 @@
Special Values
-
- x | y | pow(x, y) | div 0 | invalid?
- |
- anything | ±0.0 | 1.0 | no | no
- |
- |x| > 1 | +∞ | +∞ | no | no
- |
- |x| < 1 | +∞ | +0.0 | no | no
- |
- |x| > 1 | -∞ | +0.0 | no | no
- |
- |x| < 1 | -∞ | +∞ | no | no
- |
- +∞ | > 0.0 | +∞ | no | no
- |
- +∞ | < 0.0 | +0.0 | no | no
- |
- -∞ | odd integer > 0.0 | -∞ | no | no
- |
- -∞ | > 0.0, not odd integer | +∞ | no | no
- |
- -∞ | odd integer < 0.0 | -0.0 | no | no
- |
- -∞ | < 0.0, not odd integer | +0.0 | no | no
- |
- ±1.0 | ±∞ | NAN | no | yes
- |
- < 0.0 | finite, nonintegral | NAN | no | yes
- |
- ±0.0 | odd integer < 0.0 | ±∞ | yes | no
- |
- ±0.0 | < 0.0, not odd integer | +∞ | yes | no
- |
- ±0.0 | odd integer > 0.0 | ±0.0 | no | no
- |
- ±0.0 | > 0.0, not odd integer | +0.0 | no | no
+ |
x | y | pow(x, y) | div 0 | invalid? |
+ anything | ±0.0 | 1.0 | no | no |
+ |x| > 1 | +∞ | +∞ | no | no |
+ |x| < 1 | +∞ | +0.0 | no | no |
+ |x| > 1 | -∞ | +0.0 | no | no |
+ |x| < 1 | -∞ | +∞ | no | no |
+ +∞ | > 0.0 | +∞ | no | no |
+ +∞ | < 0.0 | +0.0 | no | no |
+ -∞ | odd integer > 0.0 | -∞ | no | no |
+ -∞ | > 0.0, not odd integer | +∞ | no | no |
+ -∞ | odd integer < 0.0 | -0.0 | no | no |
+ -∞ | < 0.0, not odd integer | +0.0 | no | no |
+ ±1.0 | ±∞ | NAN | no | yes |
+ < 0.0 | finite, nonintegral | NAN | no | yes |
+ ±0.0 | odd integer < 0.0 | ±∞ | yes | no |
+ ±0.0 | < 0.0, not odd integer | +∞ | yes | no |
+ ±0.0 | odd integer > 0.0 | ±0.0 | no | no |
+ ±0.0 | > 0.0, not odd integer | +0.0 | no | no |
@@ -1141,12 +1125,12 @@
Special Values
- x | y | feqrel(x, y)
- |
x | x | real.mant_dig
- |
x | >= 2*x | 0
- |
x | <= x/2 | 0
- |
NAN | any | 0
- |
any | NAN | 0
+ |
x | y | feqrel(x, y) |
+ x | x | real.mant_dig |
+ x | >= 2*x | 0 |
+ x | <= x/2 | 0 |
+ NAN | any | 0 |
+ any | NAN | 0 |
diff -uNr dmd-1.021/dmd/html/d/phobos/std_md5.html dmd-1.022/dmd/html/d/phobos/std_md5.html
--- dmd-1.021/dmd/html/d/phobos/std_md5.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_md5.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_metastrings.html dmd-1.022/dmd/html/d/phobos/std_metastrings.html
--- dmd-1.021/dmd/html/d/phobos/std_metastrings.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_metastrings.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_mmfile.html dmd-1.022/dmd/html/d/phobos/std_mmfile.html
--- dmd-1.021/dmd/html/d/phobos/std_mmfile.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_mmfile.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:20 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_openrj.html dmd-1.022/dmd/html/d/phobos/std_openrj.html
--- dmd-1.021/dmd/html/d/phobos/std_openrj.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_openrj.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_outbuffer.html dmd-1.022/dmd/html/d/phobos/std_outbuffer.html
--- dmd-1.021/dmd/html/d/phobos/std_outbuffer.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_outbuffer.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:30 2007
+
Last update Fri Oct 5 00:37:18 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_outofmemory.html dmd-1.022/dmd/html/d/phobos/std_outofmemory.html
--- dmd-1.021/dmd/html/d/phobos/std_outofmemory.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_outofmemory.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_path.html dmd-1.022/dmd/html/d/phobos/std_path.html
--- dmd-1.021/dmd/html/d/phobos/std_path.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_path.html 2007-10-05 00:37:18.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:30 2007
+
Last update Fri Oct 5 00:37:17 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_process.html dmd-1.022/dmd/html/d/phobos/std_process.html
--- dmd-1.021/dmd/html/d/phobos/std_process.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_process.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_random.html dmd-1.022/dmd/html/d/phobos/std_random.html
--- dmd-1.021/dmd/html/d/phobos/std_random.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_random.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:31 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_regexp.html dmd-1.022/dmd/html/d/phobos/std_regexp.html
--- dmd-1.021/dmd/html/d/phobos/std_regexp.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_regexp.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:33 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_signals.html dmd-1.022/dmd/html/d/phobos/std_signals.html
--- dmd-1.021/dmd/html/d/phobos/std_signals.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_signals.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_socket.html dmd-1.022/dmd/html/d/phobos/std_socket.html
--- dmd-1.021/dmd/html/d/phobos/std_socket.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_socket.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_socketstream.html dmd-1.022/dmd/html/d/phobos/std_socketstream.html
--- dmd-1.021/dmd/html/d/phobos/std_socketstream.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_socketstream.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_stdint.html dmd-1.022/dmd/html/d/phobos/std_stdint.html
--- dmd-1.021/dmd/html/d/phobos/std_stdint.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_stdint.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_stdio.html dmd-1.022/dmd/html/d/phobos/std_stdio.html
--- dmd-1.021/dmd/html/d/phobos/std_stdio.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_stdio.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_stream.html dmd-1.022/dmd/html/d/phobos/std_stream.html
--- dmd-1.021/dmd/html/d/phobos/std_stream.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_stream.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:31 2007
+
Last update Fri Oct 5 00:37:18 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_string.html dmd-1.022/dmd/html/d/phobos/std_string.html
--- dmd-1.021/dmd/html/d/phobos/std_string.html 2007-09-05 11:42:32.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_string.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:31 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_system.html dmd-1.022/dmd/html/d/phobos/std_system.html
--- dmd-1.021/dmd/html/d/phobos/std_system.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_system.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_thread.html dmd-1.022/dmd/html/d/phobos/std_thread.html
--- dmd-1.021/dmd/html/d/phobos/std_thread.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_thread.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:21 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_traits.html dmd-1.022/dmd/html/d/phobos/std_traits.html
--- dmd-1.021/dmd/html/d/phobos/std_traits.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_traits.html 2007-10-05 00:37:22.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_typetuple.html dmd-1.022/dmd/html/d/phobos/std_typetuple.html
--- dmd-1.021/dmd/html/d/phobos/std_typetuple.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_typetuple.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_uni.html dmd-1.022/dmd/html/d/phobos/std_uni.html
--- dmd-1.021/dmd/html/d/phobos/std_uni.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_uni.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_uri.html dmd-1.022/dmd/html/d/phobos/std_uri.html
--- dmd-1.021/dmd/html/d/phobos/std_uri.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_uri.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_utf.html dmd-1.022/dmd/html/d/phobos/std_utf.html
--- dmd-1.021/dmd/html/d/phobos/std_utf.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_utf.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_windows_charset.html dmd-1.022/dmd/html/d/phobos/std_windows_charset.html
--- dmd-1.021/dmd/html/d/phobos/std_windows_charset.html 2007-09-05 11:42:36.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_windows_charset.html 2007-10-05 00:37:24.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:34 2007
+
Last update Fri Oct 5 00:37:22 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_zip.html dmd-1.022/dmd/html/d/phobos/std_zip.html
--- dmd-1.021/dmd/html/d/phobos/std_zip.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_zip.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/phobos/std_zlib.html dmd-1.022/dmd/html/d/phobos/std_zlib.html
--- dmd-1.021/dmd/html/d/phobos/std_zlib.html 2007-09-05 11:42:34.000000000 +0200
+++ dmd-1.022/dmd/html/d/phobos/std_zlib.html 2007-10-05 00:37:20.000000000 +0200
@@ -17,7 +17,8 @@
-
+
+
D Programming Language 1.0
@@ -28,7 +29,7 @@
-
Last update Wed Sep 5 11:42:32 2007
+
Last update Fri Oct 5 00:37:19 2007
diff -uNr dmd-1.021/dmd/html/d/portability.html dmd-1.022/dmd/html/d/portability.html
--- dmd-1.021/dmd/html/d/portability.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/portability.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/pragma.html dmd-1.022/dmd/html/d/pragma.html
--- dmd-1.021/dmd/html/d/pragma.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/pragma.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:19 2007
diff -uNr dmd-1.021/dmd/html/d/pretod.html dmd-1.022/dmd/html/d/pretod.html
--- dmd-1.021/dmd/html/d/pretod.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/pretod.html 2007-10-05 00:38:20.000000000 +0200
@@ -25,8 +25,7 @@
-
Last update Fri Jul 6 21:33:11 2007
+
Last update Fri Oct 5 00:38:18 2007
@@ -105,7 +104,7 @@
The C Preprocessor Versus D
- Back when C was invented, compiler technology was primitive.
+
Back when C was invented, compiler technology was primitive.
Installing a text
macro preprocessor onto the front end was a straightforward
and easy way to add many
@@ -114,24 +113,24 @@
that these features come with many inherent problems.
D doesn't have a preprocessor; but
D provides a more scalable means to solve the same problems.
+
The C Preprocessor Way
-
- C and C++ rely heavily on textual inclusion of header files.
+
C and C++ rely heavily on textual inclusion of header files.
This frequently results in the compiler having to recompile tens of thousands
of lines of code over and over again for every source file, an obvious
source of slow compile times. What header files are normally used for is
@@ -141,30 +140,36 @@
prevent multiple #inclusion, funky #pragma once syntax, and incomprehensible
fragile syntax for precompiled headers are simply unnecessary and irrelevant to
D.
+
#include <stdio.h>
-
The D Way
- D uses symbolic imports:
+
+
The D Way
+
D uses symbolic imports:
import std.c.stdio;
+
+
+
+
The C Preprocessor Way
-
- C header files frequently need to be protected against
+
C header files frequently need to be protected against
being #include'd multiple times.
To do it, a header file will contain the line:
+
#pragma once
- or the more portable:
+
or the more portable:
#ifndef __STDIO_INCLUDE
#define __STDIO_INCLUDE
@@ -172,27 +177,29 @@
#endif
-
The D Way
- Completely unnecessary since D does a symbolic include of import
+
+
The D Way
Completely unnecessary since D does a symbolic include of import
files; they only get imported once no matter how many times
the import declaration appears.
+
+
+
+
-
The C Preprocessor Way
+
The C Preprocessor Way
This is used in C to adjust the alignment for structs.
- This is used in C to adjust the alignment for structs.
-
The D Way
- For D classes, there is no
- need to adjust the alignment (in fact, the compiler is free to rearrange the data
- fields to get the optimum layout, much as the compiler will rearrange local
- variables on the stack frame). For D structs
- that get mapped onto externally defined data structures, there is a need, and
- it is handled with:
+
The D Way
For D classes, there is no need to adjust the alignment (in fact, the
+ compiler is free to rearrange the data fields to get the optimum layout,
+ much as the compiler will rearrange local variables on the stack frame).
+ For D structs that get mapped onto externally defined data structures,
+ there is a need, and it is handled with:
+
struct Foo
{
@@ -201,55 +208,66 @@
}
+
+
+
- Preprocessor macros add powerful features and flexibility to C. But they have a
- downside:
+
Preprocessor macros add powerful features and flexibility to C. But
+ they have a downside:
+
- - Macros have no concept of scope; they are valid from the point of definition
+
- Macros have no concept of scope; they are valid from the point of definition
to the end of the source. They cut a swath across .h files, nested code, etc. When
#include'ing tens of thousands of lines of macro definitions, it becomes
problematical to avoid inadvertent macro expansions.
+
- - Macros are unknown to the debugger. Trying to debug a program with
+
- Macros are unknown to the debugger. Trying to debug a program with
symbolic data is undermined by the debugger only knowing about macro
expansions, not the macros themselves.
+
- - Macros make it impossible to tokenize source code, as an earlier macro change
+
- Macros make it impossible to tokenize source code, as an earlier macro change
can arbitrarily redo tokens.
+
- - The purely textual basis of macros leads to arbitrary and inconsistent usage,
+
- The purely textual basis of macros leads to arbitrary and inconsistent usage,
making code using macros error prone. (Some attempt to resolve this was
introduced with templates in C++.)
+
- - Macros are still used to make up for deficits in the language's expressive
+
- Macros are still used to make up for deficits in the language's expressive
capability, such as for "wrappers" around header files.
+
- Here's an enumeration of the common uses for macros, and the corresponding
- feature in D:
-
+
Here's an enumeration of the common uses for macros, and the
+ corresponding feature in D:
+
- Defining literal constants:
The C Preprocessor Way
-
#define VALUE 5
+
- The D Way
+ The D Way
const int VALUE = 5;
+
+
+
- Creating a list of values or flags:
The C Preprocessor Way
-
int flags:
#define FLAG_X 0x1
#define FLAG_Y 0x2
@@ -257,19 +275,22 @@
...
flags |= FLAG_X;
+
- The D Way
+ The D Way
enum FLAGS { X = 0x1, Y = 0x2, Z = 0x4 };
FLAGS flags;
...
flags |= FLAGS.X;
+
+
+
- Distinguishing between ascii chars and wchar chars:
The C Preprocessor Way
-
#if UNICODE
#define dchar wchar_t
#define TEXT(s) L##s
@@ -281,9 +302,10 @@
...
dchar h[] = TEXT("hello");
+
- The D Way
+ The D Way
dchar[] h = "hello";
@@ -291,11 +313,13 @@
D's optimizer will inline the function, and will do the conversion of the
string constant at compile time.
+
+
+
- Supporting legacy compilers:
The C Preprocessor Way
-
#if PROTOTYPES
#define P(p) p
#else
@@ -303,28 +327,33 @@
#endif
int func P((int x, int y));
+
- The D Way
- By making the D compiler open source, it will largely
+ The D Way
By making the D compiler open source, it will largely
avoid the problem of syntactical backwards compatibility.
+
+
+
- Type aliasing:
The C Preprocessor Way
-
#define INT int
+
- The D Way
+ The D Way
alias int INT;
+
+
+
- Using one header file for both declaration and definition:
The C Preprocessor Way
-
#define EXTERN extern
#include "declarations.h"
#undef EXTERN
@@ -336,45 +365,53 @@
EXTERN int foo;
+
The D Way
-
The declaration and the definition are the same, so there is no need
to muck with the storage class to generate both a declaration and a definition
from the same source.
+
+
+
- Lightweight inline functions:
The C Preprocessor Way
-
#define X(i) ((i) = (i) / 3)
+
- The D Way
+ The D Way
int X(ref int i) { return i = i / 3; }
The compiler optimizer will inline it; no efficiency is lost.
+
+
+
- Assert function file and line number information:
The C Preprocessor Way
-
#define assert(e) ((e) || _assert(__LINE__, __FILE__))
+
- The D Way
+ The D Way
assert() is a built-in expression primitive. Giving the compiler
such knowledge of assert() also enables the optimizer to know about things
like the _assert() function never returns.
+
+
+
- Setting function calling conventions:
The C Preprocessor Way
-
#ifndef _CRTAPI1
#define _CRTAPI1 __cdecl
#endif
@@ -384,9 +421,10 @@
int _CRTAPI2 func();
+
- The D Way
+ The D Way
Calling conventions can be specified in blocks, so there's no
need to change it for every function:
@@ -396,24 +434,29 @@
int anotherfunc();
}
+
+
+
- Hiding __near or __far pointer weirdness:
The C Preprocessor Way
-
#define LPSTR char FAR *
+
- The D Way
+ The D Way
D doesn't support 16 bit code, mixed pointer sizes, and different
kinds of pointers, and so the problem is just
irrelevant.
+
+
+
- Simple generic programming:
The C Preprocessor Way
-
Selecting which function to use based on text substitution:
#ifdef UNICODE
@@ -424,9 +467,10 @@
#define getValue getValueA
#endif
+
- The D Way
+ The D Way
D enables declarations of symbols that are aliases of
other symbols:
@@ -441,6 +485,9 @@
alias getValueA getValue;
}
+
+
+
@@ -449,57 +496,67 @@
The C Preprocessor Way
-
- Conditional compilation is a powerful feature of the C preprocessor,
- but it has its downside:
+
Conditional compilation is a powerful feature of the C preprocessor,
+ but it has its downside:
- - The preprocessor has no concept of scope. #if/#endif can be
+
- The preprocessor has no concept of scope. #if/#endif can be
interleaved with code in a completely unstructured and disorganized
fashion, making things difficult to follow.
+
- - Conditional compilation triggers off of macros - macros that
+
- Conditional compilation triggers off of macros - macros that
can conflict with identifiers used in the program.
+
- - #if expressions are evaluated in subtly different ways than
+
- #if expressions are evaluated in subtly different ways than
C expressions are.
+
- - The preprocessor language is fundamentally different in concept
+
- The preprocessor language is fundamentally different in concept
than C, for example, whitespace and line terminators mean things to
the preprocessor that they do not in C.
-
+
-
The D Way
- D supports conditional compilation:
+
+
The D Way
+
D supports conditional compilation:
- - Separating version specific functionality into separate modules.
+
- Separating version specific functionality into separate modules.
+
- - The debug statement for enabling/disabling debug harnesses,
+
- The debug statement for enabling/disabling debug harnesses,
extra printing, etc.
+
- - The version statement for dealing with multiple versions
+
- The version statement for dealing with multiple versions
of the program generated from a single set of sources.
+
- - The if (0) statement.
+
- The if (0) statement.
+
- - The /+ +/ nesting comment can be used to comment out blocks
+
- The /+ +/ nesting comment can be used to comment out blocks
of code.
-
+
+
+
+
The C Preprocessor Way
-
- It's common in a function to have a repetitive sequence
+
It's common in a function to have a repetitive sequence
of code to be executed in multiple places. Performance
considerations preclude factoring it out into a separate
function, so it is implemented as a macro. For example,
consider this fragment from a byte code interpreter:
+
unsigned char *ip; // byte code instruction pointer
int *stack;
@@ -524,23 +581,30 @@
}
- This suffers from numerous problems:
+
This suffers from numerous problems:
+
+
- - The macros must evaluate to expressions and cannot declare
+
- The macros must evaluate to expressions and cannot declare
any variables. Consider the difficulty of extending them to
check for stack overflow/underflow.
-
- The macros exist outside of the semantic symbol table, so
+
+ - The macros exist outside of the semantic symbol table, so
remain in scope even outside of the function they are declared in.
-
- Parameters to macros are passed textually, not by value,
+
+ - Parameters to macros are passed textually, not by value,
meaning that the macro implementation needs to be careful to not
use the parameter more than once, and must protect it with ().
-
- Macros are invisible to the debugger, which sees only the
+
+ - Macros are invisible to the debugger, which sees only the
expanded expressions.
+
-
The D Way
- D neatly addresses this with nested functions:
+
+
The D Way
+
D neatly addresses this with nested functions:
ubyte* ip; int[] stack;
- The problems addressed are:
+
The problems addressed are:
+
- - The nested functions have available the full expressive
+
- The nested functions have available the full expressive
power of D functions. The array accesses already are bounds
checked (adjustable by compile time switch).
-
- Nested function names are scoped just like any other name.
-
- Parameters are passed by value, so need to worry about
+
+ - Nested function names are scoped just like any other name.
+
+ - Parameters are passed by value, so need to worry about
side effects in the parameter expressions.
-
- Nested functions are visible to the debugger.
+
+ - Nested functions are visible to the debugger.
+
- Additionally, nested functions can be inlined by the implementation
+
Additionally, nested functions can be inlined by the implementation
resulting in the same high performance that the C macro version
exhibits.
+
+
+
+
- Static asserts are user defined checks made at compile time;
+
Static asserts are user defined checks made at compile time;
if the check fails the compile issues an error and fails.
+
The C Preprocessor Way
-
- The first way is to use the
#error preprocessing directive:
+
The first way is to use the #error preprocessing directive:
+
#if FOO || BAR
... code to compile ...
@@ -598,18 +672,19 @@
#endif
- This has the limitations inherent in preprocessor expressions
+
This has the limitations inherent in preprocessor expressions
(i.e. integer constant expressions only, no casts, no sizeof,
no symbolic constants, etc.).
-
+
- These problems can be circumvented to some extent by defining a
+
These problems can be circumvented to some extent by defining a
static_assert macro (thanks to M. Wilson):
+
#define static_assert(_x) do { typedef int ai[(_x) ? 1 : 0]; } while(0)
- and using it like:
+
and using it like:
void foo(T t)
{
@@ -618,17 +693,20 @@
}
- This works by causing a compile time semantic error if the condition
+
This works by causing a compile time semantic error if the condition
evaluates
to false. The limitations of this technique are a sometimes very
confusing error message from the compiler, along with an inability
to use a static_assert outside of a function body.
+
+
-
The D Way
- D has the
static assert,
+
The D Way
+
D has the static assert,
which can be used anywhere a declaration
or a statement can be used. For example:
+
version (FOO)
{
@@ -654,6 +732,9 @@
}
+
+
+
@@ -665,43 +746,55 @@
- - Mixins substitute in parsed declaration trees that pass muster with
+
- Mixins substitute in parsed declaration trees that pass muster with
the language syntax, macros substitute in arbitrary preprocessor tokens
that have no organization.
+
- - Mixins are in the same language. Macros are a separate and
+
- Mixins are in the same language. Macros are a separate and
distinct language layered on top of C++, with its own expression rules,
its own types, its distinct symbol table, its own scoping rules, etc.
+
- - Mixins are selected based on partial specialization rules, macros
+
- Mixins are selected based on partial specialization rules, macros
have no overloading.
+
- - Mixins create a scope, macros do not.
+
- Mixins create a scope, macros do not.
+
- - Mixins are compatible with syntax parsing tools, macros are not.
+
- Mixins are compatible with syntax parsing tools, macros are not.
+
- - Mixin semantic information and symbol tables are passed through to
+
- Mixin semantic information and symbol tables are passed through to
the debugger, macros are lost in translation.
+
- - Mixins have override conflict resolution rules, macros just
+
- Mixins have override conflict resolution rules, macros just
collide.
+
- - Mixins automatically create unique identifiers as required using a
+
- Mixins automatically create unique identifiers as required using a
standard algorithm, macros have to do it manually with kludgy token
pasting.
+
- - Mixin value arguments with side effects are evaluated once, macro
+
- Mixin value arguments with side effects are evaluated once, macro
value arguments get evaluated each time they are used in the expansion
(leading to weird bugs).
+
- - Mixin argument replacements don't need to be 'protected' with
+
- Mixin argument replacements don't need to be 'protected' with
parentheses to avoid operator precedence regrouping.
+
- - Mixins can be typed as normal D code of arbitrary length, multiline
+
- Mixins can be typed as normal D code of arbitrary length, multiline
macros have to be backslash line-spliced, can't use // to end of line
comments, etc.
+
- - Mixins can define other mixins. Macros cannot create other macros.
+
- Mixins can define other mixins. Macros cannot create other macros.
+
@@ -732,8 +825,7 @@
Copyright © 1999-2007 by Digital Mars, All Rights Reserved
|
Page generated by
Ddoc. |
-
Comments
+
Comments
diff -uNr dmd-1.021/dmd/html/d/property.html dmd-1.022/dmd/html/d/property.html
--- dmd-1.021/dmd/html/d/property.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/property.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:19 2007
diff -uNr dmd-1.021/dmd/html/d/rationale.html dmd-1.022/dmd/html/d/rationale.html
--- dmd-1.021/dmd/html/d/rationale.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/rationale.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:21 2007
@@ -72,6 +72,8 @@
- Win32 DLLs in D
+
- COM Programming
+
- C .h to D Modules
- FAQ
diff -uNr dmd-1.021/dmd/html/d/regular-expression.html dmd-1.022/dmd/html/d/regular-expression.html
--- dmd-1.021/dmd/html/d/regular-expression.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/regular-expression.html 2007-10-05 00:38:24.000000000 +0200
@@ -33,7 +33,7 @@
-
Last update Fri Jul 6 21:33:14 2007
+
Last update Fri Oct 5 00:38:22 2007
@@ -71,6 +71,8 @@
- Win32 DLLs in D
+
- COM Programming
+
- C .h to D Modules
- FAQ
diff -uNr dmd-1.021/dmd/html/d/statement.html dmd-1.022/dmd/html/d/statement.html
--- dmd-1.021/dmd/html/d/statement.html 2007-07-22 08:42:06.000000000 +0200
+++ dmd-1.022/dmd/html/d/statement.html 2007-10-05 00:38:20.000000000 +0200
@@ -33,7 +33,7 @@
-
Last update Sun Jul 22 09:42:05 2007
+
Last update Fri Oct 5 00:38:19 2007
diff -uNr dmd-1.021/dmd/html/d/struct.html dmd-1.022/dmd/html/d/struct.html
--- dmd-1.021/dmd/html/d/struct.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/struct.html 2007-10-05 00:38:22.000000000 +0200
@@ -33,7 +33,7 @@
-
Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/template-comparison.html dmd-1.022/dmd/html/d/template-comparison.html
--- dmd-1.021/dmd/html/d/template-comparison.html 2007-07-06 19:33:16.000000000 +0200
+++ dmd-1.022/dmd/html/d/template-comparison.html 2007-10-05 00:38:24.000000000 +0200
@@ -35,7 +35,7 @@
-
Last update Fri Jul 6 21:33:14 2007
+
Last update Fri Oct 5 00:38:23 2007
diff -uNr dmd-1.021/dmd/html/d/template.html dmd-1.022/dmd/html/d/template.html
--- dmd-1.021/dmd/html/d/template.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/template.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:20 2007
diff -uNr dmd-1.021/dmd/html/d/template-mixin.html dmd-1.022/dmd/html/d/template-mixin.html
--- dmd-1.021/dmd/html/d/template-mixin.html 2007-07-06 19:33:16.000000000 +0200
+++ dmd-1.022/dmd/html/d/template-mixin.html 2007-10-05 00:38:24.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:15 2007
+
Last update Fri Oct 5 00:38:23 2007
diff -uNr dmd-1.021/dmd/html/d/templates-revisited.html dmd-1.022/dmd/html/d/templates-revisited.html
--- dmd-1.021/dmd/html/d/templates-revisited.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/templates-revisited.html 2007-10-05 00:38:24.000000000 +0200
@@ -35,7 +35,7 @@
-
Last update Fri Jul 6 21:33:13 2007
+
Last update Fri Oct 5 00:38:22 2007
@@ -73,6 +73,8 @@
- Win32 DLLs in D
+
- COM Programming
+
- C .h to D Modules
- FAQ
diff -uNr dmd-1.021/dmd/html/d/tuple.html dmd-1.022/dmd/html/d/tuple.html
--- dmd-1.021/dmd/html/d/tuple.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/tuple.html 2007-10-05 00:38:24.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:14 2007
+
Last update Fri Oct 5 00:38:23 2007
@@ -72,6 +72,8 @@
- Win32 DLLs in D
+
- COM Programming
+
- C .h to D Modules
- FAQ
diff -uNr dmd-1.021/dmd/html/d/type.html dmd-1.022/dmd/html/d/type.html
--- dmd-1.021/dmd/html/d/type.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/type.html 2007-10-05 00:38:20.000000000 +0200
@@ -34,7 +34,7 @@
-
Last update Fri Jul 6 21:33:12 2007
+
Last update Fri Oct 5 00:38:19 2007
@@ -127,74 +127,133 @@
Basic Data Types
-
- Keyword
- | Description
- | Default Initializer (.init)
- |
void | no type | -
- |
bool | boolean value | false
- |
byte | signed 8 bits | 0
- |
ubyte | unsigned 8 bits | 0
- |
short | signed 16 bits | 0
- |
ushort | unsigned 16 bits | 0
- |
int | signed 32 bits | 0
- |
uint | unsigned 32 bits | 0
- |
long | signed 64 bits | 0L
- |
ulong | unsigned 64 bits | 0L
- |
cent | signed 128 bits (reserved for future use) | 0
- |
ucent | unsigned 128 bits (reserved for future use) | 0
- |
float | 32 bit floating point | float.nan
- |
double | 64 bit floating point | double.nan
- |
real
+ Keyword | Description | Default Initializer (.init) |
+
+ void |
+ no type |
+ - |
+
+ bool |
+ boolean value |
+ false |
+
+ byte |
+ signed 8 bits |
+ 0 |
+
+ ubyte |
+ unsigned 8 bits |
+ 0 |
+
+ short |
+ signed 16 bits |
+ 0 |
+
+ ushort |
+ unsigned 16 bits |
+ 0 |
+
+ int |
+ signed 32 bits |
+ 0 |
+
+ uint |
+ unsigned 32 bits |
+ 0 |
+
+ long |
+ signed 64 bits |
+ 0L |
+
+ ulong |
+ unsigned 64 bits |
+ 0L |
+
+ cent |
+ signed 128 bits (reserved for future use) |
+ 0 |
+
+ ucent |
+ unsigned 128 bits (reserved for future use) |
+ 0 |
+
+ float |
+ 32 bit floating point |
+ float.nan |
+
+ double |
+ 64 bit floating point |
+ double.nan |
+
+ real |
largest hardware implemented floating
- point size (Implementation Note: 80 bits for Intel CPUs)
- | real.nan
- | ifloat
- | imaginary float
- | float.nan * 1.0i
- | idouble
- | imaginary double
- | double.nan * 1.0i
- | ireal
- | imaginary real
- | real.nan * 1.0i
- | cfloat
- | a complex number of two float values
- | float.nan + float.nan * 1.0i
- | cdouble
- | complex double
- | double.nan + double.nan * 1.0i
- | creal
- | complex real
- | real.nan + real.nan * 1.0i
-
- | char | unsigned 8 bit UTF-8 | 0xFF
- | wchar | unsigned 16 bit UTF-16 | 0xFFFF
- | dchar | unsigned 32 bit UTF-32 | 0x0000FFFF
+ point size (Implementation Note: 80 bits for Intel CPUs) |
+ real.nan |
+
+ ifloat |
+ imaginary float |
+ float.nan * 1.0i |
+
+ idouble |
+ imaginary double |
+ double.nan * 1.0i |
+
+ ireal |
+ imaginary real |
+ real.nan * 1.0i |
+
+ cfloat |
+ a complex number of two float values |
+ float.nan + float.nan * 1.0i |
+
+ cdouble |
+ complex double |
+ double.nan + double.nan * 1.0i |
+
+ creal |
+ complex real |
+ real.nan + real.nan * 1.0i |
+
+ char |
+ unsigned 8 bit UTF-8 |
+ 0xFF |
+
+ wchar |
+ unsigned 16 bit UTF-16 |
+ 0xFFFF |
+
+ dchar |
+ unsigned 32 bit UTF-32 |
+ 0x0000FFFF |
+
+
Derived Data Types
- - pointer
-
- array
-
- associative array
-
- function
-
- delegate
+
- pointer
+ - array
+ - associative array
+ - function
+ - delegate
+
User Defined Types
- - alias
-
- typedef
-
- enum
-
- struct
-
- union
-
- class
+
- alias
+ - typedef
+ - enum
+ - struct
+ - union
+ - class
+
+
Base Types
The base type of an enum is the type it is based on:
@@ -207,21 +266,26 @@
typedef T U;
+
+
Pointer Conversions
- Casting pointers to non-pointers and vice versa is allowed in D,
+ Casting pointers to non-pointers and vice versa is allowed in D,
however, do not do this for any pointers that point to data
allocated by the garbage collector.
+
+
Implicit Conversions
- Implicit conversions are used to automatically convert
+ Implicit conversions are used to automatically convert
types as required.
-
+
- A typedef or enum can be implicitly converted to its base
+ A typedef or enum can be implicitly converted to its base
type, but going the other way requires an explicit
conversion. For example:
+
typedef int myint;
int i;
@@ -231,52 +295,66 @@
m = cast(myint)i;
-Integer Promotions
- Integer Promotions are conversions of the following types:
-
+
+ Integer Promotions
+
+ Integer Promotions are conversions of the following types:
+
- from
- | to
+ | from |
+ to |
+
- bool
- | int
+ | bool |
+ int |
+
- byte
- | int
+ | byte |
+ int |
+
- ubyte
- | int
+ | ubyte |
+ int |
+
- short
- | int
+ | short |
+ int |
+
- ushort
- | int
+ | ushort |
+ int |
+
- char
- | int
+ | char |
+ int |
+
- wchar
- | int
+ | wchar |
+ int |
+
- dchar
- | uint
+ | dchar |
+ uint |
+
-
- If a typedef or enum has as a base type one of the types
+ If a typedef or enum has as a base type one of the types
in the left column, it is converted to the type in the right
column.
+
+
+
-Usual Arithmetic Conversions
+Usual Arithmetic Conversions
- The usual arithmetic conversions convert operands of binary
+ The usual arithmetic conversions convert operands of binary
operators to a common type. The operands must already be
of arithmetic types.
The following rules are applied
in order, looking at the base type:
+
- If either operand is real, the other operand is
converted to real.
@@ -324,22 +402,25 @@
ulong u4 = cast(ulong)-1;
- Floating point types cannot be implicitly converted to
+
Floating point types cannot be implicitly converted to
integral types.
-
+
- Complex floating point types cannot be implicitly converted
+ Complex floating point types cannot be implicitly converted
to non-complex floating point types.
-
+
- Imaginary floating point types cannot be implicitly converted to
+ Imaginary floating point types cannot be implicitly converted to
float, double, or real types. Float, double, or real types
cannot be implicitly converted to imaginary floating
point types.
+
+
+
bool
- The bool type is a 1 byte size type that can only hold the
+ The bool type is a 1 byte size type that can only hold the
value true or false.
The only operators that can accept operands of type bool are:
& | ^ &= |= ^= ! && || ?:.
@@ -351,32 +432,37 @@
Casting an expression to bool means testing for 0 or !=0 for
arithmetic types, and null or !=null
for pointers or references.
+
+
- There are no pointers-to-members in D, but a more useful
+ There are no pointers-to-members in D, but a more useful
concept called delegates are supported.
Delegates are an aggregate of two pieces of data: an
object reference and a function pointer. The object reference
forms the this pointer when the function is called.
-
+
- Delegates are declared similarly to function pointers,
+ Delegates are declared similarly to function pointers,
except that the keyword delegate takes the place
of (*), and the identifier occurs afterwards:
+
int function(int) fp; int delegate(int) dg;
- The C style syntax for declaring pointers to functions is
+ The C style syntax for declaring pointers to functions is
also supported:
+
int (*fp)(int);
- A delegate is initialized analogously to function pointers:
+ A delegate is initialized analogously to function pointers:
+
int func(int);
fp = &func;
- Delegates cannot be initialized with static member functions
+ Delegates cannot be initialized with static member functions
or non-member functions.
-
+
- Delegates are called analogously to function pointers:
+ Delegates are called analogously to function pointers:
+
fp(3); dg(3);
+
diff -uNr dmd-1.021/dmd/html/d/variadic-function-templates.html dmd-1.022/dmd/html/d/variadic-function-templates.html
--- dmd-1.021/dmd/html/d/variadic-function-templates.html 2007-07-06 19:33:14.000000000 +0200
+++ dmd-1.022/dmd/html/d/variadic-function-templates.html 2007-10-05 00:38:24.000000000 +0200
@@ -35,7 +35,7 @@
- Last update Fri Jul 6 21:33:14 2007
+ Last update Fri Oct 5 00:38:23 2007
@@ -73,6 +73,8 @@
- Win32 DLLs in D
+ - COM Programming
+
- C .h to D Modules
- FAQ
diff -uNr dmd-1.021/dmd/html/d/version.html dmd-1.022/dmd/html/d/version.html
--- dmd-1.021/dmd/html/d/version.html 2007-07-06 19:33:12.000000000 +0200
+++ dmd-1.022/dmd/html/d/version.html 2007-10-05 00:38:22.000000000 +0200
@@ -34,7 +34,7 @@
- Last update Fri Jul 6 21:33:12 2007
+ Last update Fri Oct 5 00:38:20 2007
@@ -182,30 +182,31 @@
- Versions enable multiple versions of a module to be implemented
+ Versions enable multiple versions of a module to be implemented
with a single source file.
-
+
VersionCondition:
version ( Integer )
version ( Identifier )
- The VersionCondition is satisfied if the Integer
+ The VersionCondition is satisfied if the Integer
is greater than or equal to the current version level,
or if Identifier matches a version identifier.
-
+
- The version level and version identifier can
+ The version level and version identifier can
be set on the command line by the -version switch
- or in the module itself with a VersionSpecification,
+ or in the module itself with a VersionSpecification,
or they can be predefined by the compiler.
-
+
- Version identifiers are in their own unique name space, they do
+ Version identifiers are in their own unique name space, they do
not conflict with debug identifiers or other symbols in the module.
Version identifiers defined in one module have no influence
over other imported modules.
+
int k;
version (Demo) |