Agnew: Dekok, an AST should be ****yze that, though. like https://github.com/Runels/node-detective
Berlandy: When es6 modules come along, how is it fetching / actually getting the modules
Pegram: Without the shims / requires, how is it going to do it when it is native
Workinger: What’s the difference b/w chrome dev tools device emulation and just resizing the browser window?
Skarke: Pastry: should the interpreter load just ‘blah’? Just ‘bleh’? Both?
Mendosa: Pastry: node-detective doesn’t know, so Browserify includes both. That’s clearly suboptimal
Workinger: Is it the same? my site breaks responsively when making window size small
Workinger: But not in device emulation
Kment: Is mod in mathematics the same as % in JavaScript et al
Monden: Dekok, it’s the engine that should decide in fact
Miyose: Well, the import has the file path like require does. i ***ume the es6 browser would fetch the file when imported
Kelsheimer: When using stuff like webpack, you do both or you use code splitting
Turneer: Renlo: implemented natively, it’ll probably have an internal way of fetching the modules. It does allow separate compilation and dynamic linking, though, which CommonJS doesn’t.
Vanvoorhis: In browsers you use heuristics
Sheffield: What do you mean by ‘separate compilation’ ? like ‘preprocessing’ / ‘transpiling’ it?
Knerr: Pastry: that’s not what I said. What I said is that it’s not possible to *STATICALLY* ****yse that and figure out which one you should load at runtime. Static ****ysis requires you to be able to get all of the information without executing anything in the code
Kottwitz: I know at the end of the day its just compilation, just want clarification
Schnobrich: ES6 has been designed solely for static ****ysis, and thus it’s intentionally limited.
Duceman: Renlo: basically, the VM can compile each module separately, into its own internal representation and even cache that, so when it sees “import { x } from ‘blah'” it doesn’t need to run “blah,” it just picks up the previously compiled module and creates a binding x in the current scope that points directly to one of its objects.
Hammerstad: Static ****ysis means compiling, correct?
Whitfield: Is there going to be some form of ‘javascript bytecode’?
Scimeca: Renlo: no. Static ****ysis is just extracting information from a program without running the program. Compilers will usually do some static ****ysis, but a compiler is just a tool that translates one language to another
Barnick: Dekok, what’s the need to be able to predict runtime behaviour? packers don’t have the problem, and browsers are runtime, so what is that I am missing?
Sandez: Renlo: not really. But there’s Web***embly, which is going to be a binary AST format that will allow people to compile things to run in the browser efficiently.
Kernell: Pastry: why should I download 30 MB of modules that I won’t be using?
Rayford: Except for stuff like “requirewhatever + ‘/module.js’ of course
Deschomp: Binary abstract syntax tree format?
Mullens: Dekok, in-browser you mean?
Hutcheson: Apparently I need to learn a lot more haha
Diliberto: Pastry: ES6 modules only make sense in the browser, because it’s the only thing with the “needs to fetch things over HTTP” problem
Zachter: Well, you use heuristics as I was saying, if it’s dynamic you do it as soon as you’re sure you need it
Ruthstrom: Not before though, like webpack code splitting basically
Provance: Why would it be in a binary syntax tree format, and not in something like bytecode or the source code itself
Salmela: I understand that ***embly compiles to machine code, which is of course in binary, but i do not understand why it would be good to send around the ast of the machine code, which is what Im ***uming the binary AST would be
Suchan: Though my ***umptions are likely way off the mark