September 11, 2018 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kagamin | 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 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan Marler | 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 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kagamin | 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 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan Marler | 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 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andre Pany | 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 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan Marler | 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 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to aliak | 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 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan Marler | 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 Re: rund users welcome | ||||
---|---|---|---|---|
| ||||
Posted in reply to aliak | 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.
|
Copyright © 1999-2021 by the D Language Foundation