Hacker Newsnew | past | comments | ask | show | jobs | submit | 9d's commentslogin

Just curious, are you still able to get instant feedback and development conveniences on that 30 minute compile time project, like up to date autocomplete and type hints and real-time errors/warnings while developing before compiling?


Yeah - there’s a 60-ish second delay in my IDE before this info is available but once it’s there it’s there.


The one point here that's relevant to me is that if you use a service worker and then redesign your web app so that it's no longer needed, now you need to host code that removes the service worker, and you can never remove that new code, because there may be users with the sw installed who don't revisit for years.

Service workers should have an auto expiration. Maybe a month or so.


> Hire or sponsor?

The point here is that sponsoring me would be hiring me collectively.

> Is any of them available?

No. I'm not good at making games. But I'm good at making APIs.


> the Gleam language, which is written in Rust and has first-party LSP support

How have I never heard of this language before?

https://gleam.run/


Relevant XKCD: https://xkcd.com/1053/


Oh oh! Include 90s.dev! Such a perfect domain name, a built in pun. What a waste.


Could you elaborate?


Virtual memory serves two purposes:

1. To isolate processes - physical memory used by one process is only mapped into that process's virtual memory space. No other processes can read it. (Except for shared memory.). Using WASMs isolation instead means you don't need this so much (ignoring Spectre) but you still need...

2. To handle memory fragmentation - each process expects to see a contiguous block of memory available to it (more or less). Especially in WASM, you just get a big linear memory array that you can grow and shrink as you like.

If these blocks have to be physically contiguous blocks in memory it's going to be really hard to organise them, especially because you don't know how much memory they use in advance.

For example you run two apps and they initially say they need 100MB each. So you allocate app A at [0, 100MB) and app B at [100, 200MB). How app A says "I need 1 extra MB please!". Well since you don't have virtual memory that has to be at the physical address 100MB, which is already occupied by app B. So you have a few bad options:

* Leave space between apps in case they want to grow. But it's not obvious how much space, and also this would be extremely inefficient since you're literally wasting physical RAM.

* Don't allow apps to grow their memory. I think the very first versions of WASM didn't support this. Again this is obviously inefficient because apps have to allocate enough memory for their maximum memory usage even if they rarely use that.

* Shuffle apps around in physical memory when you need some space. I think this is possible but it would be really slow and lead to weird random pauses while GBs of memory is copied.

Virtual memory solves those issues. I think you could probably still build a system with these limitations for some use cases, e.g. kiosk/Point of Sale terminals. But for general purpose use it seems impossible unless I've missed some trick...


Why not just give apps chunks of non-contiguous memory and let them deal with that fact? Then like realloc, the memory they need stretched may just be moved first.


Because wasm virtual machine has contiguous linear memory. So if you do this, you're no longer running wasm.

Besides, why would you design around the lack of a MMU? Even in embedded space it's often there.


No I mean what if we updated the wasm spec to allow it?


But why would we do that when the hardware already has everything that's needed to present the app with a flat contiguous memory space? Why push unnecessary complexity at every single wasm app out there?


ChromeOS only uses V8 by happenstance, being an OS that's just a browser.

Android could have used anything and it would have been successful, even C++.

These were both successful purely because they're cheap, not because technology.


What matters is what is available for developers on userspace, regardless if they like it or not.

Great technology sadly wins on merit.

Technology wins on either being cheaply available, in a worse is better fashion, as devs rather drink free lemon juice instead of nice costly orange one, or by having companies with willingness and deep pockets to push it no matter what.


I started on a Rust app that uses SDL3 and lets you script it via embedded V8[1]. But I'm very seriously tempted to fork it and embed wasmtime or wasmi and let you script it in anything, and include a few wasm compilers into the app for convenience so you just give it a file and it does the rest. Mainly because of the speed of wasmtime and wasmi compared to alternatives[2]. But my biggest concern is that this isn't adding any real convenience. You still have to set up whole code environments, which defeats the purpose of scripting it. Still, it's such a neat idea that I don't want to not do it, and I just might.

[1] https://sdegutis.github.io/blog/dear-everyone-hire-me-to-mak...

[2] https://github.com/khvzak/script-bench-rs


Not sure why you were downvoted. I think you're probably right about a lot of that. I do know that it's certainly the case for me. I have a lot of talent, but I can't harness it unless I find a project I truly believe in. But who's to say which projects are worthwhile, which projects genuinely help humanity? Not everything we do and breathe needs to be activism against injustice all the time. Take pico8 as an example. That has rejuvenated the joy and wonder of countless aging programmers, and probably taught many young people how to make games. Is that not inherently a good thing? And it made money doing it, should it not?


It's the candy look from the early 2000s, from Mac OS X 10.1, turned up to 11.

Did Apple learn nothing from Windwos Vista and Compiz?


What's old is new again. There's a whole generation of users that never experienced those days. OS X 10.1 is 24 years old now. So for them, this is all brand new and innovative.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: