plietar
Joined 9 years ago
Joined 9 years ago
Trying to pretend to be an official client was a game I never wanted to play. There's so many tiny differences in the way I've implemented the protocol it would be trivial for Spotify to notice this if they wanted to. It then becomes an whack a mole game between them and us.
Spotify is fully aware of librespot and has tolerated it so far. If they change their minds are try to block it it would be the end of the road for librespot. This is why, despite repeated requests from users, librespot has never supported free accounts nor downloading files in order to avoid pissing Spotify off. I always knew it would be trivial for anyone to implement this using the librespot source code, but it makes me a bit sad someone actually did it.
(That being said, I personally don't contribute or use librespot anymore, so really I don't care)
> It's interesting that building a self-hosting environment is a stated non-goal. Sounds like they are really focused on research and not building a production toolchain, but who knows?
The point isn't that the language will never be "production-ready" enough for it. It's that the language is intentionally limited in what kind of low-level hacks and concurrent mutation you can do, in order to remain safe. Writing this kind of code correctly is hard, and designing a language that exposes the full expressiveness in a sound and practical way is near impossible (at least given today's state of the art research).
The Verona runtime is therefore implemented in C++, which does have these capabilities. In some future it would nicer to formally verify the runtime for correctness, but that's a lot of work.
https://github.com/microsoft/snmalloc
And the paper, which I’ll be presenting tomorrow at ISMM: https://github.com/microsoft/snmalloc/blob/master/snmalloc.p...
Switched to Rust and there was only had one hidden system call left, getrandom used to initialize the hashmap