Remix.run Logo
tgv 11 hours ago

I've dabbled a bit in Ada, but it wouldn't be my choice either. It's still susceptible to memory errors. It's better behaved than C, but you still have to be careful. And the tooling isn't great, and there isn't a lot in terms of libraries. I think Ladybird also has aspirations to build their own OS, so portability could also be an issue.

potato-peeler 10 hours ago | parent [-]

Not the case with spark. But I understand it requires writing lot of things from scratch for browsers. But I don’t think portability will be an issue with Ada, it is cross platform.

However, this is where d shines. D has a mature ecosystem. Offers first class cpp abi and provides memory safety guarantees, which the blog mentioned as a primary factor. And d is similar to cpp, low barrier for cpp devs to pick up.

tgv 10 hours ago | parent [-]

There's no dynamic memory allocation with (100%) Spark. That's really limiting. You can to write "unsafe" code, but that has the same problems as Ada.

Findecanor 20 minutes ago | parent | next [-]

I know most SPARK projects use it only for a subset of the code base, with regular Ada for the rest, but I thought SPARK itself got dynamic memory allocation when it adopted Rust-style ownership and borrowing.

potato-peeler 9 hours ago | parent | prev | next [-]

That is true for parsers like libjs, but again crypto module or even networking, can still be written in spark, which is much more safety critical.

Rochus 9 hours ago | parent | prev [-]

SPARK is not used for the whole system, but for the < 5% parts, which are safety/security-related in a good architecture.