9 ms·
Hot Reloading in Swift
- lisper 4y agoThis is one of the main reasons I like Common Lisp, and Clozure CL in particular, which has a blazing fast compiler: my debug cycles are measured in seconds. Over dozens or hundreds of cycles it really adds up.
- markhelo 4y ago"Microsoft has been killing it over the last decade regarding dev tooling and experience, so it is not a big surprise." To be fair, for all the flack Microsoft got/gets, the dev tooling for Windows ecosystem is miles ahead of anyone else and world class. Perhaps I am biased as I worked there at one point, but since I don't anymore, I have also seen tooling from Apple and Google and they are a couple of decades behind. There is some truth to why Steve Ballmer went ballistic with his Developer chant, they really built great tooling for developers.
- deleted 4y ago[deleted]
- game-of-throws 4y agoMS had "edit and continue" (aka hot reloading) in Visual Basic in the 90s. Then I switched to other languages and I've gone without it the rest of my career. I don't think VB the language is very good, but the developer experience still beats anything I've used since then.
- pjmlp 4y agoWith the caveat that Borland is even better before they decided to focus on enterprise customers, and went through all those acquisitions and name changes. Delphi and C++ Builder are still unmatched in many capabilities on the Visual Studio side.
- refulgentis 4y agoThis is an odd response given the article calls at Google as having the gold standard for this, and I'm not sure there's any equivalent at all at MS? They push Flutter too
- jayd16 4y agoYou mean like this? https://docs.microsoft.com/en-us/visualstudio/debugger/hot-reload?view=vs-2022 https://docs.microsoft.com/en-us/visualstudio/debugger/hot-r... "Microsoft has been killing it over the last decade regarding dev tooling and experience" was a direct quote from the article.
- refulgentis 4y agoThank you! That context makes it much clearer
- m_at_goog 4y agoMaybe they mean internal at Google? Internal Google tooling is pretty hit or miss, especially with older products that are a patch work of different internal only Google stacks.
- pjmlp 4y agoThe gold standard are Smalltalk and Common Lisp environments, that people pushing Flutter tend to ignore on their marketing, as they ignored the existing work on Java and .NET ecosystems.
- tester756 4y agoThere's emoji after "killing it" I believe it changes meaning of this sentence.
- frosted-flakes 4y agoNo it doesn't? In that context, "killing it" means doing a great job.
- can16358p 4y agoAgreed. Visual Studio is an excellent piece of software, along with .NET and C#. I think Apple isn't that bad either, yet still behind MS. Google is a disaster though. A few weeks ago I needed to download Android Studio. Downloaded a clean stable release from its official site for my machine (M1 Mac). From that clean install literally erroring while trying to launch AVDs to cryptic error messages about JDK environments, Google's the only IDE out of these big three where I get countless of errors and losing hours on something that literally doesn't work out of the box. Hope Xcode and VS never becomes something crappy like Android Studio.
- musesum 4y agoIronically, I think Brad Cox had something like this in mind, after coming up with Objective C. Or at least, pluggable components [1] I wonder what the threat model would be? Injectable binaries seem like a decent attack vector. But, if we're talking 2040, maybe a signable Merkle tree would do the trick. Meanwhile, have been experimenting with recompiling Metal code at runtime. Was kinda fun with ObjC/C++/OpenGL, a few years ago. [1] https://thenewstack.io/objective-cs-roots-in-the-life-of-brad-cox/ https://thenewstack.io/objective-cs-roots-in-the-life-of-bra...
- dmix 4y agoErlang has had hotloading for a long time and seems to be fine security wise AFAIK.
- kaba0 4y agoHot reloading’s quality (and to a degree, security) depends mostly on how fine-grained a change can be. The reason Lisp-REPl workloads are so well loved is that very small scopes can be changed easily, Erlang also has a sane encapsulation that can be swapped without much fuss.
- jjtheblunt 4y agojust wanted to say i really like the clarity of that explanation
- melony 4y agoMost of (traditional) Erlang deploymens are in embedded systems. They have a different threat model.
- toast0 4y agoErlang has a very limited security model. In the default distribution, any process on any node can spawn a process on any other connected node to run any function --- you can send the function too. Modules can have a function to run on load, too. Loading an untrusted module is asking for that module to take over your whole system. Best to make sure nobody unauthorized can do that.
- leecommamichael 4y agoYou can hot-reload any language that can load a dynamic library. Compile the hot-reloadable portion of your app to a dylib and use a hotkey to reload the lib.
- mananaysiempre 4y agoThat is only the beginning, isn’t it? The hard part is figuring out how to migrate state, and clearly saying “no” when that fails instead of leaving the user to debug a configuration that could not have arisen had the new code been started from a clean slate. (I don’t think that’s actually possible to disprove, even, but at the very least guaranteeing that memory contains the types the new code thinks it does would be good.)