Re: Patterns of Human Error - my presentation at the DC ACM
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
Re: dmd 1.068 and 2.053 release
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: dmd 1.068 and 2.053 release
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 (/opt/dmd2/linux/bin64/../../src
Re: dmd 1.068 and 2.053 release
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.