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!

Reply via email to