From: Walter Bright <boost@digitalmars.com>
To: git@vger.kernel.org
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Date: Fri, 07 Sep 2007 12:03:24 -0700 [thread overview]
Message-ID: <fbs79k$tac$1@sea.gmane.org> (raw)
In-Reply-To: <20070907094120.GA27754@artemis.corp>
Pierre Habouzit wrote:
> Well, to me D has two significant drawbacks to be "ready to use". The
> first one is that it doesn't has bit-fields. I often deal with bit-fields
> on structures that have a _lot_ of instances in my program, and the
> bit-field is chosen for code readability _and_ structure size efficiency.
> I know you pretend that using masks manually often generates better
> code. But in my case, speed does not matter _that_ much. I mean it does,
> but not that this micro-level as access to the bit-field is not my
> inner-loop.
I'm surprised this is such an important issue. Others have mentioned it,
but regard it as a minor thing. Interestingly, the htod program (which
converts C .h files to D import files) will convert bit fields to inline
functions, giving equivalent functionality.
> The other second issue I have, is that there is no way to do:
> import (C) "foo.h"
>
> And this is a big no-go (maybe not for git, but as a general issue)
> because it impedes the use of external libraries with a C interface a
> _lot_. E.g. I'd really like to use it to use some GNU libc extensions,
> but I can't because it has too many dependencies (some async getaddrinfo
> interface, that need me to import all the signal events and so on
> extensions in the libc, with bitfields, wich send us back to the first
> point).
D does come with htod, which converts C .h files to D files. It's not
possible to do a perfect job (because of macros), but it comes pretty
darned close. The reason htod gets so close is because it is actually a
real C compiler front end, not a perl or regex string processing hack.
Because it (may) require a little hand tweaking of the results (again,
because C headers may include awful things like:
#define BEGIN {
#define print printf(
), it's a separate program rather than built-in.
> I also have a third, but non critical issue, I absolutely don't like
> phobos :)
You're not the only one <g>. But I'll add that access to the standard C
runtime library *is* a part of D, so at some level it can't be worse
than C. There's also another runtime library available, Tango, which is
very popular.
> Though I'm obviously free to chose another library. D has
> definitely many many many real advances over C (like the .init, .size,
> ... and so on fields, known types, and whatever portability nightmare
> the C impose us). In fact I like to use D like I code in C, using
> modules and functions, and very few classes, as few as I can. And even
> (under- ?) using D like this, it is a real pleasure to work with. I'm
> really eager to see gdc be more stable.
There are a lot of people hard at work on D to make it more stable and
increase the breadth and depth of tools available. I am fully aware that
there may be non-technical issues to using D in a project like git, like
availability of other D programmers, tradition, etc., but in this thread
I'm concerned mainly with technical issues.
P.S. I'm also NOT suggesting that git be converted to D. Translating a
working, debugged, 80,000 line codebase from one language to another is
usually a fool's errand.
Thanks for taking the time to post your thoughts.
-----------
Walter Bright
http://www.digitalmars.com C, C++, D programming language compilers
http://www.astoriaseminar.com Extraordinary C++
next prev parent reply other threads:[~2007-09-07 19:03 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-04 20:50 [RFC] Convert builin-mailinfo.c to use The Better String Library Lukas Sandström
2007-09-04 21:38 ` Alex Riesen
2007-09-04 23:01 ` Pierre Habouzit
2007-09-05 14:54 ` Kristian Høgsberg
2007-09-05 17:29 ` Matthieu Moy
2007-09-06 2:30 ` Miles Bader
2007-09-06 4:48 ` Dmitry Kakurin
2007-09-06 4:59 ` Shawn O. Pearce
2007-09-06 9:12 ` Andreas Ericsson
2007-09-06 9:35 ` Junio C Hamano
2007-09-06 10:21 ` Andreas Ericsson
2007-09-06 9:52 ` David Kastrup
2007-09-06 5:03 ` Miles Bader
2007-09-06 12:08 ` Johannes Schindelin
2007-09-06 17:50 ` Linus Torvalds
2007-09-07 0:21 ` Dmitry Kakurin
2007-09-07 0:38 ` Linus Torvalds
2007-09-07 1:08 ` Dmitry Kakurin
2007-09-07 1:27 ` Linus Torvalds
2007-09-07 3:09 ` Dmitry Kakurin
2007-09-07 5:48 ` David Symonds
2007-09-07 6:15 ` Theodore Tso
2007-09-20 14:06 ` Steven Burns
2007-09-20 14:56 ` Andreas Ericsson
2007-09-07 6:31 ` Andreas Ericsson
2007-09-07 22:17 ` Dmitry Kakurin
2007-09-07 22:28 ` David Kastrup
2007-09-08 0:37 ` Dmitry Kakurin
2007-09-08 6:25 ` David Kastrup
2007-09-09 0:29 ` Andreas Ericsson
2007-09-07 6:52 ` David Kastrup
2007-09-07 10:28 ` Johannes Schindelin
2007-09-07 10:26 ` Johannes Schindelin
2007-09-07 6:50 ` David Kastrup
2007-09-07 1:12 ` Linus Torvalds
2007-09-07 1:40 ` alan
2007-09-07 5:09 ` Walter Bright
2007-09-07 7:40 ` David Kastrup
2007-09-07 8:15 ` Walter Bright
2007-09-07 8:26 ` David Kastrup
2007-09-07 9:14 ` Walter Bright
2007-09-07 9:31 ` David Kastrup
2007-09-07 20:22 ` Walter Bright
2007-09-07 20:27 ` David Kastrup
2007-09-07 23:16 ` Walter Bright
2007-09-08 23:50 ` Andreas Ericsson
2007-09-09 0:37 ` Pierre Habouzit
2007-09-09 1:36 ` Andreas Ericsson
2007-09-07 11:36 ` Wincent Colaiuta
2007-09-07 9:41 ` Pierre Habouzit
2007-09-07 19:03 ` Walter Bright [this message]
2007-09-07 19:31 ` David Kastrup
2007-09-07 20:49 ` Walter Bright
2007-09-07 19:41 ` Pierre Habouzit
2007-09-07 19:51 ` David Kastrup
2007-09-07 19:59 ` Pierre Habouzit
2007-09-07 20:40 ` Walter Bright
2007-09-07 20:56 ` Pierre Habouzit
2007-09-07 22:54 ` Walter Bright
2007-09-08 0:56 ` John 'Z-Bo' Zabroski
2007-09-08 6:36 ` David Kastrup
2007-09-19 19:56 ` Steven Burns
2007-09-07 3:06 ` Wincent Colaiuta
2007-09-07 4:06 ` Paul Wankadia
2007-09-07 4:30 ` Nicolas Pitre
2007-09-07 9:19 ` Wincent Colaiuta
2007-09-07 6:25 ` Andreas Ericsson
2007-09-07 10:56 ` Johannes Schindelin
2007-09-07 11:54 ` Andreas Ericsson
2007-09-07 12:33 ` Wincent Colaiuta
2007-09-07 12:55 ` Karl Hasselström
2007-09-07 13:58 ` Andreas Ericsson
2007-09-07 14:13 ` Wincent Colaiuta
2007-09-09 0:09 ` Andreas Ericsson
2007-09-07 16:09 ` David Kastrup
2007-09-07 11:30 ` Wincent Colaiuta
2007-09-07 8:36 ` Walter Bright
2007-09-07 9:41 ` Andreas Ericsson
2007-09-07 19:23 ` Walter Bright
2007-09-07 19:40 ` David Kastrup
2007-09-09 0:25 ` Andreas Ericsson
2009-09-17 16:23 ` Bernd Jendrissek
2007-09-07 11:52 ` Wincent Colaiuta
2007-09-07 19:25 ` Walter Bright
2007-09-22 16:52 ` Steven Burns
2007-09-07 6:47 ` David Kastrup
2007-09-07 7:41 ` Andy Parkins
2007-09-07 8:08 ` David Kastrup
2007-09-07 10:21 ` Johannes Schindelin
2007-09-08 0:32 ` Dmitry Kakurin
2007-09-08 6:24 ` David Kastrup
2007-09-08 23:25 ` Alex Riesen
2007-09-24 13:41 ` figo
2007-09-24 13:57 ` David Kastrup
2007-09-25 19:19 ` Steven Burns
2007-09-25 19:55 ` David Kastrup
2012-05-22 18:30 ` Syed M Raihan
2010-06-10 19:12 ` Ian Molton
2010-06-11 12:23 ` Jakub Narebski
2010-06-11 13:33 ` Dario Rodriguez
2007-09-05 15:27 ` Kristian Høgsberg
2007-09-07 10:47 ` Lukas Sandström
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='fbs79k$tac$1@sea.gmane.org' \
--to=boost@digitalmars.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.