6 ms·
Stopify – An experimental, web-based code editor
- yeukhon 9y agoI read Spotify. I am not sure if this is a good thing at all, sorry, just don't think it's a good thing.
- darpa_escapee 9y agoI automatically assumed it had something to do with Spotify. Maybe an adblocker?
- dingo_bat 9y agoI read stupefy.
- _ao789 9y agoI read Shopify..
- djsumdog 9y agough .. Shopify ..that just makes me think of their terrible terrible liquid templates.
- rubyfan 9y agoWow I forgot about those. Templating in general sucks, it’s just so hard to create something that makes a program accessible and has safety for user generated content.
- rubyfan 9y agoSame
- justboxing 9y agoI read Shopify. > it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist and lsat ltteer be at the rghit pclae... it doesn't matter in what order the letters in a word are, the only important thing is that the first and last letter be at the right place Source: https://www.mrc-cbu.cam.ac.uk/people/matt.davis/cmabridge/ https://www.mrc-cbu.cam.ac.uk/people/matt.davis/cmabridge/
- corobo 9y agoYeah I did too. I thought it was going to be a paypalsucks about Shopify
- foota 9y agoFunny enough, I had a hard time reading that because the word choice is different from what I'm used to.
- EasyTiger_ 9y agoFW: FW: FW: FW: You won’t believe this!!
- throwaway2016a 9y agoFirst I read Spotify then I read Shopify. So... - Name does not describe what the product does - Name is easily confused with other brands - Name sounds more like a SaaS/PaaS product than a widget Personally I would think of a different name.
- skrishnamurthi 9y agoBy the way, the name describes the product _exactly_. The infrastructure enables stopping functionality in JavaScript programs. It stop-ifies them. Hence Stopify.
- skrishnamurthi 9y agoY'all, the primary goal is meant to be a compiler infrastructure, not a user-facing product. The reason we have the demo site set up is to show people that the infrastructure composes with a bunch of existing compilers pretty seamlessly. In a perfect world, Stopification is integrated into the existing compiler back-ends and this site essentially disappears. So stop worrying about the name.
- djsumdog 9y agoIt makes me a little happy inside that Scala is the language it demos first.
- deleted 9y ago[deleted]
- nomel 9y agoThe VB6 IDE, in the 90's, had a great feature where you could arbitrarily drag the execution point around. It was incredibly useful for basically zero iteration time for development. Add a breakpoint, step over your code, and if something went wrong, drag the execution point back a few lines, fix it, and try again. This seems like a holy grail for IDEs. Why was this feature lost in time, or have I been using the wrong IDEs?
- taspeotis 9y agohttps://docs.microsoft.com/en-gb/visualstudio/debugger/navigating-through-code-with-the-debugger#BKMK_Set_the_next_statement_to_execute https://docs.microsoft.com/en-gb/visualstudio/debugger/navig...
- mlevental 9y agohow is this different from just setting an earlier breakpoint? what does dragging matter other than us?
- maxxxxx 9y agoIn C# and visual studio you can do it. I think C++ also has edit and continue in VS.
- nly 9y agoThis is called 'reversible debugging'. It's not lost. GDB can do this[0] and there are commercial products on the market that can do it better[1] [0] https://www.gnu.org/software/gdb/news/reversible.html https://www.gnu.org/software/gdb/news/reversible.html [1] https://undo.io/products/undodb/ https://undo.io/products/undodb/
- saagarjha 9y agoThe C++ example overflows int on most platforms. You may want to change your example!
- sbaxter 9y agoThanks for pointing that out! (I'm one of the developers) I've logged an issue.
- goldenkey 9y agoSo it just splits the code up into setImmediate/setTimeout calls?
- rachitnigam 9y agoNot really. Naively doing something like that will kill performance, not to mention that you have to be really careful not to mess up inserting setTimeout calls. Stopify reifies the runtime stack and occasionally yields to the browser through a setTimeout call. Once the yields back control, it can restore the stack and resume computation.
- skrishnamurthi 9y agoJust? What do you think the callbacks are that you supply to those calls?
- gf263 9y agoIt was hack day at shopify today, was thinking this was a project from that
- juancampa 9y agoThis is very interesting. How much slow is the execution compared to regular javascript?
- enum 9y agoIt depends on the source language. We have done extensive benchmarking. For example, on Python the median slowdown is 1.4x. PyJS doesn't use all of JavaScript's features and we can exploit that to improve performance. Our worst slowdown is when the source language is JavaScript itself because we can't make simplifying assumptions. (Median slowdown is 20x.) These are slowdowns on a cheap ChromeBook. We also have results from the four major browsers on a desktop machine.
- skrishnamurthi 9y agoBut note that the Stopify portion is completely optional and composes onto the end of an existing JavaScript compiler. So you can offer a faster-but-no-stopification mode versus a slower-but-with-stopification mode. While modes can be annoying, the point is that you don't have to be forced to pay this price due to the Stopify infrastructure. In contrast, a language like Pyret has the stopification built into its back-end, so you always pay the price (for now), whether you want it or not.
- simooooo 9y agoToo close to Spotify
- lwansbrough 9y agoI believe this is called "time travel debugging" in the Microsoft world. I use it all the time with C#/TS in VS. Since the name sucks, maybe a renaming based off the concept of time travel is a better choice?
- skrishnamurthi 9y agoIt's not time-travel debugging.
- johnhenry 9y agoVery cool project, though I fear that the awesomeness of the project may become lost due to people confusing the title with "Spotify" or "Shopify".
- skrishnamurthi 9y agoSure, but the name is half the fun. (-:
- johnhenry 9y agoBut like 4 times the confusion ;).
- jpolitz 9y agoIt's worth noting that Stopify itself isn't an editor or IDE as the title suggests. Stopify is a JavaScript -> JavaScript compiler, implemented as a Babel transform, that enables pausing and restarting control operators for JavaScript programs. A lot of the comments note the rich history of systems for debugging and execution control. Stopify's goal is to enable those kinds of systems, efficiently, while constrained by the browser's execution model.
- throwaway2016a 9y agoWOW. I was not interested at all in this the way that the title implied but now that you describe what it actually does, this does indeed look useful. The first line of the description should probably be scrapped. The interesting bit about this is not at all the fact there is an editor. Maybe it should be mentioned as a footnote but not as the lead-in.
- skrishnamurthi 9y agoYep. We're fixing that now.
- enum 9y agoFixed and added a little FAQ. :)
- true_religion 9y agoI am confused. It says this is a "JavaScript-to-JavaScript" compiler, but none of the selectable languages are Javascript?
- enum 9y agoAll the selectable languages compile to JavaScript. Stopify takes that JavaScript output and makes programs stoppable, steppable, etc. Therefore, each demo is a composition of two compilers: (1) a third-party X-to-JS compiler and (2) Stopify, which compiles JS to stoppable JS.