Officially support a shebang line
wes at page.ca
Fri May 19 15:15:14 UTC 2017
In gpsee (using spidermonkey), we allow executable programs exactly the
parsing POV. I'm not sure why node+v8 would be any different. We just
hand over the script to the parser with the pointer pointing to the newline
at the end of the shebang. This skips the syntax error and keeps the line
numbers as expected. As Alexander Jones explains, this shebang support
stuff is deep in unix, and arrives by virtue of the exec-and-friends system
calls declared in unitstd.h.
I suppose the one 'gotcha' here is that you can't have a module which can
both act as a program and library. We have the similar limitations in C -
we have a special object file which has a symbol named 'main' and usually
load library code as DSOs - but I never really found that to be a
significant limitation in real-world work.
What is an example use-case that would take advantage of this proposal?
On 19 May 2017 at 10:25, Jan Krems <jan.krems at gmail.com> wrote:
> Sorry, mentioning support in syntax highlighters might have been
> and modules. It's a common pattern in node to have programs written in
> I just mentioned editor / syntax highlighter support to say "this is
> it's just missing from the spec".
> On Fri, May 19, 2017 at 1:44 AM Alexander Jones <alex at weej.com> wrote:
>> It doesn't make any sense. The shebang is a UNIX way of declaring the
>> interpreter for an executable script, not for hinting your syntax
>> highlighter. If your file is not executable (as in, it can't be run with
>> `./filename`, it shouldn't have a shebang).
>> On 19 May 2017 at 02:44, Jan Krems <jan.krems at gmail.com> wrote:
>>> Tried to search past proposals for this but couldn't find one The short
>>> version: Most editors / syntax highlighting engines, non-engine parsers,
>>> node.js - they all support a leading shebang line in .js files. With the
>>> advent of ES6 modules it's the final holdout where node has to patch the
>>> script source to make V8 parse the code (and thus producing a mismatch
>>> between what's on disk and what the engine sees).
>>> Is there a downside to allow any script or module to begin with the
>>> magical #! bytes? It should not break existing scripts because it's invalid
>>> syntax today & the parse overhead should be fairly limited.
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
> es-discuss mailing list
> es-discuss at mozilla.org
Wesley W. Garland
Director, Product Development
+1 613 542 2787 x 102
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss