Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Jason White via Digitalmars-d-announce
On Wednesday, 15 June 2016 at 12:02:56 UTC, Andrei Alexandrescu 
wrote:
In all likelihood. One issue with build systems is there's no 
clear heir to make. There are so many, including a couple (!) 
by our community, each with its pros and cons. Which one should 
we choose?


You should choose mine, obviously. ;)

In all seriousness, Make will probably live as long as C. There 
are a *ton* of Makefiles out there that no one wants translate to 
a new build system. Part of the reason for that is probably 
because they are so friggin' incomprehensible and its not exactly 
glamorous work. This is why I'm working on that tool to allow 
Button to build existing Makefiles [1]. It may not work 100% of 
the time, but it should help a lot with migrating away from Make.


[1] https://github.com/jasonwhite/button-make


Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Jason White via Digitalmars-d-announce
On Wednesday, 15 June 2016 at 12:00:52 UTC, Andrei Alexandrescu 
wrote:
I'd say the gating factor is -j. If an build system doesn't 
implement the equivalent of make -j, that's a showstopper.


Don't worry, there is a --threads option and it defaults to the 
number of logical cores.


I just did some tests and the reason it is slower than Make is 
because of the automatic dependency detection on every single 
command. I disabled the automatic dependency detection and 
compared it with Make again. Button was then roughly the same 
speed as Make -- sometimes it was faster, sometimes slower. 
Although, I think getting accurate dependencies at the cost of 
slightly slower builds is very much a worthwhile trade-off.


Re: Work in Amsterdam

2016-06-15 Thread Andrei Alexandrescu via Digitalmars-d-announce

On 06/15/2016 04:44 PM, Jack Stouffer wrote:

On Wednesday, 15 June 2016 at 19:48:07 UTC, Dejan Lekic wrote:

LinkedIn has the D Developer Network (DDN) group with 1900 members (at
the moment of writing this post): https://www.linkedin.com/groups/3923820


I didn't know about this either. You should make a separate announce
post about this.


Should be accessible from the website and wiki. -- Andrei


Re: Work in Amsterdam

2016-06-15 Thread Jack Stouffer via Digitalmars-d-announce

On Wednesday, 15 June 2016 at 19:48:07 UTC, Dejan Lekic wrote:
LinkedIn has the D Developer Network (DDN) group with 1900 
members (at the moment of writing this post): 
https://www.linkedin.com/groups/3923820


I didn't know about this either. You should make a separate 
announce post about this.


Re: Work in Amsterdam

2016-06-15 Thread Ali Çehreli via Digitalmars-d-announce

On 06/15/2016 12:48 PM, Dejan Lekic wrote:

On Monday, 13 June 2016 at 22:45:15 UTC, Márcio Martins wrote:

Forgive me if this is not the best place for this sort of posts, but
we are looking for experienced developers willing to learn D to join
our development team in Amsterdam. We are a fast-growing travel
e-commerce startup focused on themed vacation packages.

You'll be part of our small and agile development team, working with
D/vibe.d on a daily basis, with the occasional javascript for the
client-side of things.

Learn more on https://www.linkedin.com/jobs2/view/140710158


LinkedIn has the D Developer Network (DDN) group with 1900 members (at
the moment of writing this post): https://www.linkedin.com/groups/3923820

I've posted a link to this job on the DDN's group job list few minutes ago.


I've just sent a request to join but I wasn't aware of it until I've 
read your message. How does one know about the existence of such groups?


Ali



Re: Work in Amsterdam

2016-06-15 Thread Dejan Lekic via Digitalmars-d-announce

On Monday, 13 June 2016 at 22:45:15 UTC, Márcio Martins wrote:
Forgive me if this is not the best place for this sort of 
posts, but we are looking for experienced developers willing to 
learn D to join our development team in Amsterdam. We are a 
fast-growing travel e-commerce startup focused on themed 
vacation packages.


You'll be part of our small and agile development team, working 
with D/vibe.d on a daily basis, with the occasional javascript 
for the client-side of things.


Learn more on https://www.linkedin.com/jobs2/view/140710158


LinkedIn has the D Developer Network (DDN) group with 1900 
members (at the moment of writing this post): 
https://www.linkedin.com/groups/3923820


I've posted a link to this job on the DDN's group job list few 
minutes ago.


Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Atila Neves via Digitalmars-d-announce
On Wednesday, 15 June 2016 at 15:39:47 UTC, Andrei Alexandrescu 
wrote:

On 06/15/2016 08:05 AM, John Colvin wrote:
On Wednesday, 15 June 2016 at 11:47:00 UTC, Walter Bright 
wrote:

On 6/15/2016 4:07 AM, Edwin van Leeuwen wrote:

How about using reggae?

https://github.com/atilaneves/phobos/blob/reggae/reggaefile.d


I haven't studied either.


If you do study that reggae file, remember that it's a 
deliberate
transliteration of the makefile and therefore is a lot more 
verbose than
it *could* be if done from a clean slate or as a proper 
translation.
IIRC it was done to show that reggae could do literally 
everything the

makefile does, in the same way.


Does it do -j? -- Andrei


Short answer: yes.

Long answer: it has multiple backends. I assume the one that'd be 
used for dmd/druntime/phobos would be the binary (compiled D 
code) one since that one doesn't have dependencies on anything 
else. It does what ninja does, which is to use the number of 
cores on the system. There are also the ninja, make and tup 
backends and those do what they do.


I've been meaning to update my reggae branch for a while but 
haven't been able to gather enough motivation. The part that just 
builds the library is easy (I haven't tried compiling the code 
below):


alias cObjs = objectFiles!(Sources!("etc/c/zlib"),
   Flags("-m64 -fPIC -O3"));
alias dObjs = objectFiles!(Sources!(["std", "etc"]),
   Flags("-conf= -m64 -w -dip25 -O 
-release"),

   ImportPaths("../druntime/import"));
auto static_phobos = 
link("$project/generated/linux/release/64/libphobos",

  cObjs ~ dObjs,
  "-lib");

The problem is all the other targets, and I can't break any of 
them, and they're all annoying in their own special way. The 
auto-tester only covers a fraction and I have no idea if all of 
them are still being used by anyone. Does anyone do MinGW builds 
with posix.mak for instance? I'm half convinced it's broken.


Atila



Release candidate 1.0.0-rc.1 is out

2016-06-15 Thread Sönke Ludwig via Digitalmars-d-announce

Am 07.06.2016 um 11:54 schrieb Sönke Ludwig:

DUB 1.0.0 is nearing completion. The new feature over 0.9.25 is support
for single-file packages, which can be used to write shebang-style
scripts on Posix systems:

 #!/usr/bin/env dub
 /+ dub.sdl:
 name "colortest"
 dependency "color" version="~>0.0.3"
 +/

 void main()
 {
 import std.stdio : writefln;
 import std.experimental.color.conv;
 import std.experimental.color.hsx;
 import std.experimental.color.rgb;

 auto yellow = RGB!("rgb", float)(1.0, 1.0, 0.0);
 writefln("Yellow in HSV: %s", yellow.convertColor!(HSV!()));
 }

With "chmod +x" it can then simply be run as ./colortest.d.

Apart from that, the release contains some bug fixes, most notably it
doesn't query the registry for each build any more.

Full change log:
https://github.com/D-Programming-Language/dub/blob/master/CHANGELOG.md

Download (Latest Preview):
http://code.dlang.org/download


The first release candidate is out now! If nothing else comes up, the 
release is scheduled for next Monday.


For this release, I've restricted the recipe comments to the /+ +/ style 
and to be the first thing in the file apart from the optional shebang 
line. This leaves all options open to relax the rules later without 
losing backwards compatibility and allows #872 [1] to be finished with 
less time pressure.


[1]: https://github.com/dlang/dub/pull/872


Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Edwin van Leeuwen via Digitalmars-d-announce
On Wednesday, 15 June 2016 at 15:39:47 UTC, Andrei Alexandrescu 
wrote:

On 06/15/2016 08:05 AM, John Colvin wrote:
On Wednesday, 15 June 2016 at 11:47:00 UTC, Walter Bright 
wrote:

On 6/15/2016 4:07 AM, Edwin van Leeuwen wrote:

How about using reggae?

https://github.com/atilaneves/phobos/blob/reggae/reggaefile.d


I haven't studied either.


If you do study that reggae file, remember that it's a 
deliberate
transliteration of the makefile and therefore is a lot more 
verbose than
it *could* be if done from a clean slate or as a proper 
translation.
IIRC it was done to show that reggae could do literally 
everything the

makefile does, in the same way.


Does it do -j? -- Andrei


It can work with multiple backends (make/tup/ninja), which all 
support -j. There is also a binary backend (creates an 
executable), not sure if that supports -j natively.


Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Andrei Alexandrescu via Digitalmars-d-announce

On 06/15/2016 08:05 AM, John Colvin wrote:

On Wednesday, 15 June 2016 at 11:47:00 UTC, Walter Bright wrote:

On 6/15/2016 4:07 AM, Edwin van Leeuwen wrote:

How about using reggae?

https://github.com/atilaneves/phobos/blob/reggae/reggaefile.d


I haven't studied either.


If you do study that reggae file, remember that it's a deliberate
transliteration of the makefile and therefore is a lot more verbose than
it *could* be if done from a clean slate or as a proper translation.
IIRC it was done to show that reggae could do literally everything the
makefile does, in the same way.


Does it do -j? -- Andrei


Re: Beta release DUB 1.0.0-beta.1

2016-06-15 Thread Nick Sabalausky via Digitalmars-d-announce

On 06/13/2016 07:31 AM, Kagamin wrote:

On Friday, 10 June 2016 at 17:45:54 UTC, Nick Sabalausky wrote:

On 06/08/2016 11:04 AM, Kagamin wrote:

BTW do people find nested comments particularly useful?


God yes. It's the *only* block comment I ever use. Non-nesting comment
blocks are a worthless PITA with no real benefit: You can't comment
out a block if the block already contains a block comment.


Block comments are low-level: the commented code changes its lexical
structure completely, but you probably don't expect it and want it to
behave and be properly commented at a higher level, which is provided by
version statement.


No, I WANT commenting-out to be low-level, but just not have a stupid, 
useless, badly-chosen rule for when the block ends.


Version(none) is too high-level. I can't use it *within* a statement, 
which means I'd have to use one method to "comment-out" blocks of code 
and a different method when I comment out ex., params, args, or parts of 
an expression (all of which I occasionally do). But why would I want to 
do that when there's one construct (nesting block comments) that works 
perfectly for both AND actually gets highlighted as "disabled" in every 
editor and HTML highlighter out there so I can actually see at a glance 
what's disabled?




Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread John Colvin via Digitalmars-d-announce

On Wednesday, 15 June 2016 at 11:47:00 UTC, Walter Bright wrote:

On 6/15/2016 4:07 AM, Edwin van Leeuwen wrote:

How about using reggae?

https://github.com/atilaneves/phobos/blob/reggae/reggaefile.d


I haven't studied either.


If you do study that reggae file, remember that it's a deliberate 
transliteration of the makefile and therefore is a lot more 
verbose than it *could* be if done from a clean slate or as a 
proper translation. IIRC it was done to show that reggae could do 
literally everything the makefile does, in the same way.


Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Andrei Alexandrescu via Digitalmars-d-announce

On 6/15/16 1:42 AM, Jason White wrote:

On Monday, 13 June 2016 at 20:12:27 UTC, Walter Bright wrote:

On 6/12/2016 4:27 PM, Jason White wrote:

I don't understand this dependency-phobia.


It's the "first 5 minutes" thing. Every hiccup there costs us maybe
half the people who just want to try it out.


I suppose you're right. It is just frustrating that people are unwilling
to adopt clearly superior tools simply because it would introduce a new
dependency. I'm sure D itself has the same exact problem.


In all likelihood. One issue with build systems is there's no clear heir 
to make. There are so many, including a couple (!) by our community, 
each with its pros and cons. Which one should we choose? -- Andrei




Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Andrei Alexandrescu via Digitalmars-d-announce

On 6/15/16 1:29 AM, Jason White wrote:

On Tuesday, 14 June 2016 at 14:57:52 UTC, Andrei Alexandrescu wrote:

On 6/12/16 8:27 PM, Walter Bright wrote:

On 5/30/2016 12:16 PM, Jason White wrote:

Here is an example build description for DMD:

https://github.com/jasonwhite/dmd/blob/button/src/BUILD.lua

I'd say that's a lot easier to read than this crusty thing:

https://github.com/dlang/dmd/blob/master/src/posix.mak


Yes, the syntax looks nice.


Cool. Difference in size is also large. Do they do the same things? --
Andrei


Not quite. It doesn't download a previous version of dmd for
bootstrapping and it doesn't handle configuration (e.g., x86 vs x64).
About all it does is the bare minimum work necessary to create the dmd
executable. I basically ran `make all -n` and converted the output
because it's easier to read than the Makefile itself.


OK. I guess at least some of that stuff should be arguably scripted.


Building from scratch takes about 7 seconds on my machine (using 8 cores
and building in /tmp). Make takes about 5 seconds. Guess I need to do
some optimizing. :-)


I'd say the gating factor is -j. If an build system doesn't implement 
the equivalent of make -j, that's a showstopper.



Andrei



Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Stefan Koch via Digitalmars-d-announce

On Wednesday, 15 June 2016 at 05:42:21 UTC, Jason White wrote:

On Monday, 13 June 2016 at 20:12:27 UTC, Walter Bright wrote:

On 6/12/2016 4:27 PM, Jason White wrote:

I don't understand this dependency-phobia.


It's the "first 5 minutes" thing. Every hiccup there costs us 
maybe half the people who just want to try it out.


I suppose you're right. It is just frustrating that people are 
unwilling to adopt clearly superior tools simply because it 
would introduce a new dependency. I'm sure D itself has the 
same exact problem.


I am confident can build a lua to D transcompiler that works at 
CTFE.


Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Walter Bright via Digitalmars-d-announce

On 6/15/2016 4:07 AM, Edwin van Leeuwen wrote:

How about using reggae?

https://github.com/atilaneves/phobos/blob/reggae/reggaefile.d


I haven't studied either.


Re: LDC 1.0.0 has been released!

2016-06-15 Thread Jacob Carlborg via Digitalmars-d-announce

On 2016-06-07 14:59, FreeSlave wrote:


Yes. Look at https://issues.dlang.org/show_bug.cgi?id=16096

I don't have such problem with ldc 1.0.0.


Fixed, unless you already have noticed.

--
/Jacob Carlborg


Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Edwin van Leeuwen via Digitalmars-d-announce

On Monday, 13 June 2016 at 00:27:47 UTC, Walter Bright wrote:

On 5/30/2016 12:16 PM, Jason White wrote:

Here is an example build description for DMD:

https://github.com/jasonwhite/dmd/blob/button/src/BUILD.lua

I'd say that's a lot easier to read than this crusty thing:

https://github.com/dlang/dmd/blob/master/src/posix.mak


Yes, the syntax looks nice.


How about using reggae?

https://github.com/atilaneves/phobos/blob/reggae/reggaefile.d


Re: Button: A fast, correct, and elegantly simple build system.

2016-06-15 Thread Fool via Digitalmars-d-announce

On Wednesday, 15 June 2016 at 05:04:28 UTC, Jason White wrote:
If you want to depend on the compiler version, then you can add 
a dependency on the compiler executable. It might be a good 
idea to have Button do this automatically for every command. 
That is, finding the path to the command's executable and 
making it a dependency.


I think you are fine if adding a dependency works. If it's done 
automatically someone will ask for a way to disable this feature.



However, I can think of another scenario where it would just as 
well be incorrect behavior: Linking an executable and then 
running tests on it. The executable could then be seen by the 
build system as the "secondary" or "intermediate" output. If it 
gets deleted, I think we'd want it rebuilt.


I'm not sure how Make or Shake implement this without doing it 
incorrectly in certain scenarios. There would need to be a way 
to differentiate between necessary and unnecessary outputs. 
I'll have to think about this more.


Shake has 'order only' dependencies that cover the 'intermediate' 
case. GNU make supports special targets '.INTERMEDIATE' and 
'.SECONDARY' [1].


[1] 
http://www.gnu.org/software/make/manual/make.html#Chained-Rules


Re: LDC+Dub+Vibe.d work on SmartOS 64bit now

2016-06-15 Thread Alexandr Basko via Digitalmars-d-announce

On Thursday, 9 June 2016 at 19:37:29 UTC, Alexandr Basko wrote:

On Thursday, 9 June 2016 at 14:25:07 UTC, Joakim wrote:

On Thursday, 9 June 2016 at 12:48:24 UTC, Alexandr Basko wrote:
On Wednesday, 8 June 2016 at 13:30:26 UTC, Alexandr Basko 
wrote:

[...]


Some tests failed. More than that, they walked to the 
core.sync.semaphore test and frozen on it (no more resources 
are eating by OS from last evening:


[...]


Until you figure it out, you can skip a module's tests with 
ctest -E, ie "ctest -E core.sync.semaphore".



Other results are:

[...]


You may need to add some library flags for curl, as I did last 
summer:


http://forum.dlang.org/post/eipycgdrrjtuuyglp...@forum.dlang.org


I will do these tests (according your recommendations) again on 
Monday and post results here after getting them.


I have made tests, but some tests failed. We are analyzing 
errors, and will done all for tests passed.