digitalmars.D.ide - RFC: Article on IDE Builder Theory
- Robert Fraser (92/92) Feb 21 2008 Hi all,
- Derek Parnell (8/11) Feb 21 2008 Sounds like a good approach, one that would suit my style of development...
- Bill Baxter (17/29) Feb 21 2008 The problem I'd have with that is that with and explicit "build now"
- Robert Fraser (3/38) Feb 21 2008 Thanks! Those are the sort of things I wouldn't think of, and both those...
- Kenny B (32/39) Feb 22 2008 From time to time I use Descent -- because autocomplete doesn't work (I...
- Jussi Jumppanen (4/14) Feb 24 2008 FWIW there should be many Windows editors that already allowed you to do...
- Alexander Panek (2/14) Feb 25 2008 Since when does alt-tab require Windows? :)
- Kenny B (8/25) Feb 25 2008 I definitely use linux :) I also use Ctrl+alt+[left or right] arrow
- torhu (6/12) Feb 25 2008 I don't think there's ever been a windows version without output/input
- Bill Baxter (4/19) Feb 25 2008 && works in XP. I use it all the time. Don't know about ||, but it's
- Robert Fraser (3/3) Feb 25 2008 The idea of this builder is to obviate the need for all that manual
- Graham St Jack (9/9) Feb 25 2008 Sounds like a really good approach. I like the focus on development work...
- Robert Fraser (2/8) Feb 25 2008 Can you give me an example of the sorts of rules you'd like to see?
- Graham St Jack (29/38) Feb 26 2008 The rules I use in my own build system are:
- Robert Fraser (11/61) Feb 26 2008 In Descent, this sort of thing isn't the builder's job (well it is, but
- Graham St Jack (10/21) Feb 26 2008 I'm happy with circularities in the same module, but not so happy in the...
- Jascha Wetzel (40/58) Feb 27 2008 i don't understand why there should be a distinction between building
- Robert Fraser (47/110) Feb 27 2008 Hi Jascha. You make a number of valid points, but you may not understand...
Hi all, I've been working on Descent's builder and before I go too far into it, I wanted to know what everyone thought about the design philosophy I've chosen for it, and if people would prefer a more traditional builder, I am willing go that route, too. This will mostly be a long & philosophical post that may eventually become an article of some sort. Basically, the assumption underpinning Descent's builder is that an IDE _isn't_ a build tool. For final/release builds, installation (end user builds), or even daily pushes, there are a number of very good tools out there (DSSS, Ant, etc.) that are more focused, capable, scriptable, and automatable than an IDE should ever be. Instead, an IDE is a _development_ environment, so builds performed within the scope of the IDE should work to support development and testing, not deployment. In particular, building within the scope of an IDE should have the following properties: - It should be fast. Builds, generally with only small changes, are very frequent in a development or ad-hoc testing environment, and thus should run as quickly as possible. Rebuilding the project with all its dependencies for a one-line change is not an option. - It should require as little configuration as possible. Simple builds should not require complex scripts or configuration of compiler options. Instead, the configurations should be chosen for building depending on the use case (more on this below). - It should support test-driven development. D's built-in unit test construct allows developers to write unit tests very easily directly into their code, however D's typical method of running these stops program execution as soon as one fails and forces the user to run every test linked in. Test-driven development expects failures, so any builder should integrate an easy way to run unit tests one-by-one, support test automation for running subsets of the application's tests, and robust/complete stack tracing for failures. It should still be easy to run every test in the project, however. Based on these principles, I came to question the build-then-run workflow of typical IDEs. Descent will work differently. There _is_ no build command. Instead, a user creates a run configuration for a specific use case and the compiler will be invoked when the user clicks run to support the run configuration (don't worry, if it's already been built for that run configuration, it won't be re-built. Only the first build will be slow, after that incremental compilation will kick in.) The use cases will decide the options to use when compiling. For example, a simple run or debug session will generally build everything with debug symbols on. If you're running with unit tests, unit tests will be built, and a separate module will be linked in to support running specific tests and handling test failures (flute, which I will also release separately for command-line use). A profiling use case would allow the user to choose whether to optimize the code and inline functions and would instrument for profiling. Another use-case would be code coverage analysis, which would build everything instrumented for this and optionally use the unit tests to determine coverage. Besides zero-configuration & transparency to the user, the other advantage of this approach is IDE support that extends into run time. This means, for example, that you just need to click "run unit tests" and an interactive unit testing UI will pop up. Choose "profile," set a few options, and the IDE could interpret the results and show some cute colored bars over lines of code/process the results without the user needing to care about result files, etc. There are two big disadvantages and one smaller one to this approach. First, it precludes using the IDE builder for "final builds." The future may hold integration with a different build system, but for now this isn't a priority, since a complete build/install is rarely needed during development. This means, for example, that you'll never actually see the executable generated unless you go digging through the bin folder, and there might be three different ones with weird names sitting there. The other limitation of this approach is that it only works well for the use cases defined. Adding a new use case would take some significant effort, and probably include creating a new plugin that contributes to specific Descent & Eclipse extension points (read: a lot of complex Java code). However, the four use cases I mentioned (run/debug, unit test, profile, and code coverage) should cover most user needs for both application and library development (please tell me if I'm missing a broad category here). There will be an API for defining new use cases, but it'll still probably take 1500+ lines of code to define the build configuration, launch configuration, and UI for the new use case. The last disadvantage is merely a cosmetic one: the entire build process is transparent to the user. While many users will like this, the lack of a more traditional and configurable build-then-launch process may alienate some users at first, who would prefer a greater level of control. A word needs to be said on incremental compilation. Recently, there have been a number of posts related to incremental compilation being much slower, including some rather disturbing figures for DWT ;-P. Until this gets fixed, I will have an option to allow "all at once" compilation for projects. This may be faster at first for pathological cases such as DWT, but after a few hundred builds, the incremental process will likely be faster for most projects. As I said, I'm not too far into Descent's builder to change it (although that may make unit test runs more complex) and traditional building may eventually be supported, likely by DSSS integration, but this would be an entirely separate feature. I was just wondering what people thought of this approach. I am convinced this will provide a better workflow for most users, and make Descent an excellent IDE for both application and library developers alike.
Feb 21 2008
On Thu, 21 Feb 2008 16:09:32 -0800, Robert Fraser wrote:I've been working on Descent's builder and before I go too far into it, I wanted to know what everyone thought about the design philosophy I've chosen for it, ...Sounds like a good approach, one that would suit my style of development. I might even start using Descent on a regular basis ;-) -- Derek (skype: derek.j.parnell) Melbourne, Australia 22/02/2008 1:11:05 PM
Feb 21 2008
Robert Fraser wrote:Hi all, Based on these principles, I came to question the build-then-run workflow of typical IDEs. Descent will work differently. There _is_ no build command. Instead, a user creates a run configuration for a specific use case and the compiler will be invoked when the user clicks run to support the run configuration (don't worry, if it's already been built for that run configuration, it won't be re-built. Only the first build will be slow, after that incremental compilation will kick in.)The problem I'd have with that is that with and explicit "build now" button I know approximately what version of my code the current exe is built from. Scenario that's happened to me many times: - I have a working exe, I start hacking on something, and then start wondering 'how did the previous version handle case X before I started hacking?' If the exe doesn't exist because the current code won't compile, or if it exists but is a newer version than the one I last ran, then I won't be happy. You could perhaps handle this scenario by having a check-point button. Or doing automatic checkpointing of successfully built exes.This means, for example, that you'll never actually see the executable generated unless you go digging through the bin folder, and there might be three different ones with weird names sitting there.That's problematic if the successful running of the exe depends on external dlls or resource files being in the same directory at run-time. In Visual Studio you can use a custom post-build step to copy the exe to a particular location, or you can edit the output file path to say where the exe should go. --bb
Feb 21 2008
Bill Baxter wrote:Robert Fraser wrote:Thanks! Those are the sort of things I wouldn't think of, and both those sound like good solutions.Hi all, Based on these principles, I came to question the build-then-run workflow of typical IDEs. Descent will work differently. There _is_ no build command. Instead, a user creates a run configuration for a specific use case and the compiler will be invoked when the user clicks run to support the run configuration (don't worry, if it's already been built for that run configuration, it won't be re-built. Only the first build will be slow, after that incremental compilation will kick in.)The problem I'd have with that is that with and explicit "build now" button I know approximately what version of my code the current exe is built from. Scenario that's happened to me many times: - I have a working exe, I start hacking on something, and then start wondering 'how did the previous version handle case X before I started hacking?' If the exe doesn't exist because the current code won't compile, or if it exists but is a newer version than the one I last ran, then I won't be happy. You could perhaps handle this scenario by having a check-point button. Or doing automatic checkpointing of successfully built exes.This means, for example, that you'll never actually see the executable generated unless you go digging through the bin folder, and there might be three different ones with weird names sitting there.That's problematic if the successful running of the exe depends on external dlls or resource files being in the same directory at run-time. In Visual Studio you can use a custom post-build step to copy the exe to a particular location, or you can edit the output file path to say where the exe should go. --bb
Feb 21 2008
Robert Fraser wrote:Hi all, I've been working on Descent's builder and before I go too far into it, I wanted to know what everyone thought about the design philosophy I've chosen for it, and if people would prefer a more traditional builder, I am willing go that route, too. This will mostly be a long & philosophical post that may eventually become an article of some sort.From time to time I use Descent -- because autocomplete doesn't work (I already showed Ary). Personally, I have never used automatic build. A Makefile is very easy to write and usually takes me only a little bit of time. I notice there is support for make... My workflow looks like this: [code a little] [alt-tab] make -j2 && ./program [compiler spits out errors] [alt-tab] ((repeat)) It'd be awesome if that output could be parsed into descent as source / line errors I can click on. Next, I have a lot of possibilities to my makefile... make -j2 (most common) make -j2 DATATEST=true (next most common) make -j2 PROFILE=true make -j2 DATATEST=true PROFILE=true make -j2 release make -j2 release PROFILE=true So, it'd be nice if I could customize which commands to various shortcuts or add buttons for other options The next thing that happens after this is spit out, is I usually run a post execution command, such as: gprof program gmon.out > profile_data && scite profile_data gdb program etc.. So, it'd be nice if I could automatically run something after a specific build. It'd also be super awesome if I could apply a wildcard here too, so I could over time automatically save the profile outputs, or the datatesting integrity or whatever files my program is spitting out. Anyway, Descent really rocks, and I hope I helped a bit.
Feb 22 2008
Kenny B Wrote:My workflow looks like this: [code a little] [alt-tab] make -j2 && ./program [compiler spits out errors] [alt-tab] ((repeat))Since you mentioned alt-tab I assume you are running Windows but I could be wrong ;)It'd be awesome if that output could be parsed into descent as source line errors I can click on.FWIW there should be many Windows editors that already allowed you to do exact this, by letting you define an executable as a tool and have the editor capture it's output. JussiJ
Feb 24 2008
Jussi Jumppanen wrote:Kenny B Wrote:Since when does alt-tab require Windows? :)My workflow looks like this: [code a little] [alt-tab] make -j2 && ./program [compiler spits out errors] [alt-tab] ((repeat))Since you mentioned alt-tab I assume you are running Windows but I could be wrong ;)
Feb 25 2008
Alexander Panek wrote:Jussi Jumppanen wrote:I definitely use linux :) I also use Ctrl+alt+[left or right] arrow for switching between desktops... windows definitely can't do that. if you look later in my message... I have:Kenny B Wrote:Since when does alt-tab require Windows? :)My workflow looks like this: [code a little] [alt-tab] make -j2 && ./program [compiler spits out errors] [alt-tab] ((repeat))Since you mentioned alt-tab I assume you are running Windows but I could be wrong ;)gprof program gmon.out > profile_data && scite profile_dataI haven't used windows in a while, but when I used it, it didn't have output redirection :D Also, my message header contains the header: User-Agent: Thunderbird 2.0.0.9 (X11/20080216)
Feb 25 2008
Kenny B wrote:if you look later in my message... I have: > gprof program gmon.out > profile_data && scite profile_data I haven't used windows in a while, but when I used it, it didn't have output redirection :DI don't think there's ever been a windows version without output/input redirection and pipes. That goes back to very old versions of DOS. But I seem to recall that win98 didn't allow you to redirect stderr. Things like 2>&1 works in winxp, when using cmd.exe. && and || doesn't work as far as i know.
Feb 25 2008
torhu wrote:Kenny B wrote:&& works in XP. I use it all the time. Don't know about ||, but it's probably there too. --bbif you look later in my message... I have: > gprof program gmon.out > profile_data && scite profile_data I haven't used windows in a while, but when I used it, it didn't have output redirection :DI don't think there's ever been a windows version without output/input redirection and pipes. That goes back to very old versions of DOS. But I seem to recall that win98 didn't allow you to redirect stderr. Things like 2>&1 works in winxp, when using cmd.exe. && and || doesn't work as far as i know.
Feb 25 2008
The idea of this builder is to obviate the need for all that manual stuff. Instead, it would be a fully-integrated way to click a button and profile your project without needing a configuration.
Feb 25 2008
Sounds like a really good approach. I like the focus on development work, leaving deployment to more fully-featured build systems. I particularly like built-in support for test-driven development. One other thing I like in a build system is to enforce design rules. The particular rules I use aren't important (dependency management) - the point is that a build system can help add a bit more rigour to a project, especially one with multiple developers. These rules would probably have to be described via some sort of extension mechanism, because there will never be agreement on what the rules should be.
Feb 25 2008
Graham St Jack wrote:One other thing I like in a build system is to enforce design rules. The particular rules I use aren't important (dependency management) - the point is that a build system can help add a bit more rigour to a project, especially one with multiple developers. These rules would probably have to be described via some sort of extension mechanism, because there will never be agreement on what the rules should be.]Can you give me an example of the sorts of rules you'd like to see?
Feb 25 2008
On Mon, 25 Feb 2008 11:22:59 -0800, Robert Fraser wrote:Graham St Jack wrote:The rules I use in my own build system are: Directory naming conventions determine what files are documentation, library source, executables and tests. A test depends on its successful result file, and tests are run whenever their results file is out of date. If a test fails, the build fails. A source module cannot depend on itself by any chain of imports. A package depends on (from memory - I could have the details a bit wrong): * all the packages it contains, * all the sources it contains, and * all the packages that its sources import, up to the common ancestor. A package cannot depend on itself by any chain of dependencies. I find the dependency rules make it a lot easier to keep the source well- factored, and results in a much cleaner design. It is far too hard to resist the temptation to sneak in a "bad" dependency between packages in the head of the moment - I like the build system to nip it in the bud. The dependency rules also make it FAR easier to write reusable packages. Without rules like these (or a lot of willpower and only one developer), there is a strong tendency to end up with a monolith of tangled-together code. The directory naming rules are just a way of eliminating a build configuration file - everything except compiler options can be worked out from where the files are and what they import. These particular rules aren't for everyone, but especially on projects with multiple developers, automatic enforcement of rules of some kind can make things run a lot smoother. One thing that has stopped me from using Eclipse so far has been the difficulty of figuring out how to make it use a custom build system. It would be great if Descent had a build system that allowed rules to be added.One other thing I like in a build system is to enforce design rules. The particular rules I use aren't important (dependency management) - the point is that a build system can help add a bit more rigour to a project, especially one with multiple developers. These rules would probably have to be described via some sort of extension mechanism, because there will never be agreement on what the rules should be.]Can you give me an example of the sorts of rules you'd like to see?
Feb 26 2008
In Descent, this sort of thing isn't the builder's job (well it is, but the other builder - the Eclipse builder). There already is a partially-ported version of eclipse metrics which calculates things like dependencies and can help in resolving circular dependencies (if the circle is relatively small and all within the same package, I don't consider them bad -- but that's not the issue at hand :-)). The sorts of rules you're talking about could easily be added as a plugin to Descent (well, not easily, but...) and seem to be more "Warnings on the project level" rather than anything to do with executable building. Graham St Jack wrote:On Mon, 25 Feb 2008 11:22:59 -0800, Robert Fraser wrote:Graham St Jack wrote:The rules I use in my own build system are: Directory naming conventions determine what files are documentation, library source, executables and tests. A test depends on its successful result file, and tests are run whenever their results file is out of date. If a test fails, the build fails. A source module cannot depend on itself by any chain of imports. A package depends on (from memory - I could have the details a bit wrong): * all the packages it contains, * all the sources it contains, and * all the packages that its sources import, up to the common ancestor. A package cannot depend on itself by any chain of dependencies. I find the dependency rules make it a lot easier to keep the source well- factored, and results in a much cleaner design. It is far too hard to resist the temptation to sneak in a "bad" dependency between packages in the head of the moment - I like the build system to nip it in the bud. The dependency rules also make it FAR easier to write reusable packages. Without rules like these (or a lot of willpower and only one developer), there is a strong tendency to end up with a monolith of tangled-together code. The directory naming rules are just a way of eliminating a build configuration file - everything except compiler options can be worked out from where the files are and what they import. These particular rules aren't for everyone, but especially on projects with multiple developers, automatic enforcement of rules of some kind can make things run a lot smoother. One thing that has stopped me from using Eclipse so far has been the difficulty of figuring out how to make it use a custom build system. It would be great if Descent had a build system that allowed rules to be added.One other thing I like in a build system is to enforce design rules. The particular rules I use aren't important (dependency management) - the point is that a build system can help add a bit more rigour to a project, especially one with multiple developers. These rules would probably have to be described via some sort of extension mechanism, because there will never be agreement on what the rules should be.]Can you give me an example of the sorts of rules you'd like to see?
Feb 26 2008
On Tue, 26 Feb 2008 16:37:15 -0800, Robert Fraser wrote:In Descent, this sort of thing isn't the builder's job (well it is, but the other builder - the Eclipse builder). There already is a partially-ported version of eclipse metrics which calculates things like dependencies and can help in resolving circular dependencies (if the circle is relatively small and all within the same package, I don't consider them bad -- but that's not the issue at hand :-)).I'm happy with circularities in the same module, but not so happy in the same package - but as you say, that isn't the issue.The sorts of rules you're talking about could easily be added as a plugin to Descent (well, not easily, but...) and seem to be more "Warnings on the project level" rather than anything to do with executable building.If there is a plugin mechanism that isn't too tough then I am happy. My experience is that as soon as you make something optional, then people will turn it off and code away, leaving an intractable mess for someone who cares to clean up later. I had that experience with unit tests - most people didn't run them, so they got out of date and it became too hard to fix them later. The only time to fix them is as soon as they get broken. Its the same (or even worse) for dependency violations.
Feb 26 2008
Robert Fraser wrote:Instead, an IDE is a _development_ environment, so builds performed within the scope of the IDE should work to support development and testing, not deployment.i don't understand why there should be a distinction between building during development and for deployment. after all you trying to develop the software that you eventually are deploying, not something else.In particular, building within the scope of an IDE should have the following properties: - It should be fast. Builds, generally with only small changes, are very frequent in a development or ad-hoc testing environment, and thus should run as quickly as possible. Rebuilding the project with all its dependencies for a one-line change is not an option.re-building modules only when dependencies have changed is on of the most basic features of a build tool, regardless of whether it's embedded into an IDE or not.A word needs to be said on incremental compilation. Recently, there have been a number of posts related to incremental compilation being much slower, including some rather disturbing figures for DWT ;-P. Until this gets fixed, I will have an option to allow "all at once" compilation for projects. This may be faster at first for pathological cases such as DWT, but after a few hundred builds, the incremental process will likely be faster for most projects.what is slow, is compiling a single module at a time. incremental compilation does not have to do this. you can determine the set of modules that need re-compilation and compile all of those with one call. For your feature requirements, i fail to see how this is specific to an IDE build tool. After all, an IDE is supposed to be a frontend to all the tools required during development, including build tools. Once i defined how to build my program, i don't want to specify it twice. If it is so simple that a build tool can figure it out on it's own, i never want to do it - not for development, nor for deployment. So what you're actually proposing is to introduce a secondary build tool that is positioned at an earlier stage in the workflow, manifested by some, yet to be defined features that make it more suitable for that stage. That implies that current build tools don't do a good enough job at some type of build. I'd rather like to see those shortcomings and the reasons why they cannot be addressed in the existing build tools first. Besides that, here is what i personally find useful, that not all build tools have: - Rebuild also if only the build-parameters changed I frequently jump back and forth between debug and release mode. I don't want to clean explicitly each time. scons does that - it saves all the build parameters for each module and considers them when determining whether a module is dirty. - Have all build parameters compactly editable in one place. All GUI based build tool interfaces i know only provide dialogs with all available parameters. With tools like scons or dsss OTOH, i have a single, small text file, that only specifies exactly what is relevant to my project. I don't have to click my way through endless tabs and dialogs to get to the settings that i want to change. - I can parameterize my build arbitrarily (debug, release, with test-code for module group A, B or C, etc.). With selection of version-groups being just a single parameter to the build-call that i bind to some shortcut in the editor. It's merely a matter of one or two key/value entries in my project specific config files.
Feb 27 2008
Hi Jascha. You make a number of valid points, but you may not understand exactly where I'm coming from. In particular, I think you're thinking of what I'm describing as a build tool, while it's actually the removal of a build tool from the user's perspective, and instead a way to set up run configurations from which the build follows. See inline: Jascha Wetzel wrote:Robert Fraser wrote:Can't this introduce spurious dependencies between the modules? Oh well, I'm relying on rebuild to do the dependency analysis/collection/compiler activation at this point, so I hope it takes care of that part.Instead, an IDE is a _development_ environment, so builds performed within the scope of the IDE should work to support development and testing, not deployment.i don't understand why there should be a distinction between building during development and for deployment. after all you trying to develop the software that you eventually are deploying, not something else.In particular, building within the scope of an IDE should have the following properties: - It should be fast. Builds, generally with only small changes, are very frequent in a development or ad-hoc testing environment, and thus should run as quickly as possible. Rebuilding the project with all its dependencies for a one-line change is not an option.re-building modules only when dependencies have changed is on of the most basic features of a build tool, regardless of whether it's embedded into an IDE or not.A word needs to be said on incremental compilation. Recently, there have been a number of posts related to incremental compilation being much slower, including some rather disturbing figures for DWT ;-P. Until this gets fixed, I will have an option to allow "all at once" compilation for projects. This may be faster at first for pathological cases such as DWT, but after a few hundred builds, the incremental process will likely be faster for most projects.what is slow, is compiling a single module at a time. incremental compilation does not have to do this. you can determine the set of modules that need re-compilation and compile all of those with one call.For your feature requirements, i fail to see how this is specific to an IDE build tool. After all, an IDE is supposed to be a frontend to all the tools required during development, including build tools. Once i defined how to build my program, i don't want to specify it twice. If it is so simple that a build tool can figure it out on it's own, i never want to do it - not for development, nor for deployment.But what is a "development build"? If it's a run/debug configuration, you probably want --release off, optimization and inlining off (since it can screw up debugging), debug symbols on, etc. If it's a profile configuration, you may or may not want optimization/inlining, but you definitely want instrumentation for profiling so it provides profile output. Further, deployment builds are often a lot more than simple builds. Where I work, the incremental build includes not only the build itself, but functional unit tests, a number of scripts running against the database, a push to test environments, e-mail notification to all the developers/testers, etc., etc. This is what a build tool like Ant is for. An IDE is for a different purpose, and I'm sure you'll agree an IDE should not support all of that.So what you're actually proposing is to introduce a secondary build tool that is positioned at an earlier stage in the workflow, manifested by some, yet to be defined features that make it more suitable for that stage. That implies that current build tools don't do a good enough job at some type of build. I'd rather like to see those shortcomings and the reasons why they cannot be addressed in the existing build tools first.In a way (as I mentioned, I'm switching to rebuild to perform the actual compile/link). The features are defined as whatever features the relevant use case adds: features such as automated unit testing, automatic collection of profiling results and integration of these results into the editor, or debugger integration.Besides that, here is what i personally find useful, that not all build tools have: - Rebuild also if only the build-parameters changed I frequently jump back and forth between debug and release mode. I don't want to clean explicitly each time. scons does that - it saves all the build parameters for each module and considers them when determining whether a module is dirty.My original build system had that. Right now I'm using rebuild as-is, but I may tweak it a bit as well as give it a socket-based interface (if Gregor is cool with that) so it'll be better for builds without cleans.- Have all build parameters compactly editable in one place. All GUI based build tool interfaces i know only provide dialogs with all available parameters. With tools like scons or dsss OTOH, i have a single, small text file, that only specifies exactly what is relevant to my project. I don't have to click my way through endless tabs and dialogs to get to the settings that i want to change.That's what the whole "use case" thing is about. For development builds, most of these parameters are determined by how you want to use it, so will be configurable as-needed in the use case configuration, or not at all (since if you click the "debug" button, you'll always want debug symbols, or if you click the "unit test" button you'll always want unit tests compiled in). The user will never need to think about the exact command-line options that are being passed to the tool, but instead how she plans to use the output, and the particular options will stem from these choices. I know this may make some users uncomfortable (if you're used to build tools as you describe them), which is why I'm planning to eventually add DSSS support.- I can parameterize my build arbitrarily (debug, release, with test-code for module group A, B or C, etc.). With selection of version-groups being just a single parameter to the build-call that i bind to some shortcut in the editor. It's merely a matter of one or two key/value entries in my project specific config files.I'm not sure exactly what you mean by this. - If you mean different build/run configurations for the same project, this is definitely supported, and I think your idea of adding key bindings is a good one (this may already be in Eclipse, if not, I'll add it). - If you mean debug/version identifiers on a per-file basis, I didn't think as much about this... How important is this to people?
Feb 27 2008