Re: dmd 1.068 and 2.053 release

2011-05-16 Thread Don

Jonathan M Davis wrote:

On 2011-05-15 03:50, Joel Christensen wrote:

Looks like enum's are tighter (eg. 'enum last = media[ $ - 1 ];' doesn't
work now). It was working in 52. I had heard it might be relaxed, not
tightened. I get the error, 'cannot be read at compile time'.

Also immutable imstr = test; printf( toStringz( imstr ) ); wasn't
working at first, but works now for some reason.

Good to have an update though.


A lot of CTFE stuff was rewritten. What all of the implications of that are, I 
don't know, but according to Don (who did the rewrite), there are cases which 
compiled before but didn't generate correct code. I don't know if there were 
any cases which compiled which were supposed to be illegal.


There are VERY MANY cases which compiled before, which were supposed to 
be illegal. The compiler used to accept a variable where it needed a 
compile-time constant!


 Regardless,
because there was a major rewrite for CTFE, the risk of CTFE bugs or 
behavioral changes is higher than is the case for most releases.


To clarify:
Two massive fixes were made, which are independent of each other:
(1) CONSTANT FOLDING: any case where a compile-time value is required 
now MUST be a compile-time value. If a compile-time value is not 
required, there is no attempt to interpret it. This fixed many 
accepts-invalid bugs.
(2) CTFE: array literals no longer use copy-on-write (which gave totally 
wrong semantics). This fixed many wrong-code bugs.


Fixing (2) also allowed a huge number of CTFE bugs to be fixed.

This particular example is a consequence of (1), and has nothing to do 
with the CTFE changes.


Re: dmd 1.068 and 2.053 release

2011-05-16 Thread Jonathan Crapuchettes
I'm getting a segfault while compiling my code with the 64-bit version of dmd 
2.053. I can't seem to figure out where the problem exists, but something is 
making me think that it is a problem with std.parallelism. Attached is the 
output of dmd with -v.


Walter Bright wrote:

Thanks for everyone's hard work on this release!

http://www.digitalmars.com/d/1.0/changelog.html
http://ftp.digitalmars.com/dmd.1.067.zip

Now includes FreeBSD:

