Jump to page: 1 2 3
Thread overview
reggae v0.5.0: new features in the D meta-build system
Sep 16, 2015
Atila Neves
Sep 16, 2015
Kagamin
Sep 22, 2015
Per Nordlöw
Sep 22, 2015
Joakim
Sep 23, 2015
Per Nordlöw
Sep 23, 2015
Jacob Carlborg
Sep 24, 2015
Atila Neves
Sep 25, 2015
Jacob Carlborg
Sep 25, 2015
Atila Neves
Sep 25, 2015
anonymous
Sep 25, 2015
Atila Neves
Sep 25, 2015
anonymous
Sep 26, 2015
Jacob Carlborg
Sep 26, 2015
Andy Smith
Sep 26, 2015
Andy Smith
Sep 26, 2015
Sönke Ludwig
Sep 23, 2015
NVolcz
Sep 23, 2015
Jacob Carlborg
Sep 24, 2015
Atila Neves
Sep 25, 2015
Nordlöw
Sep 26, 2015
Jason White
Sep 28, 2015
Atila Neves
September 16, 2015
http://code.dlang.org/my_packages/reggae

What's new:
. API changes: main high-level rules are now called objectFiles, link, and scriptlike
. Optional top-level targets: aren't built by default but can be built on request
. Phony targets
. staticLibrary rule that does what it says
. unityBuild rule for C/C++ projects that builds a binary as one translation unit to speed up compilation
. Support for writing build descriptions in Python, Ruby, Lua and JavaScript

That last one might cause scratchy head syndrome. Why would I want to enable writing builds in a language other than D? Here's why:

1. Interpreting a build description is faster than compiling, linking and running it. Not a big deal since the build description isn't read often, but it's true
2. No confusion about when to use `enum` and when to use `alias`. Again, probably wasn't catching anybody unawares but also true
3. Not having to install a D compiler in order to generate builds - I ran into this issue at work the other day trying to use reggae on a weird VM with no root access
4. More importantly... to not limit reggae to only D developers

There are quite a few build systems / tools out there in which different languages are used. Almost all of them are only used by developers of their language niche: Ruby/Rake, Python/SCons/Waf, Groovy/Java/Gradle, Haskell/Shake, etc. This is my attempt to make reggae appeal to a wider audience.

I wanted to add a Lisp too but then I'd have to pick a dialect and an implemetation, only to annoy fans of other dialects. I might just do Emacs Lisp to annoy everyone equally! Also, for the lulz.

Atila
September 16, 2015
This link should work for everyone: http://code.dlang.org/packages/reggae

(I never tried reggae. Maybe I should, it looks good.)

LMB


On Wed, Sep 16, 2015 at 11:07 AM, Atila Neves via Digitalmars-d-announce < digitalmars-d-announce@puremagic.com> wrote:

> http://code.dlang.org/my_packages/reggae
>
> What's new:
> . API changes: main high-level rules are now called objectFiles, link, and
> scriptlike
> . Optional top-level targets: aren't built by default but can be built on
> request
> . Phony targets
> . staticLibrary rule that does what it says
> . unityBuild rule for C/C++ projects that builds a binary as one
> translation unit to speed up compilation
> . Support for writing build descriptions in Python, Ruby, Lua and
> JavaScript
>
> That last one might cause scratchy head syndrome. Why would I want to enable writing builds in a language other than D? Here's why:
>
> 1. Interpreting a build description is faster than compiling, linking and
> running it. Not a big deal since the build description isn't read often,
> but it's true
> 2. No confusion about when to use `enum` and when to use `alias`. Again,
> probably wasn't catching anybody unawares but also true
> 3. Not having to install a D compiler in order to generate builds - I ran
> into this issue at work the other day trying to use reggae on a weird VM
> with no root access
> 4. More importantly... to not limit reggae to only D developers
>
> There are quite a few build systems / tools out there in which different languages are used. Almost all of them are only used by developers of their language niche: Ruby/Rake, Python/SCons/Waf, Groovy/Java/Gradle, Haskell/Shake, etc. This is my attempt to make reggae appeal to a wider audience.
>
> I wanted to add a Lisp too but then I'd have to pick a dialect and an implemetation, only to annoy fans of other dialects. I might just do Emacs Lisp to annoy everyone equally! Also, for the lulz.
>
> Atila
>


September 16, 2015
Ruby link points to reggae-python.
September 22, 2015
On Wednesday, 16 September 2015 at 14:07:17 UTC, Atila Neves wrote:
> http://code.dlang.org/my_packages/reggae
>
> What's new:
> Atila

If you want to build a really revolutionary *new* build system you should turn reggae into a client-server-architecture that listens to file moves/copies/notifications via inotify on Linux. I'm not sure how the develop/builder interface would look like then, however. A web-client would be one way.

SCons has a very hidden feature called interactive mode via `--interactive` that supports instantaenous incremental builds via a very primitive CLI that basically supports to commands:

- build/b TARGET
- clean/c TARGET

This however does not rebuild the dependency tree between invokations which is a serious limitation. I believe reggae could be even smarter here.

I've spent the last two years designing and implementing a SCons-based build system at work. Involving, among others, adding support for Ada and auto-detection of include-paths as you have done in reggae.

I you want any advice on this matter please contact me. I'd be glad to be of service.

Good luck!
September 22, 2015
On Tuesday, 22 September 2015 at 12:39:48 UTC, Per Nordlöw wrote:
> On Wednesday, 16 September 2015 at 14:07:17 UTC, Atila Neves wrote:
>> http://code.dlang.org/my_packages/reggae
>>
>> What's new:
>> Atila
>
> If you want to build a really revolutionary *new* build system you should turn reggae into a client-server-architecture that listens to file moves/copies/notifications via inotify on Linux. I'm not sure how the develop/builder interface would look like then, however. A web-client would be one way.

Like ekam?

https://github.com/sandstorm-io/ekam

We talked about it when I interviewed Atila:

http://arsdnet.net/this-week-in-d/sep-06.html
September 23, 2015
On 2015-09-22 14:39, Per Nordlöw wrote:

> SCons has a very hidden feature called interactive mode via
> `--interactive` that supports instantaenous incremental builds via a
> very primitive CLI that basically supports to commands:

Incremental builds in D are currently not reliable. Something about templates not being outputted to all object files it need to.

-- 
/Jacob Carlborg
September 23, 2015
On Tuesday, 22 September 2015 at 13:22:25 UTC, Joakim wrote:
> Like ekam?
> https://github.com/sandstorm-io/ekam

Sounds very promising!

> We talked about it when I interviewed Atila:
> http://arsdnet.net/this-week-in-d/sep-06.html

Thanks!
September 23, 2015
On Tuesday, 22 September 2015 at 12:39:48 UTC, Per Nordlöw wrote:
> If you want to build a really revolutionary *new* build system you should turn reggae into a client-server-architecture that listens to file moves/copies/notifications via inotify on Linux. I'm not sure how the develop/builder interface would look like then, however. A web-client would be one way.
>
> </snip>

I heard that SBT does something similar (http://www.se-radio.net/2015/07/se-radio-episode-231-joshua-suereth-and-matthew-farwell-on-sbt-and-software-builds/).

From what I understand it is faster due to that you can skip the overhead of startup.
I also presume it is a big win for user experience.
September 23, 2015
On 2015-09-23 08:41, NVolcz wrote:

> I heard that SBT does something similar
> (http://www.se-radio.net/2015/07/se-radio-episode-231-joshua-suereth-and-matthew-farwell-on-sbt-and-software-builds/).
>
>
>  From what I understand it is faster due to that you can skip the
> overhead of startup.
> I also presume it is a big win for user experience.

You can do both with SBT. But I though the main reason was because of the JVM startup time.

-- 
/Jacob Carlborg
September 24, 2015
On Wednesday, 23 September 2015 at 06:16:08 UTC, Jacob Carlborg wrote:
> On 2015-09-22 14:39, Per Nordlöw wrote:
>
>> SCons has a very hidden feature called interactive mode via
>> `--interactive` that supports instantaenous incremental builds via a
>> very primitive CLI that basically supports to commands:
>
> Incremental builds in D are currently not reliable. Something about templates not being outputted to all object files it need to.

That's not been my experience at all using reggae. I only do incremental builds now and have never run into a problem. Can you give an example?

Atila
« First   ‹ Prev
1 2 3