Jump to page: 1 2
Thread overview
rund users welcome
Sep 08, 2018
Jonathan Marler
Sep 09, 2018
Vladimir Panteleev
Sep 09, 2018
Jonathan Marler
Sep 09, 2018
Vladimir Panteleev
Sep 09, 2018
Jonathan Marler
Sep 11, 2018
Vladimir Panteleev
Sep 11, 2018
Jonathan Marler
Sep 11, 2018
Kagamin
Sep 11, 2018
Jonathan Marler
Sep 11, 2018
Kagamin
Sep 11, 2018
Jonathan Marler
Sep 11, 2018
Andre Pany
Sep 12, 2018
Jonathan Marler
Sep 12, 2018
aliak
Sep 12, 2018
Jonathan Marler
Sep 20, 2018
aliak
Sep 20, 2018
Jonathan Marler
September 08, 2018
I've rewritten rdmd into a new tool called "rund" and have been using it for about 4 months. It runs about twice as fast making my workflow much "snappier". It also introduces a new feature called "source directives" where you can add special comments to the beginning of your D code to set various compiler options like import paths, versions, environment variable etc.  Feel free to use it, test it, provide feedback, contribute.

https://github.com/marler8997/rund

September 08, 2018
On 09/08/2018 12:24 AM, Jonathan Marler wrote:
> I've rewritten rdmd into a new tool called "rund" and have been using it for about 4 months. It runs about twice as fast making my workflow much "snappier". It also introduces a new feature called "source directives" where you can add special comments to the beginning of your D code to set various compiler options like import paths, versions, environment variable etc.  Feel free to use it, test it, provide feedback, contribute.
> 
> https://github.com/marler8997/rund
> 

Very cool!
September 09, 2018
On Saturday, 8 September 2018 at 04:24:20 UTC, Jonathan Marler wrote:
> I've rewritten rdmd into a new tool called "rund" and have been using it for about 4 months. It runs about twice as fast making my workflow much "snappier". It also introduces a new feature called "source directives" where you can add special comments to the beginning of your D code to set various compiler options like import paths, versions, environment variable etc.  Feel free to use it, test it, provide feedback, contribute.

Thanks!

I tried integrating it into my scripts as an rdmd replacement. Currently, the following are missing:

- -od (e.g. for -od.)
- --build-only should imply -od.
- No --main, though that can probably be substituted with -main
- The .d extension is not implied, like for dmd/rdmd

Also, --pass is weird. Why not use the standard-ish -- ?

Was there a problem with the idea of forking rdmd? The above plus things like its -lib support would then not be needed to be reimplemented.

September 09, 2018
On Sunday, 9 September 2018 at 03:33:49 UTC, Vladimir Panteleev wrote:
> On Saturday, 8 September 2018 at 04:24:20 UTC, Jonathan Marler wrote:
>> I've rewritten rdmd into a new tool called "rund" and have been using it for about 4 months. It runs about twice as fast making my workflow much "snappier". It also introduces a new feature called "source directives" where you can add special comments to the beginning of your D code to set various compiler options like import paths, versions, environment variable etc.  Feel free to use it, test it, provide feedback, contribute.
>
> Thanks!
>
> I tried integrating it into my scripts as an rdmd replacement.

Cool thanks for giving it a try.

> Currently, the following are missing:
>
> - -od (e.g. for -od.)

Hmmm, yeah it looks like rund is currently overriding this.  I've attempted a fix but it's hard to cover all the different combinations of -of/-od/etc.  I'll need to fill out the rest of the tests soon.

> - --build-only should imply -od.

Maybe...I actually have use cases where I want "--build-only" but want the executable to be built in the normal cache location.  Build the program and cache it but don't run it yet.

> - No --main, though that can probably be substituted with -main

Yeah, I don't see any reason to duplicate the flag already supported by dmd.  Maybe there's a reason I'm not aware of.

> - The .d extension is not implied, like for dmd/rdmd

I haven't come up with any reasons to support this.  Maybe you can enlighten me?

>
> Also, --pass is weird. Why not use the standard-ish -- ?

It is a bit weird.  I've never had a reason to use this option myself.  Is this the syntax you are thinking of?

rund other.d main.d -- <program-args>...

The problem with this is it's not "composable".  Say you were running a D program that also used "--", then it's ambiguous whether the "--" belongs to rund or to the program being compiled.  But maybe I'm missing something?  If you have an idea that's less weird than "--pass=<src>.d" then I'm all for it :)

>
> Was there a problem with the idea of forking rdmd? The above plus things like its -lib support would then not be needed to be reimplemented.

I would actually consider this a "fork" of rdmd.  But I rebuilt it from the ground up, re-integrating each feature one by one so I could ensure they were "cohesive".  I also haven't integrated all features from rdmd yet.  I will probably integrate more of them when I see the need.  So far it's just been me using it so that's why I want to get people using it so we can flush out the rest.

The big difference with rdmd and rund is that rund is not compatible with compilers that don't support "-i".  Since this is such a fundamental change, I thought a rename made sense, and "rund" fits the modern times where we have more D compilers than just dmd.


September 09, 2018
On Sunday, 9 September 2018 at 04:32:32 UTC, Jonathan Marler wrote:
>> - --build-only should imply -od.
>
> Maybe...I actually have use cases where I want "--build-only" but want the executable to be built in the normal cache location.  Build the program and cache it but don't run it yet.