http://www.digitalmars.com/d/2.0/changelog.html
http://ftp.digitalmars.com/dmd.2.052.zip
/opt/dmd2/linux/bin64/dmd createCommuting.d countyMap.d quadpro.d 
flowCreation.d flowExpansion.d  cube.d config_reader.d -I../ 
-L/usr/lib/libmysqlclient.so.16 -version=MYSQLCLIENT_16 -version=NoATLAS 
-debug=Hack -gc -O -v  ../ccb/io/misc.d ../ccb/MySQLConnection.d 
../ccb/matrix/Matrix.d ../ccb/matrix/Vector.d ../ccb/matrix/hash.d 
../ccb/matrix/Util.d
binary/opt/dmd2/linux/bin64/dmd
version   v2.053
config/opt/dmd2/linux/bin64/dmd.conf
parse createCommuting
parse countyMap
parse quadpro
parse flowCreation
parse flowExpansion
parse cube
parse config_reader
parse misc
parse MySQLConnection
parse Matrix
parse Vector
parse hash
parse Util
importall createCommuting
importobject
(/opt/dmd2/linux/bin64/../../src/druntime/import/object.di)
importstd.stdio (/opt/dmd2/linux/bin64/../../src/phobos/std/stdio.d)
importcore.stdc.stdio   
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/stdio.di)
importcore.stdc.config  
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/config.di)
importcore.stdc.stddef  
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/stddef.di)
importcore.stdc.stdarg  
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/stdarg.di)
importstd.stdiobase (/opt/dmd2/linux/bin64/../../src/phobos/std/stdiobase.d)
importcore.memory   
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/memory.di)
importcore.stdc.errno   
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/errno.di)
importcore.stdc.stdlib  
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/stdlib.di)
importcore.stdc.string  
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/string.di)
importcore.stdc.wchar_  
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/wchar_.di)
importcore.stdc.time
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/time.di)
importcore.stdc.stdint  
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/stdint.di)
importcore.stdc.signal  
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/signal.di)
importstd.algorithm (/opt/dmd2/linux/bin64/../../src/phobos/std/algorithm.d)
importstd.c.string  (/opt/dmd2/linux/bin64/../../src/phobos/std/c/string.d)
importstd.array (/opt/dmd2/linux/bin64/../../src/phobos/std/array.d)
importcore.bitop
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/bitop.di)
importstd.conv  (/opt/dmd2/linux/bin64/../../src/phobos/std/conv.d)
importcore.stdc.math
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/stdc/math.di)
importstd.ctype (/opt/dmd2/linux/bin64/../../src/phobos/std/ctype.d)
importstd.exception (/opt/dmd2/linux/bin64/../../src/phobos/std/exception.d)
importstd.range (/opt/dmd2/linux/bin64/../../src/phobos/std/range.d)
importstd.functional
(/opt/dmd2/linux/bin64/../../src/phobos/std/functional.d)
importstd.metastrings   
(/opt/dmd2/linux/bin64/../../src/phobos/std/metastrings.d)
importstd.traits(/opt/dmd2/linux/bin64/../../src/phobos/std/traits.d)
importstd.typetuple (/opt/dmd2/linux/bin64/../../src/phobos/std/typetuple.d)
importstd.typecons  (/opt/dmd2/linux/bin64/../../src/phobos/std/typecons.d)
importstd.format(/opt/dmd2/linux/bin64/../../src/phobos/std/format.d)
importcore.vararg   
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/vararg.di)
importstd.bitmanip  (/opt/dmd2/linux/bin64/../../src/phobos/std/bitmanip.d)
importstd.math  (/opt/dmd2/linux/bin64/../../src/phobos/std/math.d)
importstd.string(/opt/dmd2/linux/bin64/../../src/phobos/std/string.d)
importcore.exception
(/opt/dmd2/linux/bin64/../../src/druntime/import/core/exception.di)
importstd.encoding  (/opt/dmd2/linux/bin64/../../src/phobos/std/encoding.d)
importstd.regex (/opt/dmd2/linux/bin64/../../src/phobos/std/regex.d)
importstd.outbuffer (/opt/dmd2/linux/bin64/../../src/phobos/std/outbuffer.d)
importstd.c.stdio   (/opt/dmd2/linux/bin64/../../src/phobos/std/c/stdio.d)
importstd.c.stdlib  (/opt/dmd2/linux/bin64/../../src/phobos/std/c/stdlib.d)
importstd.c.stdarg  (/opt/dmd2/linux/bin64/../../src/phobos/std/c/stdarg.d)
importstd.utf   (/opt/dmd2/linux/bin64/../../src/phobos/std/utf.d)
importstd.uni   

Re: dmd 1.068 and 2.053 release

2011-05-16 Thread Walter Bright

On 5/16/2011 10:11 AM, Jonathan Crapuchettes wrote:

I'm getting a segfault while compiling my code with the 64-bit version of dmd
2.053. I can't seem to figure out where the problem exists, but something is
making me think that it is a problem with std.parallelism. Attached is the
output of dmd with -v.


Please, all bug reports should be posted to bugzilla.


Re: Patterns of Human Error - my presentation at the DC ACM

2011-05-16 Thread Caligo
Have you ever placed a 9-volt battery on your tongue?  It's not very
pleasant, specially when someone asks you to do it and you don't know
what's coming.

On a serious note, the topic reminds me of an interesting book that I
read; The Design of Everyday Things by Donald Norman, is one of the
classics of human interface design. Norman shows how badly something
as simple as a kitchen stove can be designed, and everyone should read
it who will design a dialog box, write an error message, or design
just about anything else humans are supposed to use. --Qt Docs