September 11, 2018
On Tuesday, 11 September 2018 at 08:53:46 UTC, Kagamin wrote:
> 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.

So your idea is that you could run `rund -install prog.d` which would create some sort of file that allows you to run `./prog` (on POSIX) or `prog` (on WINDOWS).

So something like this:

/path/prog.d

Posix:
/path/prog -> /usr/bin/rund

Windows 10 (It supports symbolic links)
/path/prog.exe -> C:\Programs\rund.exe

Windows <10
/path/prog.exe (a copy of rund.exe)


Then this would allow you to run "/path/prog" and which would invoke rund and like you said we could take "argv[0]" and assume that's the main source file.

The Posix/Windows 10 cases seem fine, but Windows <10 is not great. In this case it has to keep an entire copy of rund around (currently 1.8M). I think we can do better.  Instead, `rund -install prog.d` could generate a little "wrapper program" that forwards any calls to rund.  You could make this wrapper program with a small D program, or with this BATCH script:

--- /path/prog.bat
@rund %~dp0prog.d %*

You get the same result. When you run "\path\prog" it will invoke rund with the given args for prog.d. Thoughts?

September 11, 2018
On Tuesday, 11 September 2018 at 15:20:51 UTC, Jonathan Marler wrote:
> The Posix/Windows 10 cases seem fine, but Windows <10 is not great.

MSDN says symbolic links are supported since Vista.
September 11, 2018
On Tuesday, 11 September 2018 at 17:36:09 UTC, Kagamin wrote:
> On Tuesday, 11 September 2018 at 15:20:51 UTC, Jonathan Marler wrote:
>> The Posix/Windows 10 cases seem fine, but Windows <10 is not great.
>
> MSDN says symbolic links are supported since Vista.

Yeah but I think you need Admin privileges to make them.
September 11, 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.
>
> https://github.com/marler8997/rund

It would be great if you could create a pull request for rdmd to add the missing -i enhancement.

Kind regards
Andre
September 12, 2018
On Tuesday, 11 September 2018 at 19:55:33 UTC, Andre Pany 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.
>>
>> https://github.com/marler8997/rund
>
> It would be great if you could create a pull request for rdmd to add the missing -i enhancement.
>
> Kind regards
> Andre

I did :)

https://github.com/dlang/tools/pull/292

I spent quite a bit of time on it but in the end the bulk of my time was spent on what seemed to be endless debate rather than writing good code.

After I decided to try forking rdmd my life got much better :)  Now I spend my time writing great code, making good tests and having nice tools.  I'm much happier working than I am arguing with people.  What took me months to do with rdmd took me less than a day with my rund. So...if you have requests for rund features or issues by all means let me know, but I don't control rdmd and I've learned that time contributing to it is mostly time wasted.

September 12, 2018
On Wednesday, 12 September 2018 at 01:11:59 UTC, Jonathan Marler wrote:
> On Tuesday, 11 September 2018 at 19:55:33 UTC, Andre Pany 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.
>>>
>>> https://github.com/marler8997/rund
>>
>> It would be great if you could create a pull request for rdmd to add the missing -i enhancement.
>>
>> Kind regards
>> Andre
>
> I did :)
>
> https://github.com/dlang/tools/pull/292

Made me sad to read that and related PRs ... sigh :(

But anyway! rund seems awesome! Thanks for it :) some questions:

Are these all the compiler directives that are supported (was not sure if they were an example or some of them or all of them from the readme):

#!/usr/bin/env rund
//!importPath <path>
//!version <version>
//!library <library_file>
//!importFilenamePath <path>
//!env <var>=<value>
//!noConfigFile
//!betterC

I love the concept of source files specifying the compiler flags they need to build.

Cheers,
- Ali
September 12, 2018
On Wednesday, 12 September 2018 at 10:06:29 UTC, aliak wrote:
> On Wednesday, 12 September 2018 at 01:11:59 UTC, Jonathan Marler wrote:
>> On Tuesday, 11 September 2018 at 19:55:33 UTC, Andre Pany 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.
>>>>
>>>> https://github.com/marler8997/rund
>>>
>>> It would be great if you could create a pull request for rdmd to add the missing -i enhancement.
>>>
>>> Kind regards
>>> Andre
>>
>> I did :)
>>
>> https://github.com/dlang/tools/pull/292
>
> Made me sad to read that and related PRs ... sigh :(

Yeah I loved working on D.  But some of the people made it very difficult.  So I've switched focus to other projects that use D rather than contributing to D itself.

>
> But anyway! rund seems awesome! Thanks for it :) some questions:
>
> Are these all the compiler directives that are supported (was not sure if they were an example or some of them or all of them from the readme):
>
> #!/usr/bin/env rund
> //!importPath <path>
> //!version <version>
> //!library <library_file>
> //!importFilenamePath <path>
> //!env <var>=<value>
> //!noConfigFile
> //!betterC
>
> I love the concept of source files specifying the compiler flags they need to build.
>