Adding a different switch to get rdmd's behavior would work too.

FWIW, here's when this was added in rdmd:
https://github.com/dlang/tools/pull/14

Later amended here (so it's not quite -od.):
https://github.com/dlang/tools/commit/155e19c478260c2da6369715f48c201f53c8e45e

>> - The .d extension is not implied, like for dmd/rdmd
>
> I haven't come up with any reasons to support this.  Maybe you can enlighten me?

"rund prog" is shorter and easier to type than "rund prog.d".

I never invoke rdmd directly, though, so I guess I could add this to my wrapper scripts around rdmd/rund.

>> Also, --pass is weird. Why not use the standard-ish -- ?
>
> It is a bit weird.  I've never had a reason to use this option myself.  Is this the syntax you are thinking of?
>
> rund other.d main.d -- <program-args>...
>
> The problem with this is it's not "composable".  Say you were running a D program that also used "--", then it's ambiguous whether the "--" belongs to rund or to the program being compiled.  But maybe I'm missing something?  If you have an idea that's less weird than "--pass=<src>.d" then I'm all for it :)

Well, the way rdmd works is that it stops looking at arguments once it sees the first non-option argument (i.e. an argument that doesn't start with -). As it happens, all relevant dmd arguments can be passed as one, i.e. "-opt=value" instead of "-opt value", so it can use this to cleanly separate arguments to itself/dmd from arguments to the program.

I guess --pass can be useful if you want to include a .d file in the compilation that's not otherwise compiled (i.e. it's not imported from anywhere). This is currently not possible with rdmd, AFAIK.

>> Was there a problem with the idea of forking rdmd? The above plus things like its -lib support would then not be needed to be reimplemented.
>
> I would actually consider this a "fork" of rdmd.  But I rebuilt it from the ground up, re-integrating each feature one by one so I could ensure they were "cohesive".  I also haven't integrated all features from rdmd yet.  I will probably integrate more of them when I see the need.  So far it's just been me using it so that's why I want to get people using it so we can flush out the rest.
>
> The big difference with rdmd and rund is that rund is not compatible with compilers that don't support "-i".  Since this is such a fundamental change, I thought a rename made sense, and "rund" fits the modern times where we have more D compilers than just dmd.

I see, thanks!

September 09, 2018
On Sunday, 9 September 2018 at 09:55:19 UTC, Vladimir Panteleev wrote:
> On Sunday, 9 September 2018 at 04:32:32 UTC, Jonathan Marler
>>> - The .d extension is not implied, like for dmd/rdmd
>>
>> I haven't come up with any reasons to support this.  Maybe you can enlighten me?
>
> "rund prog" is shorter and easier to type than "rund prog.d".
>

Support main source with no extension: https://github.com/marler8997/rund/pull/1


September 09, 2018
On 09/09/2018 12:32 AM, Jonathan Marler wrote:
> On Sunday, 9 September 2018 at 03:33:49 UTC, Vladimir Panteleev wrote:
>> - No --main, though that can probably be substituted with -main
> 
> Yeah, I don't see any reason to duplicate the flag already supported by dmd.  Maybe there's a reason I'm not aware of.
> 

I'm pretty sure rdmd's --main is just a historical thing, from back before -main was built into the compiler itself.
September 11, 2018
On Sunday, 9 September 2018 at 04:32:32 UTC, Jonathan Marler wrote:
>> - -od (e.g. for -od.)
>
> Hmmm, yeah it looks like rund is currently overriding this.  I've attempted a fix but it's hard to cover all the different combinations of -of/-od/etc.  I'll need to fill out the rest of the tests soon.

Thanks. Looks like there's a problem on Posix systems: With -od., the binary file doesn't have the executable bit set. This fixes it:

        std.file.copy(from, to, std.file.PreserveAttributes.yes);

Why not just get the compiler to create the file at the correct location directly, and avoid the I/O of copying the file?

September 11, 2018
On Tuesday, 11 September 2018 at 01:02:30 UTC, Vladimir Panteleev wrote:
> On Sunday, 9 September 2018 at 04:32:32 UTC, Jonathan Marler wrote:
>>> - -od (e.g. for -od.)
>>
>> Hmmm, yeah it looks like rund is currently overriding this.  I've attempted a fix but it's hard to cover all the different combinations of -of/-od/etc.  I'll need to fill out the rest of the tests soon.
>
> Thanks. Looks like there's a problem on Posix systems: With -od., the binary file doesn't have the executable bit set. This fixes it:
>
>         std.file.copy(from, to, std.file.PreserveAttributes.yes);
>

I wasn't able to reproduce this issue on my ubuntu box.  But, this might not be an issue anymore because I've implemented your next suggestion...


> Why not just get the compiler to create the file at the correct location directly, and avoid the I/O of copying the file?

https://github.com/marler8997/rund/pull/3 (Remove extra rename/copy when user gives -of)

Reviews welcome
September 11, 2018
On Saturday, 8 September 2018 at 04:24:20 UTC, Jonathan Marler wrote:
> https://github.com/marler8997/rund

I have an idea how to push shebang to userland and make it crossplatform: if, say, `rund -install prog.d` would copy/link itself into current folder under name "prog" and when run would work with file args[0]~".d", this will work the same on all platforms without shebang.
« First   ‹ Prev
1 2