Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

That is almost the exact backwards way to talk about capabilities. It is not about "restricting" access, it is about "granting" access.

"These libraries can not access the network." No. "These libraries have not been given access to the network (and by default none are given access)."

From an implementation perspective, this is just passing in access rights as "local" resources instead of using "global" resources. For instance, it is self-evident that other code can not use your B-Tree local variable if you did not pass a reference to it to any called functions (assuming no arbitrary pointer casts). You just do the same with these "resources". It is just passing things to functions instead of relying on globals. The only difficulty is making these actions/resources "passable", which is trivial at the language-level, and "fine-grained/divisible" to avoid over-granting.



Clearly these things are dual and you can easily model them either way, and indeed, should think about them both ways.




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

Search: