logoalt Hacker News

ch4s3yesterday at 7:06 PM2 repliesview on HN

I'm doing some work in this space[1], it's a really deep and hairy problem. There's a lot that you can do at the OS level sand boxing of course, but you may want some areas of you code to have network access and for some areas that use external dependencies to not have that access. Tracking where systems have side effects ends up being a lot of book keeping and a lot of languages that implement an object-capability model require you to thread caps through all of your calls, which IMO is bad ergonomics and a place where bugs creep in as functions accrue caps. Or sometimes they have rather superficial cap systems like Hack, or are rather awkward like in Deno.

[1] https://march-lang.org/docs/capabilities


Replies

thesztoday at 6:32 AM

Why do you invent a new language for your work?

Why did you not embed your language into another one, with type system that is superset of what you need?

For example, there's capabilities expressed in Haskell: https://github.com/tweag/capability

Capabilities there are tracked at type level and are subject to type erasure, if possible.

masterjyesterday at 7:32 PM

That's a really interesting project! Being able to assert more, statically, about what our software is doing seems like a real growing need

show 1 reply