On Tue, 18 Jan 2011 13:28:32 +0200, Walter Bright
<newshou...@digitalmars.com> wrote:
What is that message?
C:\Temp\D\Build> dmd test1.d
OPTLINK (R) for Win32 Release 8.00.8
Copyright (C) Digital Mars 1989-2010 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
test1.obj(test1)
Error 42: Symbol Undefined _D5test21fFZv
--- errorlevel 1
1) The error message is very technical:
a) does not indicate what exactly is wrong (module not passed to
linker, not that the linker knows that)
There could be many reasons for the error, see:
Sorry, you're missing the point. The toolchain has the ability to output a
much more helpful error message (or just do the right thing and compile
the whole project, which is obviously what the user intends to do in 99%
of the time).
http://www.digitalmars.com/ctg/OptlinkErrorMessages.html#symbol_undefined
which is linked from the url listed:
http://www.digitalmars.com/ctg/optlink.html
and more directly from the FAQ:
http://www.digitalmars.com/faq.html
b) does not give any indication of what the user has to do to fix it
The link above does give such suggestions, depending on what the cause
of the error is.
This is not nearly good enough. I can bet you that over 95% of users will
Google for the error message instead. Further more, that webpage is very
technical. Some D users (those wanting a high-performance high-level
programming language) don't even need to know what a linker is or does.
2) OPTLINK doesn't demangle D mangled names, when it could, and it
would improve the readability of its error messages considerably.
(I know not all mangled names are demangleable, but it'd be a great
improvement regardless)
The odd thing is that Optlink did demangle the C++ mangled names, and
people actually didn't like it that much.
I think we can agree that there is a significant difference between the
two audiences (users of your C++ toolchain who need a high-end,
high-performance C++ compiler, vs. people who want to try a new
programming language). You can make it an option, or just print both
mangled and demangled.
dmd can build entire programs with one command:
dmd file1.d file2.d file3.d ...etc...
That doesn't scale anywhere. What if you want to use a 3rd-party
library with a few dozen modules?
Just type the filenames and library names on the command line. You can
put hundreds if you like. If you do blow up the command line processor
(nothing dmd can do about that), you can put all those files in a file,
say "cmd", and invoke with:
dmd @cmd
The only limit is the amount of memory in your system.
That's not what I meant - I meant it doesn't scale as far as user effort
in concerned. There is no reason why D should force users to maintain
response files, make files, etc. D (the language) doesn't need them, and
nor should the reference implementation.
--
Best regards,
Vladimir mailto:vladi...@thecybershadow.net