-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create a SES command line REPL #164
Comments
What would this look like? Copying from that issue, at present you can start up
What sort of features would we want on top of that? |
we're looking for a compartment switching REPL. It would be like the Node REPL but be able to label and switch between the compartments |
This might look like a tool (maybe named It'd be a compartment rather than a SES Realm because SES Realms are frozen (including the global), so the usual practice of holding temporary variables with e.g. A transcript of this basic
Basically the REPL would start by creating a SES realm with Phase two would be to enable multiple realms and/or compartments, with some sort of top-level command to switch between them. This would be most useful for examining the interaction between separate realms, which mostly means triggering identity-discontinuity errors. I'm not sure how useful it would actually be. Phase three might be to use |
All that sounded great until |
I hear ya. I think we're going to need some experiments to see what approaches work best. My I think the alternative to a manifest file is to have some non-confined entry-point script (a The manifest thing might belong in a completely separate project, which uses SES to provide an application execution tool that's controlled by this declarative module-graph description thing. I guess the question is, if |
To reiterate my Jan 29 comment: This works well in pony and Monte. |
Hm, interesting. So, in a Node environment, where all authority comes from const s = SES.makeSESRootRealm();
const main = s.evaluate(loadFileAsString(argv[1]));
main(require); The I see that as being useful (like you said, the smallest thing that could possibly work), but maybe not useful enough to spend the I suppose I'm actually criticizing the emaker "imperative attenuation" approach here, not just this JS-specific flavor of it. I'm imagining a more generalized solution in which a "declarative attenuation" manifest is executed/enforced, because I can imagine how that manifest could form the basis of a package registry -like ecosystem hub where people can collaborate on the ways to attenuate/combine/synthesize authority. If the main place to do that is with code in the top-level I'd like to learn more about how this works for larger-scale development in pony and Monte, in particular if there are any cases where the useful attenuators from one project have been picked up in other projects, and how the definition of those attenuators gets transmitted between them. Do you have any pointers I could look at? |
(does this discussion really belong in Agoric/SES#9? Oh well...) I'm not sure the pony community does this very well. I tried and failed to convince the pony designers that the standard network library should support interposition: ponylang/ponyc#301 (comment) A quick browse turns up a pure pony postgres client library. Note the way its connection constructor wants the AmbientAuth "god capability", which is even more than the new create(auth: AmbientAuth,
host: String,
service: String,
params: Array[(String, String)] val,
pool: ConnectionManager,
out': OutStream
) =>
_conn = TCPConnection(auth, PGNotify(this), host, servic https://github.com/lisael/pony-postgres/blob/master/pg/connection/tcp.pony#L38-L45 I don't think there is any Monte development at the scale of independent projects. :-/ But at least all of Monte's i/o APIs support interposition. The fact that the first But I can imagine automating such boilerplate based on typescript typings. All that said: if you give us If you give the community a manifest format that encourages them to continue to use ambient authority... meh. |
Related changes coming #398 |
See googlearchive/caja#1977
The text was updated successfully, but these errors were encountered: