ANN: bud/build updated for D2

2011-03-01 Thread Jason E. Aten
I updated bud/build to compile with D2. I tested it on Mac OSX 10.6.3 and on
Linux, both x86_64. I haven't tried it on windows.

I couldn't reach Derek Parnell by email, and so I attached a source tarball
to the main wiki page. It was tested with dmd2.0.52. The link is here:

http://www.dsource.org/projects/build/attachment/wiki/WikiStart/bud-3-1.04-ported-to-D2.tar.gz?format=raw

I'm not the maintainer for this, and I'm new to D so I may not be much help
if it doesn't work. But the port seems to work for me, so I'm offering it
just in case it helps you.

- J


Re: Pretty please: Named arguments

2011-03-02 Thread Jason E. Aten
I find this an interesting discussion.  Coming from writing alot of code in
language that makes extensive and
highly effective use of named arguments (R), I can say that optional named
arguments
(as in Lisp, and descendants like Python and R) do have big software
engineering benefits,
but also come with a substantial costs in terms of complexity of the
function call sequence.

That is, named arguments can be expensive in a typical interpreted
implementation
(probably one reason why R and Python are much slower to execute than the
other
interpreted languages), presumably because each function call has to
invoke hash
table lookups to determine the canonical formal position of each actual
argument, and deal with variadic
cases, to rearrange the order of the arguments to match expectations of the
callee.

Someone familiar with lisp compilers could probably tell you if the heavy
speed tax is intrinsic
or just the price of interpretation.

It would indeed be an interesting challenge to see if the compile-time
metaprogramming
features of D would allow one to include named arguments in an opt-in
fashion without speed reduction.

Jason

On Wed, Mar 2, 2011 at 6:16 AM, Don  wrote:

> Jim wrote:
>
>> Jonathan M Davis Wrote:
>>
>>  On Tuesday, March 01, 2011 11:22:17 Bekenn wrote:
>>>
 On 2/28/11 1:38 PM, Don wrote:

> 1. It makes parameter names part of the API.
>
 I wrote earlier that this would probably be the first time parameter
 names "leaked" into user code, but I was wrong.  Jacob Carlborg has
 pointed out his library implementation of this feature:

 http://dsource.org/projects/orange/browser/orange/util/Reflection.d#L135

 If you look through his implementation, you'll see that it uses the
 .stringof property to extract parameter names from the function
 definition.  In essence, parameter names are /already/ part of the API,
 because code can be written that depends on them.  And the fact that a
 library implementation exists specifically to facilitate the use of
 named arguments implies that code already /has/ been written that
 depends on parameter names.

 Like it or not, parameter names are already part of the API.  Adding
 named arguments as a language feature doesn't change that.

>>> You're talking about a third party library that's trying to hack in named
>>> arguments, not the language nor the standard library.
>>>
>>> The parameter names of a function are _not_ currently part of its
>>> signature. You could have a .di file without any parameter names or with
>>> totally different parameter names than the original .d file and it would
>>> have _zero_ effect on anything calling those functions. The function
>>> signature does _not_ include the name of its parameters - just their types.
>>> Adding named arguments would change that.
>>>
>>> - Jonathan M Davis
>>>
>>
>>
>> Neither are aliases signatures but they can still be imported. If the
>> library writer choose to expose argument names in the .di file then I'd say
>> they are part of the API.
>>
>
> The library writer has no choice.
> Templates function implementation must be included in the .di file. This
> exposes the parameter names.
>
> The proposal introduces additional coupling between library code and user
> code, which is useless in the majority of cases.
>
> I can see the value in an opt-in annotation (*not* opt-out) for those
> problem domains where large numbers of function parameters are normal. But I
> would strongly oppose it in general.
>
>


Re: Pretty please: Named arguments

2011-03-02 Thread Jason E. Aten
On Wed, Mar 2, 2011 at 8:45 AM, Jim  wrote:
>
> In addition to that, named template arguments would allow you to create
> very customizable, yet lean types. It would be possible to parameterize all
> components. Basically, if you're not pleased with the default search
> algorithm or container type of a more complex object then you can specify
> your own.
>

Interesting, I hadn't considered the benefits of template arguments with
names as far as leanness of types.

The best part of naming arguments for functions and methods, in my
experience, is that if you add additional arguments to a method, it is a
cheap change. I don't have to go and find and change all the client calls
that have already been written. I can leave all of the existing source with
client code untouched, and only specify the new parameter in the new
invocation that wants to use the new functionality.  I only have to
recompile.  Low maintenance.  Nice.


Re: How fast is D compared to C++?

2011-03-02 Thread Jason E. Aten
> What pisses me off is the Issac Guy doesn't want to support D in the great
> language benchmark. It's very important utlity for developers. Most coders
> with C and C++ mentality look the charts and only use the top-2 languages,
> that is C and C++. If D was there, we could get more users right now,
> because the optimization benefits make DMD the fastest. Probably even
> hundreds of enterprises go there to see what language to use. Everyone knows
> TIOBE is a joke, but this benchmark is probably the most important language
> benchmark in the web. D is not listed :-(
>
> I've been donating few hundred bucks annually to wikipedia, but the
> deletionist news force me to rethink this. I could donate them to Issac if
> he just supported our language. Must not be that hard?
>

The benchmarks are public so they can be reproduced, right?  That's the
standard for scientific publication. I can help you reproduce them and put
up a webpage if you want to.  But I would suggest that it's only really
relevant to benchmark against C and C++.  The rest is just eye candy.

- Jason


Re: Google Summer of Code

2011-03-03 Thread Jason E. Aten
>
> maybe QtCreator (http://qt.nokia.com/products/developer-tools/)
> (is it LGPL?) can be used as a fork base - so the ide will be
> multi-platform at start
>

I second the idea of Qt based stuff.  Yes, Qt *is now* LGPL.  Just a recent
release. How awesome is that!?!

My other suggestion for GSOC projects is three words:  or, actually, three
characters:  ZeroMQ.  That would
have *much* broader reach than dbus, if not allow easy tunnelling of dbus
between hosts (sweet).

Jason

On Thu, Mar 3, 2011 at 6:25 PM, Andrei Alexandrescu <
seewebsiteforem...@erdani.org> wrote:

> On 3/3/11 6:10 PM, jasonw wrote:
>
>> Andrei Alexandrescu Wrote:
>>
>>  On 3/3/11 3:48 AM, Jens Mueller wrote:
>>>
>>>> Dear list,
>>>>
>>>> Trass3r brought it up and I think it's a very good idea. D is lacking
>>>> some man power. The mentoring deadline is 11th of March. There are
>>>> important and interesting projects students may work on.
>>>>
>>>> I'm writing this post seeking answers to
>>>> 1. What's the "official" D stand on this matter?
>>>> 2. Are there already students who have time and would like to join? What
>>>> are you interested in?
>>>>
>>>> The first question is currently the more important one. The organization
>>>> administrator has to submit an application until the above deadline.
>>>> The purpose of the second question is to get some feedback whether it
>>>> would be worthwhile to submit an application. Because later on students
>>>> need to propose/join a project.
>>>>
>>>> Jens
>>>>
>>>> PS
>>>> The FAQs on http://code.google.com/soc/ is very helpful.
>>>>
>>>
>>> Thanks for this idea. I plan to submit an organization application. As
>>> of now I'm unclear whether Digital Mars would be the best organization
>>> to apply, as opposed to an unincorporated "d-programming-language.org"
>>> entity. I'll discuss this with Walter. All, please chime in if you have
>>> related experience.
>>>
>>> We have a number of good projects to work on:
>>>
>>> * XML library
>>>
>>> * Networking library
>>>
>>> * IDE
>>>
>>> * Lexer/parser generator
>>>
>>> * Containers
>>>
>>> * Encryption/hashing
>>>
>>> * Thrift bindings
>>>
>>
>> What is Thrift? I read it's a Facebook technology which would benefit
>> your career, not D especially.
>>
>
> (Not speaking on behalf of Facebook.) That's not reading, it's reading plus
> speculating. Also, there are two mistakes. One, Thrift is an open source
> technology used outside Facebook. Second, with me on board, Facebook is
> possibly more likely than other influential companies to try out D. If
> Facebook does start using D systematically (and availability of Thrift
> bindings is an essential ingredient), then a lot of companies will take
> notice.
>
>
>  Not trying to be political, but as we
>> know Facebook and Google are competing enemies. Why do you think
>> Google would support some Facebook project financially?
>>
>
> I don't think they'd put things that way, but then I don't know.
>
>
>  Why not write D-Bus bindings? D-Bus is the de facto protocol on all
>> modern open source operating systems. About as important as COM or
>> CLR. COM is supported by D. Why not D-Bus? D-Bus is politically
>> neutral technology.
>>
>
> As long as we're just enumerating possible projects, sure.
>
>
> Andrei
>



-- 
Jason E. Aten, Ph.D.


Re: LLVM 3.0 type system changes

2011-03-07 Thread Jason E. Aten
On Mon, Mar 7, 2011 at 2:03 PM, filgood  wrote:

> Btw, what is the status of the D2 LLVM compiler?
>

Here are my impressions. I might title this short collection of thoughts,
"LDC2 - one user's early experience."

With alot of caveats, my experience as a user of D2 LLVM (which has been
only over the last week) has been good.  This is very subjective, and not
very scientific, but my two cents are: LDC2 is in impressive shape.  But I'm
new to D as well, so I'm not a very good judge of these things.

And here are the caveats: I personally have written only 8-line toy programs
with it.  LDC2, as far as I know, only does linux. But it does do linux64
(and I assume 32, but I've only tried 64).  It doesn't do anything else as
far as I know. I tried OSX and there's a bunch things that need careful
attention before that version will fly.

There's not very good documentation on building LDC2, and figuring out how
to build involved getting help on the chat group. But they are very
helpful.  When I asked Alexey about the gc issues he had mentioned (on a
wiki...maybe, I don't recall exactly), he wrote back and said that those
issues were now fixed.  Many of the optimization levels don't function, but
those should be trivial to fix.

The build instructions are pretty out of date and the makefiles aren't
really configured right, but after mucking with it for a bit, I got it to
build. If you can get it to build, it compiles druntime and phobos. That is
fairly impressive.  It showed good (not 100%, but good) conformance when
compared with the dmd2 output on a 100 test subset of the runnable category
of tests from https://github.com/D-Programming-Language/dmd. I don't know
how comprehensive that test suite is, but it reassured me enough to continue
to work with
the compiler.

Alexey Prokhin--as the current lead developer--deserves applause, loud
applause, for his work on LDC2.

Thank you Alexey!  This is very nice work.

- Jason


Re: LLVM 3.0 type system changes

2011-03-08 Thread Jason E. Aten
On Tue, Mar 8, 2011 at 2:15 AM, Jens Mueller  wrote,
on the old thread titled "LLVM 3.0 type system changes"

> Can you talk me through the building process? I tried it a week ago but
> with no success. Can you post the necessary steps on this list or to me
> in private?
>

I can try to sketch the important aspects, but obviously this protocol
hasn't been tested very widely, so feel free to post back any refinements.
Even better if you want to patch the repositories.  Some of these may be out
of order, especially the CMakeCache.txt edits, so if anything goes wrong,
check the variables mentioned below in CMakeCache.txt, and that your
ldc2.conf is correct. Those are the most important two control files.

I'll start a new thread with a new title to make this easy to find, and more
on topic.

I. Acknowledgements

Heavy credit for this is due to mrmonday on #ldc who guided me and
graciously offered
assistance.  Errors and typos are mine alone.

I. Protocol:  "Building LDC2 on Linux x86_64, as of Feb 28 2011":
II. Protcol: Building LDC2 on Linux x86_64.



Prereqs: cmake, git, hg, llvm2.8 from source already installed (package
installs of llvm2.8 might work too, I don't know).

# 1) Check out ldc2, druntime, and phobos2:
$ hg clone https://bitbucket.org/prokhin_alexey/ldc2
$ cd ldc2
$ git clone https://github.com/AlexeyProkhin/druntime
$ git clone https://github.com/AlexeyProkhin/phobos

# 2) Configure (apparently you can also use ccmake with gui, but I
didn't)$ cmake .


# 3) Fix up the CMakeCache.txt file:

# 3 a) edit CMakeCache.txt by hand, and set D_VERSION to 2, as on
these two lines:
...

//D language version - will originally be set to 1, change it to 2 like this:
D_VERSION:STRING=2

...

# 3 b) check on the variables mentioned in 3 d). I don't think that
they will be present yet, but
if they aren't, it can't hurt to fix them now as well.

# 3 c) make (this should hopefully build bin/ldc2 now )
$ make

# there will be some const warnings, but the build finishes for me.

# 3 d) edit CMakeCache.txt again (it will have changed/had appendixes
now I think) and fix these two variables:


...
//runtime source dir
RUNTIME_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/druntime
...
//phobos2 source dir
PHOBOS2_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/phobos
...

# 4) modify your your .bashrc to set PATH to include ./bin in front of
everything else

echo "export PATH=`pwd`/bin:\$PATH" >> ~/.bashrc
.  ~/.bashrc
which ldc2 # should show the one in ./bin now


# 5) build druntime and phobos with the command: make phobos2


$ make phobos2


# 6) edit   ./bin/ldc2.conf so that it points to the right places.  Here is
a copy of mine that seems to work. The point of the editing is to make sure
that paths are correct, especially the third -I (Include line), which was
often wrong out of the box when I was working with it.

jaten@dfw:~$ cat ldc2.conf
// This configuration file uses libconfig.
// See http://www.hyperrealm.com/libconfig/ for syntax details.

// The default group is required
default:
{
// 'switches' holds array of string that are appends to the command line
// arguments before they are parsed.
switches = [

 "-I/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/druntime/import",

 "-I/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/druntime/src",
"-I/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/phobos/",

 "-L-L/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/runtime/../lib",
"-defaultlib=phobos2",
"-debuglib=phobos2"
];
};
jaten@dfw:~$

# 7) Finished.  Test and note variances from the protocol above.


III. Appendix: Trouble shooting notes

If anything goes wrong, in my experience it was due to the settings in
either CMakeCache.txt, or in ./bin/ldc2.conf  Those are the two places I
would look at first when troubleshooting.

A) When you edit the CMakeCache.txt, be sure to check that PHOBOS2_DIR gets
set to ./phobos and not ../druntime

# example that works:
jaten@dfw:~$ cat CMakeCache.txt.afarm_works_ldc2 | grep PHOBOS2_DIR
PHOBOS2_DIR:PATH=/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/phobos

# example that DOES NOT work:
jaten@dfw:~$ cat CMakeCache.txt.dfw_notwork_ldc2 | grep PHOBOS2_DIR
PHOBOS2_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/../druntime


B) Be sure in CMakeCache.txt you have these three variables set correctly,
with obvious edits for your paths, not mine:

...
//D language version
D_VERSION:STRING=2
...
//runtime source dir
RUNTIME_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/druntime
...
//phobos2 source dir
PHOBOS2_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/phobos


how to build LDC2 on linux x86_64

2011-03-08 Thread Jason E. Aten
Let's add any comments to this protocol on this, it's own thread, rather
than on the old thread, to encapsulate and localize -- so as to make it
easier to find and replicate installion.

Thanks.

- Jason

On Tue, Mar 8, 2011 at 2:15 AM, Jens Mueller  wrote,
on the old thread titled "LLVM 3.0 type system changes"

> Can you talk me through the building process? I tried it a week ago but
> with no success. Can you post the necessary steps on this list or to me
> in private?
>

I can try to sketch the important aspects, but obviously this protocol
hasn't been tested very widely, so feel free to post back any refinements.
Even better if you want to patch the repositories.  Some of these may be out
of order, especially the CMakeCache.txt edits, so if anything goes wrong,
check the variables mentioned below in CMakeCache.txt, and that your
ldc2.conf is correct. Those are the most important two control files.

I'll start a new thread with a new title to make this easy to find, and more
on topic.

I. Acknowledgements

Heavy credit for this is due to mrmonday on #ldc who guided me and
graciously offered assistance.  Errors and typos are mine alone.


II. Protocol: Building LDC2 on Linux x86_64
Version: 07 March 2011


Prereqs: cmake, git, hg, llvm2.8 from source already installed (package
installs of llvm2.8 might work too, I don't know).

# 1) Check out ldc2, druntime, and phobos2:
$ hg clone https://bitbucket.org/prokhin_alexey/ldc2
$ cd ldc2
$ git clone https://github.com/AlexeyProkhin/druntime
$ git clone https://github.com/AlexeyProkhin/phobos


# 2) Configure (apparently you can also use ccmake with gui, but I
didn't)$ cmake .


# 3) Fix up the CMakeCache.txt file:

# 3 a) edit CMakeCache.txt by hand, and set D_VERSION to 2, as on
these two lines:
...

//D language version - will originally be set to 1, change it to 2 like this:
D_VERSION:STRING=2

...

# 3 b) check on the variables mentioned in 3 d). I don't think that
they will be present yet, but
if they aren't, it can't hurt to fix them now as well.

# 3 c) make (this should hopefully build bin/ldc2 now )

$ make

# there will be some const warnings, but the build finishes for me.

# 3 d) edit CMakeCache.txt again (it will have changed/had appendixes
now I think) and fix these two variables:


...
//runtime source dir
RUNTIME_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/druntime
...
//phobos2 source dir
PHOBOS2_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/phobos
...

# 4) modify your your .bashrc to set PATH to include ./bin in front of
everything else

echo "export PATH=`pwd`/bin:\$PATH" >> ~/.bashrc
.  ~/.bashrc
which ldc2 # should show the one in ./bin now


# 5) build druntime and phobos with the command: make phobos2


$ make phobos2


# 6) edit   ./bin/ldc2.conf so that it points to the right places.  Here is
a copy of mine that seems to work. The point of the editing is to make sure
that paths are correct, especially the third -I (Include line), which was
often wrong out of the box when I was working with it.

jaten@dfw:~$ cat ldc2.conf
// This configuration file uses libconfig.
// See http://www.hyperrealm.com/libconfig/ for syntax details.

// The default group is required
default:
{
// 'switches' holds array of string that are appends to the command line
// arguments before they are parsed.
switches = [

 "-I/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/druntime/import",

 "-I/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/druntime/src",
"-I/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/phobos/",

 "-L-L/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/runtime/../lib",
"-defaultlib=phobos2",
"-debuglib=phobos2"
];
};
jaten@dfw:~$

# 7) Finished.  Test and note variances from the protocol above.


III. Appendix: Troubleshooting notes

If anything goes wrong, in my experience it was due to the settings in
either CMakeCache.txt, or in ./bin/ldc2.conf  Those are the two places I
would look at first when troubleshooting.

A) When you edit the CMakeCache.txt, be sure to check that PHOBOS2_DIR gets
set to ./phobos and not ../druntime

# example that works:
jaten@dfw:~$ cat CMakeCache.txt.afarm_works_ldc2 | grep PHOBOS2_DIR
PHOBOS2_DIR:PATH=/home/jaten/pkg/llvm+lldb+ldc/prokhin_alexeys_ldc2/ldc2/phobos

# example that DOES NOT work:
jaten@dfw:~$ cat CMakeCache.txt.dfw_notwork_ldc2 | grep PHOBOS2_DIR
PHOBOS2_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/../druntime


B) Be sure in CMakeCache.txt you have these three variables set correctly,
with obvious edits for your paths, not mine:

...
//D language version
D_VERSION:STRING=2
...
//runtime source dir
RUNTIME_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/druntime
...
//phobos2 source dir
PHOBOS2_DIR:PATH=/home/jaten/pkg/ldc2/ldc2/phobos


Good luck!


Re: how to build LDC2 on linux x86_64

2011-03-08 Thread Jason E. Aten
On Tue, Mar 8, 2011 at 8:05 AM, Jason E. Aten  wrote:

-> NB, first refinement:  I think steps 5 & 6 might be out of order above.


Re: LLVM 3.0 type system changes

2011-03-08 Thread Jason E. Aten
On Tue, Mar 8, 2011 at 7:58 AM, Jason E. Aten  wrote:

> I. Protocol:  "Building LDC2 on Linux x86_64":
>

Please see the new thread titled, "how to build LDC2 on linux x86_64".
There is already one correction posted there already.  My apologies: I
didn't mean to replicate this in both threads.  A typo keypress posted it
here before it was ready.

Please make any refinements on how to install LDC2 on that thread.

Thanks!

Jason


Re: Is DMD 2.052 32-bit?

2011-03-08 Thread Jason E. Aten
On Wed, Mar 9, 2011 at 12:55 AM, Walter Bright
wrote:

> On 3/8/2011 1:23 PM, Trass3r wrote:
>
>> Yes, but you can compile an x64 dmd yourself on Linux.

>>>
>>> Is there any "how to"?
>>>
>>
>> IIRC you have to edit linux.mak to use -m64 instead of -m32.
>>
>
> It has worked in the past, but the 64 bit build is not regularly tested.
>

When I tried this last week, changing -m32 to -m64 got me a clean 64-bit
build of dmd2, with no build errors.  Very easy.

A caveat-- I tried the same search and replace s/32/64/ in places on the
druntime and phobos makefiles, but there was something more subtle going
on--the generated libraries built fine but were still 32-bit objects inside
the .a archives.  Somehow I wasn't passing the right flags to generate
64-bit libraries.

Is there a flag to tell dmd to compile to 64-bit objects?

Thanks,
Jason


Re: Is DMD 2.052 32-bit?

2011-03-10 Thread Jason E. Aten
An alternative: I would point out that LDC2 is 64-bit and open source.  It
lets you target a multitude of architectures, including, recently, OpenCL
for GPGPU.  Heck, you might even be able to cross compile from Linux and
target your system of choice.

So if you really want 64-bit support for platform X, you could likely add it
to LDC2 without too much work.

Jason

-- 
Jason E. Aten, Ph.D.


Re: Different types with auto

2011-03-17 Thread Jason E. Aten
> auto x1=1., x2=2., x3=3., x4=4., x5=5, x6=6.;

If the coder wanted them to all be doubles, it's easy to require that by 
just saying so, and then even x5 will be a double.

double x1=1., x2=2, ...

So it seems to me that auto does exactly what you asked it to here, and I 
actually prefer this behavior for conciseness and expressiveness sake.



Re: Library Development: What to finish/flesh out?

2011-03-17 Thread Jason E. Aten
On Thu, 17 Mar 2011 15:33:10 +, dsimcha wrote:
> 5.  Matrix operations:  SciD improvements that allow you to write matrix
> operations that look like normal math/MATLAB and optimizes them via
> expression templates so that a minimal number of temporary matrices are
> created. Uses/will use BLAS for multiplication.  Completion state: 
> Addition implemented.  Multiplication not.

Nice matrix ops get my vote for what I would find most useful. Having 
matrices with m.rownames and m.colnames (similar to R's rownames(m) and 
colnames(m) for a matrix m), would be great too.


a cabal for D ?

2011-03-17 Thread Jason E. Aten
Please correct me if I'm wrong, but I observe that there doesn't appear 
to be a package management system / standard repository for D libraries.  
Or is there?

I'm talking about something as easy to use as R's CRAN,
> install.packages("rforest")

or cpan for perl, ctan for latex, dpgk/apt for debian, cabal for Haskell/
Hackage, etc.

If there's not a commonly utilized one currently, perhaps we could 
"borrow" cabal, with a trivial port.  cabal is Haskell's package manager.

Not only does having a standard package install system facilitate 
adoption, it greatly facilitates code sharing and library maturation.


Re: Dream package management system (Was: a cabal for D ?)

2011-03-17 Thread Jason E. Aten
>> On 3/17/11 4:00 PM, Tomek SowiƄski wrote:
>> Yes, we need it badly.
>> I think it's a good moment to start a discussion. First off, what
>> exactly do we want from a package management system?

> On Thu, 17 Mar 2011 16:28:37 -0500, Andrei Alexandrescu wrote:
> Yah, would be great. It would be awesome if an expert in e.g. apt would
> join D and create the design of a package management system.

I would invite interested parties to review the cabal/cabal-install/
Hackage system documentation. It is described here.

http://www.haskell.org/haskellwiki/How_to_write_a_Haskell_program

Haskell has over 2000 contributed user libraries--largely because they 
have such a nice, easy to use, and well documented package system.

Rather than expend much effort, in the tradition of lazy evaluation and 
getting 80/20 the way there, I would prefer to just do a clone of an 
already successful system such as cabal (or ?) and then take feedback to 
based on actual usage with D.

Thoughts?  Comments welcome.

Jason


Re: Dream package management system (Was: a cabal for D ?)

2011-03-17 Thread Jason E. Aten
Somewhat tongue in cheek, we could call it dabal.

As in, "get on dabal!"  :-)


Re: a cabal for D ?

2011-03-18 Thread Jason E. Aten
On Fri, 18 Mar 2011 18:42:36 +, Russel Winder wrote:
> I still think basing a D packaging system on Git to be the best
> direction.

Basing package distribution on Git or hg could be a big win, and would 
help establish a customary case for revision control which is one of the 
things that make cabal work so well (they use darcs for everything). I 
find these revision control systems ver fast and very easy to use.

The other thing that cabal standardizes is the make/build system.  I've 
updated bud/build to compile under D2, with all the latest patches, but 
I'm far from convinced that it should be a make system of choice.  I have 
limited experience here, but a "D aware" build system would seem to be 
highly preferable.

What are people's experiences with the various options for build systems 
with D?

To me, I like the design goals of Andreas Fredriksson's Tundra build 
system (he wants speed of incremental of builds prioritized over all 
else, which means utilizing multicores for builds as much as possible to 
get the quickest build), because fast builds are critical for game 
development, where D is very attractive.  Game projects compile tens of 
thousands of files. Tundra is GPL and it would be easy to extend to 
support D.

http://voodoo-slide.blogspot.com/2010/08/tundra-my-build-system.html
https://github.com/deplinenoise/tundra
https://github.com/deplinenoise/tundra/downloads


incremental builds for D projects... challenging or close at hand?

2011-03-19 Thread Jason E. Aten
> On Sat, 19 Mar 2011 12:19:58 +0100, Jacob Carlborg wrote:
>> What are people's experiences with the various options for build
>> systems with D?
> 
> It's not very easy to make an incremental build system for D because of
> several reasons. Some are due to how the language works and some are due
> to how DMD works:
> 
> * DMD doesn't output all data in all the object files - This can perhaps
> be solved by compiling with the -lib switch
> 
> * When you change one D file you need to recompile ALL files that depend
> on the changed file. To compare with C/C++ which has source and header
> files you only need to recompile the source file if you change it
> 
> * DMD doesn't keep the fully qualified module name when naming object
> files resulting in foo.bar will conflict with bar.bar. Issue 3541.

[The above is from the packaging system discussion in the "a cabal for 
D?" thread; here I am branching this to a new topic because I'd like 
anyone interested in incremental build processes to notice and contribute 
if they have input.]

That is an interesting observation, Jacob. Thank you for pointing that 
out. 

Is there anything else (open question anyone) that would prevent D 
projects from doing incremental builds?  Lack of support for incremental 
builds is a show stopper.  Or in this case, the show would never get 
funded to begin with.

Or to ask it another way, what would it take to get incremental builds?


new dr. dobbs article by Walter

2011-04-07 Thread Jason E. Aten
Dr. Dobb's Journal just published a blog entry by Walter that discusses 
some of the motivation and design for the std/conv.d library. As a 
relative newcomer to D, I found it quite an interesting read.

User Defined Literals in the D Programming Language
06 April 2011
http://drdobbs.com/blogs/tools/229401068