profile
viewpoint
Sergey Rubanov chicoxyzzy Passionate about WebAssembly, ECMAScript and future of the Web Platform. he/him

acdlite/redux-rx 1019

RxJS utilities for Redux.

chicoxyzzy/ambry 23

:package: WebStorage wrapper that makes your life easier

chicoxyzzy/babel-plugin-dynamic-import-system-import 7

Babel plugin to transpile import() to System.import()

chernivtsijs/webassembly-simplified 4

"Просто о WebAssembly" by @chicoxyzzy

chicoxyzzy/10-years-of-frontend 0

Больше 10 лет фронтенда

chicoxyzzy/2017.rustfest.eu 0

The website for RustFest 2017

chicoxyzzy/admin 0

Group administration

chicoxyzzy/agendas 0

TC39 meeting agendas

chicoxyzzy/annotations 0

Proposal for Custom Annotation Syntax in the Text Format

chicoxyzzy/assemblyscript 0

A TypeScript to WebAssembly compiler 🚀

delete branch chicoxyzzy/rollup-plugin-terser

delete branch : update_deps

delete time in 2 days

pull request commentWebAssembly/website

Update Firefox version in the feature support table

@RReverser no problem! thanks!

chicoxyzzy

comment created time in 5 days

delete branch chicoxyzzy/website

delete branch : patch-1

delete time in 5 days

delete branch chicoxyzzy/terser-webpack-plugin

delete branch : update_terser

delete time in 8 days

pull request commentwebpack-contrib/terser-webpack-plugin

feat: update Terser to version 5

it's dropped

chicoxyzzy

comment created time in 8 days

push eventchicoxyzzy/terser-webpack-plugin

push time in 8 days

pull request commentwebpack-contrib/terser-webpack-plugin

feat: update Terser to version 5

that's why I created the second PR which could be simply dropped

chicoxyzzy

comment created time in 8 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 231f10b22d8f0be692591b9c74050f0766bec6dc

refactor: delete obsolete assertions

view details

push time in 8 days

pull request commentwebpack-contrib/terser-webpack-plugin

feat: update Terser to version 5

oh, I didn't notice lint error. will fix it now

chicoxyzzy

comment created time in 8 days

push eventchicoxyzzy/proposal-explicit-resource-management

chicoxyzzy

commit sha fe4fed50ce9a9c31bc810824c87b09732cd0dbb7

Reuse AggregateError from the spec

view details

push time in 8 days

pull request commentwebpack-contrib/terser-webpack-plugin

feat: update Terser to version 5

tests are flaky

chicoxyzzy

comment created time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 68836d95377f25dd568130b2a365df3a8ed7191e

refactor: delete obsolete assertions

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

Evilebot Tnawi

commit sha 37cc8132df50ad7b374ec2606df1d0e202a579d1

fix: skip double compression for child compilation

view details

Evilebot Tnawi

commit sha d59eae2108ba43f3f7ce6c83195a8438634a9b55

feat: show minimized assets in stats for webpack@5 (#289)

view details

evilebottnawi

commit sha 88b4dbc07d4ec77245ba470570606c70104f1a27

chore(release): 3.1.0

view details

chicoxyzzy

commit sha b8017d72b529268bc80ec78706d0e3b631a82fcc

feat: update Terser to version 5

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

Evilebot Tnawi

commit sha 37cc8132df50ad7b374ec2606df1d0e202a579d1

fix: skip double compression for child compilation

view details

Evilebot Tnawi

commit sha d59eae2108ba43f3f7ce6c83195a8438634a9b55

feat: show minimized assets in stats for webpack@5 (#289)

view details

evilebottnawi

commit sha 88b4dbc07d4ec77245ba470570606c70104f1a27

chore(release): 3.1.0

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

Evilebot Tnawi

commit sha 718b1ce27d49703df6d7b8ddcf40a8a7bdcd37c3

test: resolve todo

view details

chicoxyzzy

commit sha 42f264eb0ccd9835b367c1cde811fb679b18f52f

feat: update Terser to version 5 fix: -

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

Evilebot Tnawi

commit sha 5d2bd29403f614296795664a81e437712469bc05

fix: compatibility cache feature with webpack@5

view details

Evilebot Tnawi

commit sha 718b1ce27d49703df6d7b8ddcf40a8a7bdcd37c3

test: resolve todo

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

Evilebot Tnawi

commit sha 5d2bd29403f614296795664a81e437712469bc05

fix: compatibility cache feature with webpack@5

view details

chicoxyzzy

commit sha e607eede0ec8854eb41f6e75818a0001903e1550

feat: update Terser to version 5

view details

push time in 9 days

CommitCommentEvent

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha f9529da11ca95490779ac5eda55845218c96094c

fix: remove warnings option

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 09273ba12124a83ca86825c62e751080a6477f71

fix: remove warnings option

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 02e48829ebcaecc82b46f4e65dd655e8277917e0

fix: remove warnings option

view details

push time in 9 days

Pull request review commentwebpack-contrib/terser-webpack-plugin

feat: update Terser to version 5

 Object {  exports[`terserOptions option should match snapshot for the "warnings" option with the "true" value: errors 1`] = `Array []`; -exports[`terserOptions option should match snapshot for the "warnings" option with the "true" value: warnings 1`] = `-Array [-  "Terser Plugin: Dropping unreachable code [main.js:91,41]",-  "Terser Plugin: Dropping unused function foo [main.js:91,9]",-]-`;+exports[`terserOptions option should match snapshot for the "warnings" option with the "true" value: warnings 1`] = `Array []`;

warnings are deprecated https://github.com/terser/terser/commit/71dc3456be968ddce2281b93beb4079e609e28ef

chicoxyzzy

comment created time in 9 days

Pull request review commentwebpack-contrib/terser-webpack-plugin

feat: update Terser to version 5

 Object {  exports[`terserOptions option should match snapshot for the "warnings" option with the "true" value: errors 1`] = `Array []`; -exports[`terserOptions option should match snapshot for the "warnings" option with the "true" value: warnings 1`] = `-Array [-  "Terser Plugin: Dropping unreachable code [main.js:91,41]",-  "Terser Plugin: Dropping unused function foo [main.js:91,9]",-]-`;+exports[`terserOptions option should match snapshot for the "warnings" option with the "true" value: warnings 1`] = `Array []`;

I'm not sure why these arrays are empty now 🤔

chicoxyzzy

comment created time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 52f81376dcaca0632cff848ef965e7a6468266db

feat: update Terser to version 5

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 509217a8ef2f119c67181e13974bc09783fada54

feat: update Terser to version 5

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 094d04b8358e510df6e1b4fe3f6cd96e7d89b5ea

feat: update Terser to version 5

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 11785c08bad86b5c22abecaab5d70ccebe7eeb08

feat: update Terser to version 5

view details

push time in 9 days

push eventchicoxyzzy/terser-webpack-plugin

chicoxyzzy

commit sha 352cc2e7495d7afa0ffc2a490d85ae5fc13734f8

feat: update Terser to version 5

view details

push time in 9 days

PR opened webpack-contrib/terser-webpack-plugin

feat: update Terser to version 5

<!-- HOLY CRAP a Pull Request. We ❤️ those!

If you remove or skip this template, you'll make the 🐼 sad and the mighty god of Github will appear and pile-drive the close button from a great height while making animal noises.

Please place an x (no spaces!) in all [ ] that apply -->

This PR contains a:

  • [ ] bugfix
  • [x] new feature
  • [x] code refactor
  • [x] test update <!-- if bug or feature is checked, this should be too -->
  • [ ] typo fix
  • [ ] metadata update

Motivation / Use-Case

Terser 5 release =)

Breaking Changes

minify and transform are async now (btw is transform even used somewhere?)

Additional Info

+100 -182

0 comment

9 changed files

pr created time in 9 days

create barnchchicoxyzzy/terser-webpack-plugin

branch : update_terser

created branch time in 9 days

Pull request review commentTrySound/rollup-plugin-terser

Update Terser to 5.0.0

 Object {     "dynamicImports": Array [],     "exports": Array [],     "fileName": "chunk-1.js",+    "implicitlyLoadedBefore": Array [],     "imports": Array [],     "isDynamicEntry": false,     "isEntry": true,+    "isImplicitEntry": false,     "map": null,     "name": "chunk-1",+    "referencedFiles": Array [],

from rollup 2.20.0

chicoxyzzy

comment created time in 10 days

Pull request review commentTrySound/rollup-plugin-terser

Update Terser to 5.0.0

 Object {     "dynamicImports": Array [],     "exports": Array [],     "fileName": "chunk-1.js",+    "implicitlyLoadedBefore": Array [],

from rollup 2.13.0

chicoxyzzy

comment created time in 10 days

Pull request review commentTrySound/rollup-plugin-terser

Update Terser to 5.0.0

 Object {     "dynamicImports": Array [],     "exports": Array [],     "fileName": "chunk-1.js",+    "implicitlyLoadedBefore": Array [],     "imports": Array [],     "isDynamicEntry": false,     "isEntry": true,+    "isImplicitEntry": false,

from rollup 2.13.0

chicoxyzzy

comment created time in 10 days

push eventchicoxyzzy/rollup-plugin-terser

chicoxyzzy

commit sha 67165fd45968953777abe41b8fcae34c4a5ba02f

Update Terser to 5.0.0

view details

push time in 10 days

PR opened TrySound/rollup-plugin-terser

Update Terser to 5.0.0
+1040 -794

0 comment

4 changed files

pr created time in 10 days

create barnchchicoxyzzy/rollup-plugin-terser

branch : update_deps

created branch time in 10 days

fork chicoxyzzy/rollup-plugin-terser

Rollup plugin to minify generated bundle

fork in 10 days

pull request commentkangax/compat-table

Opera 70 released

thanks!

afmenez

comment created time in 13 days

PR merged kangax/compat-table

Opera 70 released

Opera 70 released this week. I am also adding versions 68 and 69, which were missing. Finally, adding release dates for all versions.

+6783 -5388

0 comment

7 changed files

afmenez

pr closed time in 13 days

push eventkangax/compat-table

Alexandre Folle de Menezes

commit sha 3b668ca016ddce436d869ef3e4bc9d0abed1d0c1

Opera 70 released (#1664) * Opera 70 released * Ressurrecting Opera 63, by request

view details

push time in 13 days

Pull request review commentWebAssembly-Enthusiasts/info

Add basic resources.md

 ## Documentation  #### Specifications- - [Core on webpage](https://webassembly.github.io/spec/core)- - [Core on PDF](https://webassembly.github.io/spec/core/_download/WebAssembly.pdf)+ - [Core](https://webassembly.github.io/spec)
 - [List of the specs on official website](https://webassembly.github.io/spec)
MaxGraey

comment created time in 13 days

Pull request review commentkangax/compat-table

Opera 70 released

     "family": "V8",     "equals": "chrome23",     "short": "OP 15",+    "release": "2013-07-02",     "obsolete": "very"   },   "opera16": {     "full": "Opera 16",     "family": "V8",     "equals": "chrome29",     "short": "OP 16",+    "release": "2013-08-27",     "obsolete": "very"   },   "opera17": {     "full": "Opera 17",     "family": "V8",     "equals": "chrome30",     "short": "OP 17",+    "release": "2013-10-08",     "obsolete": "very"   },   "opera18": {     "full": "Opera 18",     "family": "V8",     "equals": "chrome31",     "short": "OP 18",+    "release": "2013-11-19",     "obsolete": "very"   },   "opera19": {     "full": "Opera 19",     "family": "V8",     "equals": "chrome32",     "short": "OP 19",+    "release": "2014-01-28",     "obsolete": "very"   },   "opera20": {     "full": "Opera 20",     "family": "V8",     "equals": "chrome33",     "short": "OP 20",+    "release": "2014-03-04",     "obsolete": "very"   },   "opera21": {     "full": "Opera 21",     "family": "V8",     "equals": "chrome34",     "short": "OP 21",+    "release": "2014-05-06",     "obsolete": "very"   },   "opera22": {     "full": "Opera 22",     "family": "V8",     "equals": "chrome35",     "short": "OP 22",+    "release": "2014-06-03",     "obsolete": "very"   },   "opera23": {     "full": "Opera 23",     "family": "V8",     "equals": "chrome36",     "short": "OP 23",+    "release": "2014-07-22",     "obsolete": "very"   },   "opera24": {     "full": "Opera 24",     "family": "V8",     "equals": "chrome37",     "short": "OP 24",+    "release": "2014-09-02",     "obsolete": "very"   },   "opera25": {     "full": "Opera 25",     "family": "V8",     "equals": "chrome38",     "short": "OP 25",+    "release": "2014-10-15",     "obsolete": "very"   },   "opera26": {     "full": "Opera 26",     "family": "V8",     "equals": "chrome39",     "short": "OP 26",+    "release": "2014-12-03",     "obsolete": "very"   },   "opera27": {     "full": "Opera 27",     "family": "V8",     "equals": "chrome40",     "short": "OP 27",+    "release": "2015-01-27",     "obsolete": "very"   },   "opera28": {     "full": "Opera 28",     "family": "V8",     "equals": "chrome41",     "short": "OP 28",+    "release": "2015-03-10",     "obsolete": "very"   },   "opera29": {     "full": "Opera 29",     "family": "V8",     "equals": "chrome42",     "short": "OP 29",+    "release": "2015-04-28",     "obsolete": "very"   },   "opera30": {     "full": "Opera 30",     "family": "V8",     "equals": "chrome43",     "short": "OP 30",+    "release": "2015-06-09",     "obsolete": "very"   },   "opera31": {     "full": "Opera 31",     "family": "V8",     "equals": "chrome44",     "short": "OP 31",+    "release": "2015-08-04",     "obsolete": "very"   },   "opera32": {     "full": "Opera 32",     "family": "V8",     "equals": "chrome45",     "short": "OP 32",+    "release": "2015-09-15",     "obsolete": "very"   },   "opera33": {     "full": "Opera 33",     "family": "V8",     "equals": "chrome46",     "short": "OP 33",+    "release": "2015-10-27",     "obsolete": "very"   },   "opera34": {     "full": "Opera 34",     "family": "V8",     "equals": "chrome47",     "short": "OP 34",+    "release": "2015-08-12",     "obsolete": "very"   },   "opera35": {     "full": "Opera 35",     "family": "V8",     "equals": "chrome48",     "short": "OP 35",+    "release": "2016-02-02",     "obsolete": "very"   },   "opera36": {     "full": "Opera 36",     "family": "V8",     "equals": "chrome49",     "short": "OP 36",+    "release": "2016-03-14",     "obsolete": "very"   },   "opera37": {     "full": "Opera 37",     "family": "V8",     "equals": "chrome50",     "short": "OP 37",+    "release": "2016-05-04",     "obsolete": "very"   },   "opera38": {     "full": "Opera 38",     "family": "V8",     "equals": "chrome51",     "short": "OP 38",+    "release": "2016-06-08",     "obsolete": "very"   },   "opera39": {     "full": "Opera 39",     "family": "V8",     "equals": "chrome52",     "short": "OP 39",+    "release": "2016-08-02",     "obsolete": "very"   },   "opera40": {     "full": "Opera 40",     "family": "V8",     "equals": "chrome53",     "short": "OP 40",+    "release": "2016-09-20",     "obsolete": "very"   },   "opera41": {     "full": "Opera 41",     "family": "V8",     "equals": "chrome54",     "short": "OP 41",+    "release": "2016-10-25",     "obsolete": "very"   },   "opera42": {     "full": "Opera 42",     "family": "V8",     "equals": "chrome55",     "short": "OP 42",+    "release": "2016-12-13",     "obsolete": "very"   },   "opera43": {     "full": "Opera 43",     "family": "V8",     "equals": "chrome56",     "short": "OP 43",+    "release": "2017-02-07",     "obsolete": "very"   },   "opera44": {     "full": "Opera 44",     "family": "V8",     "equals": "chrome57",     "short": "OP 44",+    "release": "2017-03-21",     "obsolete": "very"   },   "opera45": {     "full": "Opera 45",     "family": "V8",     "equals": "chrome58",     "short": "OP 45",+    "release": "2017-05-10",     "obsolete": "very"   },   "opera46": {     "full": "Opera 46",     "family": "V8",     "equals": "chrome59",     "short": "OP 46",+    "release": "2017-06-22",     "obsolete": "very"   },   "opera47": {     "full": "Opera 47",     "family": "V8",     "equals": "chrome60",     "short": "OP 47",+    "release": "2017-08-09",     "obsolete": "very"   },   "opera48": {     "full": "Opera 48",     "family": "V8",     "equals": "chrome61",     "short": "OP 48",+    "release": "2017-09-27",     "obsolete": "very"   },   "opera49": {     "full": "Opera 49",     "family": "V8",     "equals": "chrome62",     "short": "OP 49",+    "release": "2017-11-08",     "obsolete": "very"   },   "opera50": {     "full": "Opera 50",     "family": "V8",     "equals": "chrome63",     "short": "OP 50",+    "release": "2018-01-04",     "obsolete": "very"   },   "opera51": {     "full": "Opera 51",     "family": "V8",     "equals": "chrome64",     "short": "OP 51",+    "release": "2018-02-07",     "obsolete": "very"   },   "opera52": {     "full": "Opera 52",     "family": "V8",     "equals": "chrome65",     "short": "OP 52",+    "release": "2018-03-14",     "obsolete": "very"   },   "opera53": {     "full": "Opera 53",     "family": "V8",     "equals": "chrome66",     "short": "OP 53",+    "release": "2018-05-10",     "obsolete": "very"   },   "opera54": {     "full": "Opera 54",     "family": "V8",     "equals": "chrome67",     "short": "OP 54",+    "release": "2018-06-28",     "obsolete": "very"   },   "opera55": {     "full": "Opera 55",     "family": "V8",     "equals": "chrome68",     "short": "OP 55",+    "release": "2018-08-16",     "obsolete": "very"   },   "opera56": {     "full": "Opera 56",     "family": "V8",     "equals": "chrome69",     "short": "OP 56",+    "release": "2018-09-25",     "obsolete": "very"   },   "opera57": {     "full": "Opera 57",     "family": "V8",     "equals": "chrome70",     "short": "OP 57",+    "release": "2018-11-28",     "obsolete": "very"   },   "opera58": {     "full": "Opera 58",     "family": "V8",     "equals": "chrome71",     "short": "OP 58",-    "obsolete": "very"-  },-  "opera59": {-    "full": "Opera 59",-    "family": "V8",-    "equals": "chrome72",-    "short": "OP 59",+    "release": "2019-01-23",     "obsolete": "very"   },   "opera60": {     "full": "Opera 60",     "family": "V8",     "equals": "chrome73",     "short": "OP 60",+    "release": "2019-04-09",     "obsolete": "very"   },-  "opera61": {-    "full": "Opera 61",-    "family": "V8",-    "equals": "chrome74",-    "short": "OP 61",-    "obsolete": true-  },   "opera62": {     "full": "Opera 62",     "family": "V8",     "equals": "chrome75",     "short": "OP 62",-    "obsolete": true+    "release": "2019-06-27",+    "obsolete": "very"   },   "opera63": {     "full": "Opera 63",     "family": "V8",     "equals": "chrome76",     "short": "OP 63",-    "obsolete": true+    "release": "2019-08-20",+    "obsolete": "very"

I think this one should be true until August 2020

afmenez

comment created time in 13 days

Pull request review commentWebAssembly-Enthusiasts/info

Add basic resources.md

+### [Official Website](https://webassembly.org)++## Documentation++#### Specifications+ - [Core on webpage](https://webassembly.github.io/spec/core)+ - [Core on PDF](https://webassembly.github.io/spec/core/_download/WebAssembly.pdf)++#### Proposals+ - [Proposals Roadmap](https://webassembly.org/roadmap)+ - [Proposals repo on Github](https://github.com/WebAssembly/proposals)++#### Other+ - [MDN WebAssembly Documentation](https://developer.mozilla.org/en-US/docs/WebAssembly)+ - [Design doc on Github](https://github.com/WebAssembly/design)+ - [Interactive Opcode Table](https://pengowray.github.io/wasm-ops)+ - [Mechanising and Verifying the WebAssembly Specification (PDF)](https://www.cl.cam.ac.uk/~caw77/papers/mechanising-and-verifying-the-webassembly-specification.pdf)++## Articles+ - [A cartoon intro to WebAssembly by Lin Clark](https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly)++## Made with WebAssembly+ - Figma+ [(1)](https://www.figma.com/blog/webassembly-cut-figmas-load-time-by-3x/)+ [(2)](https://www.figma.com/blog/how-we-built-the-figma-plugin-system)+ - [Google Earth](https://blog.chromium.org/2019/06/webassembly-brings-google-earth-to-more.html)+ - [AutoCAD Web App](https://blogs.autodesk.com/autocad/autocad-web-app-google-io-2018)+ - [1Password](https://blog.1password.com/1password-x-may-2019-update)+ - [GIVE ME MORE!](https://madewithwebassembly.com)++## Playgrounds+ - [Webassembly Studio](https://webassembly.studio)+ - [Wasm Explorer](https://mbebenita.github.io/WasmExplorer)++## Awesome Lists++ - [Awesome Wasm](https://github.com/mbasso/awesome-wasm)<br/>+ Collection of general awesome things regarding WebAssembly ecosystem.+ - [Awesome WebAssembly Languages](https://github.com/appcypher/awesome-wasm-langs)<br/>+ Collection of languages that currently compile to or have their VMs in WebAssembly.+ - [Awesome WebAssembly Runtimes](https://github.com/appcypher/awesome-wasm-runtimes)<br/>+ Collection of virtual machines and tools that execute the WebAssembly.++## Community & Social Media+ - [Community Group](https://www.w3.org/community/webassembly)

Probably this link is not so helpful. I think Discord chat and Telegram chat links will be more helpful from what people could expect from the header

MaxGraey

comment created time in 14 days

Pull request review commentWebAssembly-Enthusiasts/info

Add basic resources.md

+### [Official Website](https://webassembly.org)++## Documentation++#### Specifications+ - [Core on webpage](https://webassembly.github.io/spec/core)+ - [Core on PDF](https://webassembly.github.io/spec/core/_download/WebAssembly.pdf)

I think that there is no need in having PDF link here, but JS API, Web API, and WASI specs would be helpful. https://webassembly.org/specs/ could be enough here

MaxGraey

comment created time in 14 days

pull request commentWebAssembly/website

Update Firefox version in the feature support table

@lars-t-hansen thank you for pointing out! fixed!

chicoxyzzy

comment created time in 14 days

push eventchicoxyzzy/website

Sergey Rubanov

commit sha 029d1d9ffee2dcd721c5dffa837a985b27f954b7

Update features.json

view details

push time in 14 days

Pull request review commentWebAssembly/meetings

Add notes for GC-07-28 meeting

+![WebAssembly logo](/images/WebAssembly.png)++## Agenda for the July 28th video call of WebAssembly's Garbage Collection Subgroup++- **Where**: zoom.us+- **When**: July 28th, 4pm-5pm UTC (July 28th, 9am-10am Pacific Daylight Time)+- **Location**: *link on calendar invite*++### Registration++None required if you've attended before. Fill out the form here to sign up if+it's your first time: https://forms.gle/JehrAB4gWbtHjybt9. The meeting is open+to CG members only.++## Logistics++The meeting will be on a zoom.us video conference.+Installation is required, see the calendar invite.++## Agenda items++1. Opening, welcome and roll call+    1. Opening of the meeting+    1. Introduction of attendees+1. Find volunteers for note taking (acting chair to volunteer)+1. Adoption of the agenda+1. Proposals and discussions+    1. Discussion: Wasm interop with host languages like JavaScript (@tebbi)+1. Closure++## Meeting Notes++### Introduction of attendees++* Adam Klein+* Andreas Rossberg+* Ben Smith+* Daniel Wirtz+* Emanuel Ziegler+* Francis McCabe+* Jakob Kummerow+* JP Sugarbroad+* Lars Hansen+* Luke Wagner+* Ross Tate+* Ryan Hunt+* Sabine+* Slava Kuzmich+* Tobias Tebbi+* Wouter Van Oortmersson+* Zalim Basharov+* Zhi An Ng++### Discussion: Wasm interop with host languages like JavaScript (@tebbi)++TODO(tebbi): slides
Slides: https://docs.google.com/presentation/d/1BqRlDrQIYdkRHHtoZ7F8a2tpFwYoumCCbqQ4SpULajI/
Issue: https://github.com/WebAssembly/gc/issues/107
binji

comment created time in 14 days

Pull request review commentWebAssembly/meetings

Add notes for GC-07-28 meeting

+![WebAssembly logo](/images/WebAssembly.png)++## Agenda for the July 28th video call of WebAssembly's Garbage Collection Subgroup++- **Where**: zoom.us+- **When**: July 28th, 4pm-5pm UTC (July 28th, 9am-10am Pacific Daylight Time)+- **Location**: *link on calendar invite*++### Registration++None required if you've attended before. Fill out the form here to sign up if+it's your first time: https://forms.gle/JehrAB4gWbtHjybt9. The meeting is open+to CG members only.++## Logistics++The meeting will be on a zoom.us video conference.+Installation is required, see the calendar invite.++## Agenda items++1. Opening, welcome and roll call+    1. Opening of the meeting+    1. Introduction of attendees+1. Find volunteers for note taking (acting chair to volunteer)+1. Adoption of the agenda+1. Proposals and discussions+    1. Discussion: Wasm interop with host languages like JavaScript (@tebbi)+1. Closure++## Meeting Notes++### Introduction of attendees++* Adam Klein+* Andreas Rossberg+* Ben Smith+* Daniel Wirtz+* Emanuel Ziegler+* Francis McCabe+* Jakob Kummerow+* JP Sugarbroad+* Lars Hansen+* Luke Wagner+* Ross Tate+* Ryan Hunt+* Sabine+* Slava Kuzmich+* Tobias Tebbi+* Wouter Van Oortmersson+* Zalim Basharov+* Zhi An Ng++### Discussion: Wasm interop with host languages like JavaScript (@tebbi)++TODO(tebbi): slides++[Talking about hash maps / identities]++AR: I'm not sure that I share your assessment that most languages need identity. Even for OO types, languages with tuples would not have identity.++TT: Right, that's why it would be an opt-in feature.++LW: Do you need something separate than identity for hashes?++TT: Not in the spec, but if you need to put an object into the hash map you can't use pointer.++LW: Isn't that an implementation detail?++TT: Yes, but to do so you need to add it to the header, which may be something you don't want to pay for.++FM: there’s more to it, take Java for example, hash in java is a user-definable function, you implement it yourself. If you were compiling Java to Wasm GC, you will compile these hash functions. You have to make sure now that the hash value that the Java class has implemented, is going to be the same as the hash value that JS sees. I don’t see how you can do that if you bake it in at that level.++RT: I don't know enough about how this is done in JS -- but there's an issue filed on this topic. There's system.identityhashcode, but it's not implemented with a field of hash code. Instead there's a weak hash map that's maintained, so for objects that are asked the VM stores it in the table and stores it for you. It's provided on demand.++SK (chat): Java has a notion of identity hash code. It is used by default if you don’t override hashCode(): int++FM: talking about two kinds of hashes... if JS applications see the hash value, it should be the same “normal” hash value that Java applications see it++TT: I'm not sure they actually need to be the same. But you at least need some kind of identity to implement maps and sets. But many languages expose this value as some kind of pointer identity. What you want is that JS maps/sets expose as identity. Given that languages expose the identity code, you need to expose that...++FM: should drop the hash code from the phrase. From average Java POV, you’re just doing pointer comparison.++RT: Java has a class called weakidentityhashmap, which uses hash codes for lazy fields/on-demand fields.++AK: this question is very specific to map and set in JS, implementation specific, can dig into it a lot but maybe should move on for now.++TT: Right, separate discussion. We can move on.++RT: certainly dig into at some point.++[Tobias goes back to "Alternative" slide]++FM: Comment + question. You talk about wasm GC as language, but it isn't really, it's target of many different languages. So you're really talking about interop between Java + JS, etc. Each one of those languages has their own strategy for doing stuff. The question is, did you look at -- some of the issues you talked about are reminiscent of Interface Types. Have you looked at IT at all, in particular for attaching methods.++TT: I have not, but will be curious to learn how this would look like.++FM: The main difference is that we're not attaching stuff to data. Everything is done through an adapter structure that lifts the semantics from your language to some common language. It won't give you everything, e.g. we don't provide access to cyclic structures. Some of the principles are -- the style is different to the RTT -- but I think it more accurately reflects the language interoperability problem. You don't know what the other side is doing until you have a more limited style of interoperability.++AK: one of the use cases TT raised, you do know the surface language is the same, the one generating code knows both sides. Second one of the initial slide, you have a compile to JS app that you are transforming into compile to Wasm.++FM: I do think that's an important use case, but I think that we shouldn't use that to modify wasm in itself. You're talking about compiling Java to JS, but there's a more general problem, taking a JS application...++TT: you could extend your Java to JS compiler to also target Wasm GC for some parts of it. This one compiler can cut a boundary wherever it wants to make sure interop works. JS itself will be a reasonable denominator.++FM: No, if you're a Java bigot (which I'm not), then JS is just a target. The language I'm trying to port is Java and not JS.++LW: different and compelling use case. TS or Flow, permanently output both JS or Wasm, depending on how much you opt in to static typing. Existing languages need to output JS because they are dynamic. A TS app can have some modules JS or some modules Wasm, in a transition period.++FM: right, is this a reason for modifying Wasm?++LW: I think there are a number of ways to achieve that goal.++SK (chat): Could we also have computed JS properties on Wasm objects by adding special get/set functions on RTTs?++ZB:(chat): Have you considered having an ability to add “interceptors”? In other word “accessors”.++TT: That's something we thought about. I didn't present it now, but technically we could do that.++AR: this is the problem, you’re pulling the JS object model in there. This is what dynamic languages would need, I am skeptical of that claim. THere are many instructions there very specific to JS. First the methods, this is OO. then named properties, and ability to put named properties on any object including arrays, JS-specific probably… That’s one part of the problem I see, another is, what do these instructions mean? They don’t really have meaning within Wasm, how do we describe what they mean. Another instance of the case of, intrinsics. You want something to be able to use in the language which is not really part of the language itself, no meaning, but you want it to be efficient somehow. My feeling is that we should be solving that problem, then it might be a neat use case for adding intrinsics if you want to interop with JS, for e.g..++TT: In principle I think I agree. Independently, I think this is solving a problem we have in browsers. So I think we need some kind of answer. I'm not saying adding instructions is the only answer, but we need some answer.++RT: this is an important problem. Trying to play with the ideas. What are your reasons why creating a prototype for objects upon it leaving the Wasm module is a bad approach… Easiest thing to do without your stuff is, export some ref to a structure, JS takes that and it’s a raw structure, no prototype. Then make an object that is a pointer to the struct and has a prototype for accessing a struct. Involves making a wrapper. Why is that so problematic? Want to hear your reasons.++TT: It would be really nice if it was zero overhead. Wrappers are a problem if you need to pass them back and forth. If you pass and forth you need to re-wrap, or have them point in both directions.++LW: you want to know what’s the right shape/map/structure to use on construction of the object. You have to thread that to the allocation instruction, one way or another.++TT: The only alternative to this -- the alternative dosn't really need this. It requires RTT having identity, but later you can add the information to it. But it has its own problems.++LW: an alternative… if we assume rtts have some js api reflection, runtime object that represent wasm export rtt, we need those in any case, probably a way to construct a wasm type, construct an rtt from js using js api. If we have to have those anyway, wil it be okay to say JS construct RTT, from the JS api, you can say what is the prototype to use. From wasm perspective it’s just an rtt that is imported, struct new with that rtt. That’s how you wire it up. You incur some run-once overhead with this. But with hidden classes it’s not free.++TT: I was actually referring to hidden classes that you use to create object literals for example. JS incurs additional cost for this in many places.++LW: you suppose that can be where we start. Then optimize it. As a baseline we can synthesize rtt in JS, set them up, import in wasm, that’s a starting point.++TT: It's possible, but there are other problems. I suggested that methods should be wasm functions. In this proposal you wouldn't have reasonable access by default. It sounds like you're making it into an array (numeric access to wasm fields)...++LW: That’s something we can tweak, how does one write these methods/accessors. They can be tiny little shims that can be inlined, how can I write a method shim in JS that then does the real access to the Wasm object, and what even is the real access? Don’t like the array access, it’s too public-y.++RT: A variant on the idea is that you can import RTT that represents JS layout. It has identity, etc. When people make sub-RTTs of that, in wasm, the engine can generate prototypes for them Afterward, people can modify those to add fields to RTTs, but they know that those are all safe because they type check.++TT: I tried to avoid prototypes for everything. All The methods and properties are done without using prototypes, making them easier to optimize. Want to mention 1 more thing, i was talking about methods because it’s hard to produce RTT on JS side, you can’t refer to Wasm before you have the module.++LW: I would assume that the wasm object takes the receiver as the first parameter, and the glue code would pass "this" as the first argument, in the glue function.++TT: you still have the problem, export something from Wasm... because you use late binding mechanism of JS. A lot more direct if you just have everything together. If you directly export fields without any additional shim, e.g. first tiers in JS (interpreters) can already optimize that. If you always go through getter setter, worse performance until you JIT.++RT: Another thing is -- there are wasm modules, and in interface types that are adapters. There could be specific ways that you could interface with JS. There is a way that you could hook in, this requires you to hook in directly with the wasm module itself. You could imagine that there is a RTT mapping, but maybe in the JS "code", so you could use this instead.++TT: you don’t get this kind of lazy initialization as you construct rtt. Global initializers, you create RTT and JS view right at the same time, you don’t have to run any code until then. Any solution that doesn’t hook into the global initializers won’t have this property.++LW: Speaking to the earlier point about fast data access. If we're saying that the types and RTT are constructed from the JS API, then you can imagine that when you describe the structural layout, you can describe the name. Then you can give public property names to them, and then they wouldn't have a shim.++TT: True, you could do this same thing. But for methods you would always need a shim because of late binding.++LW: right, probably get inlined.++TT: From implementation perspective, adding these instructions is not complicated. Should be part of a bigger discussion. These instructions make sense at the moment for browsers. It would be fine if just browsers implement them.++RT: There's also the intrinsic idea, that Andreas was mentioning earlier.++TT: I think you generally know when you're shipping for browser, or not. You usually know when you're shipping in module.++FM: not quite accurate, there are scenarios where computation may be run in the server or browser, that’s a choice made relatively late at runtime.++TT: Sure you could have modules that don't have JS interaction -- but when you write the module you know when you're interacting with JS or not.++RT: currently that’s the case, will that always be the case? Will people compile Wasm and have it work in a variety of settings or compile specifically to the platform they are targeting. That's why we have embedder specific adaptors. Think you have interesting ideas, trying to work with you to play with ideas and combine them with constraints in the space.++BS: wanted to mention this comment in chat: “How about to be able to define whole shape  simultaneously? (w/o intermediate RTTs)+Maybe even define it statically” - ZB++TT: proposed mostly for simplicity. You can also have more complex form, a section describing tree shape of complete thing, then single instruction to write everything at once. A complication instruction that takes all the information as an immediate. Easiest to present this way but not necessary the best.++ZB: another question, have you considered having an ability to add interceptors, something like accessors.++TT: yes, in the earlier version of proposal we had that, I don’t see any technical reasons you couldn’t have it. Similar to method, you can install something like a getter, that actually calls a Wasm function. The reason why I presented it this way is because having the JS interpreter fast, simple case fast, you want directly readable and writable fields without any calling.++LW: can it be useful for JS to create/consume GC objects even without Wasm around. Just wanting to use these as objects that are more JIT optimizable, maybe want stricter typing.++TT: I would like that. I think that's missing from JS language. Can't comment on how difficult it would be to get through ES, but I would like it.++RT: like the typed objects paper++LW: if it was in JS, a first class extension to the class syntax to declare this with extra keywords… when you think about that, how does that interact with Wasm, use that only, or with Wasm?++BS: probably a good place to leave it. Thanks TT. Continue discussion on GitHub issue, open a new one if no existing.
BS: probably a good place to leave it. Thanks TT. Continue discussion on [GitHub issue](https://github.com/WebAssembly/gc/issues/107).
binji

comment created time in 14 days

push eventchicoxyzzy/compat-table

push time in 14 days

push eventchicoxyzzy/compat-table

chicoxyzzy

commit sha dc2f349c7f0d07aae2f8366eaa39b9511d8014bf

Mark Firefox 77 as obsolete

view details

push time in 14 days

push eventchicoxyzzy/compat-table

Sergey Rubanov

commit sha 163aacb6f93e325231d578e31c03141cd9086dbb

Firefox 79 release (#1663)

view details

push time in 14 days

push eventkangax/compat-table

Sergey Rubanov

commit sha 163aacb6f93e325231d578e31c03141cd9086dbb

Firefox 79 release (#1663)

view details

push time in 14 days

delete branch chicoxyzzy/compat-table

delete branch : fireffox79

delete time in 14 days

PR merged kangax/compat-table

Firefox 79 release

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/79#JavaScript

+3103 -3095

0 comment

7 changed files

chicoxyzzy

pr closed time in 14 days

Pull request review commentWebAssembly/meetings

Add notes for GC-07-28 meeting

+![WebAssembly logo](/images/WebAssembly.png)++## Agenda for the July 28th video call of WebAssembly's Garbage Collection Subgroup++- **Where**: zoom.us+- **When**: July 28th, 4pm-5pm UTC (July 28th, 9am-10am Pacific Daylight Time)+- **Location**: *link on calendar invite*++### Registration++None required if you've attended before. Fill out the form here to sign up if+it's your first time: https://forms.gle/JehrAB4gWbtHjybt9. The meeting is open+to CG members only.++## Logistics++The meeting will be on a zoom.us video conference.+Installation is required, see the calendar invite.++## Agenda items++1. Opening, welcome and roll call+    1. Opening of the meeting+    1. Introduction of attendees+1. Find volunteers for note taking (acting chair to volunteer)+1. Adoption of the agenda+1. Proposals and discussions+    1. Discussion: Wasm interop with host languages like JavaScript (@tebbi)+1. Closure++## Meeting Notes++### Introduction of attendees++* Adam Klein+* Andreas Rossberg+* Ben Smith+* Daniel Wirtz+* Emanuel Ziegler+* Francis McCabe+* Jakob Kummerow+* JP Sugarbroad+* Lars Hansen+* Luke Wagner+* Ross Tate+* Ryan Hunt+* Sabine+* Slava Kuzmich+* Tobias Tebbi+* Wouter Van Oortmersson+* Zalim Basharov+* Zhi An Ng++### Discussion: Wasm interop with host languages like JavaScript (@tebbi)++TODO(tebbi): slides++[Talking about hash maps / identities]++AR: I'm not sure that I share your assessment that most languages need identity. Even for OO types, languages with tuples would not have identity.++TT: Right, that's why it would be an opt-in feature.++LW: Do you need something separate than identity for hashes?++TT: Not in the spec, but if you need to put an object into the hash map you can't use pointer.++LW: Isn't that an implementation detail?++TT: Yes, but to do so you need to add it to the header, which may be something you don't want to pay for.++FM: there’s more to it, take Java for example, hash in java is a user-definable function, you implement it yourself. If you were compiling Java to Wasm GC, you will compile these hash functions. You have to make sure now that the hash value that the Java class has implemented, is going to be the same as the hash value that JS sees. I don’t see how you can do that if you bake it in at that level.++RT: I don't know enough about how this is done in JS -- but there's an issue filed on this topic. There's system.identityhashcode, but it's not implemented with a field of hash code. Instead there's a weak hash map that's maintained, so for objects that are asked the VM stores it in the table and stores it for you. It's provided on demand.++SK (chat): Java has a notion of identity hash code. It is used by default if you don’t override hashCode(): int++FM: talking about two kinds of hashes... if JS applications see the hash value, it should be the same “normal” hash value that Java applications see it++TT: I'm not sure they actually need to be the same. But you at least need some kind of identity to implement maps and sets. But many languages expose this value as some kind of pointer identity. What you want is that JS maps/sets expose as identity. Given that languages expose the identity code, you need to expose that...++FM: should drop the hash code from the phrase. From average Java POV, you’re just doing pointer comparison.++RT: Java has a class called weakidentityhashmap, which uses hash codes for lazy fields/on-demand fields.++AK: this question is very specific to map and set in JS, implementation specific, can dig into it a lot but maybe should move on for now.++TT: Right, separate discussion. We can move on.++RT: certainly dig into at some point.++[Tobias goes back to "Alternative" slide]++FM: Comment + question. You talk about wasm GC as language, but it isn't really, it's target of many different languages. So you're really talking about interop between Java + JS, etc. Each one of those languages has their own strategy for doing stuff. The question is, did you look at -- some of the issues you talked about are reminiscent of Interface Types. Have you looked at IT at all, in particular for attaching methods.++TT: I have not, but will be curious to learn how this would look like.++FM: The main difference is that we're not attaching stuff to data. Everything is done through an adapter structure that lifts the semantics from your language to some common language. It won't give you everything, e.g. we don't provide access to cyclic structures. Some of the principles are -- the style is different to the RTT -- but I think it more accurately reflects the language interoperability problem. You don't know what the other side is doing until you have a more limited style of interoperability.++AK: one of the use cases TT raised, you do know the surface language is the same, the one generating code knows both sides. Second one of the initial slide, you have a compile to JS app that you are transforming into compile to Wasm.++FM: I do think that's an important use case, but I think that we shouldn't use that to modify wasm in itself. You're talking about compiling Java to JS, but there's a more general problem, taking a JS application...++TT: you could extend your Java to JS compiler to also target Wasm GC for some parts of it. This one compiler can cut a boundary wherever it wants to make sure interop works. JS itself will be a reasonable denominator.++FM: No, if you're a Java bigot (which I'm not), then JS is just a target. The language I'm trying to port is Java and not JS.++LW: different and compelling use case. TS or Flow, permanently output both JS or Wasm, depending on how much you opt in to static typing. Existing languages need to output JS because they are dynamic. A TS app can have some modules JS or some modules Wasm, in a transition period.++FM: right, is this a reason for modifying Wasm?++LW: I think there are a number of ways to achieve that goal.++SK (chat): Could we also have computed JS properties on Wasm objects by adding special get/set functions on RTTs?++ZB:(chat): Have you considered having an ability to add “interceptors”? In other word “accessors”.++TT: That's something we thought about. I didn't present it now, but technically we could do that.++AR: this is the problem, you’re pulling the JS object model in there. This is what dynamic languages would need, I am skeptical of that claim. THere are many instructions there very specific to JS. First the methods, this is OO. then named properties, and ability to put named properties on any object including arrays, JS-specific probably… That’s one part of the problem I see, another is, what do these instructions mean? They don’t really have meaning within Wasm, how do we describe what they mean. Another instance of the case of, intrinsics. You want something to be able to use in the language which is not really part of the language itself, no meaning, but you want it to be efficient somehow. My feeling is that we should be solving that problem, then it might be a neat use case for adding intrinsics if you want to interop with JS, for e.g..++TT: In principle I think I agree. Independently, I think this is solving a problem we have in browsers. So I think we need some kind of answer. I'm not saying adding instructions is the only answer, but we need some answer.++RT: this is an important problem. Trying to play with the ideas. What are your reasons why creating a prototype for objects upon it leaving the Wasm module is a bad approach… Easiest thing to do without your stuff is, export some ref to a structure, JS takes that and it’s a raw structure, no prototype. Then make an object that is a pointer to the struct and has a prototype for accessing a struct. Involves making a wrapper. Why is that so problematic? Want to hear your reasons.++TT: It would be really nice if it was zero overhead. Wrappers are a problem if you need to pass them back and forth. If you pass and forth you need to re-wrap, or have them point in both directions.++LW: you want to know what’s the right shape/map/structure to use on construction of the object. You have to thread that to the allocation instruction, one way or another.++TT: The only alternative to this -- the alternative dosn't really need this. It requires RTT having identity, but later you can add the information to it. But it has its own problems.++LW: an alternative… if we assume rtts have some js api reflection, runtime object that represent wasm export rtt, we need those in any case, probably a way to construct a wasm type, construct an rtt from js using js api. If we have to have those anyway, wil it be okay to say JS construct RTT, from the JS api, you can say what is the prototype to use. From wasm perspective it’s just an rtt that is imported, struct new with that rtt. That’s how you wire it up. You incur some run-once overhead with this. But with hidden classes it’s not free.++TT: I was actually referring to hidden classes that you use to create object literals for example. JS incurs additional cost for this in many places.++LW: you suppose that can be where we start. Then optimize it. As a baseline we can synthesize rtt in JS, set them up, import in wasm, that’s a starting point.++TT: It's possible, but there are other problems. I suggested that methods should be wasm functions. In this proposal you wouldn't have reasonable access by default. It sounds like you're making it into an array (numeric access to wasm fields)...++LW: That’s something we can tweak, how does one write these methods/accessors. They can be tiny little shims that can be inlined, how can I write a method shim in JS that then does the real access to the Wasm object, and what even is the real access? Don’t like the array access, it’s too public-y.++RT: A variant on the idea is that you can import RTT that represents JS layout. It has identity, etc. When people make sub-RTTs of that, in wasm, the engine can generate prototypes for them Afterward, people can modify those to add fields to RTTs, but they know that those are all safe because they type check.++TT: I tried to avoid prototypes for everything. All The methods and properties are done without using prototypes, making them easier to optimize. Want to mention 1 more thing, i was talking about methods because it’s hard to produce RTT on JS side, you can’t refer to Wasm before you have the module.++LW: I would assume that the wasm object takes the receiver as the first parameter, and the glue code would pass "this" as the first argument, in the glue function.++TT: you still have the problem, export something from Wasm... because you use late binding mechanism of JS. A lot more direct if you just have everything together. If you directly export fields without any additional shim, e.g. first tiers in JS (interpreters) can already optimize that. If you always go through getter setter, worse performance until you JIT.++RT: Another thing is -- there are wasm modules, and in interface types that are adapters. There could be specific ways that you could interface with JS. There is a way that you could hook in, this requires you to hook in directly with the wasm module itself. You could imagine that there is a RTT mapping, but maybe in the JS "code", so you could use this instead.++TT: you don’t get this kind of lazy initialization as you construct rtt. Global initializers, you create RTT and JS view right at the same time, you don’t have to run any code until then. Any solution that doesn’t hook into the global initializers won’t have this property.++LW: Speaking to the earlier point about fast data access. If we're saying that the types and RTT are constructed from the JS API, then you can imagine that when you describe the structural layout, you can describe the name. Then you can give public property names to them, and then they wouldn't have a shim.++TT: True, you could do this same thing. But for methods you would always need a shim because of late binding.++LW: right, probably get inlined.++TT: From implementation perspective, adding these instructions is not complicated. Should be part of a bigger discussion. These instructions make sense at the moment for browsers. It would be fine if just browsers implement them.++RT: There's also the intrinsic idea, that Andreas was mentioning earlier.++TT: I think you generally know when you're shipping for browser, or not. You usually know when you're shipping in module.++FM: not quite accurate, there are scenarios where computation may be run in the server or browser, that’s a choice made relatively late at runtime.++TT: Sure you could have modules that don't have JS interaction -- but when you write the module you know when you're interacting with JS or not.++RT: currently that’s the case, will that always be the case? Will people compile Wasm and have it work in a variety of settings or compile specifically to the platform they are targeting. That's why we have embedder specific adaptors. Think you have interesting ideas, trying to work with you to play with ideas and combine them with constraints in the space.++BS: wanted to mention this comment in chat: “How about to be able to define whole shape  simultaneously? (w/o intermediate RTTs)+Maybe even define it statically” - ZB++TT: proposed mostly for simplicity. You can also have more complex form, a section describing tree shape of complete thing, then single instruction to write everything at once. A complication instruction that takes all the information as an immediate. Easiest to present this way but not necessary the best.++ZB: another question, have you considered having an ability to add interceptors, something like accessors.++TT: yes, in the earlier version of proposal we had that, I don’t see any technical reasons you couldn’t have it. Similar to method, you can install something like a getter, that actually calls a Wasm function. The reason why I presented it this way is because having the JS interpreter fast, simple case fast, you want directly readable and writable fields without any calling.++LW: can it be useful for JS to create/consume GC objects even without Wasm around. Just wanting to use these as objects that are more JIT optimizable, maybe want stricter typing.++TT: I would like that. I think that's missing from JS language. Can't comment on how difficult it would be to get through ES, but I would like it.++RT: like the typed objects paper++LW: if it was in JS, a first class extension to the class syntax to declare this with extra keywords… when you think about that, how does that interact with Wasm, use that only, or with Wasm?++BS: probably a good place to leave it. Thanks TT. Continue discussion on GitHub issue, open a new one if no existing.

a link to the issue would be helpful!

binji

comment created time in 15 days

pull request commentWebAssembly-Enthusiasts/info

Add basic resources.md

I think that https://webassembly.org/specs/ instead of all links under "Specifications" header will be enough

MaxGraey

comment created time in 15 days

Pull request review commentWebAssembly-Enthusiasts/info

Add basic resources.md

+## Official Website+ - https://webassembly.org++## Specifications+ - [Core on webpage](https://webassembly.github.io/spec/core)+ - [Core on PDF](https://webassembly.github.io/spec/core/_download/WebAssembly.pdf)+ - [Core on Github](https://github.com/WebAssembly/design)

these are design docs, not spec

MaxGraey

comment created time in 15 days

PR opened kangax/compat-table

Firefox 79 release

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/79#JavaScript

+3103 -3095

0 comment

7 changed files

pr created time in 15 days

push eventchicoxyzzy/compat-table

push time in 15 days

create barnchchicoxyzzy/compat-table

branch : fireffox79

created branch time in 15 days

push eventchicoxyzzy/compat-table

Sergey Rubanov

commit sha 2e84b064029052ef1d2ab78641a1817f93008bb8

Update Safari test results (#1662)

view details

chicoxyzzy

commit sha dcccac8faa1434681203e545a7c361c869684cdd

Firefox 79 release

view details

push time in 15 days

push eventchicoxyzzy/website

Sergey Rubanov

commit sha eb405366fdb14d37bd7154e9568865ae4461d850

Update Firefox version in the feature support table

view details

push time in 15 days

issue commentWebAssembly-Enthusiasts/info

Best name for this repo

on the other hand it would be better to not to break links to the docs from other resources

MaxGraey

comment created time in 15 days

issue commentWebAssembly-Enthusiasts/info

Best name for this repo

oh, I see #1

MaxGraey

comment created time in 15 days

issue commentWebAssembly-Enthusiasts/info

Best name for this repo

or do you propose to add more info here?

MaxGraey

comment created time in 15 days

issue commentWebAssembly-Enthusiasts/info

Best name for this repo

probably webassambly-faq would be more googleable

MaxGraey

comment created time in 15 days

delete branch chicoxyzzy/compat-table

delete branch : safari_update

delete time in 15 days

PR opened kangax/compat-table

Update Safari test results
+22 -18

0 comment

6 changed files

pr created time in 15 days

push eventchicoxyzzy/compat-table

push time in 15 days

create barnchchicoxyzzy/compat-table

branch : safari_update

created branch time in 15 days

push eventchicoxyzzy/compat-table

Sergey Rubanov

commit sha 8a700812b81bf74b6023be424e222a493127f7a5

Add Firefox private fields flag (#1661)

view details

chicoxyzzy

commit sha e6c5de6e0d8805cba9d898d816680d254af55615

Update Safari test results

view details

push time in 15 days

delete branch chicoxyzzy/compat-table

delete branch : ff_private_fields

delete time in 15 days

push eventkangax/compat-table

Sergey Rubanov

commit sha 8a700812b81bf74b6023be424e222a493127f7a5

Add Firefox private fields flag (#1661)

view details

push time in 15 days

PR merged kangax/compat-table

Add Firefox private fields flag

https://hg.mozilla.org/integration/autoland/rev/f19dcd04e137

+1202 -1181

0 comment

2 changed files

chicoxyzzy

pr closed time in 15 days

PR opened kangax/compat-table

Add Firefox private fields flag

https://hg.mozilla.org/integration/autoland/rev/f19dcd04e137

+1202 -1181

0 comment

2 changed files

pr created time in 15 days

create barnchchicoxyzzy/compat-table

branch : ff_private_fields

created branch time in 15 days

push eventchicoxyzzy/compat-table

Sergey Rubanov

commit sha 7083acd0cf62010c4ebbfc9ed75b803aabf96247

Update SAB support in Firefox (#1659)

view details

Sergey Rubanov

commit sha 80df2029c74257d7e04ad2349c07865eae24f040

Update SAB support notes for Firefox (#1660)

view details

push time in 15 days

PR opened surma/ishoudinireadyyet.com

Fix parser API links

@surma I've just noticed that I copy-pasted and then updated wrong parts in https://github.com/surma/ishoudinireadyyet.com/commit/2afb1194d973af9b6e03e1f936357e5f8e67335a 😓

+5 -5

0 comment

2 changed files

pr created time in 16 days

push eventchicoxyzzy/ishoudinireadyyet.com

chicoxyzzy

commit sha 9acd56af2f494c1212ba107040045ba5ebf38e58

Update Samsung Internet to version 12 and Painting API notes updates

view details

chicoxyzzy

commit sha 07e685266138fdced3b689882e30f4193c2edf9c

bring Font Metrics link back

view details

Surma

commit sha 542b7c762ea0ea3f4be2bd1f0740e1b54164205c

Merge pull request #43 from chicoxyzzy/samsung12_upd Update Samsung Internet to version 12 and Painting API notes updates

view details

push time in 16 days

create barnchchicoxyzzy/ishoudinireadyyet.com

branch : fix_parser_api_links

created branch time in 16 days

delete branch chicoxyzzy/ishoudinireadyyet.com

delete branch : samsung12_upd

delete time in 16 days

pull request commentsurma/ishoudinireadyyet.com

Update Samsung Internet to version 12 and Painting API notes updates

Last commit brings back a link to the Font Metrics API "A Collection of Interesting Ideas" document which was deleted in https://github.com/surma/ishoudinireadyyet.com/commit/84e35defbf7a884fbb2a230083d00bcf20a1b06a

chicoxyzzy

comment created time in 16 days

push eventchicoxyzzy/ishoudinireadyyet.com

chicoxyzzy

commit sha 07e685266138fdced3b689882e30f4193c2edf9c

bring Font Metrics link back

view details

push time in 16 days

PR closed surma/ishoudinireadyyet.com

Samsung 12 updates

Samsung 12 Beta is based on Chromium 79

+21 -9

1 comment

4 changed files

chicoxyzzy

pr closed time in 16 days

PR opened surma/ishoudinireadyyet.com

Update Samsung Internet to version 12 and Painting API notes updates

I had some weird conflicts in https://github.com/surma/ishoudinireadyyet.com/pull/39 and https://github.com/surma/ishoudinireadyyet.com/pull/38, so I created this new PR with changes from both

+16 -7

0 comment

7 changed files

pr created time in 16 days

create barnchchicoxyzzy/ishoudinireadyyet.com

branch : samsung12_upd

created branch time in 16 days

push eventchicoxyzzy/ishoudinireadyyet.com

chicoxyzzy

commit sha 2c96f3536481a06fd5804fde9ebd5d243f7f74f8

Change Font API and Parser API spec statuses to proposal

view details

chicoxyzzy

commit sha 853d37ecd322d274c7b878c98fd274d7da532b77

Samsung 12 updates

view details

push time in 16 days

push eventchicoxyzzy/ishoudinireadyyet.com

chicoxyzzy

commit sha 2afb1194d973af9b6e03e1f936357e5f8e67335a

Change Font API and Parser API spec statuses to proposal

view details

Surma

commit sha 0654fafeaa29e49cfa761201b292da2d52179d5b

Merge pull request #42 from surma/revert-40-patch-1 Revert "Include w3c working draft for the Font Metrics API"

view details

Surma

commit sha 27fc1a7e860df50b4a1439bee926df8aae851f63

Merge branch 'master' into docs_status

view details

Surma

commit sha 5936fed5c8208d4244fff1c01833c3bbb103a9d5

Merge pull request #41 from chicoxyzzy/docs_status Change Font API and Parser API spec statuses to proposal

view details

chicoxyzzy

commit sha 55d1bfde7233a4f8eccae047e6634b15dc8fc239

Change Font API and Parser API spec statuses to proposal

view details

chicoxyzzy

commit sha 3c2368185595901971a82c3a7cb77e8ff8ea978e

Samsung 12 updates

view details

push time in 16 days

push eventchicoxyzzy/ishoudinireadyyet.com

Surma

commit sha 84e35defbf7a884fbb2a230083d00bcf20a1b06a

Revert "Include w3c working draft for the Font Metrics API"

view details

Surma

commit sha 0654fafeaa29e49cfa761201b292da2d52179d5b

Merge pull request #42 from surma/revert-40-patch-1 Revert "Include w3c working draft for the Font Metrics API"

view details

Surma

commit sha 27fc1a7e860df50b4a1439bee926df8aae851f63

Merge branch 'master' into docs_status

view details

Surma

commit sha 5936fed5c8208d4244fff1c01833c3bbb103a9d5

Merge pull request #41 from chicoxyzzy/docs_status Change Font API and Parser API spec statuses to proposal

view details

push time in 16 days

push eventchicoxyzzy/ishoudinireadyyet.com

Surma

commit sha 0e0432d8f580173747917773445b6c88507d7645

Merge pull request #40 from edgerunner/patch-1 Include w3c working draft for the Font Metrics API

view details

Surma

commit sha 84e35defbf7a884fbb2a230083d00bcf20a1b06a

Revert "Include w3c working draft for the Font Metrics API"

view details

chicoxyzzy

commit sha e29f07c72d2b5e9c497e9b5533f84c36dbecb0df

Change Font API and Parser API spec statuses to proposal

view details

chicoxyzzy

commit sha be2017166d1ace37dd286e79ee591bfa5bea8658

Samsung 12 updates

view details

push time in 16 days

push eventchicoxyzzy/ishoudinireadyyet.com

chicoxyzzy

commit sha d97916b688e04a2d82ea8b3fac519d97addf20c7

Samsung 12 updates

view details

push time in 16 days

more