Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WebAssembly (may) switch from AST to being a stack machine #31

Closed
axic opened this issue Aug 5, 2016 · 3 comments
Closed

WebAssembly (may) switch from AST to being a stack machine #31

axic opened this issue Aug 5, 2016 · 3 comments

Comments

@axic
Copy link
Member

axic commented Aug 5, 2016

See the conversation at Binaryen: WebAssembly/binaryen#663

We need to investigate how does this affects eWASM.

@wanderer
Copy link
Member

wanderer commented Aug 5, 2016

the biggest concerns would be

  • changes in the s-expression format (since evm2wasm is based on s-expr)
  • level 1 compression. Being able to dedupe the AST for compression is really nice, would there be an equivant here?
  • metering injection should not be affected (besides any possible changes to the AST) since control flow won't change much here

@kripken
Copy link

kripken commented Aug 6, 2016

Just an fyi, more detailed discussion is on the wasm design repo at WebAssembly/design#736.

@d-cook
Copy link

d-cook commented Nov 3, 2016

I believe that switching to a stack machine is short-sighted and a big mistake:

The AST format could open up new possibilities for software, some of which are observable in Lispy languages like Scheme (I won't list them here). Instead, we're looking at locking the software world back into this 1960's model for another 50 years out of a misguided concern for optimization over power.

It's like foregoing the arch because it's more work to craft, and instead coming up with a REALLY efficient way to fit square blocks together. Congratulations, we can build better pyramids, but will never grasp the concept of a cathedral.

To really grasp my point, I BEG you all to watch the following two videos in full and think hard about what Alan Kay & Douglass Crockford have to say about new ideas, building complex structures, and leaving something better for the next generation:

https://youtu.be/oKg1hTOQXoY

https://www.youtube.com/watch?v=PSGEjv3Tqo0

As Alan Kay states, what is simpler: something that's easier to process, but for which the software written on top of it is massive; or one that takes a bit more overhead, but allows for powerful new ways to model software and reduce complexity?

I believe that an AST model is a major start in inventing "the arch" that's been missing in software, and with something that will proliferate the whole web ... how short-sighted it would be to give that up in favor of "optimizing" the old thing.

Imagine if instead of JavaScript, the language of the web had been Java? Lambdas would not be mainstream; new ways of doing OOP would not be thought of; and all the amazing libraries that have been written because of the ad-hoc object modeling that JavaScript offers. Probably one of the messiest and inefficient languages ever written, yet one of the most powerful ever given. C'mon, let's do it a step more by making it binary, homoiconic, and self-modifying.

...and if you're brave enough, think about how Christopher Alexander's philosophy of "unfolding wholeness" applies so much more to an AST than to the stack-machines of the 1960's:

https://youtu.be/98LdFA-_zfA

Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants