On 22/10/2009 00:57, BCS wrote:
Hello Yigal,

On 22/10/2009 00:14, BCS wrote:

Hello Yigal,

On 21/10/2009 23:59, AJ wrote:

Since D has no header files, how does one create "a library" that
another developer can use without exposing the implementation?

D does have header files with the extension .di which can be either
auto generated and/or manually edited. IMO this is a design mistake
carried over from c/c++.

What would you prefer?

Aside from a better library format you need something to give DMD the
information. Switching to a better library format has several issues
including requiring more tools to make them and view them as well as
it doesn't solve the problem of linking with C libs that don't and
never will use this new format. Not fatal issues I'll grant, but what
we have works NOW.

As you said, what is needed is a better lib format. we already have
DDL NOW which already has most of what you described above. D can also
take advantage of the LLVM framework.

Does DDL or LLVM work to generate monolithic executable that use all of
D's features and do so for both Win32 and *nux?

Also, can I use notepad to view either of those file types?


why do you need to choose between the two options anyway? dmd can
support c header files combined with c libs and use a better D lib
format for D code. Another option would be to have a simple tool to
convert a bunch of c header files and a C lib to a D lib.

Option 1 is a no starter (Walter has said NO the that exact option based
on it needing in effect a full C frontend to work) Option 2 in
interesting but, it runs flat into to "needs more tools" issue.

The C/C++ way of headers + lib has problems which D inherited as part
of the same (broken) design.



from http://llvm.org/docs/LangRef.html
<quote>

The LLVM code representation is designed to be used in three different forms: as an in-memory compiler IR, as an on-disk bitcode representation (suitable for fast loading by a Just-In-Time compiler), and as a human readable assembly language representation. This allows LLVM to provide a powerful intermediate representation for efficient compiler transformations and analysis, while providing a natural means to debug and visualize the transformations. The three different forms of LLVM are all equivalent.

</quote>

IIRC DDL wraps objects/libs with meta-data.

while it will be easy to get a text representation with llvm (the equivalence that is mentioned above) why would you want to do it anyway? Automatically extracted documentation to a human format (ddoc, javadoc, etc) is much more useful and more flexible - you can get a printed manual or an interactive and easy to navigate html, you can also get all sorts of graphs and diagrams that would ease understanding of the structure of code.

the only valid IMO use case for header files is for linking libs - the compiler can handle just find binary formats for that.

Reply via email to