Yeah they have proven to be very useful. I have many tools written in D and this feature allows the main source file to be a "self-contained" program.  The source itself is declaring the libraries it needs, the environment, etc. And the answer is Yes, all those options are supported along with a couple I recently added `//!debug` and `//!debugSymbols`.  I anticipate more will be added in the future (see https://github.com/marler8997/rund/blob/master/src/rund/directives.d)

To show how powerful they are, I include an example in the repository that can actually build DMD on the fly (assuming the c++ libraries are built beforehand).

https://github.com/marler8997/rund/blob/master/test/dmdwrapper.d
----------------------------------------------------------------
#!/usr/bin/env rund
//!env CC=c++
//!version MARS
//!importPath ../../dmd/src
//!importFilenamePath ../../dmd/res
//!importFilenamePath ../../dmd/generated/linux/release/64
//!library ../../dmd/generated/linux/release/64/newdelete.o
//!library ../../dmd/generated/linux/release/64/backend.a
//!library ../../dmd/generated/linux/release/64/lexer.a

/*
This wrapper can be used to compile/run dmd (with some caveats).
* You need to have the dmd repository cloned to "../../dmd" (relative to this file).
* You need to have built the C libraries.  You can build these libraries by building dmd.
Note sure why, but through trial and error I determined that this is the
minimum set of modules that I needed to import in order to successfully
include all of the symbols to compile/link dmd.
*/
import dmd.eh;
import dmd.dmsc;
import dmd.toobj;
import dmd.iasm;
----------------------------------------------------------------

Thanks for the interest.  Feel free to post any requested features or issues on github.

September 20, 2018
On Wednesday, 12 September 2018 at 13:23:36 UTC, Jonathan Marler wrote:
> On Wednesday, 12 September 2018 at 10:06:29 UTC, aliak wrote:
>> [...]
>
> Yeah I loved working on D.  But some of the people made it very difficult.  So I've switched focus to other projects that use D rather than contributing to D itself.
>
>>[...]
>
> Yeah they have proven to be very useful. I have many tools written in D and this feature allows the main source file to be a "self-contained" program.  The source itself is declaring the libraries it needs, the environment, etc. And the answer is Yes, all those options are supported along with a couple I recently added `//!debug` and `//!debugSymbols`.  I anticipate more will be added in the future (see https://github.com/marler8997/rund/blob/master/src/rund/directives.d)
>
> To show how powerful they are, I include an example in the repository that can actually build DMD on the fly (assuming the c++ libraries are built beforehand).
>
> https://github.com/marler8997/rund/blob/master/test/dmdwrapper.d
> ----------------------------------------------------------------
> #!/usr/bin/env rund
> //!env CC=c++
> //!version MARS
> //!importPath ../../dmd/src
> //!importFilenamePath ../../dmd/res
> //!importFilenamePath ../../dmd/generated/linux/release/64
> //!library ../../dmd/generated/linux/release/64/newdelete.o
> //!library ../../dmd/generated/linux/release/64/backend.a
> //!library ../../dmd/generated/linux/release/64/lexer.a
>
> /*
> This wrapper can be used to compile/run dmd (with some caveats).
> * You need to have the dmd repository cloned to "../../dmd" (relative to this file).
> * You need to have built the C libraries.  You can build these libraries by building dmd.
> Note sure why, but through trial and error I determined that this is the
> minimum set of modules that I needed to import in order to successfully
> include all of the symbols to compile/link dmd.
> */
> import dmd.eh;
> import dmd.dmsc;
> import dmd.toobj;
> import dmd.iasm;
> ----------------------------------------------------------------
>
> Thanks for the interest.  Feel free to post any requested features or issues on github.

Somewhat along these lines, I just found a watched a video by a guy who's been working on a programming language called Jai (it has some awesome concepts) and one of the sections he went in to about source files building themselves I thought was interesting and reminded me of rund so thought I'd post here. Might inspire you to add some stuff to rund :)

Video: https://www.youtube.com/watch?v=uZgbKrDEzAs
Time in video on "getting rid of build tools": https://youtu.be/uZgbKrDEzAs?t=1849

Enjoy!
September 20, 2018
On Thursday, 20 September 2018 at 23:19:17 UTC, aliak wrote:
> Somewhat along these lines, I just found a watched a video by a guy who's been working on a programming language called Jai (it has some awesome concepts) and one of the sections he went in to about source files building themselves I thought was interesting and reminded me of rund so thought I'd post here. Might inspire you to add some stuff to rund :)
>
> Video: https://www.youtube.com/watch?v=uZgbKrDEzAs
> Time in video on "getting rid of build tools": https://youtu.be/uZgbKrDEzAs?t=1849
>
> Enjoy!

Yeah I'm very familair with Jai and Jonathan Blow :)  I'm excited for him to release it, I've emailed him about contributing but haven't gotten much response from him yet.
1 2
Next ›   Last »