TC39 Roundup Drama Edition Part II: JS0 and JSSugar

In this episode, Surma talks about a presenation-maybe-soon-to-be-a-proposal "JS0", which explores the idea of splitting JavaScript into two specifications: JS0, focusing on security, performance and capabilties, implemented by engines; and JSSugar, focussing on developer productivity and syntactic sugar features implemented by build tools.

Notes & Corrections:

  • Yes, I know, people still do have to step through assembler. But I stand behind the essence of my point: The debug symbols for compiled languages feel very reliable. We should be able to at least match that reliability in JavaScript.
  • Guy Bedford currently works at Fastly.

Resources:

Transcript
  1. Surma:Welcome back! Welcome back? No, this time it's actually a welcome back to a brand new episode of OTMT. I am Surma.
  2. Jake:I love the way you started. Too high there, realised you couldn't sustain it, and just
  3. Jake:came down an octave for the rest. I'm Jake, by the way. Hello.
  4. Surma:And this is our podcast. And thanks to Shopify for letting us do this and giving us some money.
  5. Jake:I mean, they don't give us money to do this. Well, they pay for the hosting, but, yeah.
  6. Surma:They do, yeah. Yeah, it's how society works.
  7. Jake:They pay us to do other things. Which I think is fair enough. That seems fair, doesn't it?
  8. Jake:Right, so are you going to apologise to the listeners for what you did?
  9. Surma:Yes, it was genuinely not planned to make this a two-part. I'm basically pulling a wicket.
  10. Jake:What's that? No?
  11. Surma:Like, didn't you hear the whole drama that wicked the movie where they turned the musical into a movie? A two-hour-thirty-movie?
  12. Surma:And it turns out it's a two-parter, so it's gonna be another two-hour-and-thirty-movie coming out, even though the musical itself is two hours long with intermission.
  13. Surma:What? I am shocked. Shocked, I say!
  14. Jake:I didn't know that. OK, yes, OK, that's outside of my sphere of knowledge. Hey, look, musicals
  15. Jake:are not my thing, I have to say. Yeah. Ah, oh, there you go. I mean, I've seen musicals.
  16. Surma:Well, that's what happens when you live with a musicologist.
  17. Jake:I've seen enough to know. I was once musical curious, but I gave it a try and I just decided
  18. Jake:I just didn't like it. So I'm not against people who like musicals. I think it's fine.
  19. Surma:As long as they do it in their own home.
  20. Jake:Yeah, as long as they don't rub it in my face, I'm fine with it. And I'd say, you know, they're
  21. Jake:fine people, it's just not for me.
  22. Surma:Yes, so my sincerest apologies to our listeners. I started the last episode saying,
  23. Surma:we're gonna talk about two proposals, and then we jabbered on about the first one for so long that the second episode felt like abuse.
  24. Surma:So, that means we now have an entire episode where we talk about the juicy, the dramaful, the beautiful JS Zero proposal.
  25. Jake:Oh, here we go. Yes, yes, finally. Right. This is what I want.
  26. Surma:Shall we just jump straight in?
  27. Jake:Just give me all the drama. Come on. Been waiting weeks for this.
  28. Surma:So, I guess, first asterisk. Is it a proposal? I'm actually not sure.
  29. Surma:So, it was talked about in the last face-to-face meeting of TC39 in October,
  30. Surma:and it was just a slight deck scheduled in the open-ended discussion category.
  31. Surma:Well, that's the thing, right? So, this slight deck that was presented was linked to in the agenda,
  32. Jake:And it kicked up a big ol' stink, if social media is to be believed.
  33. Surma:which is public, as it should be for a standards body, so I'm applauding them.
  34. Surma:And the slight deck was, you know, in the open-ended discussion category.
  35. Jake:Mmm.
  36. Surma:was linked to in the agenda, which is public, as it should be for a standards body, so I'm applauding them.
  37. Surma:And the slight deck was, you know, made and presented by Shu, our former colleague at the Googles.
  38. Surma:But the slight deck also lists other people, one person from Google, that being Shu,
  39. Surma:two people from Mozilla, two people from Apple, one person from Modable, and one person from Sony.
  40. Surma:So, this is not just a proposal, or this is not a slight deck, I should say, where they go like,
  41. Jake:Oh, interesting, because, I mean, with the drama that I saw, and like I say, I've, well,
  42. Surma:LOL, Google doing shit, but this was actually, you know, run by other people and other browser people.
  43. Surma:LOL, Google doing shit, but this was actually, you know, run by other people and other browser people.
  44. Jake:like I said in the previous episode, I've been, because I knew you were going to do
  45. Jake:this episode, I've been trying to keep myself away from it, so I'm hearing this for the
  46. Jake:first time, but very much the information I saw suggested that Google is trying to destroy
  47. Jake:JavaScript forever.
  48. Surma:Yes, and that is true! No, no it's not.
  49. Surma:So, there is a delineation that is also, again, made very explicit in the slight deck itself.
  50. Surma:These people who are listed on the first slide, as like, you know, we want to talk about this,
  51. Surma:they all agree on the problem at hand, and they agree that something should be done.
  52. Jake:Mmm.
  53. Surma:The actual, quote-unquote, proposal, the thing that is proposed, showcased as a potential solution for this problem,
  54. Jake:Oh, okay, so this is where the Google's killing JavaScript bits come into it. I see, so it's
  55. Surma:called JS0, is by Google. It's the preferred solution by Google, and may or may not be the preferred solution
  56. Surma:of these other people working for these other companies.
  57. Jake:not totally made up. Oh.
  58. Surma:Yeah, maybe. That being said, when I looked to a slight deck, I liked it.
  59. Surma:I was not, there's nuances, and hopefully we're going to talk about all of these,
  60. Surma:but as not a language implementer, JavaScript implementer,
  61. Surma:but someone who has recently dabbled in trying to build their own language,
  62. Surma:I thought that proposal is quite good.
  63. Surma:Anyway, the reason the drama is interesting is because it was presented on October 8th.
  64. Jake:Okay, okay, come on then.
  65. Surma:The drama on Twitter was on October 5th.
  66. Jake:Oh.
  67. Surma:So, someone stumbled over, because the agenda is public, and the slight decks were linked,
  68. Surma:somebody stumbled over this, and decided to do a Twitter thread.
  69. Jake:I mean, look, I don't blame them for that. That's a juicy slide deck. I, look at this,
  70. Surma:It's a juicy slight deck.
  71. Jake:look at this data, it looks utterly terrifying. We should talk about what's in the slide deck,
  72. Jake:because I have looked at the slide deck.
  73. Surma:That's what I want to talk about.
  74. Surma:So, I haven't really made up my mind whether I want to link to the Twitter thread,
  75. Surma:because I feel like it did go viral, at least for the standards of a TC39-related topic,
  76. Surma:but also, I don't want that person to necessarily get griefed if people think they were being a bit overzealous,
  77. Surma:but also, I worry that the thread might not age super well.
  78. Surma:So, I'd rather link to the slight deck and the official things,
  79. Jake:Yes, so it was basically that Google is replacing JavaScript with Dart, right?
  80. Surma:and people can hopefully, I'm going to say, form their own opinion after listening to my opinion
  81. Surma:for what is probably going to be two hours.
  82. Surma:So, let's see.
  83. Surma:So, I'll try and explain this proposal, the slight deck, and how I understand it,
  84. Surma:and how it's motivated, and maybe I can weave in a couple of the misunderstandings
  85. Surma:or the concerns that I've seen, and talk a bit about them.
  86. Surma:No, that was about ten years ago.
  87. Jake:Right.
  88. Surma:They did do that, and then they backpedaled on that.
  89. Surma:This one is actually, at its core, quite simple.
  90. Jake:Okay, cool, good.
  91. Jake:All right.
  92. Surma:It splits the JavaScript language into two layers.
  93. Jake:Right.
  94. Surma:There is the JS0 layer, that is JavaScript,
  95. Surma:as it is implemented by what TC39 calls implementers.
  96. Surma:So, those are the engines, the browsers, the buns, the dinos of this world.
  97. Surma:Well, I guess, you know, both bun and dino actually just use an engine from a browser,
  98. Jake:Yes, sure.
  99. Surma:but you know what I mean.
  100. Surma:And JS0 would probably be what JavaScript is today.
  101. Surma:Kind of like, that's JS0.
  102. Surma:The second layer, second part, is JSSugar,
  103. Surma:which would kind of be its own separate specification,
  104. Surma:but a proper, like, standard specification,
  105. Surma:and that's the JavaScript that developers write.
  106. Surma:So, now there's a separation between what browsers or what implementers can execute,
  107. Jake:Okay, and so there's nothing new about this. I mean, we've been doing this for, well, we've
  108. Surma:and what developers would write.
  109. Surma:Kind of, yeah.
  110. Jake:had that split for years, right? Like, we've, I know that when I open up, like, JSpin or
  111. Jake:CodePen or whatever, like, I'm in raw JavaScript mode, and whereas when I'm pretty much writing
  112. Jake:code for most of the time, I'm writing TypeScript, so I am writing some sort of sugar on top.
  113. Surma:Exactly.
  114. Jake:Okay.
  115. Surma:Exactly.
  116. Surma:I think that's where all the tension was seen by some of the developers
  117. Surma:who feel strongly about writing vanilla.
  118. Surma:So, we can dive into that a bit.
  119. Surma:So, the idea would be, is that now, basically,
  120. Surma:it is part of the standardized process of writing JavaScript,
  121. Surma:is that there has to be a translation tool that translates JSSugar into JS0.
  122. Jake:Cool.
  123. Surma:And you're right, that is already reality in most scenarios.
  124. Jake:Wait, do I have to type this out?
  125. Jake:Yes, you do.
  126. Surma:Like, you have your Babels, or your SWCs, or rolldowns, or TSC.
  127. Jake:Okay.
  128. Jake:Okay.
  129. Jake:Okay.
  130. Jake:Okay.
  131. Jake:So, I'm going to type it out.
  132. Surma:You have, usually, in any non-throwaway setup,
  133. Jake:Okay.
  134. Jake:Okay.
  135. Jake:Okay.
  136. Jake:Okay.
  137. Surma:a tool that processes your JavaScript.
  138. Jake:Okay.
  139. Jake:Okay.
  140. Jake:Okay.
  141. Jake:What was it?
  142. Surma:At the very least, for minification,
  143. Jake:Okay.
  144. Jake:Okay.
  145. Surma:but most of the time, you have some sort of target ES2016,
  146. Jake:Okay.
  147. Jake:Okay.
  148. Jake:Okay.
  149. Jake:Okay.
  150. Jake:Okay.
  151. Surma:because you want to write ES2020 and use newer features,
  152. Jake:Okay.
  153. Jake:Okay.
  154. Jake:Okay.
  155. Jake:Okay.
  156. Surma:but then it gets transpiled down to an older version of JavaScript,
  157. Jake:Okay.
  158. Jake:Okay.
  159. Jake:Okay.
  160. Jake:Okay.
  161. Jake:Okay.
  162. Surma:because it has broader support by browsers,
  163. Jake:There's two worlds where this could happen.
  164. Surma:and so you have to worry less.
  165. Surma:And this is kind of like, what if we standardize that?
  166. Surma:And it's not just for the LOLs, right?
  167. Jake:Or two ways it could go.
  168. Jake:One way would be like, okay, TypeScript is now brought in as part of JS Sugar.
  169. Jake:It's standardized, so it's now not just Microsoft making all the decisions.
  170. Surma:Transcribed by https://otter.ai
  171. Jake:It's more of a sort of cross-company thing.
  172. Jake:But it's kind of acknowledged that this will never work just straight in a browser console.
  173. Jake:It's always going to be something that is compiled down to normal JavaScript.
  174. Jake:And I am actually fine with that, because I never really had an expectation of TypeScript
  175. Jake:ever making it into browsers proper.
  176. Jake:The other way it could go is that new features that developers want come along, and user
  177. Surma:Transcribed by https://otter.ai
  178. Jake:agents, you know, the people on TC39 that are very powerful, because they write the
  179. Jake:JavaScript engines.
  180. Jake:They're part of browsers.
  181. Jake:They're part of, you know, Google, Firefox, Apple.
  182. Jake:They say, we can't be bothered with that, so it goes in JS Sugar.
  183. Jake:And that's where everything goes from now on, and it really forks the language completely.
  184. Jake:And features that you would expect, like maybe things like async await, you know, in this
  185. Jake:new world would have ended up in Sugar and never worked in the browser proper.
  186. Surma:Transcribed by https://otter.ai
  187. Jake:And I think that's the case that people are afraid of, and so am I, I think.
  188. Jake:Thank you.
  189. Jake:Thank you.
  190. Jake:Thank you.
  191. Jake:
  192. Surma:Transcribed by https://otter.ai
  193. Jake:Thank you.
  194. Jake:Thank you.
  195. Jake:Thank you.
  196. Jake:
  197. Surma:Transcribed by https://otter.ai
  198. Jake:Yeah, that's the thing.
  199. Surma:Transcribed by https://otter.ai
  200. Jake:It's like, it's not like CSS, which seems to like, especially these days, is growing
  201. Jake:features at an amazing rate, whereas, as you say, JavaScript sort of, yeah, it kind of
  202. Surma:Transcribed by https://otter.ai
  203. Jake:has a couple of features a year.
  204. Surma:Transcribed by https://otter.ai
  205. Surma:Transcribed by https://otter.ai
  206. Jake:But that's the bits I'm worried about.
  207. Surma:Transcribed by https://otter.ai
  208. Surma:Transcribed by https://otter.ai
  209. Surma:Transcribed by https://otter.ai
  210. Jake:Yeah, so, but let's talk about things like, you know, array.at, which is pretty helpful
  211. Jake:for getting, like, the last item of an array.
  212. Jake:Is that the kind of thing that's going to end up in JS Sugar land?
  213. Surma:Transcribed by https://otter.ai
  214. Jake:Yes.
  215. Surma:Transcribed by https://otter.ai
  216. Jake:Yeah, let's say, oh, we can't do array.at in a fast way.
  217. Surma:Transcribed by https://otter.ai
  218. Jake:Or a secure way.
  219. Jake:But then people are going to be using a Sugar implementation, which either has those problems
  220. Jake:or doesn't.
  221. Jake:And if it doesn't have those problems, then why couldn't the browser just do it?
  222. Jake:Or, you know, I understand that if they're writing this stuff in, like, Zygo or C++ or
  223. Surma:Transcribed by https://otter.ai
  224. Jake:whatever, that's, you know, they're in a more security sensitive zone.
  225. Jake:But why can't polyfills just be, like, done in JavaScript?
  226. Jake:Within the browser.
  227. Jake:But I guess the one difference between that is the versioning, right?
  228. Jake:It's like, you know, with JS Sugar, it's done by a tool which I'm in control of the version
  229. Jake:of, whereas with browser level features, it's the browser version.
  230. Surma:Transcribed by https://otter.ai
  231. Surma:Transcribed by https://otter.ai
  232. Surma:Transcribed by https://otter.ai
  233. Surma:Transcribed by https://otter.ai
  234. Surma:Transcribed by https://otter.ai
  235. Surma:Transcribed by https://otter.ai
  236. Jake:Yeah, yeah, yeah, yeah, I think for a good long while now.
  237. Surma:Transcribed by https://otter.ai
  238. Surma:Transcribed by https://otter.ai
  239. Surma:Transcribed by https://otter.ai
  240. Surma:Transcribed by https://otter.ai
  241. Surma:Transcribed by https://otter.ai
  242. Surma:Transcribed by https://otter.ai
  243. Surma:Transcribed by https://otter.ai
  244. Surma:Transcribed by https://otter.ai
  245. Surma:Transcribed by https://otter.ai
  246. Surma:Transcribed by https://otter.ai
  247. Surma:Transcribed by https://otter.ai
  248. Surma:Transcribed by https://otter.ai
  249. Surma:Transcribed by https://otter.ai
  250. Surma:Transcribed by https://otter.ai
  251. Surma:Transcribed by httpbs
  252. Jake:Yeah, yeah, definitely.
  253. Surma:Transcribed by httpbs
  254. Surma:Transcribed by https://otter.ai
  255. Surma:Transcribed by httpbs
  256. Surma:Transcribed by httpbs
  257. Surma:Transcribed by httpsbs
  258. Surma:Transcribed by httpbs
  259. Surma:Transcribed by httpbs
  260. Surma:Transcribed by httpsbs
  261. Surma:Transcribed by httpbs
  262. Surma:Transcribed by httpsbs
  263. Surma:Transcribed by httpsbs
  264. Surma:Transcribed by httpsbs
  265. Surma:Transcribed by httpsbs
  266. Surma:Transcribed by httpsbs
  267. Surma:Transcribed by httpbs
  268. Surma:Transcribed by httpsbs
  269. Surma:Transcribed by httpbs
  270. Surma:Transcribed by httpsbs
  271. Surma:Transcribed by httpsbs
  272. Surma:Transcribed by httpbs
  273. Surma:Transcribed by httpsbs
  274. Surma:Transcribed by httpsbs
  275. Surma:Transcribed by httpsbs
  276. Surma:Transcribed by httpsbs
  277. Surma:Transcribed by httpbs
  278. Surma:Transcribed by httpsbs
  279. Surma:Transcribed by httpsbs
  280. Surma:Transcribed by httpsbs
  281. Jake:I'm really torn on this because on one hand, like, yeah, I see the issue, the security
  282. Jake:issue and whatever.
  283. Jake:But then I also see, like, two of the richest companies in the world, Google and Apple.
  284. Jake:It almost feels like a collusion of, like, well, what if we just stopped competing on
  285. Surma:Transcribed by httpsbs
  286. Surma:Transcribed by httpsbs
  287. Jake:these features and our lives would be much easier?
  288. Jake:Yes.
  289. Surma:Transcribed by httpsbs
  290. Surma:Transcribed by httpsbs
  291. Jake:It's already the case to some degree with TypeScript, right?
  292. Surma:Transcribed by httpsbs
  293. Jake:Yes.
  294. Jake:Yes.
  295. Jake:
  296. Surma:Transcribed by httpsbs
  297. Jake:Yeah, I wouldn't mind that.
  298. Surma:Transcribed by httpsbs
  299. Surma:Transcribed by httpsbs
  300. Surma:Transcribed by httpsbs
  301. Surma:Transcribed by httpsbs
  302. Surma:Transcribed by httpsbs
  303. Surma:Transcribed by httpsbs
  304. Jake:I wouldn't mind that.
  305. Surma:Transcribed by httpsbs
  306. Jake:I think that would be...
  307. Jake:And then, like, you know, once performance issues were identified, then maybe, yes,
  308. Surma:Transcribed by httpsbs
  309. Surma:Transcribed by httpsbs
  310. Surma:Transcribed by gPls
  311. Jake:that bit could be brought into, you know, C++, Lansing, whatever.
  312. Surma:Transcribed by gPls
  313. Surma:Transcribed by gPls
  314. Surma:Transcribed by gPls
  315. Surma:Transcribed by gPLS
  316. Jake:Yeah, and I agree, and I still say that there is, like, an implementation
  317. Surma:Transcribed by gPLS
  318. Surma:Transcribed by gPLS
  319. Surma:Transcribed by w34
  320. Surma:Transcribed by gPLS
  321. Surma:Transcribed by w34
  322. Surma:Transcribed by w34
  323. Surma:Transcribed by w12
  324. Surma:Transcribed by w112
  325. Jake:of this, which I like, which is, like, TypeScript is brought into it, and then that gets sort
  326. Surma:Transcribed by w12
  327. Surma:Transcribed by w12
  328. Surma:Transcribed by w12
  329. Jake:of more scrutiny, I guess, more careful development.
  330. Surma:Transcribed by w12
  331. Surma:Transcribed by w12
  332. Jake:Maybe some of the mistakes TypeScript has made in the past are less likely to happen
  333. Surma:Transcribed by w12
  334. Jake:in the future.
  335. Surma:Yeah
  336. Jake:It's not just one company in control of it.
  337. Jake:Like, that all sounds good, but then I think the reason I feel icky about it is the ghost
  338. Jake:of IE6, you know, is still there, and this was a time where, like, you know, Microsoft
  339. Jake:dominated the browser space, and they just stopped, because they didn't have to do any
  340. Jake:more work.
  341. Jake:And whereas this is a different shape, because, you know, the other browsers are still there,
  342. Jake:but yeah, it feels like they're all shaking hands and going, well, wouldn't our lives
  343. Jake:easier if we just all, you know, didn't bother anymore?
  344. Surma:But I mean that's not really
  345. Jake:Like, we all, like, it's, yeah, we all just colluded just to say, we'll stop it.
  346. Surma:But I mean that's not really
  347. Surma:But I mean that's not really
  348. Surma:what's being said, right?
  349. Surma:something the language would evolve
  350. Surma:is just about
  351. Surma:they would focus on capabilities
  352. Surma:capabilities
  353. Surma:capabilities
  354. Jake:No, and that's two extremes of implementation of this, right?
  355. Surma:Yeah
  356. Surma:capabilities
  357. Jake:And even with the best of intents now, it's not necessarily where it will land.
  358. Surma:capabilities
  359. Surma:capabilities
  360. Surma:capabilities
  361. Jake:Like, so another thing that I'm reminded of is, feels like I'm just, like, shitting on
  362. Surma:capabilities
  363. Surma:Yes
  364. Jake:Microsoft constantly, but it is another example here, is when Microsoft dropped its engine,
  365. Surma:Yes
  366. Surma:Yes
  367. Surma:Yes
  368. Jake:and they said, like, well, the great thing about us dropping our engine and getting Chromium
  369. Surma:Yes
  370. Surma:Yes
  371. Jake:instead, it's like, we can all now work on Chromium, which was genuinely, I believe,
  372. Surma:Yes
  373. Surma:Yes
  374. Jake:the intent at the time.
  375. Surma:Yes
  376. Jake:But then people higher up in the company went, wait a minute, we don't have to.
  377. Surma:Yes
  378. Surma:Yes
  379. Jake:So because Google will do it.
  380. Surma:Yes
  381. Surma:Yes
  382. Jake:So we can do, we do other things.
  383. Surma:Yes
  384. Surma:Yes
  385. Jake:And I worry that with this agreement in place, that JavaScript now doesn't have to have any
  386. Surma:Yes
  387. Surma:Yes
  388. Surma:Yes
  389. Jake:new features implemented by browser engineers.
  390. Surma:Yes
  391. Surma:Yes
  392. Jake:Yeah, but we're going to work super hard on the other stuff.
  393. Surma:Yes
  394. Surma:Yes
  395. Jake:Someone higher up at Google is going, well, the ads team could use some more engineers.
  396. Surma:Yes
  397. Surma:And you know what I think that is
  398. Surma:it's at the very least a valid
  399. Surma:concern, right? Like for me there was also the parallel
  400. Surma:if now
  401. Surma:J0 is kind of like a compile
  402. Surma:target, is it just a stepping
  403. Surma:stone that we just compile Javascript
  404. Surma:to Wasm at some point? I mean Wasm is currently
  405. Surma:a really shitty target for
  406. Surma:dynamically typed languages
  407. Surma:like it's just not very good like with
  408. Jake:Flutter, as well, right, Flutter, it's just like, well, we'll just ship our own engine.
  409. Surma:WasmGC it's a step in the
  410. Surma:right direction but really
  411. Surma:like it's still not good for dynamic typing
  412. Surma:but at the same time
  413. Surma:like maybe that is something that
  414. Surma:at some point would happen that we're like
  415. Surma:no, just don't, we don't choose
  416. Surma:a language anymore, all the processing
  417. Surma:compiling, transpiling happens outside
  418. Surma:the browser and you just ship one binary
  419. Surma:format to us which
  420. Surma:I don't know, that could happen, that's kind of how
  421. Surma:phones work, right?
  422. Surma:Yeah
  423. Surma:One other thing that people
  424. Jake:Today, I should try them again, because I've never had a great experience with Salesforce,
  425. Surma:did flag is like they were worried about the debugging
  426. Surma:experience and
  427. Surma:I'm like, I mean we have source maps
  428. Surma:and as much as I do not like them
  429. Surma:they work
  430. Surma:pretty reliably nowadays, like I'm always
  431. Surma:impressed that
  432. Jake:but that might be my fault.
  433. Surma:It's like recently whenever I
  434. Surma:build stuff with Vite
  435. Surma:I step through my
  436. Surma:TypeScript code
  437. Surma:but I agree, like I have the same gut
  438. Surma:feeling where it's like, but they're not robust
  439. Surma:are they? But then I keep thinking as well
  440. Surma:you know like
  441. Surma:no engineer working on
  442. Surma:systems stuff
  443. Surma:steps through assembler, they step through their
  444. Surma:C++, C or Rust code
  445. Surma:so this problem has been solved
  446. Surma:and maybe source maps just aren't
  447. Surma:the right solution or the right enough
  448. Surma:solution and we just need to
  449. Surma:you know, learn more from them
  450. Surma:like I'm talking about, like I know a lot about this
  451. Jake:That's fair, you've made an annoyingly good point.
  452. Surma:but I think this
  453. Surma:is a problem that is solvable because it
  454. Surma:has been solved for all those
  455. Surma:compiled languages, like you can step through
  456. Surma:your C++ code and
  457. Surma:inspect the values even though
  458. Surma:what is actually being executed is
  459. Surma:machine code on your processor
  460. Surma:so why should JavaScript to
  461. Surma:JavaScript be suddenly
  462. Surma:so much harder
  463. Surma:but clearly
  464. Surma:it is not at the point
  465. Surma:where we feel confident about that
  466. Surma:so that is work that also would have to be done
  467. Surma:so again, something to just be
  468. Surma:mindful of, like it's still
  469. Surma:fair to be concerned about that
  470. Surma:so
  471. Surma:that was effectively
  472. Surma:the rundown of J0
  473. Surma:I think it's not an official
  474. Surma:proposal in the sense that there is
  475. Surma:a repository for all other
  476. Surma:proposals, I'm assuming something
  477. Surma:like this may come along at some point
  478. Surma:stage 0 I suppose
  479. Surma:because like I said, it was only talked
  480. Jake:Well, that would have to change.
  481. Surma:about in TC39 as
  482. Surma:a discussion and
  483. Surma:I guess we'll keep an eye
  484. Surma:on it, what this means for engines
  485. Surma:for browsers and also for
  486. Surma:tooling authors because this is
  487. Surma:I think for me the biggest
  488. Surma:unknown what it means to suddenly
  489. Surma:put more tooling people
  490. Surma:at the table at TC39
  491. Surma:which I'm not even sure, like you can't join
  492. Surma:as a single person, you have to have a
  493. Surma:company sponsor you
  494. Surma:I think
  495. Jake:If they're kicking the can down to, like, you know.
  496. Surma:yeah, for example
  497. Surma:yeah, like I know that some
  498. Surma:people are individuals and join
  499. Surma:TC39 as
  500. Surma:invited experts, like Guy Bedford is one of
  501. Surma:these people who has done actually a lot of
  502. Surma:proposals there and I don't
  503. Surma:know, now I'm claiming like he's an
  504. Surma:invited expert and not coming
  505. Surma:sponsored by a company but it is
  506. Surma:definitely possible but I think you're
  507. Surma:right, that's one of the things that probably
  508. Surma:should be revisited if
  509. Surma:now tooling people who are often
  510. Surma:just like open source volunteers
  511. Jake:Hm.
  512. Surma:are more or less forced to
  513. Surma:participate in this and I
  514. Surma:hope that also then they would not
  515. Surma:be treated as like a second
  516. Surma:class
  517. Surma:member of the board because
  518. Surma:I don't know, like
  519. Surma:is now J0 the
  520. Surma:lead crew and then Jsugar the
  521. Surma:just desugaring code
  522. Jake:I can see that happening.
  523. Surma:and of course
  524. Surma:there's another person also
  525. Jake:Yeah.
  526. Surma:was saying, how is this preventing
  527. Jake:It's interesting because it's going to be, like you were saying before, that they, you
  528. Surma:from just repeating the same mistakes, like how do we
  529. Surma:not just end up with another intermediate
  530. Surma:layer before we then have to start
  531. Surma:migrating features from
  532. Surma:Jsugar to Js0 for performance
  533. Surma:reasons and we just basically end up in the same
  534. Surma:spot just with an even slower
  535. Surma:process. That also was quite interesting
  536. Surma:so many things to think about but like I said
  537. Surma:it's an early proposal so we have
  538. Surma:to just follow along and see what
  539. Surma:happens to our beloved JavaScript.
  540. Jake:know, we've made async iterators, but no one uses them.
  541. Jake:It's actually going to be harder to measure which of these JS sugar features are being
  542. Surma:...
  543. Jake:used.
  544. Jake:Like you could look on npm for downloads of the package, but you don't know which of the
  545. Surma:...
  546. Surma:...
  547. Jake:features within it are being used, right, unless they have a use count, but no one would
  548. Surma:...
  549. Surma:...
  550. Jake:want that.
  551. Surma:...
  552. Jake:So, okay.
  553. Jake:Yeah.
  554. Surma:...
  555. Jake:I am, I am worried about this whole thing, but I'm not like, I'm not pitchfork level.
  556. Surma:...
  557. Surma:...
  558. Surma:...
  559. Jake:I'm kind of interested to see where it goes.
  560. Surma:On the scale of 0
  561. Surma:to bat with nails in it
  562. Jake:Yeah, I've got the, I've got a pitchfork on order, just in case.
  563. Surma:...
  564. Surma:...
  565. Surma:...
  566. Surma:...
  567. Surma:...
  568. Surma:...
  569. Surma:...
  570. Surma:...
  571. Surma:...
  572. Surma:...
  573. Jake:You also did a good episode on source maps in general, which I think goes through some
  574. Surma:...
  575. Jake:of the issues that we've had with them.
  576. Surma:...
  577. Surma:...
  578. Surma:...
  579. Surma:...
  580. Jake:Amazing.
  581. Surma:...
  582. Surma:...
  583. Jake:Bye!
  584. Surma:...
  585. Jake:All right.
  586. Surma:...
  587. Surma:...
  588. Surma:...
  589. Surma:...
  590. Surma:...
  591. Surma:...
  592. Surma:...
  593. Surma:...
  594. Surma:...
  595. Surma:...
  596. Jake:That was good.
  597. Surma:...
  598. Jake: