digitalmars.D - Tip: Use -i to modify druntime/phobos without rebuilding them
- Jonathan Marler (18/18) Feb 09 2020 Yesterday I wanted to test out some small changes to phobos.
- Manu (3/21) Feb 09 2020 Oh wow, cool tip! I never thought of that!
- Mathias Lang (7/25) Feb 09 2020 Doesn't that only work for specific cases involving templates
- rikki cattermole (2/28) Feb 09 2020 -i != -I
- Jonathan Marler (6/17) Feb 09 2020 In C++ it would be akin to re-compiling all the source files that
- Adam D. Ruppe (7/8) Feb 10 2020 If you're doing an individual file too, you can specify it
Yesterday I wanted to test out some small changes to phobos. Rather than building and installing my own version of the compiler and libraries, I used a quick hack that allowed me to directly change the druntime/phobos source files from my current installation and see the results immediately. In this case I was playing with the "std.process" module in phobos. I created a backup of src/phobos/std/process.d and started making changes. All I needed to do in order to see these changes in my program was to include the "-i=std.process" option like this: dmd -i=std.process myapp.d A quick and dirty way to selectively change and test changes to phobos/druntime on any installed compiler. For those not familair with -i, the reason this works is that the "-i" flag causes all imports to be compiled, except for those under the "core", "std" and "etc" module namespaces. However, you can override this by explicitly including any one of those namespaces.
Feb 09 2020
On Sun, Feb 9, 2020 at 10:20 PM Jonathan Marler via Digitalmars-d <digitalmars-d puremagic.com> wrote:Yesterday I wanted to test out some small changes to phobos. Rather than building and installing my own version of the compiler and libraries, I used a quick hack that allowed me to directly change the druntime/phobos source files from my current installation and see the results immediately. In this case I was playing with the "std.process" module in phobos. I created a backup of src/phobos/std/process.d and started making changes. All I needed to do in order to see these changes in my program was to include the "-i=std.process" option like this: dmd -i=std.process myapp.d A quick and dirty way to selectively change and test changes to phobos/druntime on any installed compiler. For those not familair with -i, the reason this works is that the "-i" flag causes all imports to be compiled, except for those under the "core", "std" and "etc" module namespaces. However, you can override this by explicitly including any one of those namespaces.Oh wow, cool tip! I never thought of that!
Feb 09 2020
On Monday, 10 February 2020 at 06:19:44 UTC, Jonathan Marler wrote:Yesterday I wanted to test out some small changes to phobos. Rather than building and installing my own version of the compiler and libraries, I used a quick hack that allowed me to directly change the druntime/phobos source files from my current installation and see the results immediately. In this case I was playing with the "std.process" module in phobos. I created a backup of src/phobos/std/process.d and started making changes. All I needed to do in order to see these changes in my program was to include the "-i=std.process" option like this: dmd -i=std.process myapp.d A quick and dirty way to selectively change and test changes to phobos/druntime on any installed compiler. For those not familair with -i, the reason this works is that the "-i" flag causes all imports to be compiled, except for those under the "core", "std" and "etc" module namespaces. However, you can override this by explicitly including any one of those namespaces.Doesn't that only work for specific cases involving templates though ? If you don't recompile Phobos, anything you'll link will still link the old binaries. So it's akin to compiling C(++) code but having the headers not match the `.c(pp)`.
Feb 09 2020
On 10/02/2020 8:03 PM, Mathias Lang wrote:On Monday, 10 February 2020 at 06:19:44 UTC, Jonathan Marler wrote:-i != -IYesterday I wanted to test out some small changes to phobos. Rather than building and installing my own version of the compiler and libraries, I used a quick hack that allowed me to directly change the druntime/phobos source files from my current installation and see the results immediately. In this case I was playing with the "std.process" module in phobos. I created a backup of src/phobos/std/process.d and started making changes. All I needed to do in order to see these changes in my program was to include the "-i=std.process" option like this: dmd -i=std.process myapp.d A quick and dirty way to selectively change and test changes to phobos/druntime on any installed compiler. For those not familair with -i, the reason this works is that the "-i" flag causes all imports to be compiled, except for those under the "core", "std" and "etc" module namespaces. However, you can override this by explicitly including any one of those namespaces.Doesn't that only work for specific cases involving templates though ? If you don't recompile Phobos, anything you'll link will still link the old binaries. So it's akin to compiling C(++) code but having the headers not match the `.c(pp)`.
Feb 09 2020
On Monday, 10 February 2020 at 07:17:11 UTC, rikki cattermole wrote:On 10/02/2020 8:03 PM, Mathias Lang wrote:In C++ it would be akin to re-compiling all the source files that match your "-i" pattern, not just changing the header files. The case you're thinking of is the behavior you get when you don't specify -i.On Monday, 10 February 2020 at 06:19:44 UTC, Jonathan Marler wrote:-i != -I[...]Doesn't that only work for specific cases involving templates though ? If you don't recompile Phobos, anything you'll link will still link the old binaries. So it's akin to compiling C(++) code but having the headers not match the `.c(pp)`.
Feb 09 2020
On Monday, 10 February 2020 at 06:19:44 UTC, Jonathan Marler wrote:dmd -i=std.process myapp.dIf you're doing an individual file too, you can specify it dmd myapp.d /pat/to/modified/phobos/file.d just specify it on the command line and it gets recompiled in. That's what -i is doing on the inside of course just it might be easier to specify the one file in certain cases.
Feb 10 2020