Re: imagining a programming language with a capability calling convention
Yuvaraj Athur Raghuvir <[email protected]> Sun, 13 Sep 2015 11:38:00 -0700
| Newsgroups | gmane.comp.capabilities.general |
|---|---|
| Message-ID | <CA+0n6-bHLe2fkUeT=VpTEw_R5vU_NMQQAZo0xwhF4ZN9oZdHEg@mail.gmail.com> |
I came across Pony recently. Pony is an object-oriented, actor-model, capabilities-secure, high performance programming language. http://www.ponylang.org/ Regards, Yuvaraj On Apr 3, 2015 10:06 AM, "David Nicol" <[email protected]> wrote: > > I am not aware of any work done currently that uses capabilities in the > calling conventions in programming languages. > > The standard calling convention is something like > > result = procedure_name(first_arg, second_arg, third_arg) > > or > > result = some_object.method_name(first_arg, second_arg, third_arg) > > which for this discussion reduces to the same thing. > > Capabilites are worked in by limiting the access to the methods, for > instance with lexical scoping and closures in Javascript. > > I am imagining injecting a capability idiom into a calling convention with > which a process that wishes to set up a call to a procedure > would need not only a capability to the procedure but also capabilites to > set the arguments. > > I imagine that in practice that would wind up looking something like > > > set_first_arg( first_arg.readable ) > > set_second_arg( second_arg.readable ) > > set_third_arg( third_arg.readable ) > > set_result_destination( result.value_acceptor ) > > procedure_name > > > where .readable and .value_acceptor are suffixes that cause the named args > and L-value to produce one-time-only capabilities to read or set their > values. > > > This convention might mitigate the ambient authority problems with > overridable default arguments in OO capability languages. > > > (1) am I making sense? > > (2) is there anything currently available that works this way? > > > The use case for this would be a situation where some contexts are > alllowed to set the third arg and others must keep the default. > > This approach -- explicit arg setters -- is superior to a convention of > having named args which are filtered based on a credential provided along > with the call because there would not have to be a filtering step. A > potential caller that is not supposed to be able to set the third argument > would > simply not have a capability to set the third argument, so the third > argument would remain the default. > > The above might be revised to > > my x = procedure_name.set_up_call > > x.set_first_arg( first_arg.readable ) > > x.set_second_arg( second_arg.readable ) > > x.set_third_arg( third_arg.readable ) > > x.set_result_destination( result.value_acceptor ) > > x.call > > which looks like it would easily collapse into the initial unexpanded > form, or there is nothing gained this way over allowing limited access to > different versions of procedure_name that either accept or do not accept a > third argument. > > Please reply, comment or ignore > > <g> > > -- > Drive the road, not the traffic. > > _______________________________________________ > cap-talk mailing list > [email protected] > http://www.eros-os.org/mailman/listinfo/cap-talk > > _______________________________________________ cap-talk mailing list [email protected] http://www.eros-os.org/mailman/listinfo/cap-talk