Skip to content
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

Reflection/Introspection API #14

Open
dmbarbour opened this issue Aug 14, 2014 · 0 comments
Open

Reflection/Introspection API #14

dmbarbour opened this issue Aug 14, 2014 · 0 comments

Comments

@dmbarbour
Copy link
Owner

Awelon Bytecode does not provide primitive operators for reflection and introspection because these are security sensitive operations. However, it has always been expected that access to these utilities should be available through ABC's effects model.

It seems to me that I should develop a good capability-secure API (starting with a conventional power block) for introspection and reflection. For the moment, I'm disabling the writeABCFile/readABCFile functions with the goal that most of said logic should be accomplished through fine-grained operations and capabilities.

General Requirements

I should be able to determine the structure of most values:

  • is it a sum, a product, a unit value, a block?; perhaps x → (x+x)
  • is it a sealed value?
    • if so, a hint/brand/fingerprint for the sealer (i.e. to support key rings)
    • ability to unseal discretionary sealed values
    • no general ability to unseal fully sealed values because might be encrypted
  • for a block:
    • ability to serialize blocks and peek inside?

I still need to decide how to represent fully sealed values within a block, i.e. with respect to serializing the block. I have a few ideas for this, including representing them as embedded ciphertext wrapped with a special {:sealer} variation. But this is mostly a separate issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant