We've talked about this on TC39. We'll probably do something, but exactly what 
is hard to say at this point. Designing future-proof pragma syntax requires a 
bit of gazing into the crystal ball...

Dave

On Apr 17, 2011, at 2:13 AM, Claus Reinke wrote:

> Pragmas (ignorable source hints to an implementation) have
> become fairly wide-spread in Javascript, but their look and
> usage differs widely, and with an increasing number of tools
> defining their own pragma conventions, it is only a matter of
> time before they start stepping on each others toes.
> 
> This seems to call for some guidelines from the language
> standard (not to define individual pragmas, but to define a
> framework and namespacing for using and defining
> pragmas). There is a strawman for this
> 
> http://wiki.ecmascript.org/doku.php?id=strawman:pragmas
> 
> but it doesn't seem to be part of Harmony yet, and it doesn't
> mention that pragmas are alread used in the wild, not just in
> ES5.
> 
> Some examples:
> 
> 1. ES5 "use strict"
>   ignoreable expression statement
> 
> 2. IE conditional compilation
>   @-prefixed, suggested in, but not limited to comments
> 
> 3. jslint options (partial overlaps with forks like jshint)
>   in-comment
>   /*jslint
>   /*members
>   ..
> 
> 4. google for javascript pragma for more examples
>   (sometimes pragmas for embedded javascript in
>   applications, sometimes options in comments for
>   JS processors)
> 
> Apart from standardizing pragma syntax for options, it
> would be nice to annotate code with language extensions
> in use (rather than language versions): this is similar to
> feature- versus browser-version-testing.
> 
> There are also some standard pragmas I would like to
> see, to warn me when I am using features I do not like
> to use, something like
> 
>   //OPTIONS: warn-asi
>           // trace ASI semicolons, to simplify verification
>   //OPTIONS: warn-hoisting
>           // warn if bindings are lifted out of their block
>   //OPTIONS: warn-non-standard
>           // warn if browser-specific features are used
> 
> Below I add some references to examples from another
> language, Haskell.
> 
> Claus
> 
> Haskell has pragmas both for declarative optimization
> hints and for language extensions
> 
> http://www.haskell.org/onlinereport/haskell2010/haskellch12.html#x19-18800012
> 
> on top of this, Haskell packages specify the language
> extensions they use
> 
> http://haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr
> 
> The currently known language extensions are listed here,
> for Cabal (package manager) and GHC (compiler)
> 
> http://haskell.org/cabal/release/cabal-latest/doc/API/Cabal/Language-Haskell-Extension.html#t:Extension
> 
> http://www.haskell.org/ghc/docs/7.0-latest/html/users_guide/flag-reference.html#id568865
> 
> In addition to language pragmas, there is an inofficial standard
> for compiler options, eg, GHC understands OPTIONS_GHC
> pragmas, which make most of GHC's options available in
> source files (those that make sense on a per-module basis):
> 
> http://www.haskell.org/ghc/docs/7.0-latest/html/users_guide/pragmas.html
> 
> The list of options useable in source pragmas includes many
> warning options
> 
> http://www.haskell.org/ghc/docs/7.0-latest/html/users_guide/flag-reference.html#id570580
> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to