FWIW we do have a homegrown preprocessor in m-c, see documentation at https://github.com/mozilla/gecko-dev/blob/master/build/docs/preprocessor.rst - not sure if it meets your requirements, but just thought I'd put it out there. We use to preprocess JS/CSS in m-c so it'll likely be around for a while, and it can probably be updated to do new things pretty easily.
On Wed, Nov 25, 2015 at 4:43 PM, Jim Porter <jpor...@mozilla.com> wrote: > On 11/25/2015 03:18 PM, Sam Foster wrote: >> Back in the day, in the dojotookit we used a combination of feature >> detection and a require.js alike module system to build feature-specific >> sources. So rather than magic comments with preprocessor meaning, you >> got real conditionals in the code that were optimized away given a >> feature-set profile at build-time. In practice this was mostly done at a >> file/module level though - very similar to what Marcus proposes. > > How is this different from a preprocessor? Regardless of the name, > you're still adding conditionals that affect the result of a build based > on certain configuration parameters. Sure, poorly-written preprocessor > rules can result in unclear code with subtle bugs hidden within, but > we're writing *Javascript*. That ship has already sailed. > > To be clear, we're really talking about two kinds of build-time > configuration: line-based (preprocessor) and file-based (our build > system). If people have run into limitations with the latter and feel > the former would simplify their work, then I trust them on this, and my > only recommendations would be in terms of what tool to use, not whether > they should do this in the first place. > > In an ideal world, I'd prefer we just use something like the C > preprocessor, since it's one of the best-known preprocessing languages, > but as people rightly mention, this will break editors. Trying to edit > preprocessed JS/XUL files in Thunderbird has always been fairly > annoying. I'm less sympathetic to the fact that it would break our > linter, but that's probably because I think linters are a bit silly to > begin with; if you want good build-time checks that your code isn't > totally broken, you should use a compiled language and compile with > -Wall -Werror. :) > > That said, syntactically-significant comments are a bit ugly too. > However, I don't think the ugliness outstrips their value. I definitely > think we should use an existing preprocessor for this, provided we've > thoroughly analyzed its strengths/weaknesses, and are confident that we > won't end up relying on some project that gets abandoned in a year. I > don't have a strong opinion on the specific tool we use, so long as it > meets the requirements I listed above. > > Or we could use Rust's macro system. ;) > > - Jim > _______________________________________________ > dev-fxos mailing list > dev-fxos@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-fxos _______________________________________________ dev-fxos mailing list dev-fxos@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-fxos